Saya ingin membuat gerbang Toffoli yang dikendalikan oleh n qubit, dan mengimplementasikannya di QISKit. Bisakah ini dilakukan? Jika ya, bagaimana caranya?
quantum-gate
programming
qiskit
Ali Javadi
sumber
sumber
Jawaban:
Cara sederhana untuk melakukan ini diilustrasikan pada Gambar 4.10 dari Nielsen & Chuang.
Di mana U dapat berupa rotasi qubit tunggal (dalam hal ini, gerbang X).
Rangkaian ini berfungsi seperti ini: Kami ingin menerapkan U ke target qubit hanya jika AND dari semua qubit kontrol adalah 1. Toffoli normal memberi kita AND dari 2 qubit. Jadi dengan merantai beberapa Toffolis, kita bisa mendapatkan c1.c2.c3.c4.c5, dengan tangkapan bahwa beberapa qubit "kerja" (atau ancilla) telah diperkenalkan untuk menyimpan hasil antara. Setelah menerapkan CU akhir, kami mendapatkan hasil akhir sesuai target. Sekarang kita dapat membersihkan qubit kerja menengah dengan membatalkan perhitungannya, mengembalikannya ke status | 0>. Model perhitungan reversibel ini dikenal sebagai metode "compute-copy-uncompute", dan pertama kali diusulkan oleh Charlie Bennett pada tahun 1973 .
Berikut adalah kode QISKit untuk membangun sirkuit dan memvisualisasikannya:
Hasil:
sumber
Saya ingin menambahkan metode yang tidak menggunakan ancilla qubits, tetapi memang membutuhkan gerbang yang lebih rumit daripada hanya dikendalikan-tidak. Saya percaya metode ini pertama kali dipresentasikan oleh Barenco et. Al. dalam tulisan ini , Lemma 7.5:
Ini adalah definisi rekursif, sehingga gerbang kontrol n qubit didefinisikan dalam hal gerbang kontrol n-1 qubit. Ini akan berlanjut sampai Anda mencapai dua gerbang qotit CNOT.
Implementasi ini sedikit sulit, namun, ada yang lebih sederhana jika seseorang tidak keberatan mengumpulkan fase relatif (lihat Lemma 7.9 dari makalah yang sama).
sumber
QuantumCircuit Qiskit memiliki metode mct untuk membangun gerbang Toffoli multi-kontrol dengan beberapa mode: dasar, dasar-kotor-ancilla, lanjutan, noancilla. Misalnya gerbang Toffoli dengan 3 qubit kontrol:
Keluaran:
sumber