Groverov algoritam

Извор: testwiki
Пређи на навигацију Пређи на претрагу

Groverov algoritam je kvantni algoritam za pretraživanje nesortirane baze podataka sa N unosa u O(N1/2) vremenu koristeći O(log N) memorijskog prostora (videti veliko O). Lov Grover ga je formulisao 1996.

U modelima klasičnog izračunavanja, pretraživanje i sortiranje nesortirane baze podataka ne može biti ostvareno za manje od linearnog vremena (tako da je pretraživanje elemenata član - po - član skoro optimalno). Groverov algoritam ilustruje da u kvantnom modelu pretraga može biti izvršena brže od ovoga; to jest, njegova vremenska složenost O(N1/2) je asimptotski najbrža moguća za pretraživanje nesortirane baze podataka u kvantnom modelu.[1] Pruža kvadratno poboljšanje, za razliku od drugih kvantnih algoritama, koji pružaju eksponencijalno poboljšanje u odnosu na njihove klasične alternative. Ipak, čak je i kvadratno poboljšanje značajno kada je N veliko.

Kao i mnogi drugi kvantni algoritmi, Groverov algoritam je probabilistički u smislu da daje tačan rezultat sa visokim procentom verovatnoće. Verovatnoća pojave greške može biti smanjena ponavljanjem algoritma. (Primer determinističkog kvantnog algoritma je Deutsch-Jozsa algorithm, koji uvek daje tačan odgovor.)

Primene

Iako se svrha Groverovog algoritma najčeće opisuje kao "pretraživanje baze podataka", moće biti tačnije opisati je kao "inverzija funkcije". Grubo rečeno, ako imamo funkciju y=f(x) koja može biti evaluirana na kvantnom računaru, ovaj algoritam nam dozvoljava da izračunamo x kada je dato y. Inverzija funkcije je povezana sa pretragom baze podataka tako što bismo mogli doći do funkcije koja daje tačnu vrednost y ako se x poklapa sa željenim unosom u bazu, i još jednu vrednost y za ostale vrednosti x.

Groverov algoritam se takođe može koristiti za određivanje središta i medijane skupa brojeva, i za rešavanje problema kolizije. Algoritam se može dalje optimizovati ako postoji više od jednog traženog unosa i traženi broj unosa je unapred poznat.

Postavka

Uzmimo nesortiranu bazu podataka sa N unosa. Algoritmu je potreban N-dimenzionalni statusni prostor H, koji može biti obezbeđen sa n=log2 N kjubita. Uzimajući u obzir problem određivanja indeksa unosa baze podataka koji zadovoljava neki postavljeni uslov. Neka je f funkcija koja označava unose baze podataka sa 0 ili 1, gde je f(ω)=1 ako i samo ako ω zadovoljava traženi uslov. Dostupan nam je (preko kvantne crne kutije) pristup ka podproblemu u obliku linearnog operatora, Uω, koji se ponaša kao:

Uω|ω=|ω
Uω|x=|xza svako xω

Naš cilj je da identifikujemo indeks |ω.

Koraci algoritma

Kvantno kolo Reprezentacija Groverovog algoritma

Koraci Groverovog algoritma su sledeći: Neka je |s uniformna superpozicija svih stanja

|s=1Nx=1N|x.

Tada je operator

Us=2|ss|I

poznat kao Groverov difuzioni operator.

Evo algoritma:

  1. Inicijalizacija sistema u stanje
    |s=1Nx=1N|x
  2. Primeniti sledeće "Groverove iteracije" r(N) puta. Funkcija r(N), koja je asimptotski O(N½), opisana je dole.
    1. Primeniti operator Uω.
    2. Primeniti operator Us.
  3. Primeniti merenje Ω. Rezultati merenja će biti λω sa verovatnoćom koja se približava 1 za N≫1. Iz λω, se može dobiti ω.

Prva iteracija

Preliminarna observacija, paralelna sa našom definicijom

Us=2|ss|I,

je da Uω može biti izraženo na alternativni način:

Uω=I2|ωω|.

Da bismo ovo dokazali dovoljno je proveriti kako se Uω ponaša u baznim stanjima:

(I2|ωω|)|ω=|ω2|ωω|ω=|ω=Uω|ω.
(I2|ωω|)|x=|x2|ωω|x=|x=Uω|x za sve xω.

Sledeća izračunavanja pokazuju šta se događa u prvoj iteraciji:

ω|s=s|ω=1N.
s|s=N1N1N=1.
Uω|s=(I2|ωω|)|s=|s2|ωω|s=|s2N|ω.
Us(|s2N|ω)=(2|ss|I)(|s2N|ω)=2|ss|s|s4N|ss|ω+2N|ω=
=2|s|s4N1N|s+2N|ω=|s4N|s+2N|ω=N4N|s+2N|ω.

Posle primene dva operatora (Uω and Us ), amplituda traženog elementa je opala od |ω|s|2=1/N do |ω|UsUωs|29/N.

Opis Uω

Groverovom algoritmu je potreban operator "kvantnog odlučivanja" Uω Koji prepoznaje rešenja traženog problema i daje im negativan znak. Da bismo održali algoritam pretrage opštim, ostavićemo unutrašnja dešavanja odlučivanja kao crnu kutiju, ali ćemo objasniti kako je znak promenjen. Odlučivanje sadrži funkciju f koja vraća f(x)=1 ako je |x rešenje traženog problema i f(x)=0 u suprotnom. Odlučivanje je linearni operator koji deluje na dva kjubita, indeks kjubit |x i kjubit odlučivanja |q:

|x|qUω|x|qf(x)

Kao i obično, označava sabiranje po modulu 2. Operacija menja kjubit odlučivanja ako f(x)=1 ili ga u suprotnom ostavlja nepromenjenog. U Groverovom algoritmu želimo da promenimo znak stanja |x ako obeležava rešenje. Ovo je postignuto postavljanjem kjubita pretraživanja u stanje (|0|1)/2, koje je promenjeno na (|1|0)/2 ako je |x rešenje:

|x(|0|1)/2Uω(1)f(x)|x(|0|1)/2

Razmatramo |x kao promenjeno, pošto kjubit odlučivanja nije promenjen, pa po konvenciji kjubiti odlučivanja obično nisu pomenuti u opisu Groverovog algoritma. Mada je operacija odlučivanja Uω jednostavno napisana kao:

|xUω(1)f(x)|x

Geometrijski dokaz korektnosti

Slika prikazuje geometrijsku reprezentaciju prve iteracije Groverovog algoritma. Vektor stanja |s je rotiran ka ciljnom vektoru |ω as shown.

Posmatrajmo ravan razapetu sa |s i |ω, gde je |s ket u podprostoru normalan na |ω. Posmatraćemo prvu iteraciju, koja ce ponaša kao inicijalni ket |s. Pošto je |ω jedan od baznih vektora u |s preklapanje je

s|s=N1N

Na geometrijskom jeziku, ugao θ/2 između |s i |s je dat kao:

sinθ/2=1N

Operator Uω je refleksija na hiperravan ortogonalnu na |ω za vektore u ravni razapete sa |s i |ω; npr. ponaša se kao refleksija preko |s. Operator Us je refleksija kroz |s. Prema tome, vektor stanja ostaje u ravni razapetoj sa |s i |ω posle svake primene operatora Us i Uω, i jednostavno je proveriti da operator UsUω svake Groverove iteracije rotira vektor stanja za ugao θ=2arcsin1N.

Potrebno je da stanemo kada vektor stanja prođe blizu |ω; nakon ovoga, poditeracije rotiraju vektor stanja dalje od |ω, umanjujući verovatnoću dobijanja tačnog odgovora. Tačna verovatnoća tačnosti odgovora je:

sin2((r+12)θ)

gde jer (ceo) broj Groverovih iteracija. Najranije gde dobijamo meru blizu optimalne je prema tome rπN/4.

Algebarski dokaz korektnosti

Da bismo obavili algebarsku analizu potrebno je da otkrijemo šta se događa kada više puta primenimo UsUω. Prirodan način da se ovo učini je pomoću analize sopstvenih vrednosti matrice. Primetimo da tokom celokupnog izračunavanja, stanje algoritma je linearna kombinacija s i ω. Možemo napisati dejstvo od Us i Uω u normalnom prostoru razapetom sa {|s,|ω} kao:

Us:a|ω+b|s(|ω|s)(102/N1)(ab).
Uω:a|ω+b|s(|ω|s)(12/N01)(ab).

Tako da u bazi {|ω,|s} (koja nije ni ortogonalna niti baza celokupnog prostora) dejstvo UsUω primene Uω praćeno sa Us dato je matricom

UsUω=(102/N1)(12/N01)=(12/N2/N14/N).

Ispada da je ova matrica veoma zgodna Žordanova forma. Ako orijentišemo t=arcsin(1/N), to je

UsUω=M(exp(2it)00exp(2it))M1 gde je M=(iiexp(it)exp(it)).

Ispostavlja se da je r-ti stepen matrice (U odnosu na r iteracija)

(UsUω)r=M(exp(2rit)00exp(2rit))M1

Korišćenjem ove forme možemo koristiti trigonometrijske identitete kako bismo izračunali verovatnoću posmatrajući ω nakon r iteracija pomenutih u prethodnom odeljku,

|(ω|ωω|s)(UsUω)r(01)|2=sin2((2r+1)t).

Alternativno, neko sa pravom može pomisliti da bi vreme blizu optimalnog za razlikovanje bilo kada su uglovi 2rt and -2rt udaljeni najdalje moguće, što je u vezi sa 2rtπ/2 or r=π/4t=π/4arcsin(1/N)πN/4. Tada je sistem u stanju

(|ω|s)(UsUω)r(01)(|ω|s)M(i00i)M1(01)=|w1cos(t)|ssin(t)cos(t).

Sada kratko izračunavanje pokazuje da observacija doprinosi tačnom odgovoru ω sa greškom O(1/N).

Proširenje prostora za višestruke pogotke

Ako, umesto jednog traženog unosa, postoji k unosa koji odgovaraju, isti algoritam važi, ali broj iteracija mora biti π(N/k)1/2/4 umesto πN1/2/4. Postoji nekoliko načina da se suočimo sa slučajem kada je k nepoznato. Na primer, jedan može primeniti Groverov algoritam nekoliko puta, sa

πN1/24,π(N/2)1/24,π(N/4)1/24,

iteracija. Za proizvoljno k, jedna od iteracija će pronaći traženi unos sa dovoljno visokom verovatnoćom. Ukupan broj iteracija je najviše

πN1/24(1+12+12+)

što je i dalje O(N1/2). Može se pokazati da ovo može biti unapređeno. Ako je broj označenih pojmova k, gde je k nepoznato, postoji algoritam koji nalazi rešenje za N/k upita. Ova činjenica se može iskoristiti za rešavanje problema kolizija.,[2][3]

Parcijalna kvantna pretraga

Modifikaciju Groverovog algoritm,a nazvanu parcijalna kvantna pretraga, opisali su Grover i Radhakrišnan 2004. godine[4] I parcijalnoj pretrazi, nismo zainteresovani za pronalaženje tačne adrese traženog pojma, samo nekoliko prvih cifara adrese. Ekvivalentno, možemo to posmatrati kao "seckanje" prostora obuhvaćenog pretragom u blokove, i onda pitati "u kom bloku se nalazi traženi pojam?". U mnogim primenama, ovakva pretraga doprinosi dovoljno informacija ako ciljna adresa sadrži traženu informaciju. Kako bismo to pokazali, koristićemo primer dat od strane L.K. Grovera, ako imamo listu studenata uređenu po proseku ocena, možemo biti zainteresovani samo da li je student u donjem 25%, 25-50%, 50-70% ili 75-100% procentu.

Da bismo opisali parcijalnu pretragu, koristićemo bazu podataka podeljenu na K blokova, od kojih je svaki veličine b=N/K. Očigledno, problem parcijalne pretrage je jednostavniji. Razmotrimo klasičan pristup - odaberemo nasumično jedan blok, pa zatim primenimo uobičajenu pretragu kroz ostatak blokova (na jeziku teorije skupova language, komplement). Ukoliko ne pronađemo traženi pojam, znaćemo da nije u bloku u kome smo tražili. Prosečan broj iteracija kreće se od N/2 do (Nb)/2.

Groverovom algoritmu je potrebno π/4N iteracija. Parcijalna pretraga će biti brža za numerički faktor koji zavisi od broja blokova K. Parcijalna pretraga koristi n1 globalnih iteracija n2 lokalnih iteracija. Globalni Groverov operator je označen sa G1 dok je lokalni Groverov operator označen sa G2.

Globalni Groverov operator deluje na blokove. Specijalno, dat je kao:

  1. Primeniti j1 standardnih Groverovih iteracija na celokupnu bazu.
  2. Primeniti j2 lokalnih Groverovih iteracija. Lokalna Groverova iteracija je direktna suma Groverovih iteracija i svakog bloka.
  3. Primeniti jednu standatdnu Groverovu iteraciju

Optimalne vrednosti j1 i j2 su razmotrene u članku Grovera i Radhakrišnana. Neko se može zapitati šta se dešava ako se primeni uzastopna parcijalna pretraga na različitim nivoima "rezolucije". Ova ideja je detaljno proučena od strane Korepina and Ksua, koji su je nazvali kvantno binarno stablo pretrage. Dokazali su da da nije brža u odnosu na primenu jedne parcijalne pretrage.

Optimalnost

Poznato je da je Groverov algoritam optimalan. Što će reći, bilo koji algoritam koji pristupa bazi podataka korišćenjem samo operatora Uω mora primeniti Uω najmanje onoliko puta koliko i Groverov algoritam.[1] Ovaj rezultat je bitan za razumevanje ograničenja kvantnog izračunavanja. Da je problem Groverove pretrage rešiv za logc N primenom Uω, iz toga bi sledilo da je klasa NP sadržana u BQP, svođenjem problema iz NP na probleme tipa Groverove pretrage. Optimalnost Groverovog algoritma nalaže (ali ne dokazuje) da klasa NP nije sadržana u BQP.

Broj iteracija za k pronađenih pogodaka, π(N/k)1/2/4, je takođe optimalan.[2]

Reference

Шаблон:Reflist

Literatura

Spoljašnje veze

Шаблон:Портал бар

Шаблон:Normativna kontrola

  1. 1,0 1,1 Bennett C.H., Bernstein E., Brassard G., Vazirani U., The strengths and weaknesses of quantum computation. SIAM Journal on Computing Шаблон:Cite journal (1997). Shows the optimality of Grover's algorithm.
  2. 2,0 2,1 Шаблон:Citation
  3. Шаблон:Citation
  4. Шаблон:Cite journal