การดำเนินการในท้องถิ่นของ Bristlecone คือ CZ ไม่ใช่ CNOT อย่างไรก็ตามคุณสามารถแปลงระหว่างสองกับประตู Hadamard ดังนั้นนี่คือความแตกต่างเล็กน้อย
Bristlecone สามารถดำเนินการ CZ ระหว่างคู่ qubits ใด ๆ ที่อยู่ติดกันในตาราง คุณสามารถดูกริดโดยการติดตั้ง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) ในชุดดังนั้นฉันจะไม่รวมชุดของชุดที่นี่
ข้อ จำกัด เพิ่มเติมที่ต้องจำไว้คือคุณไม่สามารถดำเนินการสอง CZs ติดกันได้ในเวลาเดียวกัน Cirq คำนึงถึงสิ่งนี้เมื่อสร้างวงจรที่กำหนดเป้าหมายที่ Bristlecone ตัวอย่างเช่น:
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 แต่สองคนที่สองไม่ใช่เพราะพวกเขาไม่ใช่