Yazan : Şadi Evren ŞEKER
Klasik hesaplama teorisinde (theory of computation) geçen kahin’in (oracle), kuantuma uyarlanmış halidir. Klasik bir kahin makinesi tanımlanırken, bir Turing makinesinin (Turing machine) karar vermeye yarayan özel bir halin olarak belirlenir. Yani aslında soyut bir makinedir ve içeriğiyle çok ilgilenilmez. Tek bilmemiz gereken bir Turing makinesi olduğu ve bir karar verme mekanizması içerdiğidir. Genelde bir kutu olarak gösterilir ve içi ile ilgilenilmez. Örneğin durma problemi (halting problem) ispatlanmasında kullanılır.
Bu anlamda, örneğin deutsch problemindeki fonksiyonu elinde tutan taraf aslında bir kahin makinesi çalıştırmaktadır.
Kuantum kahin makinesi ise, klasik kahin makinesinin kubitler üzerine uyarlanmış halidir. Diğer bir deyişle kuantum kahin makinesi bir fonksiyonu, süper pozisyon halindeki kubitler üzerinde çalıştırarak bir karar vermeye yarar.
Örneğin aşağıdaki şekilde bir matris dizilimini ele alalım:
bu dizilimin bir kahin makinesinden geçirilmesi sonucunda aşağıdaki gösterimi elde ederiz:
buradaki f(x) fonksiyonu, kahin makinesinin fonksiyonudur ve belirli bir kubitin değerini işaretler. Bu işaretleme örneğin tersine çevirme olabilir.
Grover algoritması gibi kuantum arama algoritmalarında bu özellik aranan kubitin değerinin tersine çevrilmesi veya aranan kubit için 1 diğer kubitler için 0 döndürmesi şeklinde yorumlanabilir.
Örneğin |x>|d> şeklinde yukarıda tanımladığımız system üzerinde çalışan kahin makinesi, aşağıdaki dönüşümlerden birisini sağlar
- Şayet giren değer çözüm değilse, giren değer değişmeden çıkar:
- Şayet giren değer çözüm ise, giren değerin tersi çıkar:
Yukarıdaki gösterimlerde, |d> gösterimi açılmış ve |0> veya |1> olma ihtimalleri açıkça gösterilmiştir. Yukarıdaki bu iki ihtimali tek bir denklemde modellememiz de mümkündür:
Bu yeni modeldeki f(x) fonksiyonu, kahin makinesi olarak tanımlanmış olur.