"Ma arvan, et võin julgelt öelda, et keegi ei mõista kvantmehaanikat." - Richard Feynman
Kvantarvutite teema on alati köitnud tehnikakirjanikke ja ajakirjanikke. Selle arvutuslik potentsiaal ja keerukus andsid sellele teatud müstilise aura. Liiga sageli kirjeldavad teemaartiklid ja infograafika üksikasjalikult selle valdkonna erinevaid väljavaateid, puudutades vaevu selle praktilist rakendust: see võib vähem tähelepanelikku lugejat eksitada.
Populaarteaduslikud artiklid jätavad kvantsüsteemide kirjeldused välja ja esitavad selliseid väiteid:
Tavaline bitt võib olla 1 või 0, kuid kubit võib olla samaaegselt 1 ja 0.
Kui teil väga veab (milles ma pole kindel), öeldakse teile järgmist:
Kubit on superpositsioonis "1" ja "0" vahel.
Ükski neist seletustest ei tundu usutav, kuna püüame sõnastada kvantmehaanilist nähtust, kasutades väga traditsioonilises maailmas välja töötatud keelt. Kvantarvutamise põhimõtete selgeks selgitamiseks on vaja kasutada teist keelt - matemaatilist.
Selles õpetuses käsitlen matemaatilisi tööriistu, mis on vajalikud kvantarvutussüsteemide modelleerimiseks ja mõistmiseks, samuti kvantarvutamise loogika illustreerimiseks ja rakendamiseks. Lisaks toon näite kvantalgoritmi kohta ja ütlen teile, mis on selle eelis võrreldes traditsioonilise arvutiga.
Annan endast parima, et kõike seda selges keeles selgitada, kuid siiski loodan, et selle artikli lugejatel on põhiteadmised lineaaralgebrast ja digitaalloogikast (käsitletakse lineaaralgebrat
Kõigepealt vaatame üle digitaalse loogika põhimõtted. See põhineb elektriahelate kasutamisel arvutuste tegemiseks. Kirjelduse abstraktsemaks muutmiseks lihtsustame elektrijuhtme olekut väärtuseni "1" või "0", mis vastab olekutele "sees" või "väljas". Transistorid kindlasse järjestusse paigutades loome nn loogilised elemendid, mis võtavad ühe või mitu sisendsignaali väärtust ja teisendavad need väljundsignaaliks teatud Boole'i loogika reeglite alusel.
Ühised loogikaväravad ja nende olekutabelid
Selliste põhielementide ahelate põhjal saab luua keerukamaid elemente ning keerukamate elementide ahelate põhjal võib lõpuks suure abstraktsiooniastmega eeldada keskprotsessori analoogi saamist.
Nagu ma varem mainisin, vajame viisi digitaalloogika matemaatiliseks esitamiseks. Esiteks tutvustame matemaatilist traditsioonilist loogikat. Lineaaralgebra abil saab klassikalisi bitte väärtustega "1" ja "0" esitada kahe veeruvektorina:
kus on vasakpoolsed numbrid
Identity | Identiteedi transformatsioon |
Negatsioon | Negatsioon |
Konstant-0 | Konstandi "0" arvutamine |
Konstant-1 | Konstandi "1" arvutamine |
Meie pakutud uue biti esituse põhjal on vektori teisenduse abil vastava bitiga toiminguid üsna lihtne teha:
Enne edasiliikumist vaatame kontseptsiooni
Koos
Nüüd, kus meil on peaaegu kõik vajalikud matemaatilised mõisted, liigume edasi oma esimese kvantloogika värava juurde. See on operaator
Seda operaatorit saab esitada järgmise teisendusvektorina:
Et näidata kõike, mida oleme seni käsitlenud, näitan teile, kuidas kasutada elementi CNOT mitmel bitil:
Kokkuvõtteks juba öeldut: esimeses näites lagundame |10⟩ selle tensorkorrutise osadeks ja kasutame maatriksit CNOT, et saada korrutisele uus vastav olek; siis arvutame selle väärtuseks |11⟩ vastavalt varem antud CNOT väärtuste tabelile.
Niisiis, oleme meeles pidanud kõik matemaatilised reeglid, mis aitavad meil mõista traditsioonilist andmetöötlust ja tavalisi bitte, ning lõpuks saame liikuda edasi kaasaegse kvantarvutuse ja kubittide juurde.
Kui olete nii kaugele lugenud, siis on mul teile hea uudis: kubite saab hõlpsasti matemaatiliselt väljendada. Üldiselt, kui klassikalise biti (cbit) saab seada väärtusele |1⟩ või |0⟩, on kubit lihtsalt superpositsioonis ja võib enne mõõtmist olla nii |0⟩ kui ka |1⟩. Pärast mõõtmist kukub see kokku |0⟩ või |1⟩. Teisisõnu, kubiti saab esitada lineaarse kombinatsioonina |0⟩ ja |1⟩ vastavalt järgmisele valemile:
kus a₀ и a₁ tähistavad vastavalt amplituudid |0⟩ ja |1⟩. Neid võib pidada "kvanttõenäosusteks", mis tähistavad tõenäosust, et kubit langeb pärast mõõtmist ühte olekusse, kuna kvantmehaanikas kukub superpositsioonis olev objekt pärast fikseerimist ühte olekusse. Laiendame seda väljendit ja saame järgmise:
Minu selgituse lihtsustamiseks kasutan selles artiklis seda esitust.
Selle qubiti puhul on võimalus väärtuseni kokku kukkuda a₀ pärast mõõtmist on võrdne |a₀|² ja kokkuvarisemise võimalus väärtuseni a₁ on võrdne |a₁|². Näiteks järgmise qubiti jaoks:
"1"-ks kokkuvarisemise võimalus on võrdne |1/ √2|² ehk ½, see tähendab 50/50.
Kuna klassikalises süsteemis peavad kõik tõenäosused kokku liitma ühe (täieliku tõenäosusjaotuse jaoks), siis võime järeldada, et amplituudide |0⟩ ja |1⟩ absoluutväärtuste ruudud peavad kokku saama ühe. Selle teabe põhjal saame formuleerida järgmise võrrandi:
Kui olete trigonomeetriaga tuttav, märkate, et see võrrand vastab Pythagorase teoreemile (a²+b²=c²), see tähendab, et me saame graafiliselt kujutada kubiidi võimalikke olekuid punktidena ühikuringil, nimelt:
Loogilisi operaatoreid ja elemente rakendatakse kubitidele samamoodi nagu klassikaliste bittide puhul – maatriksteisendusel. Kõiki pööratavaid maatriksioperaatoreid, mida oleme seni meelde tuletanud, eriti CNOT-i, saab kasutada kubitidega töötamiseks. Sellised maatriksoperaatorid võimaldavad teil kasutada kubiti iga amplituudi ilma seda mõõtmata ja kokku varisemata. Lubage mul toon teile näite eitusoperaatori kasutamisest qubitis:
Enne jätkamist tuletan teile meelde, et amplituudi väärtused a₀ ja a₁ on tegelikult
Selgitamise lihtsustamiseks piirdume siin aga reaalarvudega.
Tundub, et on aeg arutada mõningaid loogikaelemente, mis on mõistlikud ainult kvantarvutuse kontekstis.
Üks olulisemaid operaatoreid on "Hadamardi element": see võtab natuke olekusse "0" või "1" ja asetab selle sobivasse superpositsiooni 50% tõenäosusega, et see langeb kokku "1" või "0" pärast mõõtmist.
Pange tähele, et Hadamardi operaatori alumises paremas servas on negatiivne arv. See on tingitud asjaolust, et operaatori rakendamise tulemus sõltub sisendsignaali väärtusest: - |1⟩ või |0⟩ ja seetõttu on arvutus pööratav.
Veel üks oluline punkt Hadamardi elemendi kohta on selle pööratavus, mis tähendab, et see võib võtta sobivas superpositsioonis kubiti ja teisendada selle |0⟩ või |1⟩.
See on väga oluline, sest see annab meile võimaluse teiseneda kvantolekust ilma kubiti olekut määramata – ja vastavalt ilma seda kokku varisemata. Seega saame kvantarvutuse struktureerida pigem deterministliku kui tõenäosusliku põhimõtte alusel.
Kvantoperaatorid, mis sisaldavad ainult reaalarve, on nende endi vastandid, seega saame operaatori kubitile rakendamise tulemust esitada ühikuringi sees teisendusena olekumasina kujul:
Seega teisendatakse kubit, mille olek on ülaltoodud diagrammil, pärast Hadamardi operatsiooni rakendamist vastava noolega näidatud olekusse. Samamoodi saame konstrueerida teise olekumasina, mis illustreerib kubiti teisendamist ülaltoodud eitusoperaatori abil (tuntud ka kui Pauli eituse operaator või biti inversioon), nagu allpool näidatud:
Oma qubitiga keerukamate toimingute tegemiseks saame mitut operaatorit aheldada või elemente mitu korda rakendada. Näide jadateisendusest, mis põhineb
See tähendab, et kui alustame bitiga |0⟩, rakendame biti inversiooni ja seejärel Hadamardi operatsiooni, siis teise biti inversiooni ja jälle Hadamardi operatsiooni, millele järgneb viimane biti inversioon, saame tulemuseks vektori, mille annab keti parem pool. Erinevaid olekumasinaid üksteise peale asetades saame alustada väärtusest |0⟩ ja jälgida igale teisendusele vastavaid värvilisi nooli, et mõista, kuidas see kõik töötab.
Kuna oleme nii kaugele jõudnud, on aeg kaaluda ühte kvantalgoritmide tüüpidest, nimelt -
Kujutagem ette, et teil on must kast, mis sisaldab funktsiooni/operaatorit ühel bitil (pidage meeles - ühe bitiga saab teha ainult neli toimingut: identiteedi teisendamine, eitamine, konstandi "0" hindamine ja konstandi "1" hindamine "). Mis funktsioon karbis täpselt täidetakse? Te ei tea, milline, kuid saate läbida nii palju sisendväärtuste variante kui soovite ja hinnata väljundtulemusi.
Mitu sisendit ja väljundit peaksite musta kasti läbima, et aru saada, millist funktsiooni kasutatakse? Mõelge sellele korraks.
Klassikalise arvuti puhul peate kasutatava funktsiooni määramiseks tegema 2 päringut. Näiteks kui sisend "1" annab väljundi "0", saab selgeks, et kasutatakse kas konstandi "0" arvutamise funktsiooni või eitusfunktsiooni, mille järel peate sisendsignaali väärtust muutma. väärtusele "0" ja vaadake, mis toimub väljapääsu juures.
Kvantarvuti puhul on vaja ka kahte päringut, kuna sisendväärtusele rakendatava funktsiooni täpseks määratlemiseks on ikkagi vaja kahte erinevat väljundväärtust. Kui aga küsimust veidi ümber sõnastada, selgub, et kvantarvutitel on siiski tõsine eelis: kui tahaks teada, kas kasutatav funktsioon on konstantne või muutuv, oleks eelis kvantarvutitel.
Kastis kasutatav funktsioon on muutuv, kui sisendsignaali erinevad väärtused annavad väljundis erinevaid tulemusi (näiteks identiteedi teisendamine ja biti inversioon) ning kui väljundväärtus ei muutu sõltumata sisendväärtusest, siis funktsioon on konstantne (näiteks konstandi "1" arvutamine või konstandi "0" arvutamine).
Kvantalgoritmi abil saate ühe päringu põhjal määrata, kas mustas kastis olev funktsioon on konstantne või muutuv. Kuid enne kui me vaatame, kuidas seda üksikasjalikult teha, peame leidma viisi, kuidas kõiki neid funktsioone kvantarvutis struktureerida. Kuna kõik kvantoperaatorid peavad olema inverteeritavad, seisame kohe silmitsi probleemiga: konstantide “1” ja “0” arvutamise funktsioonid ei ole seda.
Kvantarvutuses kasutatav tavaline lahendus on lisada täiendav väljundkubit, mis tagastab mis tahes sisendväärtuse, mille funktsioon saab.
Enne: | Pärast: |
Sel viisil saame määrata sisendväärtused ainult väljundväärtuse põhjal ja funktsioon muutub pööratavaks. Kvantahelate struktuur tekitab vajaduse täiendava sisendbiti järele. Vastavate operaatorite väljatöötamise huvides eeldame, et lisasisendi qubit on seatud väärtusele |0⟩.
Kasutades sama kvantahela esitust, mida me varem kasutasime, vaatame, kuidas saab kõiki nelja elementi (identiteedi teisendus, eitus, konstandi "0" hindamine ja konstandi "1" hindamine) kvantoperaatorite abil rakendada.
Näiteks saate konstantse "0" arvutamise funktsiooni rakendada järgmiselt:
Konstandi "0" arvutamine:
Siin pole operaatoreid üldse vaja. Esimene sisend qubit (milleks eeldasime olevat |0⟩) tagastab sama väärtusega ja teine sisendväärtus tagastab ennast – nagu tavaliselt.
Konstandi “1” arvutamise funktsiooniga on olukord veidi erinev:
Konstandi "1" arvutamine:
Kuna oleme eeldanud, et esimene sisend qubit on alati seatud väärtusele |0⟩, on biti inversiooni operaatori rakendamise tulemuseks see, et see annab väljundis alati ühe. Ja nagu tavaliselt, annab teine qubit väljundis oma väärtuse.
Identiteedi teisendusoperaatori kaardistamisel hakkab ülesanne muutuma keerulisemaks. Seda saab teha järgmiselt.
Identne teisendus:
Siin kasutatav sümbol tähistab elementi CNOT: ülemine rida tähistab juhtbitti ja alumine rida juhtbitti. Tuletan meelde, et operaatori CNOT kasutamisel muutub juhtbiti väärtus, kui juhtbitt on võrdne |1⟩, kuid jääb muutumatuks, kui juhtbitt on võrdne |0⟩. Kuna eeldasime, et ülemise rea väärtus on alati võrdne |0⟩, omistatakse selle väärtus alati alumisele reale.
Toimime sarnaselt eitusoperaatoriga:
Eitus:
Me lihtsalt pöörame väljundrea lõpus oleva biti ümber.
Nüüd, kui see esialgne arusaam on kadunud, vaatame kvantarvuti konkreetseid eeliseid traditsioonilise arvuti ees, kui on vaja määrata musta kasti peidetud funktsiooni püsivust või varieeruvust vaid ühe päringu abil.
Selle probleemi lahendamiseks, kasutades kvantarvutust ühes päringus, on vaja sisestada sisendkubitid enne funktsioonile edastamist superpositsiooni, nagu allpool näidatud:
Hadamardi elementi rakendatakse uuesti funktsiooni tulemusele, et murda kubitid superpositsioonist välja ja muuta algoritm deterministlikuks. Käivitame süsteemi olekus |00⟩ ja lühidalt selgitatud põhjustel saame tulemuseks |11⟩, kui rakendatud funktsioon on konstantne. Kui musta kasti sees olev funktsioon on muutuv, siis pärast mõõtmist tagastab süsteem tulemuse |01⟩.
Ülejäänud artikli mõistmiseks vaatame illustratsiooni, mida ma varem näitasin:
Kasutades biti inversiooni operaatorit ja rakendades seejärel Hadamardi elementi mõlemale sisendväärtusele, mis võrdub |0⟩, tagame, et need tõlgitakse samasse |0⟩ ja |1⟩ superpositsiooniks järgmiselt:
Selle väärtuse musta kasti funktsioonile edastamise näitel on lihtne näidata, et mõlemad konstantse väärtuse funktsioonid annavad välja |11⟩.
Konstandi "0" arvutamine:
Samamoodi näeme, et konstandi “1” arvutamise funktsioon annab väljundina ka |11⟩, see tähendab:
Konstandi "1" arvutamine:
Pange tähele, et väljund on |1⟩, kuna -1² = 1.
Samal põhimõttel saame tõestada, et mõlema muutuja funktsiooni kasutamisel saame väljundis alati |01⟩ (eeldusel, et kasutame sama meetodit), kuigi kõik on veidi keerulisem.
Identne teisendus:
Kuna CNOT on kahe qubit operaator, ei saa seda esitada lihtsa olekumasinana ja seetõttu on vaja määratleda kaks väljundsignaali, mis põhinevad mõlema sisendkubiti tensorkorrutisel ja korrutamisel CNOT-maatriksiga, nagu varem kirjeldatud:
Selle meetodiga saame ka kinnitada, et väljundväärtus |01⟩ saadakse, kui eitusfunktsioon on mustas kastis peidetud:
Eitus:
Seega demonstreerisime just olukorda, kus kvantarvuti on selgelt tõhusam kui tavaline arvuti.
Mis edasi?
Soovitan siinkohal lõpetada. Me tegime juba suurepärast tööd. Kui olete kõigest aru saanud, mida ma käsitlesin, siis arvan, et olete nüüd hästi aru saanud kvantarvutamise ja kvantloogika põhitõdedest ning sellest, miks võivad kvantalgoritmid teatud olukordades olla traditsioonilisest andmetöötlusest tõhusamad.
Minu kirjeldust saab vaevalt nimetada täieõiguslikuks kvantarvutamise ja algoritmide juhendiks – pigem on see lühike sissejuhatus matemaatikasse ja tähistusse, mille eesmärk on hajutada lugejate populaarteaduslike allikate poolt pealesunnitud ideid teema kohta (tõsiselt, paljud ei saa sellest aru olukord!). Mul ei olnud aega puudutada paljusid olulisi teemasid, nagu
Kui soovite süstematiseerida ja struktureerida oma teadmisi kvantarvutite kohta, kiiresti Soovitan lugeda
Allikas: www.habr.com