Quantum teleportation एक qubit की सटीक स्थिति (state) को एक जगह से दूसरी जगह भेजता है, बिना उस qubit को भौतिक रूप से ले जाए। इस प्रोटोकॉल को तीन qubits, एक साझा entangled pair, और दो classical bits चाहिए होते हैं, और आप पूरी चीज़ Qiskit की तीस से भी कम पंक्तियों में बना सकते हैं।
इस प्रोटोकॉल को लेकर ज़्यादातर भ्रम इसके नाम की वजह से होता है, तो कोड छूने से पहले इसे स्पष्ट कर लेते हैं।
Teleportation क्या नहीं है
यह प्रोटोकॉल पदार्थ को नहीं हिलाता। qubit के भौतिक कण के बारे में कुछ भी कहीं स्थानांतरित नहीं होता। जो चीज़ हिलती है वह है सूचना (information): प्राप्तकर्ता (receiver) का qubit प्रोटोकॉल के अंत में ठीक उसी क्वांटम स्थिति में होता है जिसमें भेजने वाले (sender) का qubit शुरुआत में था।
यह प्रोटोकॉल प्रकाश से तेज़ संचार की अनुमति नहीं देता। भेजने वाले से दो classical bits आने तक receiver का qubit बेकार डेटा भर होता है, और यह ट्रांसमिशन किसी भी अन्य classical सिग्नल की तरह प्रकाश की गति से बंधा होता है। प्रकृति यहाँ बहुत सावधान है: entanglement अकेले केवल परिणामों को सहसंबंधित (correlate) करता है, यह कभी भी अपने आप में कोई नियंत्रणीय सिग्नल नहीं भेजता।
यह प्रोटोकॉल qubit की कॉपी भी नहीं बनाता। No-cloning theorem किसी अज्ञात क्वांटम स्थिति की पूर्ण प्रति को मूल के साथ-साथ कभी भी मौजूद रहने से रोकता है, और teleportation इसका सख़्ती से पालन करता है: स्थिति को स्थानांतरित करने की प्रक्रिया ही भेजने वाले की प्रति को नष्ट कर देती है। अंत में स्थिति रखने वाला ठीक एक ही qubit बचता है, और receiver का qubit वह नहीं होता जिससे आपने शुरुआत की थी।
तीन चरणों में यह प्रोटोकॉल
- पहले से entanglement साझा करें। sender और receiver दोनों के पास एक Bell pair का आधा-आधा हिस्सा होता है, जो यह जानने से पहले ही बाँटा जा चुका होता है कि किस स्थिति को teleport करना है।
- sender अपने आधे pair पर, teleport किए जाने वाले qubit के साथ मिलाकर, एक संयुक्त (Bell-basis) measurement करता है। इससे चार संभावित random two-bit परिणामों में से एक मिलता है, और इसके side effect के रूप में मूल qubit की स्थिति नष्ट हो जाती है।
- sender वे दो classical bits receiver को भेजता है, जो परिणाम के अनुसार अपने आधे pair पर चार संगत gates में से एक (identity, X, Z, या XZ) लागू करता है। यह correction चरण 2 में आए चार random परिणामों में से जो भी आया हो, ठीक वही मूल स्थिति फिर से बना देता है।
चरण 2 की यादृच्छिकता (randomness) असली और अपरिहार्य है, और चरण 3 का correction इसे निश्चित रूप (deterministically) से रद्द कर देता है। यह रद्द होना ही इस प्रोटोकॉल का पूरा उद्देश्य है, और यही वह चरण भी है जिसमें गलती होना सबसे आसान है, इस पर आगे और बात करेंगे।
Qiskit में circuit बनाना
तीन qubits: q0 में वह स्थिति है जिसे teleport करना है, q1 entangled pair में sender का आधा हिस्सा है, q2 receiver का आधा हिस्सा है।
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, transpile
from qiskit_aer import AerSimulator
theta = 0.9 # arbitrary angle, stands in for "an unknown state"
qr = QuantumRegister(3, "q")
cr = ClassicalRegister(2, "c")
result_reg = ClassicalRegister(1, "result")
qc = QuantumCircuit(qr, cr, result_reg)
# Step 0: prepare the state to teleport on q0. In a real protocol
# this state is unknown. Ry(theta) here only gives us something
# concrete to verify against later.
qc.ry(theta, 0)
qc.barrier()
चरण 1: entangled pair को बाँटना
qc.h(1)
qc.cx(1, 2)
qc.barrier()
Bell state बनाने का सामान्य तरीका: एक Hadamard gate के बाद एक CNOT। अब q1 और q2 अधिकतम रूप से entangled हो चुके हैं, और असली उपयोग में प्रोटोकॉल का बाकी हिस्सा चलने से पहले ये पहले ही अलग किए जा चुके होते: q1 sender के पास, q2 receiver के पास।
चरण 2: Bell-basis measurement
qc.cx(0, 1)
qc.h(0)
qc.measure(0, cr[0])
qc.measure(1, cr[1])
qc.barrier()
CNOT और Hadamard gates q0 और q1 की संयुक्त स्थिति को Bell basis में घुमा देते हैं, जिससे एक सामान्य computational-basis measurement अब यह बता देता है कि यह pair चार Bell states में से किसमें collapse हुआ है। यह परिणाम समान रूप से random होता है, cr[0] और cr[1] के चार संयोजनों में से हर एक के आने की संभावना लगभग 25% होती है, और इसी randomness को ठीक करना अगले चरण का काम है।
चरण 3: Classically-controlled correction
with qc.if_test((cr[1], 1)):
qc.x(2)
with qc.if_test((cr[0], 1)):
qc.z(2)
यह circuit के बीच में एक असली classical शर्त है, कोई शॉर्टकट नहीं: q2 को X gate तभी मिलता है जब classical bit cr[1] ने 1 मापा हो, और Z gate तभी मिलता है जब cr[0] ने 1 मापा हो। Qiskit का if_test context manager इसे एक असली dynamic circuit में compile करता है, वही तंत्र जिसे कोई भौतिक setup दो classical bits को एक सामान्य channel पर भेजने और दूसरे छोर पर correction लागू करने के लिए इस्तेमाल करेगा।
चरण 4: यह जाँचना कि प्रोटोकॉल ने काम किया
qc.ry(-theta, 2)
qc.measure(2, result_reg[0])
sim = AerSimulator()
tqc = transpile(qc, sim)
counts = sim.run(tqc, shots=4096).result().get_counts()
print(sorted(counts.items()))
जाँचने की तरकीब: q2 पर मूल rotation का उल्टा लागू करें और उस qubit को measure करें। अगर q2 वाकई उसी स्थिति में पहुँचा जिसमें q0 शुरू हुआ था, तो इस rotation को पलटने से qubit वापस |0⟩ पर आ जाता है, और result bit 0 दिखाता है। पूरे run में चारों (cr[0], cr[1]) परिणाम लगभग बराबर-बराबर बँटे रहते हैं, यानी Bell measurement का random परिणाम जैसा अपेक्षित था वैसा ही व्यवहार कर रहा है, जबकि चारों में से जो भी परिणाम आया हो, result bit हमेशा 0 दिखाता है। यही इसका फ़ायदा है: correction चरण जो भी random परिणाम आया हो उसे रद्द कर देता है, हर एक बार, केवल औसतन नहीं।
गलती: यह सोचकर correction छोड़ देना कि "circuit वैसे भी ठीक है"
इस circuit को देखकर यह मान लेना आसान लगता है कि correction चरण एक छोटी-सी बात है, क्योंकि चार में से तीन Bell परिणाम identity जैसी स्थिति के "करीब" दिखते हैं। पर ऐसा नहीं है। if_test blocks छोड़ दें और q2 को सीधे measure करें: परिणाम केवल उन लगभग 25% runs में सही आता है जहाँ Bell measurement संयोग से |00⟩ पर आ गया हो, और बाकी तीन-चौथाई समय में गड़बड़ आता है। यहाँ आधे अंक जैसा कुछ नहीं है। correction कोई optimization नहीं है, correction वह तंत्र है जो इस प्रोटोकॉल को एक-चौथाई-भरोसेमंद सिक्का उछालने के बजाय निश्चित (deterministic) बनाता है।
Teleportation किस काम आता है
इस प्रोटोकॉल का अपने आप में कोई स्वतंत्र इस्तेमाल एक अलग जादू के खेल जैसा नहीं है। इसका महत्व संरचनात्मक (structural) है: यही वह तंत्र है जिसे quantum networks और distributed quantum computing उन nodes के बीच qubit की स्थिति को ले जाने के लिए इस्तेमाल करते हैं जो केवल पहले से साझा entanglement और एक classical link से जुड़े होते हैं, न कि किसी सीधे quantum तार से। अलग-अलग QPUs को जोड़कर एक बड़ी logical मशीन बनाने का हर प्रस्ताव, या लंबी fiber links पर entanglement को फैलाने वाले quantum repeaters, ठीक इसी मूल क्रिया पर आधारित होते हैं। Superdense coding, जो एक भेजे गए qubit से दो classical bits भेजता है, यही विचार उलटी दिशा में लागू करने जैसा है।
असली hardware पर चलाना
circuit के बीच में measurement, उसके बाद एक classically-conditioned gate, यह किसी static circuit से कहीं ज़्यादा मुश्किल hardware माँग है। सिस्टम को तेज़, कम-latency वाला classical control electronics चाहिए, जो qubits के decohere होने से पहले measurement पढ़ ले और correction को उसी circuit में वापस भेज दे, इस क्षमता को अक्सर "dynamic circuits" कहा जाता है और हर cloud backend हर device generation पर इसे सपोर्ट नहीं करता। जहाँ dynamic circuits उपलब्ध नहीं होते, कुछ implementations classical corrections की जगह conditioned two-qubit gates लगा देते हैं और सारा measurement अंत तक टाल देते हैं, जो simulation में प्रोटोकॉल के गणित को तो सही साबित कर देता है लेकिन उस असली classical-communication चरण को टाल जाता है जो teleportation को networking के लिए वाकई उपयोगी बनाता है। असली hardware पर चलाते समय, यह मान लेने से पहले कि यह कोड जैसा लिखा है वैसा ही चलेगा, जाँच लें कि आपका target backend स्पष्ट रूप से dynamic circuits को सपोर्ट करता है या नहीं।
अगले कदम
- Qiskit SDK गाइड: पूरा सेटअप, backends, और dynamic-circuits सपोर्ट
- Quantum networking और distributed computing: अलग-अलग QPUs को जोड़ने में teleportation कहाँ फिट बैठता है
- Glossary: entanglement, Bell state, superdense coding, और बाकी शब्दावली