Rigetti的19 qubit芯片和Google的72 qubit BristleCone芯片在物理上允许使用CNOT吗?


12

对于每个IBM量子芯片,假设j是CNOT的控件,则可以编写一个字典,将每个控制量子位j映射到其物理允许目标的列表。例如,

ibmqx4_c_to_tars = {
    0: [],
    1: [0],
    2: [0, 1, 4],
    3: [2, 4],
    4: []}  # 6 edges

他们的ibmqx4芯片。

对于Google的72量子位Bristlecone芯片来说,这将是什么。您可以将字典写成一种理解。Rigetti的19量子位芯片也存在同样的问题。


也许您可以添加指向问题芯片描述的链接?我找不到Regitti的芯片规格。
尼利米

吉姆伍顿(Jim Wootton)应该知道
rrtucci '18

Answers:


12

Bristlecone的本机操作是CZ,而不是CNOT。但是,您可以使用Hadamard门在两者之间进行转换,因此这是一个微不足道的区别。

Bristlecone可以在网格上任何相邻的qubit对之间执行CZ。您可以通过安装cirq并打印出Bristlecone设备来查看网格:

$ pip install cirq
$ python
>>> import cirq
>>> print(cirq.google.Bristlecone)
                                             (0, 5)────(0, 6)
                                             │         │
                                             │         │
                                    (1, 4)───(1, 5)────(1, 6)────(1, 7)
                                    │        │         │         │
                                    │        │         │         │
                           (2, 3)───(2, 4)───(2, 5)────(2, 6)────(2, 7)───(2, 8)
                           │        │        │         │         │        │
                           │        │        │         │         │        │
                  (3, 2)───(3, 3)───(3, 4)───(3, 5)────(3, 6)────(3, 7)───(3, 8)───(3, 9)
                  │        │        │        │         │         │        │        │
                  │        │        │        │         │         │        │        │
         (4, 1)───(4, 2)───(4, 3)───(4, 4)───(4, 5)────(4, 6)────(4, 7)───(4, 8)───(4, 9)───(4, 10)
         │        │        │        │        │         │         │        │        │        │
         │        │        │        │        │         │         │        │        │        │
(5, 0)───(5, 1)───(5, 2)───(5, 3)───(5, 4)───(5, 5)────(5, 6)────(5, 7)───(5, 8)───(5, 9)───(5, 10)───(5, 11)
         │        │        │        │        │         │         │        │        │        │
         │        │        │        │        │         │         │        │        │        │
         (6, 1)───(6, 2)───(6, 3)───(6, 4)───(6, 5)────(6, 6)────(6, 7)───(6, 8)───(6, 9)───(6, 10)
                  │        │        │        │         │         │        │        │
                  │        │        │        │         │         │        │        │
                  (7, 2)───(7, 3)───(7, 4)───(7, 5)────(7, 6)────(7, 7)───(7, 8)───(7, 9)
                           │        │        │         │         │        │
                           │        │        │         │         │        │
                           (8, 3)───(8, 4)───(8, 5)────(8, 6)────(8, 7)───(8, 8)
                                    │        │         │         │
                                    │        │         │         │
                                    (9, 4)───(9, 5)────(9, 6)────(9, 7)
                                             │         │
                                             │         │
                                             (10, 5)───(10, 6)

这是获取包含允许的CZ操作的集合的方法:

qubits = cirq.google.Bristlecone.qubits
allowed = {cirq.CZ(a, b)
           for a in qubits
           for b in qubits
           if a.is_adjacent(b)}

该集合中有121个元素,并且在集合中获得CZ(x,y)还是CZ(y,x)都是随机的,因此在此我将不包括该集合的打印输出。

要记住的另一个限制是,您不能同时执行两个CZ。当创建针对Bristlecone的电路时,Cirq会考虑到这一点。例如:

import cirq
device = cirq.google.Bristlecone
a, b, c, d, e = device.col(6)[:5]
circuit = cirq.Circuit.from_ops(
    cirq.CZ(a, b),
    cirq.CZ(c, d),
    cirq.CZ(a, b),
    cirq.CZ(d, e),
    device=device)
print(circuit)
# (0, 6): ───@───────@───
#            │       │
# (1, 6): ───@───────@───
# 
# (2, 6): ───────@───────
#                │
# (3, 6): ───────@───@───
#                    │
# (4, 6): ───────────@───

前两个操作是交错的,因为它们是相邻的CZ,但是后两个操作不是因为它们不是。


很好地使用API​​!您的解决方案比我的更好!:)
Nelimee '18

Nelimee,您的解决方案也是正确的,并且更加正确。Circ选择将矩形阵列旋转45度,这有点不
妥当

1
原来如此。他们这样做是由于ascii绘图的局限性
rrtucci '18

Google有量子计算机吗?
user1271772

@rrtucci ASCII包括对角线(/,\)。坐标选择更多地是为了使各种任务的难度最小化,例如猜测是否存在量子位(a,b)。对于这些任务,菱形在边界附近仅是棘手的,而棋盘格图案始终是棘手的。
Craig Gidney '18

9

在介绍Bristlecone量子芯片的原始博客文章中,这是该芯片的连接图:

Bristlecone连接图

0

connectivity_map = {
    i : [i + offset
         for offset in (-6, -5, 5, 6) # values deduced by taking a qubit in the middle of
                                      # chip and computing the offsets between the choosen
                                      # qubit and it's 4 neighbours
         if ((0 <= i+offset < 72)             # the neighbour should be a valid qubit
             and ((i+offset) // 6 != i // 6)) # the neighbour should not be on the same line
    ]
    for i in range(72)
}

警告:以上表达完全未经验证。它似乎适用于第一个量子位,对我来说似乎合乎逻辑,但是由您来检查地图是否100%正确。

警告2:Google的博客文章中没有谈论量子位之间的连接方向。上面给出的连接图假定连接是双向的。


3

当前版本的PyQuil提供了一个“ ISA”对象,该对象包含有关Rigetti量子处理器的所需信息,但未按要求设置其格式。我是一个可怜的Python程序员,所以您必须原谅我的非Python device_name风格-但是下面的代码片段会将a 和将pyQuil ISA重新格式化为您的词典之一:

import pyquil.api as p

device_name = '19Q-Acorn'

isa = p.get_devices(as_dict=True)[device_name].isa
d = {}
for qubit in isa.qubits:
    l = []
    for edge in isa.edges:
        if qubit.id is edge.targets[0]:
            l += [edge.targets[1]]
        if qubit.id is edge.targets[1]:
            l += [edge.targets[0]]
    if not qubit.dead:
        d[qubit.id] = l

print(d)

在Google的情况下,通常在Rigetti量子处理器上可用的本机二比特门是a CZ,它与(1)是双向的(†)CZ q0 q1相同,CZ q1 q0而(2)可以很容易地转换成您喜欢的任一种CNOT通过将目标与Hadamard门夹在中间。

† -一个的物理实现CZ在超导架构门移交,这就是为什么你经常看到的建筑描述包括CZ q0 q1但不限CZ q1 q0。这是一个qubit参与其中的一半物理交互的简写,即使两种排序的结果(忽略噪声影响)相同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.