Saya mencari algoritma kuantum yang dapat saya gunakan untuk menunjukkan sintaks berbagai bahasa kuantum. Pertanyaan saya mirip dengan ini , bagaimanapun, bagi saya, "baik" berarti:
- Apa yang dilakukannya dapat dijelaskan dalam 1-2 paragraf, dan harus mudah dimengerti.
- Harus menggunakan lebih banyak elemen dari "dunia pemrograman kuantum" (maksud saya algoritma harus menggunakan beberapa konstanta klasik, pengukuran, kondisi, qregister, operator dll, sebanyak mungkin).
- Algoritme harus kecil (paling banyak 15-25 pseudocode-lines).
Algoritma yang berguna seringkali terlalu panjang / keras, tetapi algoritma Deutsch tidak menggunakan banyak elemen. Dapatkah seseorang menyarankan saya algoritma demo yang baik?
algorithm
resource-request
programming
klenium
sumber
sumber
Jawaban:
Saya sarankan melihat protokol estimasi eigenvalue / eigenvector. Ada banyak fleksibilitas untuk membuat masalah semudah atau sekeras yang Anda inginkan.
Mulailah dengan memilih dua parameter, dan k . Anda ingin mendesain kesatuan n -qubit, U yang memiliki nilai eigen dari bentuk e - 2 π i q / 2 k untuk bilangan bulat q . Pastikan bahwa setidaknya satu dari nilai eigen itu unik, dan sebut saja ω . Pastikan juga status produk yang sederhana, katakan | 0 ⟩ ⊗ n , memiliki non-nol tumpang tindih dengan vektor eigen dari nilai eigen ω .n k n U e- 2 πsaya q/ 2k q ω | 0 ⟩⊗ n ω
Ini berfungsi sebagai berikut:
sumber
Kedengarannya seperti Anda menginginkan kuantum "Hello World". Versi kuantum yang paling mudah dari ini hanya akan menulis versi teks biner yang dikodekan
Hello World
dalam daftar qubit. Tetapi ini membutuhkan ~ 100 qubit, dan lebih panjang dari batas atas Anda untuk panjang kode.Jadi mari kita menulis suatu bagian teks yang lebih pendek. Mari kita menulis
;)
, kita perlu sedikit string dengan panjang 16. Secara khusus, menggunakan pengkodean ASCIIMenggunakan QISKit, Anda akan melakukan ini menggunakan kode berikut.
Tentu saja, ini tidak terlalu kuantum. Jadi, Anda bisa melakukan superposisi dua emotikon berbeda. Contoh termudah adalah menempatkan superposisi;) dengan 8), karena string bit untuk ini berbeda hanya pada qubit 8 dan 9.
Jadi Anda cukup mengganti baris
dari atas dengan
Hadamard menciptakan superposisi dari
0
dan1
, dan cnot membuatnya menjadi superposisi dari00
dan11
pada dua qubit. Ini adalah satu-satunya superposisi yang diperlukan untuk;)
dan8)
.Jika Anda ingin melihat implementasi sebenarnya dari ini, dapat ditemukan pada tutorial QISKit (pengungkapan penuh: ditulis oleh saya).
sumber
Saya akan mengusulkan generator nomor acak 1-bit (sempurna). Hampir sepele mudah:
sumber