ब्रिसलकोन का मूल संचालन सीजेड है, न कि सीएनओटी। हालाँकि, आप दोनों के बीच हडामर्ड गेट्स से रूपांतरण कर सकते हैं, इसलिए यह एक तुच्छ अंतर है।
Bristlecone ग्रिड पर किसी भी आसन्न जोड़े के बीच एक 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)
यहां बताया गया है कि आप किस तरह से अनुमत सीजेड ऑपरेशंस वाले सेट प्राप्त कर सकते हैं:
qubits = cirq.google.Bristlecone.qubits
allowed = {cirq.CZ(a, b)
for a in qubits
for b in qubits
if a.is_adjacent(b)}
सेट में 121 तत्व हैं, और यह कुछ हद तक यादृच्छिक है कि क्या आपको सेट में सीजेड (एक्स, वाई) या सीजेड (वाई, एक्स) मिलता है, इसलिए मैं यहां सेट का प्रिंटआउट शामिल नहीं करूंगा।
ध्यान रखने के लिए एक अतिरिक्त बाधा यह है कि आप एक ही समय में एक दूसरे के बगल में दो सीजेड नहीं कर सकते। ब्रिस्टलकोन पर लक्षित सर्किट बनाते समय 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): ───────────@───
पहले दो ऑपरेशन कंपित थे क्योंकि वे निकटवर्ती सीज़ेड हैं, लेकिन दूसरे दो नहीं थे क्योंकि वे नहीं हैं।