Moč kvantnega računalnika se meri v kubitih, osnovni enoti merjenja v kvantnem računalniku. .
Po vsakem branju tovrstne fraze se oprijemam glave. To ne vodi nikamor, vid začnem izgubljati; kmalu se bom moral obrniti na Meklon.
Mislim, da je čas, da nekoliko sistematiziramo osnovne parametre kvantnega računalnika. Ti so več:
- Število kubitov
- Čas ohranjanja koherenčnosti (čas dekohereacije)
- Raven napak
- Arhitektura procesorja
- Cena, dostopnost, pogoji delovanja, čas amortizacije, programerska orodja itd.
Število kubitov
Tu je vse očitno, čim večje, tem bolje. V resnici pa se za kubite plačuje, in idealno je kupiti ravno toliko kubitov, kolikor jih potrebujemo za opravljanje naloge. Za razvijalca ekskluzivnih igralnih avtomatov zadostuje en kubit na avtomat (za generiranje naključnih vrednosti). Za 'bruteforce' RSA-2048 je potrebnih vsaj 2048 kubitov.
Najbolj popularni kvantni algoritmi so imenovani po Groverju in Shorju. Grover omogoča 'hrošča' hashe. Za uničenje bitcoina so potrebni računalniki z vsaj 256 kubiti na krovu (lahko se malo poigra z zahtevnostjo bitcoina, a ostanimo pri tej okrogli številki). Shor omogoča faktorizacijo števil. Za faktorizacijo števila dolžine n binarnih mest je potrebnih vsaj n kubitov.
Trenutni maksimum: 50 kubitov (). In dejansko je 50 kubitov omejitev. Omejitev simulacije kvantnega računalnika. V teoriji lahko simuliramo poljubno število kubitov na klasičnih računalnikih. V praksi pa dodajanje enega kubita v simulacijo zahteva podvojitev klasičnih računalnikov. Dodajte sem govorice o podvajanju kubitov vsakih dvajset let in si postavite vprašanje: kako debugirati algoritme za 25651210242048 kubitov? Simulatorja ni, na kvantnem procesorju ne morete postaviti točke pretrganja.
Čas ohranjanja koherenčnosti (čas dekohereacije)
Koherenca in koherentnost nista isto. Raje primerjam koherentnost z regeneracijo pomnilnika. Na modulih RAM je milijarde celic, na vsaki je naboj, ničelni ali enični. Ta naboj ima zelo zanimivo lastnost - steka se. Sprva 'enična' celica postane celica na 0,99, nato 0,98 in tako naprej. Zato se na ničelni nabira 0,01, 0,02, 0,03… Ta naboj je potrebno osvežiti, 'regenerirati'. Vse, kar je manj kot polovica, se ponastavi na nič, vse ostalo se doseže do enice.
Kvantni procesorji se ne morejo regenerirati. Zato je za vse izračune na voljo en cikel, do prve 'puščajoče' kubita. Čas do prvega 'puščanja' imenujemo čas dekoherecije. Koherenca pa je stanje, ko kubiti še niso 'puščali'. Lahko si ogledate nekoliko bolj zrelih razlag.
Dekoherecija je povezana s številom kubitov: več kubitov kot imate, težje je vzdrževati koherenco. Po drugi strani pa lahko ob prisotnosti velikega števila kubitov del nekaterih uporabite za korekcijo napak, povezanih z dekoherecijo. Iz tega sledijo, da samo število kubitov nič ne rešuje. Lahko podvojite število kubitov, in porabite 90% od njih za zabeležitev dekoherecije.
Tukaj se približno pojavi pojem logičnega kubita. Grobo rečeno, če imate procesor s 100 kubiti, vendar je 40 od njih usmerjenih na zabeležitev dekoherecije - ostane vam 60 logičnih kubitov. Tistih, na katerih izvajate svoj algoritem. Koncept logičnih kubitov je trenutno bolj teoretičen, o praktičnih realizacijah osebno nisem slišal.
Napake in njihova korekcija
Še ena težava kvantnih procesorjev. Če invertirate kubit, obstaja 2% verjetnost, da bo operacija zaključena z napako. Če zapletete 2 kubita, verjetnost napake doseže 8%. Vzemite število v 256 bitih, ga hashirajte na SHA-256, izračunajte število operacij, izračunajte verjetnost, da boste vse te operacije izvedli brez napak.
Matematiki ponujajo rešitev: korekcija napak. Algoritmi so na voljo. Izvedba enega zapletanja 2 logičnih kubitov zahteva 100.000 fizičnih kubitov. Bitcoin-konec se ne bo zgodil kmalu.
Arhitektura procesorja
Strogo govoreći, kvantnih računara nema. Ima samo kvantni procesori. Zašto je potrebna operativna memorija kada je vreme za rad ograničeno na milisekunde? Programiram na Q#, ali to je jezik visokog nivoa. Dodelio sam sebi 15 kubita, i radim s njima šta god poželim. Poželeti, zapetljao sam prvi kubit s desetim. Poželeo sam — zapetljao sam prvih šest.
Na pravom procesoru takve slobode nema. Zamolio sam da zapetlja prvi kubit sa 15 — kompajler će generisati 26 dodatnih operacija. Ako budem imao sreće. Ako ne — generisaće stotinu. Naime, kubit se može zapetljati samo sa susedima. Više od 6 suseda na kubitu, nisam video. U principu, postoje optimizovani kvantni programski kompajleri, ali oni su za sada više teoretski.
Svaki procesor ima svoj set instrukcija, a veze između kubita se razlikuju. U idealnom svetu imamo proizvoljne Rx, Ry, Rz, i njihove kombinacije, plus slobodno zapetljavanje po desetak znakova, plus Swap: pogledajte operatore u . U stvarnosti, imamo nekoliko parova kubita, a zapetljavanje CNOT (q[0], q[1]) se odvija u jednoj operaciji, dok CNOT(q[1], q[0]) već košta 7. A koherentnost opada…
Cena, dostupnost, uslovi održavanja, vreme amortizacije, alati za programiranje…
Cene se ne objavljuju, dostupnost običnom građaninu je gotovo nula, vreme amortizacije praktično nije izračunato, alati za programiranje tek počinju da se razvijaju. Dokumentacija je na arxiv.org.
Šta informacija zahteva od eksperata prilikom izlaska novog kvantnog računara?
Pored liste iznad, sviđa mi se i opcija od in :
Kada bi svaka članka o novom kvantnom računaru počinjala sa dve karakteristike — brojem istovremenih zapetljenih kubita, i vremena zadržavanja kubita.
Ili još bolje — s vremenom izvršavanja najjednostavnijeg benchmarka, kao što je pronalaženje prostih delilaca broja 91.
Izvor: habr.com
