Vizualizacija bitova i qubita

Posljednjih nekoliko godina pomalo sam opsjednut dvjema stvarima: programiranjem kvantnih računala prototipa i gamifikacijom. Ti su se interesi neminovno sukobili, što je rezultiralo kao gamificirani vodič za kvantno programiranje.

Važan dio izrade ovog vodiča bio je razrađivanje načina vizualizacije qubita. To je općenito problem koji se ne može riješiti. Kad bi to bilo lako napraviti za velike kvantne proračune, slijedilo bi ih lako simulirati. Budući da to nije slučaj, naša vizualizacija usredotočit će se na samo par qubita.

Vizualizacija je glavni način koji će korisnik vodiča razumjeti i povezati sa svojim parom kubita. Ali ne želimo da njegova korisnost tu završi. U idealnom slučaju, sve bi trebalo temeljiti na načelima koja se primjenjuju i na veći broj kubita. Korisnik tada može nastaviti razmišljati u skladu s tim principom kada krene u oblikovanje mnogo većih kvantnih programa.

U ovom ću članku objasniti što smo ja i moji suradnici smislili.

Vizualizacija par bitova

Započnimo s nečim lijepim i jednostavnim: ono malo. Svaki je bit ili 0 ili 1. Zamislimo to u obliku slike.

Stanja 0 i 1 pomalo, s ASCII umjetničkim krugom iz nekog razloga.

Ovdje imamo plavu traku koja je svijetlo plava ili isključena, da predstavlja 0, a tamnoplava ili uključena za predstavljanje 1.

Ponekad su nam potrebni nasumični bitovi. To je još uvijek samo 0 ili 1, ali ne znamo koji. Predstavimo svoje neznanje s trakom koja je napola uključena (ili napola).

Je li to 0 ili je 1? Da! Mi samo još ne znamo koji.

Jedan bit nije koristan za mnogo, pa pogledajmo dva. Očito to možemo predstaviti s dvije trake: po jedan za svaki zalogaj.

Dva bita jedan pored drugog. Kut žutnje zahvaljujući ograničenjima umjetnosti ASCII.

Postoje četiri moguća stanja od dva bita. Gornja je prikazana 01, ali postoje i 00, 10 i 11. Oni su predstavljeni različitim kombinacijama uključivanja i isključivanja.

Korištenje samo dvije trake je dobar način da se vizualizira stanje dva kubita sve dok točno znamo što oboje rade. Ali što ako su oboje slučajni?

Ovdje se može događati više različitih stvari. Za jednu se može činiti da su bitovi generirani istim slučajnim postupkom i stoga uvijek imaju istu vrijednost. Evo isječka Python koji bi učinio upravo to (imajte na umu da su False and True Python za 0 i 1).

random_bit = random.choice ([Lažno, Istina])
bit [0] = slučajni_bit
bit [1] = slučajni_bit

Ili se mogu stvoriti tako da uvijek imaju suprotnu vrijednost.

rand_bit = random.choice ([Lažno, Istina])
bit [0] = slučajni_bit
bit [1] =! random_bit # 0 kad god je gore navedeno 1, i obrnuto

Mogli bi biti i potpuno nepovezani slučajni bitovi.

bit [0] = random.choice ([Lažno, Istina])
bit [1] = random.choice ([Lažno, Istina])

Te različite mogućnosti imaju vrlo različito ponašanje. Dakle, naša vizualizacija bit će nepotpuna ako nam ne govori što imamo.

Da bismo te podatke dodali u svoje vizualne slike, dodaćemo još jednu traku. Ovaj dodatni traka imat će zadatak da nam kaže o tim korelacijama. Isključit će se ako je suđeno da se nasumični bitovi uvijek slažu.

I ako se uvijek ne slažu.

Ako nisu povezani, a njihovi dogovori i neslaganja samo su slučajni, dodatna traka bit će pola upola.

Sada imamo način da predstavimo sve ono što bi dva bita mogla ispuniti.

Vizualizacija para kubika

Bitovi su prilično jednostavni i poznati. Oni zapravo ne trebaju ovako otmjenu vizualizaciju. Ali njihovi kvantni rođaci jesu. Krenimo na qubits.

Kubit je kvantni objekt iz kojeg možemo izvući jedan zalogaj informacija. Mnogo je načina na koje možemo odabrati provođenje te ekstrakcije, a izbor koji donosimo može dovesti do različitih rezultata. Da bismo vizualizirali qubit, moramo pratiti sve ove moguće izlaze odjednom.

Usredotočit ćemo se na dva načina kako izvući malo iz svakog kbit i predstaviti to s dvije trake. Jedna plava (i okomita) i jedna crvena (i vodoravna).

Ovo je samo jedan kubit

Ako uzmemo plavi izlaz, vidimo da bi ovdje prikazano stanje definitivno dalo izlaz 1. Ako uzmemo crveni izlaz, rezultat će biti nasumičan.

Zapravo je slučajnost ovdje sasvim posebna. Qubit je toliko koncentriran na definitivno davanje broja 1 ako ga zatraže plavi izlaz, stvarno ne zna što bi učinio kad bi ga tražili za crveni. Morao bi se odlučiti na licu mjesta ako je potreban crveni izlaz i to na potpuno nepredvidiv način. To nisu pseudo slučajnosti koje nam obično daju računala. To je prava slučajnost. Ovo je jedna od stvari zbog kojih su kititi jedinstveni i korisni: nešto o čemu ćemo više raspravljati u drugom članku.

Drugi je qubit također predstavljen s dvije trake, ali postavit ćemo ih okomito.

U ovom su primjeru crveni ishodi čiji je rezultat definitivan, a plavi je slučajni.

Budući da uvijek postoji slučajnost za qubits, opet nam treba nešto dodatnog za praćenje povezanosti. Za dva bita vidjeli smo da je dovoljan samo jedan dodatni trak. Ali za dva qubita imamo više mogućih korelacija koje treba pratiti.

Konkretno, postoje četiri načina na koja možemo izdvojiti dva bita iz dva qubita:

  • Plavi izlaz iz oba kbita (nazovimo ovo BB);
  • Crveni izlaz iz oba kubita (RR);
  • Plavi izlaz iz jednog kubita, a crveni iz drugog (BR);
  • Crveni izlaz iz jednog kubita, a plavi iz drugog (RB).

Za svaki od njih potrebna nam je dodatna traka koja će nam reći kakve korelacije možemo očekivati.

Ovdje imamo jedan qubit predstavljen s dvije trake na vrhu (nazvaćemo ga gornji qubit) i drugi s dva na lijevoj strani (lijevi qubit). Preostale trake, sa sivom pozadinom ovdje radi jasnoće, opisuju korelacije.

Korelacije između plavih izlaza prikazane su BB trakom, koja je također plava. Korelacije između crvenih izlaza prikazane su crvenom RR trakom.

Za dva slučaja s jednim crvenim izlazom i jednim plavim, imamo RB i RR. Kao kompromis između plave i crvene boje, ove su trake ljubičaste (i dijagonalne).

U primjeru prikazanom gore, znamo da će plavi izlaz iz gornjeg kubita dati 1, a crveni iz drugog kbit će dati 0. BR traka je stoga puna, priznajući da se oni definitivno ne slažu. Sve ostalo je samo slučajno.

Sada smo razradili kako vizualizirati qubits, krenimo njima manipulirati.

Manipuliranje qubits

Računalo ne gleda samo bitove, već ih i obrađuje. Bitovi se stalno mijenjaju od 0 do 1 i vraćaju se natrag, dok računalo crta kurs od ulaza do izlaza. Kvantno računalo učinit će gotovo isto, ali s kubitima.

Najjednostavnija stvar koja se može malo učiniti je operacija NOT. Okreće se od 0 do 1 i od 1 do 0. Našom vizualizacijom učinak je

NOT ne zaustavlja slučajni zalogaj koji je slučajan, tako da nema učinka na traku koja je na pola.

Kubiti imaju operacije sa sličnim učincima. Postoji jedan nazvan x, koji utječe na plavi izlaz kbit. Postoji jedan z koji utječe na crveni ispis.

Sve ove operacije, NE za bitove i x i z za qubits, također utječu na trake koje opisuju korelacije. Razlog je sasvim jednostavan: Ako imate dva bita koji se slažu, a zatim jedan prebacite, umjesto toga oni će se složiti.

Rezultat toga je da x i z na gornjem kubitu utječu na cijele stupce rešetke. Evo učinka z-a, kao primjera.

Jednostavna animacija z-a primijenjenog na gornji qubit

Imajte na umu da općenito na ljubičastu traku u ovom stupcu utječe i z. Jednostavno ne čini puno u ovom konkretnom primjeru, jer je traka napola uključena.

Operacije x i z će umjesto toga utjecati na redove kada se primijene na qubit slijeva. Evo primjera sa x.

Jednostavna animacija x primijenjena na lijevi qubit

Ove operacije, x i z, primjeri su operacija Clifford. Ovo maštovito ime samo nam govori da su operacije s relativno izravnim učinkom na šipkama. U stvari, ova vizualizacija zasnovana na traci dolazi upravo iz načina na koji volimo razmišljati o Cliffordovim operacijama i njihovim učincima.

Postoje i druge Cliffordove operacije. Postoji h koji zamjenjuje dva izlaza qubita, stvarajući crveni izlaz onim što bi plavi bio, i obrnuto. Postoje i operacije koje djeluju na pare kubita, nazvane kontrolirane operacije, koje su ključne za način na koji obrađujemo podatke u kvantnim računalima. Ako želite saznati više o tim, vaša najbolja opcija je igrati udžbenik.

Nakon što odigrate dovoljno udžbenika da u potpunosti internalizirate učinke Cliffords-a na dva qubita, bit ćete dobro spremni pisati programe temeljene na Cliffordu za bilo koji broj qubita. Ovo će biti sjajna vještina za programere kvantnog softvera, budući da su Cliffordove operacije izuzetno koristan dio kvantnog računanja. U stvari, ogromnu većinu bilo kojeg kvantnog programa sačinjavat će Cliffordove operacije

Uprkos tome, aplikacije koje je moguće postići samo uz Cliffords su ograničene. Da bismo opravdali stvaranje kvantnih računala, trebamo nešto više. Potrebne su nam maštovito nazvane ne-Cliffordove operacije.

U ovom ćemo članku pogledati samo dva. Jedan se obično naziva u3 (pi / 4,0,0). Ali pošto to nije baš dopadljivo, nazvat ćemo ga q. Drugi je jednako glomazan u3 (-pi / 4,0,0), koji nazivamo qdg.

Operacija q omogućit će nam da se pomaknemo iza prečke koji su jednostavno uključeni, isključeni ili upola uključeni. Počet ćemo dobivati ​​i druge frakcije. Na primjer, započnimo s qubitom čija je plava kutija u potpunosti uključena.

A sad pogodimo s q.

Plava kutija je i dalje uglavnom uključena, što znači da će najvjerojatnije dobiti 1. No, nije sigurno. Gubitak sigurno za plave je dobit za crvene. To ide od potpuno slučajne, do snažne pristranosti prema 1.

Da bi se objasnio puni učinak q-a, pomaže se nacrtati dvije trake jedna preko druge. Ako pogledamo gdje se njihove razine susreću, možemo utvrditi točku.

Učinak q je jednostavno zakretanje točke, povlačenjem nivoa šipki sa sobom.

Učinci 8 uzastopnih q operacija

Q operacija vrši rotaciju u smjeru kazaljke na satu u smjeru kazaljke na satu, a qdg radi isto, ali u smjeru suprotnom od kazaljke na satu.

Sada je vrijeme da vidimo kako q utječe na cijelu našu dvije qubit mreže. Počet ćemo s gumbom q na gornjem kubitu. Da bismo to učinili, morat ćemo nacrtati dva stupca jedan preko drugog.

Ovo stvara tri kruga. Gornja je samo crvena i plava traka za gornji kubit, kao što smo gledali prije.

Srednji par izrađen je od BB šipke i RB šipke. BB traka je uvijek plava i okomita i tako igra dio okomite osi. Sada nam je potrebna vodoravna os da bismo dovršili krug. To je učinjeno u blizini RB trake. Iako je obično ljubičasta i dijagonalna, ona postaje crvena i vodoravna kako bi napravila krug.

Za donji krug, RR okvir jasan je izbor vodoravne osi. To znači da BR traka u ovom slučaju dobiva zadatak da bude plava i okomita.

Za svaki od tih krugova, q operacija vrši svoju rotaciju. Rotacija gornjeg kruga pokazuje kako q utječe na sam gornji kubit. Ostali određuju kako utječu korelacije.

Da bismo vidjeli kako q utječe na lijevi qubit, umjesto toga moramo nacrtati dva reda jedan iznad drugog.

Sve ide nekako isto. Razlika je u tome što ljubičaste šipke igraju suprotne uloge kao i kad smo zajedno kosili stupove.

Ti krugovi nisu naš vlastiti izum: oni su Bloch krugovi. Ovo su pojednostavljeni oblici Blochove sfere koji gotovo svaki popularnoznanstveni članak o kvantnom računarstvu koristi kao infografiku.

Bloch sfera

Koliko ima načina da se izvuče izlaz iz qubita? Točno je reći da postoji beskonačan broj. Točno je i reći da postoji samo jedan. Ali najpouzdaniji odgovor svih jest da postoje tri. Dvije od njih su crvena i plava koju smo već upoznali. Pa nazovimo konačni zeleni.

Kad kombiniramo crvenu i plavu traku, dobit ćemo krug. Kada dodamo u zelenu, dobivamo sferu. Ovo je Bloch-ova sfera.

Bloch sfera je najbolji način za vizualizaciju ne-Cliffordovih operacija na jednom qubitu. Nije loše ni s dva qubita. Trebamo samo dodati zeleni red i stupac u našu mrežu. Tada možemo kombinirati trostruke redove redova stupaca u zbirkama sfera, baš kao što smo gore radili s krugovima.

Za tri kubita trebat će vam 3D kocka umjesto mrežice. Za više od tri kubita na kraju ćete pokušati sastaviti sfere iz redaka i stupaca n-dimenzionalne hiperkube. U tom je trenutku vjerojatno najbolje iskopati Bloch-ovu sferu i razviti vizualizaciju u skladu s bilo kojim kvantnim programom koji pokušavate napisati.

Zelene trake nisu bile uključene u naš vodič zbog jednostavnosti. Bez njih je već dovoljno za početak istraživanja svijeta kvantnog programiranja. S njima sve postaje samo malo više natečeno. Čak i mi znanstvenici koji radimo na kvantnom računanju volimo zaboraviti na njih kad god je to moguće. Ako želite naučiti razmišljati poput nas, ovo je važna lekcija koju treba naučiti.

Zaključci

Mnogi ljudi smatraju kvantne sustave čudnim, slučajnim, višestrukim stvarima istodobno filozofskim zagonetkama. To nije najbolji pristup za kvantnog programera, koga treba više praktički smatrati. Da bismo obučili pridošlice na terenu da se bolje od nas starijih hakira, razvili smo način vizualizacije dvaju qubit stanja i tutorial oko njega.

Da bismo to postigli, kombiniramo postojeće metode. Konkretno, kombiniramo standardni način razmišljanja o Cliffordovim operacijama (prevrtanje i izmjenjivanje stvari) sa standardnom vizualizacijom za jednostruke qubit ne-Cliffordove operacije (Bloch sfera).

Ako želite vidjeti ljepšu vizualizaciju, koju smo napravili za verziju aplikacije Hello Quantum, pročitajte sestrinski članak u nastavku.