用Q#介绍量子计算–第19部分,量子相位估计

上次我们讨论了量子傅里叶变换–用于更复杂量子算法的重要构建块之一。在这篇文章中,我们将建立在该知识并利用QFT功能,探索许多量子计划中使用的另福利彩票中奖规则重要子程序,即量子相位估计。

背景

量子阶段估计算法允许我们给出任意酉变换$ U $,在其上行动时特征向量$ \ ket {u} $,生产特征值$ e ^ {2 {\ pi} i \ varphi} $,估计阶段$ \ varphi $。

$$
u \ ket {u} = e ^ {2 {\ pi} i \ varphi} \ rs {u}
$$

为了执行估计,我们需要分配两个单独的qubit寄存器–福利彩票中奖规则持有特征向量$ \ ket {u} $,另福利彩票中奖规则持有任意数量的qubits。我们将表示以$ n $的寄存器中的Qubits数量。寄存器的具体尺寸对应于我们的精确度'd喜欢在执行估计时具有,以及估计本身的成功概率。为了更好清晰,我们将呼叫登记“control register” –在片刻上将变得显而易见的原因。我们将指的是其他寄存器“eigenvector register”并使用$ t $来描述其大小。自然地,特征向量寄存器尺寸是根据代表$ \ Ket {u} $所需的Qubits的数量。此外,我们还需要假设我们可以访问福利彩票中奖规则“black box”能够执行$ U $转型的变体的子程序–即,非负$ j $($ \ {0,1,2..j \} $)的控制 - $ u ^ {2 ^ j} $。

通过将$ H $ GATE应用于其每福利彩票中奖规则$ N $ QUBits,从将控制寄存器放置在统一的叠加中,开始该过程。但是,我们将在这里进行两步–当最初考虑福利彩票中奖规则由单个Qubit($ n = 1 $)组成的控制寄存器时,该过程更容易推理'我们将从什么开始。

$$
\ \ ket {\ psi_1} =(h \ otimes i ^ {\ otimes t})(\ ket {0} \ otimes \ ket {u})= \ frac {1} {\ sqrt {2}}(\ ket { 0} + \ Ket {1})\ ket {u}
$$

下一步是将受控$ u ^ {2 ^ j} $申请到两个寄存器$ n $次–因此,取决于控制寄存器的大小。此时我们应该做出另福利彩票中奖规则观察。当$ U $行动时会发生什么,在其特征向量$ j $次?

$$
UU…u \ ket {u} = e ^ {2 {\ pi} i \ varphi} ^ {2 {\ pi} i \ varphi}…e ^ {2 {\ pi} i \ varphi} \ ket {u} = e ^ {j2 {\ pi} i \ varphi} \ varphi} \ ket {u}
$$

$ j $的值将由:

$$ j = n-1 $$

在我们的初始简化案例中,我们在控制寄存器中只有福利彩票中奖规则Qubit,因此我们只能应用受控$ u ^ {2 ^ 0} $。

$$
\ ket {\ psi_2} = cu ^ {2 ^ 0} \ ket {\ psi_1} = \ frac {1} {\ sqrt {2}}(\ ers {0}}(\ {0} + e ^ {2 {\ pi} 2 ^ 0i \ varphi} \ ket {1})\ ket {u}
$$

自$ 2 ^ 0 = 1 $以来,我们可以重写州$ \ ket {\ psi_2} $:

$$
\ ket {\ psi_2} = \ frac {1} {\ sqrt {2}}(\ \ er {0} + e ^ {2 {\ pi} i \ varphi} \ ket {1})\ ket {u}
$$

这是具有单个QUBBit的控制寄存器的基本情况。我们现在可以通过简单地扩展控制寄存器的大小来提供算法的广义版本。下面,我们重新运行控制寄存器包含任何数字$ N $ QUBITS的程序。

$$
\ ket {\ psi_1} =(h ^ {\ otimes n} \ otimes i i ^ {\ otimes t})(\ ket {0} ^ {\ otimes n} \ otimes \ ket {u})= \ frac {1 {\ sqrt {2 ^ n}} \ sum_ {j = 0} ^ {2 ^ n-1} \ ket {j} \ ket {u}
$$

然后我们应用一系列受控$ u ^ {2 ^ j} $转换。

$$
\ \ rac {\ psi_2} = \ sum_ {2 ^ n}} \ sum_ {k = 0} ^ {2 ^ n-1} ^ {2 {\ pi} ki \ varphi} \ arly {k} \ \ ket {u}
$$

我们需要暂停这里以考虑一些非常深刻的东西。我们学到了在最后福利彩票中奖规则帖子中关于量子傅里叶变换,QFT转换产生以下结果:

$$ qft \ ket {k} = \ frac {1} {\ sum_ {n}} \ sum_ {k = 0} ^ {n-1} ^ {n-1} ^ {rac {2 {\ pi} ijk} {n} } \ ket {k}
$$

如果我们替代$ n = 2 ^ n $,这与我们在我们的$ \ ket {\ psi_2} $的状态非常相似–如果我们省略了特征向量寄存器$ \ KET {U} $。事实上,我们可以通过应用伴随(反向)qft来提取我们$ \ ket {\ varphi} $的价值!这是量子相位估计算法的临界点。

$$
\ ket {\ psi_3} = qft ^ \ dagger \ ket {\ psi_2} = \ ket {\ varphi} \ ket {u} $$

实际上,随着算法的名称表明,它将是估计值,但是更深入地潜入,超出了该系列的范围。在理想化的示例中,剩下的是测量控制寄存器以获得$ \ varphi $的近似值,当然我们毕竟是什么。

整体电路(Wikimedia Commons之后)如下所示:

q#实现

随着腰带的理论,我们现在将注意Q#中量子阶段估算的实施。就像在早期的例子一样,我们将采取两种替代方法。第福利彩票中奖规则将是使用低级栅极基元的实现,这与电路模型紧密遵循,第二个是应利用Q#的更高级别功能–突出显示通用量子子程序的无忧无息开发的价值,因为它结束了消除了一些代码,否则需要手动编写。

让'S首先定义我们的包装操作,可以将$ U $的权力应用于给定的量子位状态,并支持受控算盘。

对于$ U $等于$ Z $门的这样福利彩票中奖规则包装器的示例如下所示:

因为$ z $门在单个qubit上行动,那么eigenstate也是单个qubit–然而,我们通过福利彩票中奖规则阵列,因为很快就会变得明显。实际上,z门的特征持代价是$ \ ket {0} $和$ \ ket {1} $使这个相当琐碎的例子–和福利彩票中奖规则善于开始的好。

我们可以创建额外的两个简单的操作,我们可以尝试我们的解决方案–对于盖茨$ S $和$ t $:

它们与$ Z $门共享特征向量,这将使我们的准备更简单。

配备这些$ U $“blackboxes”,我们现在可以定义将执行量子相位估计的操作。代码显示在下福利彩票中奖规则片段中。

作为对操作的输入,我们拍摄了我们已经知道的特征徒,我们已经知道可以在福利彩票中奖规则qubit中适合,代表我们的$ U $“blackbox”和福利彩票中奖规则整数定义计算精度。

我们首先通过基于精度值分配控制寄存器–这当然对应于我们之前的理论讨论中的$ N $,并在他们身上创造统一的叠加。接下来,我们在每个控制寄存器QUBITS和特征斯特QUBEB之间调用控制 - $ U $,从而增加了每个后续QUBBit的门的功率。最后,我们申请伴随(逆)qftle–在这种情况下,我们使用图书馆功能而不是通过手工执行此操作,因为这并不是我们在这里专注,所以我们不'想要云云。

此时剩下的一切是测量控制寄存器以读取$ \ varphi $。为了以学位获得值,我们必须与360度相比进行,并将其除以升高到等于我们的精度值的功率。这样做的原因是阶段因子是0到$ 2 \ PI $(在弧度中)之间的实数,并且转回控制寄存器的传播取决于精度级别。对于精度1,我们处理$ e ^ {i \ varphi} $,然后为精度2处理'$ e ^ {2i \ varphi} $,然后$ e ^ {4i \ varphi} $等。所以读出的$ \ varphi $必须相应地划分。要关闭关闭问题,我们还需要一如既往地重置所有涉及的Qubits。

我们现在可以通过调用早期准备的3 $ U $黑盒来调用我们的$ runmanualestimation $操作来测试这个简单的Q#实现。在三种情况下,$ z $,$ t $和$ s $,特征施用将是相同的–$ i $转换为福利彩票中奖规则,另福利彩票中奖规则$ x $转换。为$ z $门的代码如下所示:

这打印出:

结果与我们的期望保持一致的事实非常令人鼓舞,所以我们也应该为其他$ U $实现而试用。代码几乎相同。

以及我们此时的输出应该是:

这个Q的最后一部分的量子阶段估计的实现将使我们关注利用内置Q#功能,而不是通过我们刚刚用手推出程序。在这种情况下,现有的$ U $ Black-Boxes仍可重复使用,但我们将用$ RunLibraryestimation $替换操作$ runmanualestimation $。要使事情易于比较,我们将保持操作参数相同。

但是,在操作的正文中,我们将依靠$ Microsoft.Quantum的内置$ QuantumphaseStimation $操作。特征化$命名空间。完整的代码如下所示。

就像以前一样,我们需要分配控制寄存器,该控制寄存器对应于所选择的精度级别。 $ Quantumphaseestimation $操作用作输入用户定义的$ Discledoracle $,它包装了我们的$ U $定义。 $ DiscrideOracle $的签名要求我们在委托Qubit阵列和表示电源的整数中传递,也希望能够清楚为什么我们拍摄了一系列Qubits作为输入到$ U $的Qubits我们创建的黑匣子–我们希望能够使用$ discrideoracle $ type。 $量子关常数$操作中的另福利彩票中奖规则输入是包含egenstate(US Quitbit)的寄存器,并使用$ bigendian $ qpu寄存器包裹的控制QUBITS。这有点不一致,因为QDK的大多数有用功能都可以在大型endian和小型endian变体中提供。由于我们以稍后使用$ METIONINTEGER $ HELPER执行测量,因此需要$ LIGHENDIAND $寄存器,因此我们需要在该点反转QUBITS。除此之外,测量程序与手动实现中的相同。

我们现在可以调用$ RunLibraryestimation $,并以类似的方式验证其在手动过程中的类似方式。这在下面如下所示。

如果我们确实正确地完成了一切,我们应该看到以下输出:

概括

量子相位估计,而在其自己的情况下'T似乎特别令人兴奋,是较大,更复杂的量子算法和解决方案的重要组块之一。特别是,它用作shor的一部分'S的分解算法,可以说明所有量子算法的冠状宝石,或者在此点发明的所有量子算法,或者在方程线性系统的量子算法中。

随着量子阶段估计所涵盖,我们在此特定介绍系列中的旅程也接近其结束。在这个系列的下一部分,我们将看看嘘声's algorithm.