"Ik tink dat ik feilich kin sizze dat gjinien de kwantummeganika begrypt." - Richard Feynman
It ûnderwerp fan quantum computing hat technysk skriuwers en sjoernalisten altyd fassinearre. Syn komputaasjepotinsjeel en kompleksiteit joegen it in beskate mystike aura. Te faak beskriuwe feature-artikels en infografiken yn detail de ferskate perspektiven fan dizze yndustry, wylst se amper oanreitsje op har praktyske tapassing: dit kin de minder attente lêzer misleide.
Populêre wittenskiplike artikels wegere beskriuwingen fan kwantumsystemen en meitsje útspraken lykas:
In gewoane bit kin in 1 of in 0 wêze, mar in qubit kin tagelyk in 1 en in 0 wêze.
As jo heul gelok binne (dêr't ik net wis fan bin), sille jo wurde ferteld dat:
De qubit is yn in superposysje tusken "1" en "0".
Gjin fan dizze ferklearrings liket plausibel, om't wy besykje in kwantummeganysk ferskynsel te formulearjen mei taal ûntwikkele yn in heul tradisjonele wrâld. Om dúdlik útlizze de prinsipes fan quantum computing, is it nedich om te brûken in oare taal - wiskundige.
Yn dizze tutorial sil ik de wiskundige ark dekke dy't nedich binne om kwantumberekkeningssystemen te modellearjen en te begripen, lykas hoe't jo de logika fan kwantumberekkening kinne yllustrearje en tapasse. Boppedat sil ik in foarbyld jaan fan in kwantumalgoritme en jo fertelle wat it foardiel is boppe in tradisjonele kompjûter.
Ik sil myn bêst dwaan om dit alles yn dúdlike taal út te lizzen, mar ik hoopje dochs dat lêzers fan dit artikel in basisbegryp hawwe fan lineêre algebra en digitale logika (lineêre algebra wurdt behannele
Litte wy earst de prinsipes fan digitale logika oergean. It is basearre op it brûken fan elektryske circuits foar it útfieren fan berekkeningen. Om ús beskriuwing abstrakter te meitsjen, litte wy de steat fan 'e elektryske draad ferienfâldigje nei "1" of "0", wat oerienkomt mei de steaten "oan" of "út". Troch transistors yn in bepaalde folchoarder te regeljen, sille wy saneamde logyske eleminten oanmeitsje dy't ien of mear ynfiersinjaalwearden nimme en se omsette yn in útfiersinjaal basearre op bepaalde regels fan Booleaanske logika.
Common logyske poarten en harren steat tabellen
Op grûn fan 'e keatlingen fan sokke basiseleminten kinne mear komplekse eleminten makke wurde, en basearre op' e keatlingen fan kompleksere eleminten kinne wy úteinlik, mei in grutte abstraksje, ferwachtsje om in analoog fan 'e sintrale prosessor te krijen.
Lykas ik earder neamde, hawwe wy in manier nedich om digitale logika wiskundich te fertsjintwurdigjen. Litte wy earst wiskundige tradisjonele logika yntrodusearje. Mei help fan lineêre algebra kinne de klassike bits mei de wearden "1" en "0" wurde fertsjintwurdige as twa kolomvectors:
dêr't de nûmers oan de linkerkant binne
Identiteit | Identiteitstransformaasje |
Negaasje | Negaasje |
Konstant-0 | Berekkening fan de konstante "0" |
Konstant-1 | Berekkening fan de konstante "1" |
Op grûn fan ús foarstelde nije represintaasje fan in bit, is it frij maklik om operaasjes út te fieren op it korrespondearjende bit mei in fektortransformaasje:
Foardat jo fierder gean, litte wy nei it konsept sjen
Mei help fan
No't wy hast alle nedige wiskundige begripen hawwe, litte wy trochgean nei ús earste kwantumlogyske poarte. Dit is de operator
Dizze operator kin wurde fertsjintwurdige as de folgjende transformaasjevektor:
Om alles te demonstrearjen dat wy oant no ta hawwe behannele, sil ik jo sjen litte hoe't jo it CNOT-elemint kinne brûke op meardere bits:
Om gearfetsje wat al sein is: yn it earste foarbyld ûntbrekke wy |10⟩ yn dielen fan syn tensorprodukt en brûke de CNOT-matrix om in nije oerienkommende steat fan it produkt te krijen; wy faktorje it dan ta |11⟩ neffens de tabel fan CNOT-wearden earder jûn.
Dat, wy hawwe alle wiskundige regels ûnthâlden dy't ús sille helpe om tradisjonele komputer en gewoane bits te begripen, en wy kinne einlings trochgean nei moderne kwantumberekkening en qubits.
As jo sa fier lêzen hawwe, dan haw ik goed nijs foar jo: qubits kinne maklik wiskundich útdrukt wurde. Yn it algemien, as in klassike bit (cbit) ynsteld wurde kin op |1⟩ of |0⟩, is de qubit gewoan yn superposysje en kin sawol |0⟩ as |1⟩ foar mjitting wêze. Nei mjitting falt it yn |0⟩ of |1⟩. Mei oare wurden, in qubit kin fertsjintwurdige wurde as in lineêre kombinaasje fan |0⟩ en |1⟩ neffens de formule hjirûnder:
wêr a₀ и a₁ fertsjintwurdigje respektivelik de amplituden |0⟩ en |1⟩. Dizze kinne wurde tocht as "kwantumprobabiliteiten", dy't de kâns fertsjintwurdigje dat in qubit yn ien fan 'e steaten ynstoart nei't it is mjitten, om't yn 'e kwantummeganika in objekt yn superposysje yn ien fan 'e steaten ynstoart nei't it fêststeld is. Litte wy dizze útdrukking útwreidzje en it folgjende krije:
Om myn útlis te ferienfâldigjen, is dit de foarstelling dy't ik yn dit artikel sil brûke.
Foar dizze qubit, de kâns fan ynstoarten oan de wearde a₀ nei mjitting is gelyk oan |a₀|², en de kâns op ynstoarten nei de wearde a₁ is lyk oan |a₁|². Bygelyks, foar de folgjende qubit:
de kâns op ynstoarten yn "1" is lyk oan |1/ √2|², of ½, dat is, 50/50.
Om't yn it klassike systeem alle kânsen optelle moatte ta ien (foar in folsleine kânsferdieling), kinne wy konkludearje dat de kwadraten fan 'e absolute wearden fan 'e amplituden |0⟩ en |1⟩ ien moatte optelle. Op grûn fan dizze ynformaasje kinne wy de folgjende fergeliking formulearje:
As jo bekend binne mei trigonometry, sille jo merke dat dizze fergeliking oerienkomt mei de stelling fan Pythagoras (a²+b²=c²), dat is, wy kinne de mooglike steaten fan 'e qubit grafysk foarstelle as punten op 'e ienheidsirkel, nammentlik:
Logyske operators en eleminten wurde tapast op qubits op deselde wize as yn 'e situaasje mei klassike bits - basearre op in matrikstransformaasje. Alle ynvertibele matrixoperators dy't wy oant no ta hawwe oproppen, benammen CNOT, kinne wurde brûkt om te wurkjen mei qubits. Sokke matrixoperators kinne jo elk fan 'e amplituden fan' e qubit brûke sûnder it te mjitten en yn te fallen. Lit my jo in foarbyld jaan fan it brûken fan de negaasjeoperator op in qubit:
Foardat wy trochgean, lit my jo herinnerje dat de amplitudewearden a₀ en a₁ binne eins
Om de ferklearring lykwols te ferienfâldigjen, sille wy ús hjir beheine ta echte getallen.
It liket tiid om guon logyske eleminten te besprekken dy't allinich sin meitsje yn 'e kontekst fan kwantumberekkening.
Ien fan 'e wichtichste operators is it "Hadamard-elemint": it nimt in bytsje yn in "0" of "1" steat en set it yn 'e passende superposysje mei in 50% kâns om yn te fallen yn in "1" of "0" nei mjitting.
Merk op dat d'r in negatyf nûmer is yn 'e rjochter ûnderkant fan' e Hadamard-operator. Dit komt troch it feit dat it resultaat fan it tapassen fan de operator hinget ôf fan de wearde fan it ynfier sinjaal: - |1⟩ of |0⟩, en dêrom is de berekkening omkearber.
In oar wichtich punt oer it Hadamard-elemint is syn invertibiliteit, wat betsjuttet dat it in qubit kin nimme yn 'e passende superposysje en it transformearje yn |0⟩ of |1⟩.
Dit is heul wichtich, om't it ús de mooglikheid jout om te transformearjen fan in kwantumstate sûnder de steat fan 'e qubit te bepalen - en dus sûnder it yn te brekken. Sa kinne wy quantum computing strukturearje basearre op in deterministysk ynstee fan in probabilistysk prinsipe.
Kwantumoperators dy't allinich echte getallen befetsje binne har eigen tsjinoerstelde, dus kinne wy it resultaat fertsjintwurdigje fan it tapassen fan de operator op in qubit as in transformaasje binnen de ienheidsirkel yn 'e foarm fan in steatmasine:
Sa, de qubit, de steat fan dat wurdt presintearre yn it diagram hjirboppe, nei it tapassen fan de operaasje Hadamard, wurdt omfoarme ta de steat oanjûn troch de byhearrende pylk. Likemin kinne wy in oare steatmasine konstruearje dy't de transformaasje fan in qubit sil yllustrearje mei de negaasjeoperator lykas hjirboppe werjûn (ek wol bekend as de Pauli-negaasje-operator, of bitinversion), lykas hjirûnder werjûn:
Om mear komplekse operaasjes op ús qubit út te fieren, kinne wy meardere operators keatling of eleminten meardere kearen tapasse. Foarbyld fan serial transformaasje basearre op
Dat is, as wy begjinne mei bit |0⟩, in bit-inversion tapasse, en dan in Hadamard-operaasje, dan noch in bit-inversion, en wer in Hadamard-operaasje, folge troch in lêste bit-inversion, komme wy út mei de fektor jûn troch on de rjochterkant fan 'e keatling. Troch ferskate steatmasines boppe-op elkoar te lizzen, kinne wy begjinne by |0⟩ en de kleurde pylken folgje dy't oerienkomme mei elk fan 'e transformaasjes om te begripen hoe't it allegear wurket.
Sûnt wy sa fier binne kommen, is it tiid om ien fan 'e soarten kwantumalgoritmen te beskôgjen, nammentlik -
Litte wy ús foarstelle dat jo in swarte doaze hawwe dy't in funksje/operator op ien bit befettet (ûnthâld - mei ien bit kinne mar fjouwer operaasjes útfierd wurde: identiteitskonverzje, negaasje, evaluaasje fan 'e konstante "0" en evaluaasje fan 'e konstante "1" "). Wat is krekt de funksje útfierd yn it fak? Jo witte net hokker, mar jo kinne safolle farianten fan ynfierwearden trochgean as jo wolle en de útfierresultaten evaluearje.
Hoefolle yn- en útgongen soene jo moatte rinne troch de swarte doaze foar in útfine hokker funksje wurdt brûkt? Tink oer dit foar in twadde.
Yn it gefal fan in klassike kompjûter moatte jo 2 fragen meitsje om de te brûken funksje te bepalen. Bygelyks, as de ynfier "1" in "0" útfier produsearret, wurdt it dúdlik dat of de funksje fan it berekkenjen fan de konstante "0" of de negaasjefunksje wurdt brûkt, wêrnei't jo de wearde fan it ynfiersinjaal moatte feroarje nei "0" en sjoch wat der bart by de útgong.
Yn it gefal fan in kwantumkompjûter sille ek twa fragen nedich wêze, om't jo noch twa ferskillende útfierwearden nedich binne om de funksje krekt te definiearjen dy't tapast wurdt op 'e ynfierwearde. As jo de fraach lykwols in bytsje herformulearje, docht bliken dat kwantumkompjûters noch in serieus foardiel hawwe: as jo witte wolle oft de funksje dy't brûkt wurdt konstant of fariabel is, dan hawwe kwantumkompjûters it foardiel.
De funksje brûkt yn it fak is fariabel as ferskate wearden fan it ynfiersinjaal ferskillende resultaten produsearje by de útfier (bygelyks identiteitskonverzje en bitomkearing), en as de útfierwearde net feroaret nettsjinsteande de ynfierwearde, dan funksje is konstant (bygelyks berekkenjen fan in konstante "1" of berekkenjen fan de konstante "0").
Mei in kwantumalgoritme kinne jo bepale oft in funksje yn in swarte doaze konstant of fariabel is basearre op mar ien query. Mar foardat wy sjogge nei hoe't jo dit yn detail dwaan, moatte wy in manier fine om elk fan dizze funksjes op in kwantumkomputer te strukturearjen. Om't alle kwantumoperators omkearber wêze moatte, steane wy fuortendaliks in probleem: de funksjes foar it berekkenjen fan de konstanten "1" en "0" binne net.
In mienskiplike oplossing dy't brûkt wurdt yn quantum computing is om in ekstra útfier-qubit ta te foegjen dy't elke ynfierwearde werombringt dy't de funksje ûntfangt.
Foar: | Efter: |
Op dizze manier kinne wy de ynfierwearden bepale allinich basearre op 'e útfierwearde, en de funksje wurdt omkearber. De struktuer fan quantum circuits skept de needsaak foar in ekstra input bit. Om de oerienkommende operators te ûntwikkeljen, sille wy oannimme dat de ekstra ynfier-qubit is ynsteld op |0⟩.
Mei deselde kwantumcircuitrepresentaasje dy't wy earder brûkten, litte wy sjen hoe't elk fan 'e fjouwer eleminten (identiteitstransformaasje, negaasje, evaluaasje fan 'e konstante "0" en evaluaasje fan 'e konstante "1") kin wurde ymplementearre mei kwantumoperators.
Sa kinne jo bygelyks de funksje ymplementearje foar it berekkenjen fan de konstante "0":
Berekkening fan de konstante "0":
Hjir hawwe wy gjin operators nedich. De earste ynfier-qubit (dy't wy oannamen te wêzen |0⟩) jout werom mei deselde wearde, en de twadde ynfierwearde jout himsels werom - lykas gewoanlik.
Mei de funksje foar it berekkenjen fan de konstante "1" is de situaasje in bytsje oars:
Berekkening fan de konstante "1":
Om't wy oannommen hawwe dat de earste ynfier-qubit altyd ynsteld is op |0⟩, is it resultaat fan it tapassen fan de bitomkearoperator dat it altyd ien produsearret by de útfier. En lykas gewoanlik jout de twadde qubit syn eigen wearde by de útfier.
By it yn kaart bringen fan de operator foar identiteitstransformaasje, begjint de taak yngewikkelder te wurden. Hjir is hoe't jo it dwaan:
Identike transformaasje:
It hjir brûkte symboal jout it CNOT-elemint oan: de boppeste rigel jout it kontrôlebit oan, en de ûnderste rigel it kontrôlebit oan. Lit my jo herinnerje dat by it brûken fan de CNOT-operator, de wearde fan 'e kontrôlebit feroaret as de kontrôlebit gelyk is oan |1⟩, mar bliuwt net feroare as de kontrôlebit gelyk is oan |0⟩. Om't wy oannommen hawwe dat de wearde fan 'e boppeste rigel altyd gelyk is oan |0⟩, wurdt de wearde altyd oan 'e ûnderste rigel tawiisd.
Wy geane op deselde manier troch mei de negaasjeoperator:
Negaasje:
Wy ynvertearje it bit gewoan oan 'e ein fan' e útfierline.
No't wy dat foarriedige begryp út 'e wei hawwe, litte wy sjen nei de spesifike foardielen fan in kwantumkompjûter boppe in tradysjonele kompjûter as it giet om it bepalen fan 'e konstantens of fariabiliteit fan in funksje ferburgen yn in swarte doaze mei mar ien query.
Om dit probleem op te lossen mei quantum computing yn ien fersyk, is it nedich om de ynfier-qubits yn in superposysje te setten foardat se nei de funksje trochjaan, lykas hjirûnder werjûn:
It Hadamard-elemint wurdt opnij tapast op it resultaat fan 'e funksje om de qubits út superposysje te brekken en it algoritme deterministysk te meitsjen. Wy begjinne it systeem yn steat |00⟩ en, om redenen dy't ik koart sil útlizze, krije it resultaat |11⟩ as de tapaste funksje konstant is. As de funksje yn it swarte fak fariabel is, dan jout it systeem nei mjitting it resultaat |01⟩.
Om de rest fan it artikel te begripen, litte wy nei de yllustraasje sjen dy't ik earder liet sjen:
Troch de bit-inversion-operator te brûken en dan it Hadamard-elemint oan te passen op beide ynfierwearden lyk oan |0⟩, soargje wy derfoar dat se oerset wurde yn deselde superposysje fan |0⟩ en |1⟩, as folget:
Mei it foarbyld fan it trochjaan fan dizze wearde nei in swarte doaze-funksje, is it maklik te demonstrearjen dat beide konstante weardefunksjes útfiere |11⟩.
Berekkening fan de konstante "0":
Likegoed sjogge wy dat de funksje foar it berekkenjen fan de konstante "1" ek |11⟩ produseart as in útfier, dat is:
Berekkening fan de konstante "1":
Tink derom dat de útfier |1⟩ sil wêze, om't -1² = 1.
Troch itselde prinsipe kinne wy bewize dat wy by it brûken fan beide fariabele funksjes altyd |01⟩ by de útfier krije (mits wy deselde metoade brûke), hoewol alles wat yngewikkelder is.
Identike transformaasje:
Sûnt CNOT is in twa-qubit operator, it kin net wurde fertsjintwurdige as in ienfâldige steat masine, en dêrom is it nedich om te definiearjen twa útfier sinjalen basearre op it tensor produkt fan beide ynfier qubits en fermannichfâldigjen troch de CNOT matrix lykas earder beskreaun:
Mei dizze metoade kinne wy ek befestigje dat de útfierwearde |01⟩ ûntfongen is as de negaasjefunksje ferburgen is yn it swarte doaze:
Negaasje:
Sa hawwe wy krekt in situaasje oantoand wêryn in kwantumkompjûter dúdlik effisjinter is as in konvinsjonele kompjûter.
Wat komt hjirnei?
Ik stel foar dat wy hjir einigje. Wy hawwe al geweldich wurk dien. As jo alles hawwe begrepen wat ik haw behannele, tink ik dat jo no in goed begryp hawwe fan 'e basis fan kwantumberekkening en kwantumlogika, en wêrom kwantumalgoritmen yn bepaalde situaasjes effisjinter kinne wêze dan tradisjonele kompjûters.
Myn beskriuwing kin amper in folsleine hantlieding wurde neamd foar kwantumberekkening en algoritmen - leaver, it is in koarte ynlieding ta wiskunde en notaasje, ûntworpen om de ideeën fan lêzers oer it ûnderwerp oplein troch populêre wittenskiplike boarnen (serieus, in protte kinne it echt net begripe) de situaasje!). Ik hie gjin tiid om in protte wichtige ûnderwerpen oan te pakken, lykas
As jo jo kennis oer kwantumkomputers systematisearje en strukturearje wolle, sterk Ik advisearje jo te lêzen
Boarne: www.habr.com