Algorytm Simona

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Algorytm Simonaalgorytm kwantowy znajdujący rozwiązanie poniższego zagadnienia.

Problem

Niech istnieje funkcja:

f:{0,1}n>{0,1}m gdzie mn1.

Należy sprawdzić czy istnieje takie s{0,1}n{0(n)} że:

xx(f(x)=f(x)x=xs).

Rozwiązanie klasyczne

Nie istnieje rozwiązanie tego zagadnienia o złożoności obliczeniowej mniejszej od wykładniczej.

Rozwiązanie kwantowe

Rozwiązanie opiera się na układzie kwantowym, który niezależnie rozwiązuje się n-krotnie.

Wygląda ono następująco:

|ϕ0=|0(n)|0(m)
|ϕ1=Hn|ϕ0=12ni=02n1|i|0(m), gdzie |i{0,1,...2n1} jest liczbą zakodowaną na pierwszych n bitach
|ϕ2=Uf|ϕ1=Uf12ni=02n1|i|0(m)=12ni=02n1|i|f(i)
|ϕ3=Hn|ϕ2=12ni=02n1j=02n1(1)ij|i|f(j)

Taką procedurę należy niezależnie powtórzyć n-krotnie, za każdym razem mierząc stan pierwszego rejestru. W wyniku takiego działania powinniśmy otrzymać n liniowo niezależnych wektorów w {0(n)}, które podstawione do układu równań jednorodnych w przestrzeni 2 powinny dać jako rozwiązanie szukane s.

Bibliografia

  • Krzysztof Giaro, Marcin Kamiński, Wprowadzenie do algorytmów kwantowych, Akademicka Oficyna Wydawnicza EXIT, Warszawa 2003, Szablon:ISBN.
  • Daniel R. Simon, On the Power of Quantum Computation, SIAM Journal on Computing, Volume 26, Issue 5, 1997, s. 1474–1483 Szablon:ISSN.