Bagaimana cara mengubah (reshuffle) input n-bit?

13

Saya tertarik pada algoritma kuantum yang mendapat input urutan n-bit dan yang menghasilkan sebagai output versi reshuffle (permutasi) dari urutan n-bit ini.

Misal jika inputnya adalah 0,0,1,1 (jadi n = 4 dalam kasus ini) maka jawaban yang mungkin adalah:

  • 0,0,1,1
  • 0,1,0,1
  • 0,1,1,0
  • 1,0,0,1
  • 1,0,1,0
  • 1,1,0,0

Perhatikan bahwa hanya satu output yang harus dihasilkan yang dipilih secara acak di antara semua kemungkinan output yang valid.

Bagaimana ini bisa terbaik diimplementasikan dalam algoritma kuantum ?

Solusi untuk ini sudah diusulkan sebagai bagian dari salah satu jawaban untuk Cara membuat algoritma kuantum yang menghasilkan urutan 2 n-bit dengan jumlah 1-bit yang sama? . Tetapi masalah dengan solusi ini adalah bahwa ini membutuhkan sekitar bantuan qubit yang menjadi sangat besar jika n besar.(n2)

catatan:

  • Tolong, jangan berikan algoritma klasik tanpa penjelasan bagaimana langkah-langkah algoritma klasik dapat dipetakan ke komputer kuantum universal.
  • bagi saya ada 2 cara yang baik untuk menafsirkan "dipilih secara acak di antara semua kemungkinan hasil yang baik" : (1) setiap kemungkinan hasil yang baik memiliki peluang yang sama untuk dipilih. (2) setiap kemungkinan output yang baik memiliki peluang> 0 untuk dipilih.
JanVdA
sumber
1
Input adalah string biner dengan panjang mana k bit adalah 1's, dan output adalah salah satu dari ( nnkpermutasi yang memungkinkan? Ini dapat dilakukan pada komputer klasik dengan 1 langkah. Apakah Anda inginallloutput yang mungkin? (nk)1
user1271772
Tidak, hanya satu output yang harus dihasilkan yang dipilih secara acak di antara semua output yang mungkin.
JanVdA
Apakah algoritma klasik cukup baik? (Anda masih bisa menjalankannya di komputer kuantum.) Atau apakah Anda memerlukan sth. yang mengungguli algoritma klasik terbaik?
Norbert Schuch
1
@ JanVdA: Mengapa tidak memilih 1 dan 0 dan menukar keduanya di komputer klasik?
user1271772
1
Karena Anda belum menentukan distribusi acak yang Anda inginkan, saya hanya akan meninggalkan ini di sini: Dilbert dan XKCD ;)
Ali

Jawaban:

4

Ini bisa dilakukan dengan qubit tambahan di sepanjang baris ini:logn

  1. Ubah qubit tambahan sehingga mereka menyandikan angka dipilih secara seragam secara acak.k{0,,n1}

  2. Secara siklis menggeser input qubit kali.k

  3. Biarkan yang terakhir dari input asli qubit diperbaiki sebagai output dan ulangi pada sisanya .n1

Ini adalah algoritma klasik, tetapi Anda dapat menjalankannya pada komputer kuantum tentu saja, seperti yang disarankan Norbert dalam komentar. (Aspek pertanyaan yang bersikeras tentang algoritma menjadi kuantum masih belum jelas bagi saya, jadi jika menjalankan algoritma klasik seperti yang saya sarankan pada komputer kuantum tidak cukup, akan sangat membantu bagi pertanyaan untuk diklarifikasi.)

Perhatikan bahwa karena pertanyaan meminta output acak, algoritme harus menghasilkan entropi di beberapa titik, mungkin melalui pengukuran atau melakukan operasi non-uniter lainnya pada qubit (seperti menginisialisasi mereka). Dalam algoritma di atas, ini adalah langkah pertama yang menghasilkan entropi: terlepas dari status qubit tambahan sebelum operasi pada langkah 1 dilakukan, mereka harus memiliki status setelah langkah 1 dilakukan (dengank

1nk=0n1|kk|
k dikodekan dalam biner, katakanlah).
John Watrous
sumber
Terima kasih atas jawabannya. Saya tertarik pada algoritma kuantum aktual untuk masalah - jika Anda dapat memetakan algoritma klasik di atas ke program kuantum maka itu juga baik-baik saja tetapi saya tidak tahu bagaimana melakukannya.
JanVdA
2
Saya pikir pertanyaannya sekarang menjadi fokus: Anda tidak benar-benar mencari algoritma, Anda sedang mencari kode. Yang saya jelaskan adalah sebuah algoritma, dan tugas yang tersisa adalah mengimplementasikan algoritma tersebut (atau yang berbeda) sebagai kode dalam beberapa bahasa atau sebagai deskripsi level rendah dari rangkaian kuantum. Saya sarankan Anda merevisi pertanyaan untuk membuatnya lebih jelas - tetapi perlu diketahui bahwa Anda meminta seseorang untuk melakukan pekerjaan yang membosankan dan secara konseptual tidak menarik bagi Anda. Alternatif untuk belajar bagaimana melakukan ini sendiri mungkin tampak menakutkan, tetapi mungkin akhirnya menjadi solusi yang lebih baik dalam jangka panjang.
John Watrous
Saya telah menambahkan catatan untuk pertanyaan itu. Saya pikir kita telah menafsirkan konsep algoritma kuantum secara berbeda. Bagi saya algoritma a_classical_ bukan algoritma kuantum tetapi mungkin dipetakan ke dalam algoritma kuantum .
JanVdA
@ JanVdA: Apa yang Anda maksud dengan algoritma kuantum? Misalnya, apakah Anda mengharuskan itu melibatkan setidaknya satu gerbang ? Atau itu membutuhkan setidaknya satu gerbang Y ? Atau itu membutuhkan beberapa set gerbang spesifik lainnya? Apa set gerbang yang Anda inginkan agar algoritma ini digunakan? HY
user1271772
Algoritma kuantum adalah algoritma yang dapat dipetakan (pada tingkat langkah) ke program untuk komputer kuantum universal. Input dan output dari langkah-langkah algoritma kuantum adalah qubit (atau bisa dipetakan ke serangkaian qubit). Langkah terakhir dari algoritma kuantum = membaca (mengamati) nilai-nilai qubit (sehingga qubit menjadi dipetakan ke bit aktual) Tidak ada batasan pada set gerbang. Idenya adalah bahwa algoritma lengkap dapat berjalan di komputer kuantum universal.
JanVdA
3

13(|001+|010+|100)001010100 .

|001|31=13(|001+|010+|100)|010|100 , yang tidak akan bekerja. Anda tidak dapat mengirim beberapa status input ke status output yang sama (tanpa dekoherensi). Selama Anda mengatakan "Saya hanya peduli tentang input yang diurutkan-naik seperti 0000111 tetapi tidak 1110000 atau 0010110; Anda dapat melakukan apa pun yang Anda inginkan dengan itu", ini akan baik-baik saja.

Salah satu trik untuk menghasilkan permutasi kuantum dari input yang diurutkan adalah dengan terlebih dahulu menyiapkan "kondisi permutasi" dengan menerapkan jaringan penyortiran ke daftar nilai seed masing-masing dalam superposisi yang seragam. Jaringan penyortiran akan menampilkan qubit yang memegang benih yang disortir, tetapi juga qubit yang memegang perbandingan jaringan penyortiran. Keadaan permutasi hanyalah perbandingan qubit. Untuk menerapkannya pada input Anda, Anda cukup menjalankan input melalui jaringan penyortiran secara terbalik. Perhatikan bahwa ada beberapa detail rumit di sini; lihat kertas " Teknik yang Ditingkatkan untuk Menyiapkan Status Eigen dari Hamiltonians Fermionik ". Anda harus menggeneralisasi teknik ini untuk bekerja pada input dengan nilai berulang, bukan hanya nilai unik.

|nknk bit set) bahwa Anda ingin menghasilkan. Perbedaan utama adalah bahwa Anda akan menjalankan sirkuit kompresi kuantum secara terbalik, dan mengharapkan sejumlah pengkodean "berapa banyak yang ada di sana?" alih-alih "beri saya status dengan jumlah yang benar".

|000114|41|0011|4216

Craig Gidney
sumber
13(|001+|010+|100)|00113(|001|010+i.|100)
1
@JanVdA Benar, seseorang dapat menggunakan fase untuk membuat berbagai output ortogonal. Bacaan saya atas pertanyaan Anda adalah bahwa Anda menginginkan fase yang sama dalam semua kasus.
Craig Gidney
0

Komputer kuantum dapat melakukan perhitungan klasik. Algoritma optimal adalah:

  1. Pilih bit (yang tercepat yang dapat Anda akses).
  2. Temukan bit yang memiliki nilai kebalikan (jika pada langkah 1 Anda mendapat 0, cari 1)
  3. Alihkan mereka (0 menjadi 1 dan 1 menjadi 0).

NO(N)nthO(N)

pengguna1271772
sumber
Terima kasih tetapi algoritma hanya akan mengganti 2 bit (sehingga tidak akan menghasilkan semua permutasi) dan itu masih merupakan algoritma klasik, sementara saya ingin melihat algoritma kuantum.
JanVdA