今日预告

今天小编只介绍一件事,就是HHL的算法流程。咱们依旧通过图解的方式来理解它。图形嘛就依托于HHL算法的某一个量子线路(个人理解量子算法和量子线路是一个一对多的关系,即围绕着同一种量子算法可以设计不同的量子线路),如图1所示。

HHL算法流程

图1给出了一个HHL算法的量子线路。根据上一篇文章中所述,HHL算法主要包括3个子过程,第一个是图中虚线标出的相位估计;第二个是线路中部的受控R、即受控旋转操作;第三个就是相位估计的逆运算。接下来咱们详细的来看一看,HHL算法的每一步具体是什么。

HHL算法学习笔记(二)-量子客

图 1 HHL算法的量子线路

为了简化描述,后续将线路图中第一行附加量子比特称为第一寄存器,将线路中部的第二行称为第二寄存器,将线路底部的第三行即输入|b>所在的寄存器称为第三寄存器。

图2 给出了HHL算法的核心步骤。具体的步骤说明在图中标出,这里就不再赘述。

HHL算法学习笔记(二)-量子客

图2 HHL算法步骤

补充说明

针对图2这里再做一些简单的补充说明:

1. 关于步骤2中酉矩阵的构造方法。我们暂且将矩阵看成简单的两类:Hermite矩阵和非Hermite矩阵

  • (a)对于Hermite矩阵A,可以通过e的幂次将其转换成一个酉矩阵,这个酉矩阵就符合了量子计算中对量子门的酉性需求。
  • (b)对于非Hermite矩阵A,可以通过图中步骤2右下角的红色部分所示,通过矩阵A构造一个Hermite矩阵C,将C作为输入。此时通过求解$C_y=(b,0)$,能够得到$y=(0,x)$,从而求得原始问题Ax=b的解x。上述构造Hermite矩阵A的技巧大家也可以关注下,说不定就可以应用到自己的研究领域中。

 

 2. 特别注意关于步骤3中相位估计的输出:

  •   (a)这里小编给的是一个理想情况下的输出,即在第二寄存器中输出的是精确的特征值。这种表示有助于理解整个算法过程中量子态的一个变化特点。在HHL论文中的数学表达会更加的精准(如果深入研究这个算法一定要看作者原文哦)
  • (b)同样,在这个过程中下标含有j的部分其实表明了一系列的基态,因此整个寄存器中存储的是一系列基态的叠加态(即有一个求和的表示,如蓝色方框中的公式所示)。
  • (c)此外,注意经过相位估计后,第二寄存器和第三寄存器已经处于纠缠叠加态,即对于每一个j,$\mid\lambda_j\rangle$和$\mid u_j\rangle$是纠缠在一起的。

3. 步骤4就是上一篇(可通过点击文章左下角的阅读原文查阅)文章中重点介绍的受控旋转操作,通过在这一步引入了函数的设计实现了一个“提取占比”的效果。

特别注意:上篇文章为简化讨论,并没有考虑到第三寄存器的存在,今天特别强调一下,在执行了相位估计之后,第二寄存器和第三寄存器是纠缠在一起的,而因为这些纠缠,使得在这个过程中第一寄存器提取的比例影响的是第二和第三寄存器中的纠缠态$\mid\lambda_j\rangle\mid u_j\rangle$;而经过后续步骤5中的逆相位估计又将这些纠缠态“解纠缠”,即将所有第二寄存器中的$\mid\lambda_j\rangle$都还原为$\mid 00..0\rangle$,因此最终在第一寄存器中提取的比例将会影响的就是第三寄存器的各个基态$\mid u_j\rangle$

【划重点】受控旋转操作只涉及了第一寄存器和第二寄存器,但最终却影响了第三寄存器的值,而这种影响就借助了量子计算特性中的纠缠性。大家可以仔细琢磨下这里面的各种变化,其实是很神奇且有趣的。

小结

今天的算法解读其实有些未求甚解。如果想要深入的理解这个算法,还是要把一手资料(即作者在PRL上发表的原文章)认真吃透的。小编这里的目的是让大家从视觉角度上了解这个算法的一个概貌,写的浅显了些,还请见谅。

小编就主要介绍HHL算法的理论部分:核心思想和具体流程。关于HHL算法的实验部分,小编主要找了几篇HHL实验的论文然后在Matlab上进行相关的仿真验证,下周再具体展开。如果有在量子计算机上做实验的小伙伴,也非常欢迎投稿,咱们一起补充学习笔记。

注:作者:Duan.Bojia (QubitLab)
编辑:Zoe
校对:量豆豆
本文原创,首发在《量子机器学习》微信公众号,欢迎关注。最后感谢Zoe在量子客对本文的再次整理、校验与编辑。
HHL算法学习笔记(二)-量子客