Šorov algoritam
Šorov algoritam, nazvan po matematičaru Piteru Šoru (), je kvantni algoritam (algoritam koji funkcionoše na kvantnom računaru) za razlaganje celih brojeva na proste činioce formulisan 1994. U suštini on rešava sledeći problem: Za dati ceo broj N, nalazi njegove proste činioce.

Na kvantnom računaru, da bi sveo broj N na proste činioce, Shor-ov algoritam radi u polinomijalnom vremenu (vreme potrebno za izvršavanje algoritma je polinom u log N, što je veličina ulaza). Precizno, potrebno mu je vreme O((log N)3), pokazujući da se problem rastavljanja broja na proste činioce može efikasno rešiti na kvantnom računaru i da se nalazi u klasi složenosti BQP (kvantno polinomijalno vreme sa ograničenom greškom) problema. Ovo je znatno brže od većine poznatih algoritama za rastavljanje na proste činioce, izuzetak je algoritam sita polja opšteg broja koji radi u pod-eksponencionalnom vremenu — otprilike . Efikasnost Šorovog algoritma je u efikasnosti kvantnih Furijeovih transformacija, i modularnom stepenovalju pomoću kvadrata broja.

Ako bi kvantni računar sa dovoljnim brojem kvantnih bita mogao da radi bez uticaja šumova i ostalih kvantnih smetnji, Šorov algoritam bi se mogao koristiti za razbijanje šema kriptografije javnog-ključa kao što su veoma poznate RSA (RSA) šema. RSA se zasniva na pretpostavci da je rastavljanje velikih brojeva na proste činioce računarski neizvodljivo. Za sada koliko je poznato, ova pretpostavka važi za klasične (ne-kvantne) računare; ne zna se ni za jedan klasičan algoritam koji može da rastavlja na proste činioce u polinomijalnom vremenu. Međutim, Šorov algoritam pokazuje da je rastavljanje na proste činioce efikasno na idealnom kvantnom računaru, tako da je moguće da se pobedi RSA konstrukcijom velikog kvantnog računara. To je takođe bila velika motivacija za dizajniranje i konstrukciju kvantnih računara i za učenje novih algoritama za kvantne računare. U isto vreme otpočelo je istraživanje novih kriptosistema koji su bili sigurni od kvantnih računara, celokupno nazvani post-kvantna kriptografija.

2001-e, Šorov algoritam je demonstrirala grupa sa IBM-a, koja je rastavila 15 na 3 × 5, koristeći NMR (Nuklearnu magnetnu resonansu) implementaciju kvantnog računara sa 7 kvantnih bitova.
Ipak, javile su se neke sumnje oko toga da li je IBM-ov eksperiment bio prava demonstracija kvantnog računara, pošto nikakvo kvantno uplitanje nije viđeno.
Od IBM-ove implementacije, nekoliko drugih grupa je implementiralo Šorov algoritam koristeći fotonske kvantne bitove, naglašavajući da je uplitanje viđeno. 2012-te, rastavljanje broja 15 je ponovljeno. Takođe 2012-te, rastavljanje broja 21 je postignuto, postavljajući tako rekord za najveći broj rastavljen na proste činioce sa kvantnim računarom.

Postupak 
Problem koji pokušavamo da rešimo je: za dat neparan složen broj , naći ceo broj , strogo između  i , koji deli . Nas zanimaju neparne vrednosti broja  jer parne vrednosti broja  imaju broj  kao prost činilac. Možemo da iskoristimo algoritam za testiranje da li je broj prost da budemo sigurni da je broj  stvarno složen.

Štaviše, da bi algoritam radio, potrebno je da  ne bude stepen činioca. Ovo se može testirati nalaženjem kvadratnog, kubnog, ..., -og korena od , za , i proveravanjem da ni jedna od ovih vrednosti nije ceo broj. (Ovo zapravo isključuje da je  za neke cele brojeve  i .)

Pošto  nije stepen činioca, on je proizvod dva uzajamno prosta broja veća od . Kao posledica kineske teoreme ostatka, broj  ima bar četiri različita korena modula , dva su  i . Cilj algoritma je da nađe koren  od jedan, osim  i ; takav  će dovesti do rastavljanja broja , kao i u drugim algoritmima za rastavljanje broja na činioce kao kvadratno sito.

Zauzvrat, pronalaženje takvog  je svedeno na pronalaženje broja  parnog redosleda sa određenom dodatnom osobinom (kao što je objašnjeno dole, neophodno je da uslov Koraka 6 klasičnog dela ne bude ispunjen). Kvantni algoritam se koristi za nalaženje redosleda nasumično odabranog elementa , jer je nalaženje pravog redosleda težak problem na klasičnom računaru.

Šorov algoritam se sastoji iz dva dela:
 Smanjenja, koje se može izvesti na klasičnom računaru, problema rastavljanja na proste činioce na problem nalaženja pravog redosleda.
 Kvantnog algoritma da reši problem redosleda.

Klasičan deo 
Odabrati nasumičan broj a < N
Nalaženje NZD(a, N). Ovo se može uraditi koristeći Euklidov algoritam.
Ako je NZD(a, N) ≠ 1, onda postoji ne-trivijalan činilac od N, tako da smo završili.
U suprotnom, iskoristiti pod-rutinu za nalaženje redosleda (ispod) da bi se našlo r, redosled sledeće funkcije:

,
redosled  od  u , koji je najmanji pozitivan ceo broj r za koji važi
 or 
Ako je r neparan, ide se nazad na Korak 1.
Ako je a r /2 ≡ −1 mod N), idi nazad na Korak 1.
NZD(ar/2 ± 1, N) je ne-trivijalni činilac N. Završili smo.

Na primer: , gcd(4 ± 1, N)

Kvantni deo: Pod-rutina za nalaženje redosleda 
Kvantna kola korišćena za ovaj algoritam su posebno napravljena za svaki izbor N i nasumično a korišćeno u f(x) = ax mod N. Za dato N, naći Q = 2q tako da , iz čega sledi . Ulazni i izlazni kvantni bit registri moraju da zadrže vrednosti super-pozicija od 0 do Q − 1, i tako imamo q kvantnih bita pojedinačno. Korišćenjem duplo više kvantnih bitova nego što se čini potrebnim osiguravamo da ima barem N različitih x koji daju isto f(x), iako se redosled r približava N/2.

Postupamo na sledeći način:

Postaviti registre na

gde x ide od 0 do Q − 1. Ovo početno stanje je superpozicija Q stanja.

Napraviti f(x) kao kvantnu funkciju i primeniti je na gornje stanje, da bi se dobilo

Ovo je i dalje superpozicija Q stanja.

Primeniti kvantne Furijeove transformacije na ulazni registar. Ova transformacija (radići na superpoziciji stepena dvojke Q = 2q states)
koristi Qti jedinični koren kao što je  da rasporedi amplitudu bilo kog datog  stanja jednakog među svim Q  stanja, i da uradi to na drugačiji način za svako različito x:

Ovo vodi do poslednjeg stanja

Ovo je superpozicija od mnogo više Q stanja, ali mnogo manje Q2 stanja. Iako postoje Q2 izrazi u sumi, stanje  se može zanemariti kad god x0 i x daju istu vrednost. Neka je
  Qti jedinični koren,
 r redosled f,
 x0 najmanji od skupa x koji daju isto zadato f(x) (imamo x0 < r), i
 b koje ide od 0 do  tako da 
Onda je  jedinični vektor u složenoj ravni ( je jedinični koren a r i y su celi brojevi), i koeficijent  u poslednjem stanju je

Svaki izraz u ovoj sumi predstavlja različit put do istog rezultata, i dolazi do kvantne smetnje—kada jedinični vektori pokazuju u skoro istom smeru na složenoj ravni, što zahteva da  pokazuju uz duž pozitivne realne ose.

Izvršiti merenje.
Dolazimo do nekog ishoda y na ulaznom registru i  na izlaznom registru.
Pošto je f periodično, verovatnoća merenja nekog para y i  je data pomoću

Analize danas pokazuju da je ova verovatnoća veća, što je jedinični vektor  pozitivnoj realnoj osi, ili je yr/Q bliže celom broju. Ukoliko r nije stepen 2, on neće biti činilac Q.

Koristeći Verižni razlomak na y/Q da bi napravili njegovu aproksimaciju, i napravimo c/r′ od njega tako da zadovoljava dva uslova:
 A: r′<N
 B: |y/Q - c/r′| < 1/2Q.
Уколико смо задовољили ова два услова, r′ би био прави редослед r са великом вероватноћом тачности.

Proveriti da li je f(x) = f(x + r′)   Ako jeste, završili smo.

U suprotnom, uzeti još kandidata za r koristeći vrednosti blizu y, ili multiplikatore r′. Ako bilo koji kandidat zadovoljava uslove, završili smo.

U suprotnom, vrati se nazad na Korak 1 pod-rutine.

Objašnjenje algoritma 
Algoritam se sastoji iz dva dela. Prvi deo algoritma svodi problem rastavljanja broja na proste činioce na problem nalaženja redosleda funkcije, i može se implementirati klasično. Drugi deo nalazi redosled korišćenjem kvantnih Furijeovih transformacija, i odgovoran je za kvantno ubrzanje algoritma.

Nalaženje činilaca iz redosleda 
Brojevi manji od N i uzajamno prosti sa N formiraju konačnu Abelovu grupu  sa množenjem po modulo N. Veličina je data pomoću Ojlerove fi funkcije .
Do kraja Koraka 3, imamo ceo broj a u ovoj grupi. Pošto je grupa konačna, a mora imati konačan poredak r, najmanji pozitivan ceo broj takav da

Stoga, N se deli (piše se i | ) a r − 1. Pretpostavimo da možemo dobiti r, i da je paran. (Ako je r neparan, pogledajte Korak 5.) Sada je  kvadratni koren 1 modulo , različit od 1. Ovo je jer je  redosled od  modulo , tako da , inače bi redosled  u ovoj grupi bio . Ako je , do Koraka 6 bismo morali da ponovimo algoritam sa drugim proizvoljnim brojem .

Najzad, morali bismo da pogodimo , redosleda  u , takav da je . To je zato što je  kvadratni koren 1 modulo , osim 1 i , čije postojanje garantuje kineska teorija ostatka, pošto  nije stepen činioca.

Mi tvrdimo da je  pravi činilac od , za, . U stvari ako je , onda se  deli na , tako da , protiv nastanka . Ako sa druge strane , onda pomoću Bezuovog stava postoje celi brojevi  takvi da
.
Množenjem obe strane sa  dobijamo
.
Pošto  deli , dobijamo da  deli , tako da , ponovo kontradiktujući nastanku .

Tako da je  potrebni pravi činilac .

Pronalaženje periode 
Šorov algoritam pronalaženja periode se uglavnom oslanja na sposobnost kvantnog računara da se nalazi u više stanja istovremeno.
Fizičari nazivaju ovo ponašanje „superpozicija“ stanja. Da bi izračunali periodu funkcije f, mi ocenjujemo funkciju u svim tačkama istovremeno.

Kvantna fizika nam ipak ne dozvoljava pristup svim ovim informacijama direktno. Merenje će dati samo jedno od svih mogućih vrednosti, uništavajući sva ostala. Da nije teoreme o ne-kloniranju, mogli bismo prvo da izmerimo f(x) bez merenja samog x, i onda napravili par kopija rezultujućeg stanja (što je superpozicija svih stanja koje imaju isto f(x)). Merenjem x-a u ovim stanjima bismo dobili različite x vrednosti koje daju isto f(x), što nas vodi do periode. Pošto ne možemo napraviti tačne kopije kvantnog stanja, ovaj metod ne funkcioniše. Stoga moramo pažljivo transformisati superpoziciju u drugo stanje koje će vratiti tačan odgovor sa najvećom verovatnoćom. Ovo se postiže kvantnim Furijeovim transformacijama.

Šor je stoga morao rešiti tri „implementaciona“ problema. Svi su morali biti implementirani „brzo“, što znači da mogu biti implementirani sa brojem kvantnih ulaza koji je polinomijalan u .

<li> Napraviti superpoziciju stanja.

Ovo se može postići primenom Hadamard kola na sve kvantne bitove u ulaznom registru. Još jedan način bi bio da se iskoriste kvantne Furijeove transformacije (pogledati ispod).

<li> Implementirati funkciju f kao kvantnu transformaciju.

Da bi ovo postigao, Šor je koristio ponovljeno kvadriranje za njegovu modularnu eksponencijalnu transformaciju. Bitno je naglasiti da je ovaj korak teže implementirati nego kvantne Furijeove trahcformacije, jer ono zahteva pomoćne kvantne bitove i znatno više ulaza da bi se izvršilo.

<li> Izvesti kvantne Furijeove transformacije.

Koristeći ulaze sa kontrolom rotacije i Hadamard ulaze, Šor je dizajnirao kolo za kvantne Furijeove transformacije (sa Q = 2q) samo  ulaza.

Posle svih ovih transformacija mera će dati aproksimaciju periode r.
Zbog jednostavnosti pretpostavimo da postoji y takvo da je yr/Q ceo broj.
Onda je verovatnoća da izmerimo y 1.
Tada primećujemo da važi

za sve cele brojeve b. Stoga će suma čiji nam kvadrat daje verovatnoću da izmerimo y biti Q/r pošto b zahteva otprilike Q/r vrednosti i tako je verovatnoća . Postoje r y takvi da je yr/Q ceo broj i ujedno r mogućnosti za , tako da se mogućnosti sumiraju na 1.

Beleška: još jedan način da se objasni Šorov algoritam jeste da se primeti da je on maskirani algoritam procene kvantne faze.

Usko grlo 
Dužina trajanja uskog grla Šorovog algoritma je kvantno modularno stepenovanje, što je znatno sporije od kvantnih Furijeovih transformacija i klasičnog pre-/post-procesiranja. Postoji nekoliko pristupa da se naprave i optimizuju kola za modularno stepenovanje. Najlakši i (trenutno) najpraktičniji pristup jeste da se oponašaju konvencionalna aritmetička kola sa promenljivim ulazima, počevši sa sabiračima sa prenosom talasa. Znanje baze i modula stepenovanja olakšava dalju optimizaciju. Promenljiva kola tipično koriste oko  ulaza za  kvantnih bitova. Alternativne tehnike asimptotski poboljšavaju broj ulaza koristeći kvantne Furijeove transformacije, ali nisu konkurentni sa manje od 600 kvantnih bitova zbog velikih konstanti.

Diskretni logaritmi 
Pretpostavimo da znamo da je , za neko r, i da želiom da izračunamo r, koje je diskretni logaritam: . Razmotrimo Abelovu grupu  gde svaki faktor odgovara modularnom množenju ne-nula vrednosti, pretpostavljajući da je p glavni. Sada, razmotrimo funkciju

Ovo nam daje problem skrivenih Abelovih podgrupa, gde f odgovara grupnom homomorfizmu. Jezgro odgovara modularnom multiplikatoru (r,1). Tako da ako nađemo jezgro, mi možemo da nađemo i r.

Literatura 

 .
 Phillip Kaye, Raymond Laflamme, Michele Mosca, An introduction to quantum computing, Oxford University Press, 2007, 
 "Explanation for the man in the street" by Scott Aaronson, "approved" by Peter Shor. (Shor wrote "Great article, Scott! That’s the best job of explaining quantum computing to the man on the street that I’ve seen."). An alternate metaphor for the QFT was presented in one of the comments. Scott Aaronson suggests the following 12 references as further reading (out of "the 10105000 quantum algorithm tutorials that are already on the web.")
 . Revised version of the original paper by Peter Shor ("28 pages, LaTeX. This is an expanded version of a paper that appeared in the Proceedings of the 35th Annual Symposium on Foundations of Computer Science, Santa Fe, NM, Nov. 20--22, 1994. Minor revisions made January, 1996").
 Quantum Computing and Shor's Algorithm, Matthew Hayward, 2005-02-17, imsa.edu, LaTeX2HTML version of the original 2750 line LaTeX document, also available as a 61 page PDF or postscript document.
 Quantum Computation and Shor's Factoring Algorithm, Ronald de Wolf, CWI and University of Amsterdam, January 12, 1999, 9 page postscript document.

Kvantni algoritmi
Algoritmi faktorizacije