如何在量子计算机上实现经典计算
已完成
15 分钟
现在你理解了要尝试解决的经典问题,来看看如何将这个问题描述转换为一个量子操作,它可以被 Grover 的搜索算法使用并在量子计算机上运行。
如何在叠加态上进行计算?
量子计算的关键特性之一是不仅能够对单个输入执行计算,而且能够对输入的叠加执行计算。 在处理一个搜索问题和一个描述要尝试解决的搜索问题实例的特定函数 $f(x)$ 时,我们需要能够在输入的叠加上也计算这个函数。
备注
量子黑盒是一个“不透明盒子”操作,它被用作另一种算法(在本例中为 Grover 的算法)的输入,但术语“黑盒”也广泛用于经典计算。 有些量子算法是用量子黑盒来描述的,这是为了强调它们可以应用于一类广泛的问题,前提是该问题可以有效地作为量子黑盒实现。 对于这类算法,其运行时分析通常与黑盒调用次数(即函数计算)相关,而不是指算法执行的基元运算。
使用量子黑盒描述的算法解决特定问题时,需要为此问题实现量子黑盒。 如果使用 Grover 算法,黑盒会计算我们要尝试反转的函数 $f(x)$ 的值。
有两种常见的方法可以对计算叠加态的函数的效果进行编码:使用“相位黑盒”,或使用“标记黑盒”。
假设我们要实现一个量子运算符 $U$,它计算一个函数 $f(x)$,这个函数将一个位作为输入并生成一个位作为输出。 我们从一个叠加态 $a_0 |0\rangle + a_1 |1\rangle$ 开始。
可以在基态 $|0\rangle$ 和 $|1\rangle$ 的相对相位中分别对值 $f(0)$ 和 $f(1)$ 进行编码。
在这种情况下,应用运算符$U_\textrm{phase}$ 将状态 $a_0 |0\rangle + a_1 |1\rangle$ 转换为状态 $(-1)^{f(0)} a_0 |0\rangle + (-1)^{f(1)} a_1 |1\rangle$。 换句话说,运算符 $U_\textrm{phase}$ 不会改变 $f(x) = 0$ 的基态的相位,而是将 $f(x) = 1$ 的基态的相位乘以 $-1$。
运算符 $U_\textrm{phase}$ 称为“相位黑盒”。
此外,我们还可以分配额外的量子位 $y$,并对处于该量子位状态的 $f(0)$ 和 $f(1)$ 值进行编码。
在这种情况下,我们将数据量子位和额外的量子位的联合状态拆分为基态 $a_{00} |0\rangle_x|0\rangle_y + a_{01} |0\rangle_x|1\rangle_y + a_{10} |1\rangle_x|0\rangle_y + a_{11} |1\rangle_x|1\rangle_y$ 的线性组合,并对每个基态分别应用运算符 $U_\textrm{mark}$。 此运算符将基态 $|x\rangle|y\rangle$ 转换为 $|x\rangle|y \oplus f(x)\rangle$($\oplus$ 为模 2 加法)。 换句话说,运算符 $U_\textrm{mark}$ 不会改变 $f(x) = 0$ 的基态,而是翻转 $f(x) = 1$ 的状态的额外量子位状态。 通过量子运算符是线性的这一事实可以推导对叠加的全部效果:也就是说,我们的起始状态将被转换为 $a_{00} |0\rangle_x|f(0)\rangle_y + a_{01} |0\rangle_x|1 \oplus f(0)\rangle_y + a_{10} |1\rangle_x|f(1)\rangle_y + a_{11} |1\rangle_x|1 \oplus f(1)\rangle_y$。 在这种情况下,额外的量子位往往最终会与数据量子位相互牵连。
运算符 $U_\textrm{mark}$ 称为“标记黑盒”。
备注
以这种方式进行计算,并不等于“能够同时计算所有输入的函数”! 回想一下,量子测量限制了我们从量子系统中提取的信息量,因此,在这两种情况下,我们无法从这样的计算中提取所有的函数值。 我们需要构造一种巧妙的算法,利用在叠加中执行计算的优势来寻找答案。
在量子算法中表示经典计算的最佳方式取决于目标:
许多量子算法要求使用第一种方法,在基态的相位中对经典函数值编码,因为这种方法可以简化算法的表达。
第二种方法是在额外的量子位状态中对经典函数值编码,使经典计算的实现更加容易。
在实践中,经常会看到用标记黑盒来实现经典计算,然后转换为相位黑盒(作为的最后一步),再将操作插入量子算法的其他部分。
经典计算机科学有一个分支是“可逆计算”,它为我们提供了在量子计算机上实现经典计算所需的技术。 在本模块的最后一个单元中,当我们讨论可以从 Grover 算法中获益的问题类型时,将回到高效实现量子黑盒的问题。
在下一个单元中,你将了解如何使用 Q# 将图形着色示例问题实现为量子黑盒。