Pelaksanaan Qiskit
Dalam pelajaran ini, kita akan melaksanakan beberapa idea dari pelajaran tentang jalinan dalam tindakan, menggunakan Qiskit.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-aer
from qiskit import __version__
print(__version__)
2.1.1
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit_aer import AerSimulator
from qiskit.visualization import plot_histogram, array_to_latex
from qiskit.result import marginal_distribution
from qiskit.circuit.library import UGate
from numpy import pi, random
Berikut ialah pelaksanaan litar kuantum untuk protokol teleportasi.
qubit = QuantumRegister(1, "Q")
ebit0 = QuantumRegister(1, "A")
ebit1 = QuantumRegister(1, "B")
a = ClassicalRegister(1, "a")
b = ClassicalRegister(1, "b")
protocol = QuantumCircuit(qubit, ebit0, ebit1, a, b)
# Prepare ebit used for teleportation
protocol.h(ebit0)
protocol.cx(ebit0, ebit1)
protocol.barrier()
# Alice's operations
protocol.cx(qubit, ebit0)
protocol.h(qubit)
protocol.barrier()
# Alice measures and sends classical bits to Bob
protocol.measure(ebit0, a)
protocol.measure(qubit, b)
protocol.barrier()
# Bob uses the classical bits to conditionally apply gates
with protocol.if_test((a, 1)):
protocol.x(ebit1)
with protocol.if_test((b, 1)):
protocol.z(ebit1)
display(protocol.draw(output="mpl"))

Litar ini menggunakan beberapa ciri Qiskit yang belum kita lihat dalam pelajaran sebelumnya, termasuk fungsi barrier dan if_test.
Fungsi barrier mencipta pemisahan visual yang menjadikan gambar rajah litar lebih mudah dibaca, dan ia juga menghalang Qiskit daripada melakukan pelbagai penyederhanaan dan pengoptimuman merentasi penghalang semasa penyusunan apabila litar dijalankan pada perkakasan sebenar.
Fungsi if_test menerapkan operasi secara bersyarat bergantung pada bit atau daftar klasik.
Litar ini mula-mula memulakan untuk berada dalam keadaan (yang bukan sebahagian daripada protokol itu sendiri), diikuti dengan operasi Alice, kemudian pengukurannya, dan akhirnya operasi Bob. Untuk menguji bahawa protokol berfungsi dengan betul, kita akan menerapkan get satu-qubit yang dijana secara rawak pada keadaan yang dimulakan bagi untuk mendapatkan vektor keadaan kuantum rawak untuk diteleportasikan. Dengan menerapkan songsangan (iaitu, anak matrik konjugat) get tersebut pada selepas protokol dijalankan, kita boleh mengesahkan bahawa keadaan telah diteleportasikan dengan mengukur untuk melihat bahawa ia telah kembali ke keadaan .
Pertama sekali kita akan memilih secara rawak get qubit unitari.
random_gate = UGate(
theta=random.random() * 2 * pi,
phi=random.random() * 2 * pi,
lam=random.random() * 2 * pi,
)
display(array_to_latex(random_gate.to_matrix()))
Sekarang kita akan mencipta litar ujian baru yang mula-mula menerapkan get rawak kita pada kemudian menjalankan litar teleportasi, dan akhirnya menerapkan songsangan get rawak kita pada qubit dan mengukur. Hasilnya sepatutnya dengan kepastian.
# Create a new circuit including the same bits and qubits used in the
# teleportation protocol.
test = QuantumCircuit(qubit, ebit0, ebit1, a, b)
# Start with the randomly selected gate on Q
test.append(random_gate, qubit)
test.barrier()
# Append the entire teleportation protocol from above.
test = test.compose(protocol)
test.barrier()
# Finally, apply the inverse of the random unitary to B and measure.
test.append(random_gate.inverse(), ebit1)
result = ClassicalRegister(1, "Result")
test.add_register(result)
test.measure(ebit1, result)
display(test.draw(output="mpl"))

Akhir sekali, mari jalankan simulator Aer pada litar ini dan plot histogram output. Kita akan melihat statistik untuk ketiga-tiga bit klasik: bit bawah/paling kiri sepatutnya sentiasa menunjukkan bahawa qubit berjaya diteleportasikan ke dalam manakala dua bit yang lain sepatutnya lebih kurang seragam.
result = AerSimulator().run(test).result()
statistics = result.get_counts()
display(plot_histogram(statistics))
Kita juga boleh menapis statistik untuk memberi tumpuan semata-mata pada qubit keputusan ujian jika kita mahu, seperti ini:
filtered_statistics = marginal_distribution(statistics, [2])
display(plot_histogram(filtered_statistics))
Pengekodan superpadu
Pengekodan superpadu ialah protokol yang, dalam ertikata tertentu, mencapai matlamat yang saling melengkapi dengan teleportasi. Daripada membenarkan penghantaran satu qubit menggunakan dua bit komunikasi klasik (dengan kos satu e-bit jalinan), ia membenarkan penghantaran dua bit klasik menggunakan satu qubit komunikasi kuantum (sekali lagi, dengan kos satu e-bit jalinan).
Secara lebih terperinci, kita ada seorang penghantar (Alice) dan penerima (Bob) yang berkongsi satu e-bit jalinan. Mengikut konvensyen yang digunakan untuk pelajaran ini, ini bermakna Alice memegang qubit Bob memegang qubit dan bersama-sama pasangan berada dalam keadaan Alice ingin menghantar dua bit klasik kepada Bob, yang kita tandakan sebagai dan dan dia akan mencapai ini dengan menghantar satu qubit kepadanya.
Adalah munasabah untuk melihat pencapaian ini sebagai kurang menarik berbanding yang dicapai oleh teleportasi. Menghantar qubit kemungkinan besar akan jauh lebih sukar daripada menghantar bit klasik pada masa hadapan yang dapat dijangkau sehingga menukar satu qubit komunikasi kuantum dengan dua bit komunikasi klasik, dengan kos e-bit pula, nampaknya tidak berbaloi. Walau bagaimanapun, ini tidak bermakna pengekodan superpadu tidak menarik, kerana ia sememangnya menarik.
Sesuai dengan tema pelajaran, salah satu sebab mengapa pengekodan superpadu menarik ialah ia menunjukkan penggunaan jalinan yang konkrit dan (dalam konteks teori maklumat) agak mengejutkan. Teorem terkenal dalam teori maklumat kuantum, dikenali sebagai teorem Holevo, membawa maksud bahawa tanpa penggunaan keadaan jalinan yang dikongsi, adalah mustahil untuk menyampaikan lebih daripada satu bit maklumat klasik dengan menghantar satu qubit tunggal. (Teorem Holevo lebih umum daripada ini. Pernyataan tepatnya adalah teknikal dan memerlukan penjelasan, tetapi ini adalah salah satu akibatnya.) Jadi, melalui pengekodan superpadu, jalinan yang dikongsi secara berkesan membenarkan penggandaan kapasiti membawa maklumat klasik daripada penghantaran qubit.
Protokol
Gambar rajah litar kuantum berikut menerangkan protokol pengekodan superpadu:

Dalam kata-kata, inilah yang Alice lakukan:
-
Jika Alice melakukan get pada qubitnya (dan jika dia tidak melakukannya).
-
Jika Alice melakukan get pada qubitnya (dan jika dia tidak melakukannya).
Alice kemudian menghantar qubitnya kepada Bob.
Apa yang Bob lakukan apabila menerima qubit ialah mula-mula melakukan get NOT terkawal, dengan sebagai kawalan dan sebagai sasaran, dan kemudian dia menerapkan get Hadamard pada Dia kemudian mengukur untuk mendapatkan dan untuk mendapatkan dengan pengukuran asas standard dalam kedua-dua kes.
Analisis
Idea di sebalik protokol ini adalah mudah: Alice secara berkesan memilih keadaan Bell mana yang dia ingin kongsi dengan Bob, dia menghantar qubitnya kepada Bob, dan Bob mengukur untuk menentukan keadaan Bell mana yang dipilih oleh Alice.
Iaitu, mereka pada mulanya berkongsi dan bergantung pada bit dan Alice sama ada membiarkan keadaan ini atau menganjak ke salah satu keadaan Bell yang lain dengan menerapkan atau pada qubitnya
Tindakan Bob memberi kesan berikut pada keempat-empat keadaan Bell:
Ini boleh disemak secara langsung, dengan mengira hasil operasi Bob pada keadaan-keadaan ini satu persatu.
Jadi, apabila Bob melakukan pengukurannya, dia dapat menentukan keadaan Bell mana yang dipilih oleh Alice. Untuk mengesahkan bahawa protokol berfungsi dengan betul adalah dengan menyemak setiap kes:
-
Jika maka keadaan apabila Bob menerima ialah Dia mentransformasi keadaan ini menjadi dan mendapat
-
Jika maka keadaan apabila Bob menerima ialah Dia mentransformasi keadaan ini menjadi dan mendapat
-
Jika maka keadaan apabila Bob menerima ialah Dia mentransformasi keadaan ini menjadi dan mendapat
-
Jika maka keadaan apabila Bob menerima ialah Dia mentransformasi keadaan ini menjadi