Saya bingung tentang apa yang harus dimasukkan ke Oracle dalam algoritma Grover.
Tidakkah kita perlu memasukkan apa yang kita cari dan di mana menemukan apa yang kita cari untuk Oracle, selain status kuantum superposisi?
Misalnya, anggap kita memiliki daftar nama orang {"Alice", "Bob", "Corey", "Dio"}, dan kami ingin mengetahui apakah "Dio" ada di daftar. Kemudian, Oracle harus mengambil sebagai input dan output 1 / 2 ( | 00 ⟩ + | 01 ⟩ + | 10 ⟩ - | 11 ⟩ ) . Saya agak mengerti itu.
Tapi bukankah kita juga perlu memasukkan kata "Dio" dan daftar {"Alice", "Bob", "Corey", "Dio"} ke Oracle? Jika tidak, bagaimana Oracle dapat mengembalikan output? Apakah itu tidak disebutkan secara eksplisit karena Oracle adalah kotak hitam dan kita tidak perlu memikirkan cara mengimplementasikannya?
Pemahaman saya tentang Oracle adalah,
- Oracle memiliki kemampuan untuk mengenali jika kata "Dio" ada dalam daftar.
- Untuk melakukannya, Oracle mengambil status kuantum superposisi sebagai input, di mana setiap status kuantum mewakili indeks daftar.
- Jadi, masukan ke Oracle berarti, cek jika kata "Dio" adalah dalam indeks 0 dari daftar dan kembali - | 00 ⟩ jika ya dan kembali | 00 ⟩ sebaliknya.
- Tetapi bagaimana dengan daftar dan kata itu?