Bagaimana cara oracle dalam algoritma pencarian Grover diimplementasikan?

27

Algoritma pencarian Grover menyediakan kecepatan kuadratik yang dapat dibuktikan untuk pencarian basis data yang tidak disortir. Algoritma biasanya diekspresikan oleh rangkaian kuantum berikut:

Dalam sebagian besar representasi, bagian penting dari protokol adalah "gerbang oracle" Uω , yang "ajaib" melakukan operasi |x(1)f(x)|x . Namun seringkali dibiarkan tanpa disadari betapa sulitnya mewujudkan gerbang seperti itu sebenarnya. Memang, bisa jadi penggunaan "oracle" seperti ini hanyalah cara untuk menyapu kesulitan di bawah karpet.

Bagaimana kita tahu apakah operasi oracle seperti itu memang bisa diwujudkan? Dan jika demikian, apa kompleksitasnya (misalnya dalam hal kompleksitas dekomposisi gerbang)?

glS
sumber
5
Itu juga sesuatu yang saya ingin tahu. Dalam percobaan ini misalnya mereka memasukkan solusi ke oracle, yang rasanya agak seperti menipu saya ...
M. Stern
Jawaban hebat lain untuk pertanyaan ini diberikan dalam jawaban ini di CS Theory SE.
glS

Jawaban:

20

Fungsi f hanyalah fungsi boolean sembarang dari string bit: f:{0,1}n{0,1} . Untuk aplikasi untuk memecahkan kriptografi, seperti [1] , [2] , atau [3] , ini sebenarnya bukan 'pencarian basis data', yang mengharuskan penyimpanan seluruh basis data sebagai rangkaian kuantum, melainkan fungsi seperti

x{1,if SHA-256(x)=y;0,otherwise,

untuk fixed y , yang tidak memiliki struktur kita dapat mengeksploitasi untuk pencarian klasik, tidak seperti, katakanlah, fungsi

x{1,if 2xy(mod220481942289),0,otherwise,

yang memiliki struktur yang dapat dieksploitasi untuk membalikkannya lebih cepat bahkan pada komputer klasik.

Pertanyaan tentang biaya tertentu tidak dapat dijawab secara umum karena f dapat berupa sirkuit apa pun — itu hanya masalah membuat sirkuit kuantum dari sirkuit klasik . Tetapi biasanya, seperti pada contoh di atas, fungsi f sangat murah untuk dievaluasi pada komputer klasik, sehingga seharusnya tidak menimbulkan beban yang sangat berat pada komputer kuantum yang segala sesuatu tentang algoritma Grover sesuai anggaran Anda.

Satu-satunya biaya umum di atas f adalah gerbang BUKAN bersyarat ekstra

C:|a|b|a|ab
mana adalah xor, dan qubit ekstra tambahan untuk itu. Khususnya, jika kita memiliki sirkuit
F:|x|a|junk|x|af(x)|junk
dibangun dari C dan sirkuit untuk f , maka jika kita menerapkannya ke |x bersama-sama dengan qubit tambahan awalnya di negara bagian |=H|1=(1/2)(|0|1)di manaHadalah gerbang Hadamard, maka kita mendapatkan

F|x||junk=12(F|x|0|junkF|x|1|junk)=12(|x|f(x)|junk|x|1f(x)|junk).

Jika f(x)=0 maka 1f(x)=1 , maka dengan menyederhanakan kita memperoleh

F|x||junk=|x||junk,
sedangkan jika f(x)=1 maka 1f(x)=0 , maka
F|x||junk=|x||junk,
dan dengan demikian secara umum
F|x|-|sampah=(-1)f(x)|x|-|sampah.

Squeamish Ossifrage
sumber
5

Nah, makalah asli Grover, "mekanika kuantum membantu dalam mencari jarum di tumpukan jerami" dengan jelas menyatakan, ia mengasumsikan bahwa C (S) dapat dievaluasi dalam waktu yang konstan. Pencarian Grover tidak peduli tentang implementabilitas, tetapi pengurangan polinomial dalam apa yang disebut kompleksitas kueri (berapa kali Anda berkonsultasi dengan oracle, seperti database klasik)

Bahkan, konsep oracle dalam komputasi diusulkan oleh Alan Turing untuk menggambarkan konstruksi yang deskripsi tentang UTM mungkin tidak dapat diwujudkan (Wikipedia). Hal ini dalam arti magis.

Tapi tentu saja, kembali ke pertanyaan Anda, bagaimana kita kemudian benar-benar membuat sirkuit untuk algoritma pencarian Grover (atau oracle)? Apakah kita perlu mengetahui jawabannya terlebih dahulu untuk mencari hasilnya? Nah, dalam beberapa hal Anda perlu. Itulah tepatnya perbaikan pintar pada pencarian Grover mencoba untuk bekerja, sehingga, kita tidak perlu tahu jawaban yang tepat di muka, tetapi beberapa sifat itu. Biarkan saya ilustrasikan dengan sebuah contoh.

Untuk masalah pengenalan pola menggunakan pencarian Grover, jika saya memiliki 4 pola pada 2 qubit (00, 01, 10, 11) dan saya ingin menandai dan memperkuat 11, diagonal unitary oracle saya harus seperti (1,1,1 , -1) untuk menjaga pergeseran fase pi untuk solusi. Jadi, untuk implementasi sederhana ini, untuk membangun kesatuan, Anda perlu mengetahui jawaban lengkapnya terlebih dahulu.

Perbaikan yang cerdas dari penyelesaian pola jika diberikan dalam makalah "Pencocokan pola kuantum" oleh Mateas dan Omar. Intinya, itu membangun oracle tetap sebanyak ada huruf di set. Jadi untuk string biner kita, akan ada oracle yang menandai semua 1s, dan lainnya yang menandai semua 0s. Kata-kata itu dipanggil secara kondisional berdasarkan apa yang ingin saya cari. Jika saya ingin mencari 11, saya memanggil oracle 1 di LSqubit, dan oracle 1 lagi di MSqubit. Dengan oracle pertama, saya akan memperkuat negara (01, 11), yaitu negara dengan LSQ sebagai 1, dan dalam panggilan ke-2, itu akan menguatkan (10, 11). Jadi seperti yang Anda lihat, 11 adalah satu-satunya negara yang mendapatkan dua kali diperkuat, yang berakhir dengan probabilitas pengukuran yang lebih tinggi. Meskipun sirkuit kuantum yang dikompilasi akan berubah berdasarkan apa pola pencarian input saya, deskripsi tingkat tinggi dari algoritma kuantum tetap sama. Anda dapat menganggap nubuat sebagai pemanggilan fungsi berdasarkan sakelar alfabet yang digunakan untuk setiap karakter dalam string pencarian.

Aritra
sumber
Jadi, jika Anda harus tahu untuk membangun U ohm apa gunanya? Jika tidak, saya tidak jelas bagaimana menerapkan U ω untuk yang tidak diketahui ω ! Saya telah melihat beberapa implementasi pada IBM, tetapi mereka menganggap mengetahui ω ! ωUωUωωω
user185597