Apa itu oracle?

18

Apa sebenarnya " oracle " itu? Wikipedia mengatakan bahwa oracle adalah " kotak hitam ", tetapi saya tidak yakin apa artinya itu.

Misalnya, dalam algoritme Deutsch-Jozsa , , apakah oracle hanya kotak yang berlabel `` U_f ", atau apakah itu segalanya antara pengukuran dan input (termasuk gerbang Hadamard)?

''Uf",

Dan untuk memberikan oracle, apakah saya perlu menulis Uf dalam bentuk matriks atau bentuk kental: Uf memberikan yyf(x) dan xx sudah cukup sehubungan dengan definisi oracle?

StarBucK
sumber
Microsoft memiliki dokumentasi yang bagus tentang oracle kuantum .
Sanchayan Dutta

Jawaban:

22

Sebuah oracle (setidaknya dalam konteks ini) hanyalah sebuah operasi yang memiliki beberapa properti yang Anda tidak tahu, dan sedang berusaha mencari tahu. Istilah "kotak hitam" digunakan secara setara, untuk menyampaikan gagasan bahwa itu hanya kotak yang tidak dapat Anda lihat di dalamnya, dan karenanya Anda tidak tahu apa yang dilakukannya. Yang Anda tahu adalah bahwa Anda dapat memasok input dan menerima output. Dalam diagram sirkuit yang Anda gambarkan, itu hanya kotak . Yang lainnya adalah hal-hal yang Anda tambahkan untuk membantu menginterogasi oracle dan menemukan propertinya.Uf

Untuk memberikan oracle, Anda dapat menulisnya dalam bentuk apa pun yang valid yang mendefinisikan peta dari semua input yang mungkin ke output. Ini bisa berupa matriks (mungkin dengan parameter yang tidak diketahui), atau bisa juga peta (ketat, ), karena diberikan salah satu deskripsi, Anda dapat mengerjakan yang lainnya.U:(x,y)(x,yf(x))x,y{0,1}

DaftWullie
sumber
Bisakah Anda mengklarifikasi apa yang Anda maksud dengan tegas dalam kalimat terakhir?
Aritra Das
@tparker tidak benar-benar - tujuan dari bentuk-bentuk oracle seperti itu sering memungkinkan deskripsi tidak hanya dari algoritma, tetapi untuk optimalitas algoritma. Itu diukur hanya sebagai hitungan jumlah penggunaan oracle. Tidak masalah berapa lama oracle dibutuhkan untuk berjalan. Jadi untuk grover's, itu membutuhkan akar kuadrat dari jumlah panggilan oracle yang klasik lakukan.
DaftWullie
Kamu benar; komentar saya diutarakan dengan buruk. Apa yang ingin saya katakan adalah bahwa jika Anda ingin hasil oracle memberikan wawasan tentang runtime "dunia nyata", Anda perlu mengasumsikan (selain asumsi kotak hitam) bahwa subrutin apa pun yang Anda jalankan untuk benar-benar diterapkan panggilan oracle mendominasi runtime algoritma, sehingga jumlah panggilan oracle memang sebanding dengan runtime yang sebenarnya. Tapi itu asumsi tambahan untuk relevansi "dunia nyata", bukan bagian penting dari definisi oracle.
tparker