Upoznavanje s vašim kvantnim procesorom

Kvantna računala izrađena su od kbita. Ali samo imati puno qubita nije dovoljno.

Milijun kubita koji rade u potpunoj izolaciji nikada neće ništa postići. Moraju razgovarati jedni s drugima. To znači da je potrebno povezati tzv. Kontroliranim operacijama. Svaki uređaj ima svoja pravila za koja se na ovaj način mogu povezati parovi qubita. Što je bolja povezanost uređaja, to ćemo brže i lakše provoditi moćne kvantne algoritme.

Priroda grešaka je također važan faktor. U skoroj eri kvantnog računanja, ništa neće biti sasvim savršeno. Stoga trebamo znati kakve će se pogreške događati, koliko su vjerojatno i da li je moguće ublažiti njihove učinke u aplikacijama do kojih nam je stalo.

Ovo su tri najvažnija aspekta kvantnog uređaja: qubit broj, povezanost i razina buke. Da biste imali bilo kakvu ideju o tome što kvantno računalo može raditi, morate ih sve znati.

Stoga napravimo igru ​​koja se pokreće na kvantnom uređaju i prikazuje sve te stvari izravno. Samo igrajući igru, igrač će vidjeti koliko je velik i povezan uređaj. Usporede li vožnju na stvarnom uređaju s onom na simulatoru, vidjet će točno koliko je jak šum. Potom, igrajući se opet s nekim ublažavanjem pogrešaka, oni će dobiti predodžbu o tome koliko korisnih informacija se može spasiti čak i u doba malo bučnih kvantnih računala. Nazvat ćemo ovu igru ​​Quantum Awesomeness i odigrat ćemo je na IBM uređaju poznatom kao "ibmq_16_melbourne".

Slika iznad daje brzi vodič što se događa na Melbourne uređaju. Postoji 14 kubita, numerisani od 0 do 13, prikazani obojenim krugovima. Kubiti koji mogu međusobno razgovarati preko kontrolirane operacije prikazani su spojenim linijama, od kojih je svako dobilo slovo imena.

Najviše korisno što možete učiniti s kontroliranim operacijama je stvaranje i manipuliranje zamke. Samo s tim možemo istražiti puni prostor mogućnosti koji je otvoren za naše qubitove i nadamo se da ćemo učiniti stvari koje su za klasična računala praktički nemoguće.

Najjednostavnija vrsta zapetljavanja uključuje samo dva kubita. To će uzrokovati da svaka proizvede rezultate koji su nasumični, ali s korelacijama među njima. Na primjer, razmotrite sljedeći program na nekoliko qubita.

Ovo je dijagram krugova: povijest qubita u našem programu ispričana s lijeva na desno.

Ovdje izvodimo rx operaciju za kut π / 2, što rezultira onim što je u osnovi pola x vrata. Ovo je primjer onoga što smo u Battleships-ima nazvali 'djelomičnim NOT' s djelomičnim NOT gate igrama. Umjesto prebacivanja qubita skroz od | 0⟩ do | 1⟩, parkira ga u stanju kvantne superpozicije između.

Operacija koja djeluje na oba kbita je kontrolirano-NOT, koja primjenjuje NOT na donji qubit samo kad je gornji u stanju | 1⟩. Budući da je gornja suppozicija obje mogućnosti, učinak kontroliranog NOT-a je i širenje superpozicije na donji qubit: kombinirani superpozicija oba | 0⟩ i oba | 1⟩.

Završni dio sklopa je izvući jednostavan bit iz svakog qubita: | 0⟩ postaje 0, | 0⟩ postaje 1, a superpozicija postaje slučajnim izborom jednog ili drugog. No iako će oba kubica u ovom slučaju dati slučajni rezultat, sigurno se uvijek slažu.

Da bismo to potvrdili, pokrenimo je. Rezultat koji sam dobio je:

{'11': 503, '00': 521}

Od 1024 uzoraka za koje je program pokrenut, svi rezultati izašli su ili "00" ili "11". A za svaki imamo približno jednak broj uzoraka. Sve kako je predviđeno.

Zamjenom vrijednosti π / 2 možemo promijeniti prirodu superpozicije. Niža vrijednost će proizvesti rezultate pristraniji izlazima od 0, a vrijednost bliža π rezultirat će pristranosti prema 1. To znači da možemo varirati vjerojatnost s kojom će svaki izlaz dati 1. No, koju god vrijednost odabrali, ovaj oblik kruga osigurava da će se rezultati za dva qubita uvijek slagati.

U ovoj ćemo igri napraviti puno tih parova isprepletenih qubita kroz uređaj. Da bismo to učinili, prvo moramo odabrati način da uparimo qubits monogamno (eventualno ostavljajući preostale rezervne dijelove). Ovo uparivanje bit će odabrano nasumično, a cijela poanta igre je da igrač pogodi što je uparivanje bilo.

Nakon što imamo slučajno uparivanje, u osnovi ćemo pokrenuti kvantni program iznad svakog neovisnog para. Iako ćemo uvesti jednu razliku: za svaki par nasumično ćemo odabrati drugu vrijednost za rx operaciju, tako da će se stupanj slučajnosti koji dijele upareni qubits razlikovati od para do para.

Kad pokrenemo krug, rezultat će biti niz od 14 bita: sa svakim bitom koji opisuje izlaz svakog qubita. Budući da ga pokrećemo na mnogim uzorcima za prikupljanje statistika, puni rezultat bit će popis svih nizova bita koji su izašli, zajedno s brojem pojavljivanja.

Budući da je cilj igre da igrač zaključi uparivanje iz rezultata, možemo sve te podatke izbaciti na njih. Ali to vjerojatno ne bi bilo zabavno. Umjesto toga, možemo se usredotočiti na važne točke:

  • Kolika je vjerojatnost da svaki kbit daje izlaz 1 umjesto 0?
  • Kolika je vjerojatnost da svaki par spojenih qubita daje istu vrijednost?

Tada možemo te podatke staviti na našu sliku uređaja. Na primjer, ovdje je jedan određeni skup trčanja.

Broj prikazan na svakom kubitu je postotak uzoraka za koje je rezultat bio 1. Broj na svakoj vezi je postotak uzoraka za koje je odgovarajući par qubita imao ishode koji se nisu slagali. S ovim informacijama lako možemo pronaći parove qubita koji su bili zapleteni: bilo traženjem qubita koji imaju istu vjerojatnost izlaska 1, bilo pronalaženja parova koji se nikad nisu složili.

Gornji podaci izvađeni su iz simulatora. A sada da isprobamo na stvarnom kvantnom uređaju.

Ovdje rezultati nisu toliko jasni kao za simulator. Učinci buke mnogo su jači, pa je mnogo teže prepoznati parove.

Ali sve nije izgubljeno! Možemo nešto ublažiti. Znamo da izlaz treba imati određenu strukturu, tako da možemo tražiti tu strukturu i koristiti je za čišćenje rezultata.

Evo vrlo pojednostavljivog načina za to. Prvo, svaki će kubit pogledati svoje susjede i vidjeti s kime se najviše slaže. Tada će se pretpostaviti da je ovaj najpovoljniji kubit njegov partner. Da bismo pokušali uravnotežiti pogreške u njegovim rezultatima, zamijenit ćemo vjerojatnost dobivanja rezultata 1 za taj qubit s prosjekom oba.

Iako su se stvari poboljšale, nisu ih ni na koji način postigle savršenim. To je zato što je naša shema za ublažavanje pogrešaka prilično jednostavna, a na kraju procesa je samo ukinuta. Ublažavanje pogrešaka može imati snažne učinke, ali najučinkovitije je kada je ugrađen u sam kvantni program (nešto što biste mogli pokušati eksperimentirati ako želite i sami proširiti ovaj projekt).

Za sada, igrajmo se igrom koristeći ove ublažene rezultate.

Naš je posao pogledati brojeve u qubitsima i pokušati pronaći parove koji ili imaju isti broj, ili barem imaju brojeve koji su što je moguće bliži. Dva 48-a s lijeve strane izgledaju kao dobar početak. Pa idemo na par A kao što mislimo da je zapetljan.

Dvije 46-e para H jednake su jedna drugoj, a također se dosta razlikuju od svojih susjeda. Pa idemo i mi.

Tada se par E čini prilično izvjesnim.

I par C.

Sada smo stigli do točke kada nam buka malo otežava. Treba li 42 upariti s 55 ili 56? Budući da je vrijednost 55 bliža vrijednosti, ići ćemo za par O.

Konačno nam preostaju dva qubita koja su valjda upareni s ničim. To će se uvijek događati na ovom uređaju zbog načina strukturiranja njegovog grafikona povezanosti. Dakle, došli smo do rješenja! Ali je li to bio pravi?

Pogledajmo ponovo simulaciju bez buke, gdje je ispravno uparivanje bilo puno lakše vidjeti.

Parovi koji ovdje pokazuju savršeni dogovor upravo su oni koje smo upravo izabrali. Dakle, bili smo doista korektni. Igrali smo igru ​​na kvantnom računalu i pobijedili smo!

Što dalje?

Ako želite započeti s kvantnim programiranjem, zašto ne biste pogledali izvorni kod ove igre, dostupan na Qiskit vodiču.

Prikupili smo čak nekoliko ideja o načinima na koje možete to proširiti

  • Napišite algoritam za igru. Ovo bi pogodilo parove što je ispravnije moguće vještim analizama podataka.
  • Zagonetku je vrlo lako riješiti kad nema buke. Možete uvesti različite razine težine.
  • Ublažavanje pogrešaka koje se ovdje koristi vrlo je pojednostavljeno. Možete pokušati implementirati nešto sofisticiranije, poput "robusne procjene faza" opisane u ovom razgovoru.
  • Mogu li se složenija zamršena stanja, poput ona s tri kubita, koristiti da se osigura da nijedan kubit na uređaju ne ostane izvan zabave?

Zabavite se uz ovu i naše druge kvantne igre!