Quantum algorithms for tasks such as factorization, search, and simulation rely on control flow such as branching and iteration that depends on the value of data in superposition. High-level programming abstractions for control flow, such as switches, loops, and higher-order functions, are ubiquitous in classical languages. By contrast, many quantum languages do not provide high-level abstractions for control flow in superposition, and instead require the use of hardware-level logic gates to implement such control flow. The reason for this gap is that whereas a classical computer supports control flow using a program counter that can depend on data, the typical architecture of a quantum computer does not provide a program counter that can depend on data in superposition. As a result, the complete set of control flow abstractions that can be correctly realized on a quantum computer has not yet been established. In this work, we provide a complete characterization of the properties of control flow abstractions that are correctly realizable on a quantum computer. First, we prove that even on a quantum computer whose program counter exists in superposition, one cannot correctly realize control flow in quantum algorithms by lifting the classical conditional jump instruction to work in superposition. This theorem denies the ability to directly lift general abstractions for control flow such as the $\lambda$-calculus from classical to quantum programming. In response, we present the necessary and sufficient conditions for control flow to be correctly realizable on a quantum computer. We introduce the quantum control machine, an instruction set architecture featuring a conditional jump that is restricted to satisfy these conditions. We show how this design enables a developer to correctly express control flow in quantum algorithms using a program counter in place of logic gates.
翻译:用于因式分解、搜索和模拟等任务的量子算法依赖于控制流,例如分支和迭代,这些控制流取决于处于叠加态的数据值。控制流的高级编程抽象,如开关、循环和高阶函数,在经典语言中无处不在。相比之下,许多量子语言并未提供处理叠加态控制流的高级抽象,而是要求使用硬件级逻辑门来实现此类控制流。造成这一差距的原因是,经典计算机通过依赖于数据的程序计数器支持控制流,而量子计算机的典型架构并未提供依赖于叠加态数据的程序计数器。因此,能够在量子计算机上正确实现的完整控制流抽象集尚未明确。在本工作中,我们完整刻画了可在量子计算机上正确实现的控制流抽象的性质。首先,我们证明,即使在一台程序计数器处于叠加态的量子计算机上,也无法通过将经典条件跳转指令提升至叠加态来正确实现量子算法中的控制流。这一定理否定了将诸如λ-演算等控制流通用抽象直接从经典编程迁移至量子编程的可能性。为此,我们提出了控制流在量子计算机上可正确实现的必要充分条件。我们引入量子控制机,这是一种指令集架构,其包含的条件跳转受限于满足这些条件。我们展示了该设计如何使开发者能够利用程序计数器替代逻辑门,在量子算法中正确表达控制流。