"Luulen, että voin turvallisesti sanoa, että kukaan ei ymmärrä kvanttimekaniikkaa." - Richard Feynman
Kvanttilaskennan aihe on aina kiehtonut tekniikan kirjoittajia ja toimittajia. Sen laskennallinen potentiaali ja monimutkaisuus antoivat sille tietyn mystisen auran. Liian usein ominaisuusartikkelit ja infografiikka kuvaavat yksityiskohtaisesti tämän alan erilaisia tulevaisuudennäkymiä, mutta eivät juurikaan kosketa sen käytännön sovellusta: tämä voi johtaa vähemmän tarkkaavaisen lukijan harhaan.
Populaaritieteelliset artikkelit jättävät pois kvanttijärjestelmien kuvaukset ja esittävät väitteitä, kuten:
Tavallinen bitti voi olla 1 tai 0, mutta kubitti voi olla 1 ja 0 samanaikaisesti.
Jos olet erittäin onnekas (josta en ole varma), sinulle kerrotaan seuraavaa:
Kubitti on superpositiossa "1" ja "0" välillä.
Mikään näistä selityksistä ei vaikuta uskottavalta, koska yritämme muotoilla kvanttimekaanista ilmiötä käyttämällä hyvin perinteisessä maailmassa kehitettyä kieltä. Kvanttilaskennan periaatteiden selkeää selittämistä varten on käytettävä toista kieltä - matemaattista.
Tässä opetusohjelmassa käsittelen matemaattisia työkaluja, joita tarvitaan kvanttilaskentajärjestelmien mallintamiseen ja ymmärtämiseen, sekä kuinka havainnollistaa ja soveltaa kvanttilaskennan logiikkaa. Lisäksi annan esimerkin kvanttialgoritmista ja kerron, mikä sen etu on perinteiseen tietokoneeseen verrattuna.
Teen parhaani selittääkseni kaiken tämän selkeällä kielellä, mutta toivon silti, että tämän artikkelin lukijoilla on perusymmärrys lineaarisesta algebrasta ja digitaalisesta logiikasta (lineaarialgebra on käsitelty
Käydään ensin läpi digitaalisen logiikan periaatteet. Se perustuu sähköpiirien käyttöön laskelmien suorittamiseen. Tehdäksemme kuvauksestamme abstraktimman, yksinkertaistetaan sähköjohdon tila "1" tai "0", mikä vastaa tiloja "on" tai "off". Järjestämällä transistorit tiettyyn järjestykseen, luomme niin sanottuja logiikkaelementtejä, jotka ottavat yhden tai useamman tulosignaalin arvon ja muuntavat ne lähtösignaaliksi tiettyjen Boolen logiikan sääntöjen perusteella.
Yleiset logiikkaportit ja niiden tilataulukot
Tällaisten peruselementtien ketjujen perusteella voidaan luoda monimutkaisempia elementtejä, ja monimutkaisempien elementtien ketjujen perusteella voimme lopulta suurella abstraktioasteella odottaa saavamme keskusprosessorin analogin.
Kuten aiemmin mainitsin, tarvitsemme tavan esittää digitaalista logiikkaa matemaattisesti. Ensin esitellään matemaattinen perinteinen logiikka. Lineaarista algebraa käyttämällä klassiset bitit arvoilla "1" ja "0" voidaan esittää kahtena sarakevektorina:
missä vasemmalla olevat numerot ovat
Identiteetti | Identiteetin muunnos |
negaatio | kieltäminen |
Vakio-0 | Vakion "0" laskenta |
Vakio-1 | Vakion "1" laskenta |
Ehdottamamme uuden bitin esityksen perusteella on melko helppoa suorittaa operaatioita vastaavalle bitille vektorimuunnoksen avulla:
Ennen kuin siirrymme pidemmälle, katsotaanpa konseptia
Kanssa
Nyt kun meillä on melkein kaikki tarvittavat matemaattiset käsitteet, siirrytään ensimmäiseen kvanttilogiikkaporttiin. Tämä on operaattori
Tämä operaattori voidaan esittää seuraavana muunnosvektorina:
Havainnollistaakseni kaiken, mitä olemme tähän mennessä käsitelleet, näytän sinulle, kuinka CNOT-elementtiä käytetään useissa biteissä:
Yhteenvetona jo sanotusta: ensimmäisessä esimerkissä hajotamme |10⟩ sen tensoritulon osiin ja käytämme CNOT-matriisia saadaksemme tuotteen uuden vastaavan tilan; kerromme sen sitten arvoon |11⟩ aiemmin annetun CNOT-arvotaulukon mukaisesti.
Olemme siis muistaneet kaikki matemaattiset säännöt, jotka auttavat meitä ymmärtämään perinteistä laskentaa ja tavallisia bittejä, ja voimme vihdoin siirtyä moderniin kvanttilaskentaan ja kubitteihin.
Jos olet lukenut tähän asti, minulla on sinulle hyviä uutisia: kubitit voidaan ilmaista helposti matemaattisesti. Yleensä, jos klassinen bitti (cbit) voidaan asettaa arvoon |1⟩ tai |0⟩, qubit on yksinkertaisesti superpositiossa ja voi olla sekä |0⟩ että |1⟩ ennen mittausta. Mittauksen jälkeen se romahtaa arvoon |0⟩ tai |1⟩. Toisin sanoen kubitti voidaan esittää lineaarisena yhdistelmänä |0⟩ ja |1⟩ alla olevan kaavan mukaisesti:
missä a₀ и aXNUMX edustavat vastaavasti amplitudeja |0⟩ ja |1⟩. Näitä voidaan pitää "kvanttitodennäköisyyksinä", jotka edustavat todennäköisyyttä, että kubitti romahtaa johonkin tilaan sen mittauksen jälkeen, koska kvanttimekaniikassa superpositiossa oleva kohde romahtaa johonkin tiloista kiinnityksen jälkeen. Laajennataan tätä lauseketta ja saadaan seuraava:
Selitykseni yksinkertaistamiseksi käytän tässä artikkelissa tätä esitystapaa.
Tällä kubitilla mahdollisuus romahtaa arvoon a₀ mittauksen jälkeen on yhtä suuri kuin |a₀|² ja romahtamisen mahdollisuus arvoon a₁ on yhtä suuri kuin |a₁|². Esimerkiksi seuraavalle qubitille:
mahdollisuus romahtaa "1":ksi on yhtä suuri kuin |1/ √2|² tai ½ eli 50/50.
Koska klassisessa järjestelmässä kaikkien todennäköisyyksien on laskettava yhteen (täydellinen todennäköisyysjakauma), voidaan päätellä, että amplitudien |0⟩ ja |1⟩ absoluuttisten arvojen neliöiden on laskettava yhteen. Näiden tietojen perusteella voimme muodostaa seuraavan yhtälön:
Jos olet perehtynyt trigonometriaan, huomaat, että tämä yhtälö vastaa Pythagoraan lausetta (a²+b²=c²), eli voimme esittää graafisesti kubitin mahdolliset tilat yksikköympyrän pisteinä, nimittäin:
Loogisia operaattoreita ja elementtejä sovelletaan kubitteihin samalla tavalla kuin klassisten bittien tapauksessa - matriisimuunnoksen perusteella. Kaikkia käännettävät matriisioperaattorit, jotka olemme tähän mennessä muistaneet, erityisesti CNOT, voidaan käyttää kubittien kanssa työskentelemiseen. Tällaiset matriisioperaattorit antavat sinun käyttää kubitin jokaista amplitudia mittaamatta ja romuttamatta sitä. Annan sinulle esimerkin negaatiooperaattorin käyttämisestä qubitissä:
Ennen kuin jatkamme, haluan muistuttaa, että amplitudiarvot a₀ ja a₁ ovat itse asiassa
Selityksen yksinkertaistamiseksi rajoitamme kuitenkin tässä reaalilukuihin.
Näyttää siltä, että on aika keskustella joistakin logiikkaelementeistä, jotka ovat järkeviä yksinomaan kvanttilaskennan yhteydessä.
Yksi tärkeimmistä operaattoreista on "Hadamard-elementti": se vie vähän "0"- tai "1"-tilassa ja asettaa sen sopivaan superpositioon 50%:n todennäköisyydellä romahtaa "1"- tai "0"-tilaan. mittauksen jälkeen.
Huomaa, että Hadamard-operaattorin oikeassa alakulmassa on negatiivinen luku. Tämä johtuu siitä, että operaattorin soveltamisen tulos riippuu tulosignaalin arvosta: - |1⟩ tai |0⟩, ja siksi laskenta on reversiibeli.
Toinen tärkeä seikka Hadamard-elementissä on sen palautuvuus, mikä tarkoittaa, että se voi ottaa kubitin sopivassa superpositiossa ja muuttaa sen muotoon |0⟩ tai |1⟩.
Tämä on erittäin tärkeää, koska se antaa meille mahdollisuuden muuttua kvanttitilasta määrittämättä kubitin tilaa - ja vastaavasti romuttamatta sitä. Siten voimme strukturoida kvanttilaskentaa deterministisen eikä todennäköisyyden periaatteen perusteella.
Kvanttioperaattorit, jotka sisältävät vain reaalilukuja, ovat omat vastakohtansa, joten voimme esittää operaattorin soveltamisen tuloksen kubitille muunnoksena yksikköympyrän sisällä tilakoneen muodossa:
Siten kubitti, jonka tila on esitetty yllä olevassa kaaviossa, muunnetaan Hadamard-operaation jälkeen vastaavan nuolen osoittamaan tilaan. Samoin voimme rakentaa toisen tilakoneen, joka havainnollistaa kubitin muunnoksen negaatiooperaattorilla yllä esitetyllä tavalla (tunnetaan myös nimellä Paulin negaatiooperaattori tai bitin inversio), kuten alla on esitetty:
Suorittaaksemme monimutkaisempia operaatioita qubitillemme voimme ketjuttaa useita operaattoreita tai käyttää elementtejä useita kertoja. Esimerkki sarjamuunnoksesta, joka perustuu
Eli jos aloitamme bitillä |0⟩, käytämme bitin inversiota ja sitten Hadamard-operaatiota, sitten toista bitin inversiota ja jälleen Hadamard-operaatiota, jota seuraa viimeinen bitin inversio, päädymme vektoriin, jonka on antanut ketjun oikealla puolella. Kerrostelemalla eri tilakoneita päällekkäin voimme aloittaa |0⟩:sta ja jäljittää kutakin muunnosa vastaavat värilliset nuolet ymmärtääksemme, miten se kaikki toimii.
Koska olemme päässeet näin pitkälle, on aika harkita yhtä kvanttialgoritmien tyyppejä, nimittäin -
Oletetaan, että sinulla on musta laatikko, joka sisältää funktion/operaattorin yhdellä bitillä (muista - yhdellä bitillä voidaan suorittaa vain neljä toimintoa: identiteetin muuntaminen, negaatio, vakion "0" arviointi ja vakion "1" arviointi "). Mitä toiminto laatikossa tarkalleen ottaen suoritetaan? Et tiedä mikä niistä, mutta voit käydä läpi niin monta syöttöarvovaihtoehtoa kuin haluat ja arvioida tulosten tuloksia.
Kuinka monta tuloa ja lähtöä sinun pitäisi ajaa mustan laatikon läpi saadaksesi selville, mitä toimintoa käytetään? Mieti tätä hetki.
Jos kyseessä on perinteinen tietokone, sinun on tehtävä kaksi kyselyä käytettävän toiminnon määrittämiseksi. Esimerkiksi jos tulo "2" tuottaa "1"-lähdön, käy selväksi, että käytetään joko vakion "0" laskentafunktiota tai negaatiofunktiota, jonka jälkeen joudut muuttamaan tulosignaalin arvoa. kohtaan "0" ja katso mitä uloskäynnissä tapahtuu.
Kvanttitietokoneen tapauksessa tarvitaan myös kaksi kyselyä, koska tarvitset silti kaksi eri lähtöarvoa määrittääksesi tarkasti syöttöarvoon käytettävän funktion. Jos kuitenkin muotoilee kysymystä hieman uudelleen, käy ilmi, että kvanttitietokoneilla on edelleen vakava etu: jos halutaan tietää, onko käytettävä funktio vakio vai muuttuva, kvanttitietokoneilla olisi etu.
Laatikossa käytetty toiminto on muuttuva, jos eri tulosignaalin arvot tuottavat erilaisia tuloksia lähdössä (esim. identiteetin muunnos ja bitin inversio), ja jos lähtöarvo ei muutu tuloarvosta riippumatta, funktio on vakio (esimerkiksi laskemalla vakio "1" tai laskemalla vakio "0").
Kvanttialgoritmin avulla voit määrittää, onko mustassa laatikossa oleva funktio vakio vai muuttuva vain yhden kyselyn perusteella. Mutta ennen kuin tarkastelemme, kuinka tämä tehdään yksityiskohtaisesti, meidän on löydettävä tapa jäsentää jokainen näistä toiminnoista kvanttitietokoneella. Koska kaikkien kvanttioperaattoreiden on oltava käännettäviä, kohtaamme välittömästi ongelman: vakioiden "1" ja "0" laskentafunktiot eivät ole.
Kvanttilaskennassa käytetty yleinen ratkaisu on lisätä ylimääräinen lähtökubitti, joka palauttaa funktion vastaanottaman tuloarvon.
To: | jälkeen: |
Tällä tavalla voimme määrittää tuloarvot pelkästään lähtöarvon perusteella, ja funktio muuttuu käännettäväksi. Kvanttipiirien rakenne luo tarpeen lisätulobitille. Vastaavien operaattoreiden kehittämisen vuoksi oletetaan, että lisätulon qubit on asetettu arvoon |0⟩.
Käyttämällä samaa kvanttipiiriesitystä, jota käytimme aiemmin, katsotaanpa, kuinka kukin neljästä elementistä (identiteettimuunnos, negaatio, vakion "0" arviointi ja vakion "1" arviointi) voidaan toteuttaa käyttämällä kvanttioperaattoreita.
Esimerkiksi näin voit toteuttaa funktion vakion "0" laskemiseksi:
Vakion "0" laskenta:
Täällä emme tarvitse lainkaan operaattoreita. Ensimmäinen syöte qubit (jonka oletimme olevan |0⟩) palauttaa samalla arvolla ja toinen tuloarvo palauttaa itsensä - kuten tavallisesti.
Vakion “1” laskentatoiminnolla tilanne on hieman erilainen:
Vakion "1" laskenta:
Koska olemme olettaneet, että ensimmäinen tulo qubit on aina asetettu arvoon |0⟩, tuloksena bitin inversiooperaattorin soveltaminen on, että se tuottaa aina ykkösen lähtöön. Ja kuten tavallista, toinen qubit antaa oman arvonsa lähdössä.
Kun kartoitetaan identiteettimuunnosoperaattoria, tehtävä alkaa muuttua monimutkaisemmaksi. Voit tehdä sen seuraavasti:
Identtinen muunnos:
Tässä käytetty symboli tarkoittaa CNOT-elementtiä: ylärivi tarkoittaa ohjausbittiä ja alin rivi ohjausbittiä. Muistutan, että CNOT-operaattoria käytettäessä ohjausbitin arvo muuttuu, jos ohjausbitti on yhtä suuri kuin |1⟩, mutta pysyy muuttumattomana, jos ohjausbitti on yhtä suuri kuin |0⟩. Koska oletimme, että ylärivin arvo on aina |0⟩, sen arvo määrätään aina alimmalle riville.
Toimimme samalla tavalla negatiivisen operaattorin kanssa:
negaatio:
Kääntelemme yksinkertaisesti ulostulorivin lopussa olevan bitin.
Nyt kun tämä alustava ymmärrys on poissa tieltä, tarkastellaan kvanttitietokoneen erityisiä etuja perinteiseen tietokoneeseen verrattuna, kun on kyse mustaan laatikkoon piilotetun funktion pysyvyyden tai vaihtelevuuden määrittämisestä yhdellä kyselyllä.
Tämän ongelman ratkaisemiseksi käyttämällä kvanttilaskentaa yhdessä pyynnössä on välttämätöntä asettaa syötetyt kubitit superpositioon ennen niiden välittämistä funktiolle, kuten alla on esitetty:
Hadamard-elementtiä sovelletaan uudelleen funktion tulokseen kubittien katkaisemiseksi superpositiosta ja algoritmin tekemiseksi deterministiseksi. Käynnistämme järjestelmän tilassa |00⟩ ja syistä, jotka selitän lyhyesti, saamme tuloksen |11⟩, jos käytetty funktio on vakio. Jos mustan laatikon sisällä oleva funktio on muuttuva, niin mittauksen jälkeen järjestelmä palauttaa tuloksen |01⟩.
Ymmärtääksesi artikkelin muun osan, katsotaanpa aiemmin näyttämääni kuvaa:
Käyttämällä bitin inversiooperaattoria ja soveltamalla sitten Hadamard-elementtiä molempiin |0⟩:n tuloarvoihin varmistamme, että ne muunnetaan samaksi superpositioksi |0⟩ ja |1⟩ seuraavasti:
Käyttämällä esimerkkiä tämän arvon välittämisestä musta laatikko -funktiolle on helppo osoittaa, että molemmat vakioarvofunktiot tuottavat |11⟩.
Vakion "0" laskenta:
Samoin näemme, että vakion “1” laskentafunktio tuottaa myös |11⟩ ulostulona, eli:
Vakion "1" laskenta:
Huomaa, että lähtö on |1⟩, koska -1² = 1.
Samalla periaatteella voimme todistaa, että molempia muuttujafunktioita käytettäessä saamme aina |01⟩ lähdössä (jos käytämme samaa menetelmää), vaikka kaikki onkin hieman monimutkaisempaa.
Identtinen muunnos:
Koska CNOT on kahden qubitin operaattori, sitä ei voida esittää yksinkertaisena tilakoneena, ja siksi on tarpeen määrittää kaksi lähtösignaalia, jotka perustuvat molempien tulokubittien tensorituloon ja kertomiseen CNOT-matriisilla edellä kuvatulla tavalla:
Tällä menetelmällä voimme myös varmistaa, että lähtöarvo |01⟩ vastaanotetaan, jos negatiivinen funktio on piilotettu mustaan laatikkoon:
negaatio:
Olemme siis juuri osoittaneet tilanteen, jossa kvanttitietokone on selvästi tehokkaampi kuin perinteinen tietokone.
Mitä seuraavaksi?
Ehdotan, että lopetamme tähän. Teimme jo hienoa työtä. Jos olet ymmärtänyt kaiken, mitä olen käsitellyt, uskon, että sinulla on nyt hyvä käsitys kvanttilaskennan ja kvanttilogiikan perusteista ja siitä, miksi kvanttialgoritmit voivat olla tehokkaampia kuin perinteinen laskenta tietyissä tilanteissa.
Kuvaustani ei voi tuskin kutsua täysimittaiseksi kvanttilaskennan ja -algoritmien oppaaksi - pikemminkin se on lyhyt johdatus matematiikkaan ja merkintätapaan, joka on suunniteltu hälventämään lukijoiden ajatuksia aiheesta populaaritieteellisten lähteiden pakosta (vakavasti, monet eivät todellakaan ymmärrä tilanne!). Minulla ei ollut aikaa käsitellä monia tärkeitä aiheita, kuten
Jos haluat systematisoida ja jäsentää tietoasi kvanttitietokoneista, voimakkaasti Suosittelen lukemaan
Lähde: will.com