Grover'in arama algoritmasındaki kehanet nasıl uygulanır?


27

Grover'in arama algoritması , sıralanmamış veritabanı araması için kanıtlanabilir bir ikinci dereceden hızlandırma sağlar. Algoritma genellikle aşağıdaki kuantum devresi ile ifade edilir:

Çoğu , protokolün çok önemli bir kısmı "sihirli" işleminin işlemini gerçekleştiren "oracle gate" . Bununla birlikte, genellikle böyle bir geçidin gerçekleştirilmesinin ne kadar zor olacağından hiç bir şey söylenmez. Aslında, bu bir "kehanet" kullanımı, halının altındaki zorlukları taramanın bir yoludur.Uω|x(-1)f(x)|x

Böyle bir oracular operasyonun gerçekten gerçekleştirilebilir olup olmadığını nasıl bilebiliriz? Ve eğer öyleyse, karmaşıklığı nedir (örneğin, kapı ayrışmasının karmaşıklığı açısından)?


5
Bu benim de merak ettiğim bir şey. Örneğin, bu deneyde , çözümü bana biraz aldatmak gibi
M. Stern

Bu sorunun bir başka büyük cevabı da CS Teorisi SE'nin bu cevabında verilmiştir.
glS

Yanıtlar:


20

f işlevi sadece bir bit dizesinin keyfi bir boolean işlevidir: f:{0,1}n{0,1} . [1] , [2] veya [3] gibi kriptografiyi bozan uygulamalar için , bu aslında bir 'veritabanı araması' değil, tüm veritabanını bir şekilde kuantum devresi olarak kaydetmeyi gerektirecek, aksine bir fonksiyon gibi

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

Sabit için y aksine, bir klasik arama için istismar hiçbir yapıya sahiptir, fonksiyon, demek

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

Klasik bir bilgisayarda bile daha hızlı ters çevirmek için kullanılabilecek bir yapıya sahiptir .

Belirli bir maliyet sorusu genel olarak cevaplanamaz, çünkü f herhangi bir devre olabilir - bu sadece klasik bir devreden kuantum devre yapmakla ilgilidir . Ancak, genellikle, yukarıdaki örnekte olduğu gibi, f işlevi klasik bir bilgisayarda değerlendirmek için çok ucuz olduğundan, Grover'in algoritması ile ilgili her şeyin bütçeniz dahilinde olduğu kuantum bir bilgisayarda özellikle ağır bir yük oluşturmamalı.

Üstünde sadece genel maliyet f ekstra koşullu DEĞİL kapısı

C:|a|b|a|ab
nerede xor ve bunun için ekstra bir yan qubit olduğunu. Özellikle, bir
F:|x|a|junk|x|af(x)|junk
dışına inşa C ve devre f , o zaman biz bunu uygularsanız |x başlangıçta devlette yardımcı bir qubit ile birlikte |=H|1=(1/2)(|0|1)neredeHbir Hadamard kapısı, o zaman olsun

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

f(x)=01f(x)=1

F|x||junk=|x||junk,
whereas if f(x)=1 then 1f(x)=0, so
F|x||junk=|x||junk,
and thus in general
F|x||junk=(1)f(x)|x||junk.


5

Well, Grover's original paper, "Quantum mechanics helps in searching for a needle in a haystack" clearly states, it assumes that C(S) can be evaluated in a constant time. Grover's search is not concerned about the implementability, but the polynomial reduction in what's called a query complexity (how many times you consult the oracle, like a classical database)

In fact, the concept of oracle in computing was proposed by Alan Turing to describe constructs for which a description on a UTM might not be realizable (Wikipedia). It is in some sense magical.

But of course, coming back to your question, how do we then actually make the circuit for Grover search (or any oracular) algorithm? Do we need to know the answer in advance to search the result? Well, in some sense you need to. That is exactly what clever improvements on Grover search tries to work on, such that, we need not know the exact answer in advance, but some properties of it. Let me illustrate with an example.

For the pattern recognition problem using Grover's search, if I have 4 patterns on 2 qubits (00, 01, 10, 11) and I want to mark and amplify 11, the diagonal of my oracle unitary should be like (1,1,1,-1) to take care of the pi phase shift for the solution. So, for this simple implementation, for construction the unitary, you need to know the full answer in advance.

A clever improvement of pattern completion if given in the paper "Quantum pattern matching" by Mateas and Omar. In essence, it constructs as many fixed oracles as there are alphabets in the set. So for our binary string, there will be an oracle which marks out all 1s, and another that marks out all 0s. The oracles are invoked conditionally based on what I want to search. If I want to search 11, I call oracle 1 on the LSqubit, and oracle 1 again on the MSqubit. By the first oracle, I would amplify the states (01, 11), i.e. states with LSQ as 1, and in the 2nd call, it would amplify (10, 11). So as you see, 11 is the only state that gets amplified twice, ending in a higher measurement probability. Though the compiled quantum circuit would change based on what my input search pattern is, a high-level description of the quantum algorithm remains the same. You can think of the oracles as function calls based on a switch case of the alphabet set invoked for each character in the search string.

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.