【发布时间】:2021-11-30 03:05:10
【问题描述】:
我正在研究 Shor 算法的量子电路实现,该算法使用 python 包 Qiskit 将 15 分解为素数的乘积。有关详细信息,请参阅此website。
我的问题与本网站U-gate的实现有关。在本网站中,U-gate的实现以表格形式给出
def c_amod15(a, power):
"""Controlled multiplication by a mod 15"""
if a not in [2,7,8,11,13]:
raise ValueError("'a' must be 2,7,8,11 or 13")
U = QuantumCircuit(4)
for iteration in range(power):
if a in [2,13]:
U.swap(0,1)
U.swap(1,2)
U.swap(2,3)
if a in [7,8]:
U.swap(2,3)
U.swap(1,2)
U.swap(0,1)
if a == 11:
U.swap(1,3)
U.swap(0,2)
if a in [7,11,13]:
for q in range(4):
U.x(q)
U = U.to_gate()
U.name = "%i^%i mod 15" % (a, power)
c_U = U.control()
return c_U
我的问题是,为什么这个 U 门是通过交换 qbits 来设计的。 'a' 的值究竟会如何影响交换方案?如果我想分解 33 怎么办?我应该如何将此交换方案更改为因子 33?
【问题讨论】:
-
交换操作是零功耗、可逆计算的基础。见en.m.wikipedia.org/wiki/Fredkin_gate
标签: algorithm physics quantum-computing qiskit