量子计算机在设计上通过可逆计算执行,因为量子力学要求运算必须遵循幺正演化——该原则确保每一个量子运算都可以通过数学方式逆转。 与会销毁信息并且不可逆的经典逻辑门(例如,AND、OR)不同,量子门必须保留信息以保持相干性并实现叠加。 例如,经典的 NAND 门在产生输出时会擦除输入细节,但像托佛利门(受控-受控-非门)这样的量子等效物通过仅当两个控制量子位处于特定状态时才切换目标量子位来保留所有输入信息。 这种可逆性允许量子算法回溯计算,这是纠错和像 Grover 的搜索这样的某些算法的关键特性。
可逆运算通过充当量化的量子门来实现双射函数,将每个输入状态映射到唯一的输出状态。 例如,如果控制量子位是 |1〉,CNOT 门会翻转目标量子位,但再次应用它会反转该操作。 当计算涉及不可逆函数(例如,算术运算)时,量子电路使用辅助量子位来存储中间结果,确保没有信息丢失。 例如,经典地添加两个数字会擦除进位,但量子加法器会将进位存储在辅助量子位中,从而允许稍后反转该操作。 这种方法确保即使是复杂的操作仍然与量子力学的可逆性约束兼容。 如果没有辅助,许多算法会因为不可逆的信息丢失而失败。
对于开发人员来说,这意味着量子程序必须将所有逻辑构造为可逆电路。 Qiskit 或 Cirq 等工具抽象出一些复杂性,但设计高效的电路仍然需要手动管理辅助和门序列。 例如,在量子计算机上实现 SHA-256 将涉及将算法分解为可逆组件,并使用辅助来跟踪中间哈希值。 虽然这增加了开销,但这是不可避免的:量子并行性和干涉——这是像 Shor 的算法等算法加速的关键——依赖于通过可逆运算保持叠加。 了解这些约束可以帮助开发人员避免陷阱,例如不小心引入过早崩溃量子态的非酉运算。