Skip to Content
量子计算机编程:从入门到实践
book

量子计算机编程:从入门到实践

by Eric R. Johnston, Nicholas Harrigan, Mercedes Gimeno-Segovia
July 2021
Beginner to intermediate
274 pages
7h 10m
Chinese
Posts & Telecom Press
Content preview from 量子计算机编程:从入门到实践
82
5
5.7
 可逆性和临时量子比特
本章一再强调,
QPU
运算必须是可逆的。当然,你可能会问:“如何确保要执行的算术运
算是可逆的呢?”虽然没有一种固定的方法将算术运算转换成可逆的形式(这样做能使其
适用于
QPU
),但我们可以借助一种有用的技术,即
临时量子比特
scratch qubit
)。
在对我们感兴趣的输入或输出进行编码时,临时量子比特不是必需的,它只扮演临时角
色,辅助实现相关量子逻辑。
来看一个例子,我们将用临时量子比特使一个不可逆运算变得可逆。假设要用
QPU
实现
abs(a)
,如图
5-15
所示,该函数计算有符号整数的绝对值。
5-15:哪些 QPU 运算可以计算绝对值?
我们已经在图
5-9
中看到了如何轻松地对
QPU
寄存器中的整数取反。你可能认为
abs(a)
实现起来很简单——根据其自身符号位,适时地对
QPU
寄存器取反。但是,任何试图这
样做的运算都是不可逆的。(数学函数
abs(a)
本身会破坏关于输入符号的信息。)这并不是
说我们会遇到
QPU
编译错误或运行时错误;问题的关键是,无论多么努力,我们都找不
到获得目标结果所需的可逆
QPU
运算。
是时候使用临时量子比特了!我们用它来保存
a
中的整数符号。首先将临时量子比特初始
化为
|
0
,然后根据寄存器
a
中位于最高位的量子比特,使用
CNOT
翻转临时量子比特。之
后,将临时量子比特的值(而不是直接以寄存器
a
中的整数符号)作为条件执行取反运
算,如图
5-16
所示。
根据a的最高位对临时
量子比特执行CNOT
如果sign(a)为真,
则对a取反
临时量子比特
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

JAVASCRIPT之美|聽頂尖程式設計師闡述他們的思維

JAVASCRIPT之美|聽頂尖程式設計師闡述他們的思維

Anton Kovalyov
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普

Publisher Resources

ISBN: 9787115566355