Vsi govorijo o kvantnem računalništvu; kaj to sploh je in kako ga lahko sami preizkusite? V tem praktičnem članku bomo najprej razložili osnovne pojme, superpozicijo, prepletenost, kubite in kvantna vezja, nato pa vas bomo vodili skozi izvedbo vašega prvega kvantnega vezja tako na simuliranem kot na pravem kvantnem računalniku z uporabo brezplačnih orodij iz Azure Quantum in IBM Quantum. Kreditne kartice ne potrebujete.

Vsi govorijo o kvantnem računalništvu in o tem, kako bo spremenilo svet. Toda kaj to sploh je? Kako deluje? In kako ga lahko uporabljate?
Sem eden tistih, ki se najbolje učijo, ko lahko stvari otipam in občutim. Danes lahko napišete kodo, ki ustvari kvantna vezja, in jih prek ponudnikov storitev v oblaku zaženete na pravih kvantnih računalnikih. In začnete lahko brez uporabe kreditne kartice.
Ali pa se morda želite poigrati s kvantnim računalništvom in si nato izdelati nalepko za prenosni računalnik, da pokažete svoje znanje?
V tem blogu bom poskušal pokazati, kako začeti in narediti prve korake v kvantnem računalništvu.
Članek sem razdelil na naslednje dele:
- Kvantno računalništvo – ali naj me to zanima?
- Vprašanja in odgovori: kratek uvod v kvantno računalništvo
- Superpozicija in prepletenost
- Preprosto kvantno vezje (ki ga bomo kmalu izvedli)
- Praktični del: kratek vodnik o tem, kako izvesti svoje prvo kvantno vezje na simuliranem in pravem kvantnem računalniku
Če ste nestrpni in želite kar začeti, lahko preskočite prve tri dele in se takoj lotite praktičnega dela.
1. Kvantno računalništvo – zakaj naj me zanima?
Če vas zanima področje, ki se dotika kvantne mehanike, bi moral biti odgovor jasen. Znani fizik Richard Feynman je pogosto citiran v zvezi z nujnostjo kvantnih računalnikov za simulacijo kvantnih sistemov. Natančen citat se glasi: »Narava ni klasična, in če hočeš simulirati naravo, jo raje naredi kvantno-mehansko.«
Vendar obstajajo tudi druga področja, pri katerih je kvantno računalništvo lahko zelo koristno. Eden od primerov je varnost in šifriranje.
Kot ste morda že slišali, večina šifrirnih metod, ki se danes uporabljajo, ni odpornih proti kvantnim računalnikom, kar pomeni, da se pričakuje, da jih bodo kvantni računalniki v prihodnosti zlahka razvozlali. Eden od primerov je razvozljanje RSA-šifriranja, ki je zasnovano tako, da bi klasični računalniki za rešitev tega problema porabili neprimerljivo več časa. Kvantni računalniki danes tega problema ne morejo rešiti, vendar se izboljšujejo in izgleda, da bodo kvantni računalniki v prihodnosti lahko rešili ta problem v razumnem času (če želite vedeti več, je ključna beseda za iskanje Shorjev algoritem). To je pomembno, ker se šifriranje RSA uporablja za zaščito interneta.
To je tehnologija prihodnosti, zakaj bi vas torej skrbelo že zdaj? Ena od perspektiv je »zdaj zberi, dešifriraj kasneje«, kar je strategija, pri kateri napadalec zbira šifrirane podatke z namenom, da jih v prihodnosti dešifrira. To lahko predstavlja težavo, če morajo vaši podatki ostati varni več let, na primer dolgoročne poslovne skrivnosti.
Druga perspektiva je, da se kvantno računalništvo razvija z izjemno hitrostjo; razvijajo se različne vrste kvantnih računalnikov, države, kot je Kitajska, pa vlagajo v kvantne raziskave, tudi z namenom pridobitve morebitnih strateških prednosti.
Točen čas preboja je negotov in se lahko zgodi brez vednosti javnosti, podobno kot pri tajnem dešifriranju stroja Enigma med drugo svetovno vojno. Britanci so svoj uspeh pri dešifriranju kode Enigme skrbno skrivali in pridobljene obveščevalne podatke izkoristili za zagotovitev strateške prednosti.
Tretja perspektiva je čas migracije. Industrija dela na postkvantni kriptografiji (PQC), da bi razvila nove algoritme, ki so varni pred kvantnimi napadi. Vendar pa za mnoge sisteme sprememba šifrirnih algoritmov ni enostavna. To pomeni, da je treba te spremembe načrtovati dovolj vnaprej.
Poleg PQC se kot obetavna tehnologija za varno komunikacijo pojavlja tudi kvantna distribucija ključev (QKD). QKD izkorišča načela kvantne mehanike, da omogoči dvema stranema ustvarjanje skupnega naključnega skrivnega ključa. Medtem ko PQC nevarnost obide z uporabo novih algoritmov, pa QKD zahteva novo strojno opremo.
2. V&O: kratek uvod v kvantno računalništvo
Če vas zanima kvantno računalništvo (no, saj ste že prišli do sem), bomo v naslednjih nekaj odstavkih poskušali pojasniti, kaj je kvantni računalnik – zakaj, kaj in kako.
V) Kaj je kvantni računalnik?
O) Kvantni računalnik je računalnik, ki za reševanje zapletenih problemov uporablja kvantno mehaniko.
V) Zakaj kvantno računalništvo?
O) Kvantni računalniki lahko določene probleme rešujejo veliko bolj učinkovito kot klasični računalniki. To je zato, ker kvantni računalniki obdelujejo informacije na bistveno drugačen način kot klasični računalniki.
V) Ali je kvantno računalništvo boljše od klasičnega računalništva?
O) Kvantni računalniki so boljši pri reševanju določenih problemov, medtem ko so klasični računalniki boljši pri reševanju drugih problemov. Kvantni računalniki niso namenjeni nadomestitvi klasičnih računalnikov, ampak njihovi dopolnitvi.
V) Kateri so primeri problemov, ki jih kvantni računalniki dobro rešujejo?
O) Kvantni računalniki so dobri pri reševanju (nekaterih) problemov, ki imajo eksponentno časovno kompleksnost na klasičnih računalnikih. Eden od primerov je šifriranje, kot je omenjeno zgoraj. Obstajajo tudi druge kategorije problemov, ki so zanimive, npr. kvantni računalniki, ki simulirajo kvantne sisteme, in potencialno nova področja, kot je odkrivanje zdravil, kjer kvantni računalniki natančno simulirajo molekularne strukture in interakcije.
V) Kako deluje kvantni računalnik?
O) Kvantni računalniki namesto bitov uporabljajo kubite. Kubit je osnovni gradnik kvantnega računalništva. Je podoben klasičnemu bitu, vendar lahko obstaja v stanju 0, 1 ali obeh hkrati (t. i. superpozicija). Superpozicija je eden od dejavnikov, zaradi katerih so kvantni računalniki tako zmogljivi. Druga stvar je prepletenost, ki je pojav, pri katerem sta dva kubita lahko medsebojno povezana na način, ki ga klasični biti ne morejo (več o superpoziciji in prepletenosti kasneje).
V) Ali moram imeti znanje o kvantni mehaniki, da lahko uporabljam kvantno računalništvo?
O) Osnove kvantnega računalništva se lahko naučite, ne da bi vedeli karkoli o kvantni mehaniki – vendar pa razumevanje nekaterih osnovnih načel pomaga.
V) Ali je kvantna mehanika čudna?
O) Da, kvantna mehanika je čudna in težko razumljiva. Richard Feynman je dejal: »Če misliš, da razumeš kvantno mehaniko, potem kvantne mehanike ne razumeš«.
V) Če je kvantna mehanika tako čudna, zakaj jo potem uporabljamo?
O) Kvantna mehanika je čudna, a deluje. Je ena najuspešnejših teorij v fiziki, ki jo je potrdilo veliko poskusov. Kvantna mehanika je temelj številnih sodobnih tehnologij, kot so polprevodniki, laserji in aparati za magnetno resonanco (MRI). Standardni model fizike delcev temelji na načelih kvantne mehanike za opis osnovnih delcev. Eden najbolj izjemnih vidikov standardnega modela je njegova natančnost. Na primer, magnetni moment elektrona, lastnost, ki jo napoveduje standardni model, je bil izmerjen z natančnostjo enega dela na trilijon. Ta raven natančnosti je podobna merjenju razdalje med New Yorkom in Los Angelesom z natančnostjo širine človeškega lasu!
V) Ali lahko igra CS:GO?
O) Še ne!
3. Superpozicija in prepletenost
Kvantna mehanika je nenavadna. Zelo se razlikuje od klasične mehanike, tj. fizike, na katero smo navajeni v vsakdanjem življenju.
Kvantni delec se ne nahaja na določenem mestu, ampak ga opredeljuje verjetnostna porazdelitev, ki kaže, da je delček tukaj, delček pa tudi tam. To verjetnostno porazdelitev pogosto predstavlja valovna funkcija. Valovna funkcija podaja verjetnosti, da bomo delec našli na različnih mestih. Ko delec izmerimo ali z njim vzpostavimo interakcijo, se valovna funkcija »zgrudi« in delec najdemo na določenem mestu. Če poskus večkrat ponovimo, bodo mesta, kjer najdemo delec, sledila verjetnostni porazdelitvi, ki jo podaja valovna funkcija.
En najbolj znanih poskusov v kvantni mehaniki je poskus z dvojno režo. Če na valovni zaslon s dvema režama usmerite val, bi pričakovali, da boste na zaslonu videli interferenčni vzorec. To je zato, ker val preide skozi obe reži in interferira sam s sabo. Če pa na zaslon enega po enega usmerite delce (kot so elektroni), bi pričakovali, da boste na zaslonu videli dve črti, po eno za vsako režo. Toda to se ne zgodi. Na zaslonu še vedno vidite interferenčni vzorec.
Ta pojav se imenuje superpozicija, ki je eden od ključnih načel kvantne mehanike. Superpozicija pomeni, da lahko kvantni delec, na primer elektron, obstaja v več stanjih ali na več mestih hkrati. V poskusu z dvojno režo vsak elektron preide skozi obe reži hkrati, pri čemer ustvari interferenčni vzorec, kot da bi bil val. Šele ko elektron izmerimo ali opazujemo, se »odloči« za eno od rež, skozi katero preide, in se s tem zreducira v eno samo stanje.
Superpozicija je eden od elementov, ki kvantne računalnike dela tako močne. Kvantni računalnik lahko obdeluje informacije v več stanjih hkrati. Primerjava, ki to ponazarja, je reševanje labirinta, kjer lahko hkrati prehodite vse poti, da najdete rešitev.
Drugo ključno načelo kvantne mehanike je prepletenost. Prepletenost je pojav, pri katerem se dva delca povežeta tako, da je stanje enega delca odvisno od stanja drugega delca, ne glede na to, kako daleč sta drug od drugega. Ta edinstvena lastnost je še posebej uporabna pri reševanju zapletenih optimizacijskih problemov. Predstavljajte si, da poskušate uskladiti floto dostavnih dronov, da bi našli najučinkovitejše poti. S prepletenostjo lahko droni takoj izmenjujejo informacije in usklajujejo svoje poti v popolni harmoniji, pri čemer najdejo optimalno rešitev veliko hitreje kot s klasičnimi metodami.
4. Preprosto kvantno vezje (ki ga bomo kmalu zagnali)
V kvantnih vezjih bomo namesto klasičnih bitov uporabljali kvantne bite (kubite). Kubit je lahko v stanju 0, 1 ali v obeh hkrati (t. i. superpozicija). Začnemo z enim kubitom q0 v stanju 0 (označenem z |0⟩). Ko izmerimo ta kubit, se bo sesul. V tem primeru je verjetnost, da bomo izmerili 0, 100 %, verjetnost, da bomo izmerili 1, pa 0 %.

Sedaj na q0 uporabimo Hadamardova vrata. Hadamardova vrata kvantni bit postavijo v superpozicijo. Kvantni bit je sedaj hkrati v stanju 0 in 1. Ko izmerimo ta kvantni bit, je verjetnost, da bomo izmerili 0, 50 %, verjetnost, da bomo izmerili 1, pa prav tako 50 %.

Sedaj dodamo še en kubit q1 v stanju 0 (označen z |0⟩) in nato med oba kubita vstavimo CNOT-vrata. CNOT-vrata povežejo oba kubita v prepleteno stanje. Kvanta sta zdaj medsebojno povezana tako, da je stanje q1 odvisno od stanja q0. Ko izmerimo q0, je verjetnost, da bomo izmerili 0, 50 %, verjetnost, da bomo izmerili 1, pa prav tako 50 %. Stanje q1 je odvisno od stanja q0. Če je q0 0, bo q1 0. Če je q0 1, bo q1 1.

5. Praktični vodič: kratek priročnik o tem, kako zagnati svoje prvo kvantno vezje tako na emuliranem kot na pravem kvantnem računalniku.
Programski jeziki za kvantno računalništvo
Obstaja več programskih jezikov za kvantno računalništvo. Najbolj priljubljeni so Q#, Qiskit in Cirq. Ti jeziki se uporabljajo za ustvarjanje kvantnih vezij, ki jih je mogoče zagnati na kvantnih računalnikih.
- Qiskit: Razvil ga je IBM. Široko se uporablja tako v akademskih kot v industrijskih okoljih in ima največjo skupnost, zaradi česar je najbolj priljubljen med vsemi tremi.
- Cirq: Razvil ga je Google. Je optimiziran za Googlovo strojno opremo in je prav tako dobro sprejet.
- Q#: Razvil ga je Microsoft. Je močno integriran v Microsoftov ekosistem, kar je primerno za izobraževalne namene. Pridobiva na priljubljenosti, vendar ima manjšo bazo uporabnikov v primerjavi z Qiskitom in Cirqom.
Jeziki Q#, Qiskit in Cirq vsi interpretirajo kodo visokega nivoja in pošljejo vmesno predstavitev ponudniku storitev v obliki, ki se lahko izvede neposredno na pravih kvantnih procesorjih (QPU) ali pa bo pred izvedbo podvržena nadaljnji kompilaciji in specializaciji za strojno opremo.
Qiskit in Cirq sta knjižnici za Python. Q# je samostojen programski jezik, katerega sintaksa in struktura sta pod vplivom jezika C#. Čeprav ga je mogoče integrirati s Pythonom z uporabo paketa qsharp, ki omogoča izvajanje kode Q# v okolju Python.
Azure Quantum
Azure Quantum je portal, ki omogoča enostaven začetek s kvantnim računalništvom. Kvantna vezja lahko izvajate na simuliranih in emuliranih kvantnih računalnikih neposredno v brskalniku. Azure Quantum vam ponuja obsežno podporo pri začetkih s kvantnim računalništvom. Na voljo so številni viri, navodila in primeri, ki vam pomagajo pri začetkih. Poleg tega vas samodejno poveže z vašim strežniškim okoljem in vizualizira rezultate.
Če obiščete Azure Quantum web page, lahko s kodo v jeziku Q# eksperimentirate neposredno v brskalniku. Izbirate lahko med simulatorjem v pomnilniku ali kvantnim emulatorjem na podlagi vektorjev stanja (ki emulira tudi šum) – oba sta na tej strani na voljo brezplačno. Ker gre za storitev podjetja Microsoft, je v njo vgrajena integracija s Copilotom, tako da imate »nekoga«, s katerim se lahko pogovarjate o kodi in kvantnih vezjih.
Če želite zagnati kvantno vezje, o katerem smo govorili prej, lahko naslednjo kodo skopirate in prilepite v urejevalnik na spletni strani Azure Quantum:

Ker je izhod verjetnosten, lahko kodo izvedete večkrat (= izvedete več poskusov), da dobite porazdelitev rezultatov:

Opomba: |00⟩ in |11⟩ morata biti v razmerju 50 %/50 % – več poskusov pomeni večjo natančnost.
|01⟩ in |10⟩ ne prispevata k rezultatu, kar kaže, da v tem simuliranem sistemu ni šuma.
Če boste kasneje želeli svoj kodni projekt »nadgraditi« za uporabo pravih QPU-jev pri ponudniku, do katerega imate dostop, Azure Quantum to podpira z dodajanjem nekaj vrstic kode. Vendar pa vas bo izvajanje na pravem kvantnem računalniku stalo, če ostanete v okolju Azure. Lahko pa dobite nekaj brezplačnega računalniškega časa, če uporabite IBM Quantum…
IBM Quantum
IBM Quantum je še en portal, ki ponuja preprost način za začetek dela s kvantnim računalništvom. Če se registrirate in prijavite, lahko izvajate kvantne vezje na pravih kvantnih računalnikih podjetja IBM … in vsak mesec prejmete 10 minut brezplačnega časa za kvantno računalništvo.
Obiščite spletno stran https://quantum.ibm.com/ in si ustvarite račun. Zdaj lahko svojo kodo Qiskit izvajate s svojega lokalnega računalnika, pri čemer kot ozadje uporabljate kvantne računalnike IBM.

Obiščite stran https://quantum.ibm.com/ > Compute, da si ogledate razpoložljive kvantne računalnike. Ko ste že tam, si na strani Dashboard pridobite svoj API-žeton.

Zdaj lahko svojo kodo Qiskit izvajate na lokalnem računalniku, pri čemer kot ozadje uporabljate kvantne računalnike IBM.
V svojem razvojnem okolju (IDE) ustvarite virtualno okolje Python (jaz tukaj uporabljam MiniConda) in namestite nekaj paketov:

Ustvarite nov Jupyterov zvezek in v njem ustvarite novo celico, ki vsebuje vašo nalogo za kvantno vezje:

Če se postopek izvede brez napak, se naloga pošlje v kvantni računalnik IBM. Zdaj lahko obiščete spletno stran IBM Quantum, kjer si lahko ogledate stanje naloge in rezultate.
Zdaj si lahko ogledate rezultate svojega kvantnega vezja:

Podobno kot pri simuliranem vezju v Azure Quantum dobimo zdaj porazdelitev, pri kateri sta stanji |00⟩ in |11⟩ prisotni v razmerju skoraj 50 % proti 50 %. Opazimo tudi nekaj prispevka stanja |01⟩ in |10⟩, kar kaže, da na pravem kvantnem računalniku obstaja šum.
Zaključek
Upam, da vam je bil ta vpogled v kvantno računalništvo v pomoč in, da ste z veseljem spoznali nekaj dejanske kode, ki se nanaša na superpozicijo, prepletenost in kvantna vezja. Kvantno računalništvo ni le zabavna in zanimiva tema, temveč je pomembno tudi za prihodnost tehnologije in varnosti.