量子计算:从电路构建到程序运行
1. 量子硬币抛掷与电路转换
1.1 量子硬币抛掷结果
在实际量子计算机上进行量子硬币抛掷实验时,其结果通常与模拟器上的结果相似。不过,若运行程序的物理量子比特失衡,更倾向于某一种结果,情况就会有所不同。因为实际的量子比特是物理实体,并非完美的数学抽象。
1.2 非模拟器后端的基础门
非模拟器后端只能运行一组基础门,其他所有门都由这些基础门构建而成。当运行量子程序时,软件会对其进行解释,将复杂的高级门架构转换为仅由一组基础门(u1、u2、u3、id 和 cx)组成的基本量子程序。实际上,在 Qiskit® 中编写的所有量子程序都可以仅使用这些门来表示。可以在 IBM Quantum Experience® 网页控制台的“Your backends”部分,点击感兴趣的后端,查看量子后端使用的基础门。
1.3 门的转换(转译)
将程序中的门转换为后端可以运行的基础门的过程称为转译,这一过程在程序运行之前完成。转译器会将输入的程序转换为基础门,然后在后端运行。不过,常规使用的门并不总是能直接转换为单个基础门,有时转译器需要进行一些工作,用其他门的组合替换原有的门。
例如,在 IBM 的 5 量子比特机器上运行简单的量子硬币抛掷程序时,原始程序和转译后的程序变化不大。H 门现在变成了输入为 0 和 π 的 U2 门,简化的 3 量子比特程序被后端实际的 5 量子比特所取代,但电路的深度保持不变,仍为两个门的长度。
对于更复杂的电路,情况会变得更加复杂。以 Grover 搜索算法为例,除了 X 和 H 门外,还有更复杂的门,如具有两个输入和一个输出