Grover Algoritması için Oracle Construction


16

Mike ve Ike'nin "Kuantum Hesaplama ve Kuantum Bilgisi" nde, Grover'ın algoritması ayrıntılı olarak açıklanmaktadır. Bununla birlikte, kitapta ve Grover'ın algoritması için çevrimiçi bulduğum tüm açıklamalarda, hangi durumu aradığımızı bilmedikçe, amacını yenerek Grover'ın Oracle'ın nasıl inşa edildiğinden bahsedilmiyor gibi görünüyor. algoritması. Özellikle, sorum şu: bazı f (x), bazı x değeri için f (x) = 1, ancak diğerleri için f (x) = 0 verildiğinde, bizi nasıl elde edecek bir kehanet nasıl inşa edilir başlangıç, keyfi durumumuz | x> | y> - | x> | y + f (x)>? Mümkün olduğunca açık detaylar (belki bir örnek?) Çok takdir edilecektir. Hadamard, Pauli veya diğer standart kuantum kapılarla herhangi bir keyfi işlev için böyle bir yapı mümkünse,


"Burada, algoritmanın amacını yenerek, hangi durumu aradığımızı bilmiyorsak, Grover'ın Oracle'ın nasıl yapılandırıldığından bahsedilmiyor gibi görünüyor." ... "Grover'ın Oracle'ı" çözülmesi gereken problem. Sen yapmazsın. Size (oracle erişimi) verilir ve değeri ortaya çıkarmak için hesaplama yapmanız istenir. Eğer yardımı olacaksa, o taklit ben sormak sonra torpil inşa ve sizi sorunu çözmek için. (Ayrıca, öğeden oluşan bir veritabanının okunması / yazılması / hazırlanmasının Grover'ın N zamanlı algoritması.)N
Daniel Apon

2
Peki ya kehanet yerine, bize f (x) verilirse? 3-SAT problemini çözdüğümüzü ve çözüme hız kazandırmak için Grover'ları kullanmak istediğimizi düşünün. Söz konusu f (x) 'i (3-SAT doğruluk cümlecikleri) biliyoruz, ancak 3-SAT'a takıldığında hangi bit dizgisinin x gerçek bir sonuç vereceğini bilmiyoruz. Doğru bit dizesini bulmak için 3-SAT işlevinden bir kehanet oluşturmanın bir yolu olmamalı mı? Başka biri tarafından sağlanacak bir şey yoksa ve önerdiğiniz gibi ise, Grover'ın algoritması oldukça yapay görünüyor, sadece size verilen bir egzersiz.
Will

Yanıtlar:


20

Kâhin temelde tatmin edici bir çözüm aramak istediğiniz yüklemin bir uygulamasıdır.

Örneğin, 3 oturumlu bir sorununuz olduğunu varsayalım:

(¬x1 ∨ ¬x3 ∨ ¬x4) ∧
    (x2 ∨ x3 ∨ ¬x4) ∧
    (x1 ∨ ¬x2 ∨ x4) ∧
    (x1 ∨ x3 ∨ x4) ∧
    (¬x1 ∨ x2 ∨ ¬x3)

Veya, tablo biçiminde her satır 3 cümleciktir, x "bu değişken yanlış" anlamına gelir, o "bu değişken doğru" anlamına gelir ve boşluk "deyimde değil" anlamına gelir:

1 2 3 4
-------
x   x x
  o o x
o x   o
x o x

Şimdi girişin bir çözüm olup olmadığını hesaplayan bir devre yapın, şöyle:

çözüm denetleyicisi

Şimdi, devrenizi bir oracle'a dönüştürmek için, çıkış bitine bir Z geçidi vurun ve yaptığınız çöpleri hesaplayın (yani hesaplama devresini ters sırayla çalıştırın):

kehanet devresi

Hepsi bu kadar. Yüklemi hesaplayın, sonucu bir Z ile vurun, yüklemi hesaplayın. Bu bir kehanet.

Difüzyon adımlarını kehanet adımlarıyla yineleyin ve kendinize daha kapsamlı bir arama yapın :

Grover araması

... muhtemelen daha az çözüm içeren bir örnek seçmelisiniz, bu yüzden ilerleme kademelidir (başlangıç-durum-çözüm-durum düzlemi boyunca adımda 90 dereceden fazla örnek vermek yerine).


Teşekkürler, bu son derece yardımcı oldu. İnanılmaz derecede net, sorduğum her şeyi yanıtladı (ve hatta ortak kuantum kapılarını kullandım!) Tüm kubitlerinizi | 1> durumuna değiştirmeye karar vermeniz için herhangi bir sebep var mı? > Hadamards aracılığıyla kubitleri devlete verin (yani bunun bir avantajı var mı?) Ayrıca, difüzyon adımlarınız için hangi işlem yapılır? Kontrollü X gibi görünüyor, ancak | 1> veya | 0> 'ları kontrol olarak mı kullanıyorsunuz?
Will

(12|012|1)n

Harika bir cevap ve algassert.com/quirk bağlantısı için teşekkürler !
Frédéric Grosshans
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.