Implementace v Qiskitu
V této lekci implementujeme některé myšlenky z lekce o provázanosti v akci pomocí Qiskitu.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-aer
from qiskit import __version__
print(__version__)
2.1.1
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit_aer import AerSimulator
from qiskit.visualization import plot_histogram, array_to_latex
from qiskit.result import marginal_distribution
from qiskit.circuit.library import UGate
from math import pi
import random
Tady je implementace teleportačního protokolu jako kvantový Circuit.
qubit = QuantumRegister(1, "Q")
ebit0 = QuantumRegister(1, "A")
ebit1 = QuantumRegister(1, "B")
a = ClassicalRegister(1, "a")
b = ClassicalRegister(1, "b")
protocol = QuantumCircuit(qubit, ebit0, ebit1, a, b)
# Prepare ebit used for teleportation
protocol.h(ebit0)
protocol.cx(ebit0, ebit1)
protocol.barrier()
# Alice's operations
protocol.cx(qubit, ebit0)
protocol.h(qubit)
protocol.barrier()
# Alice measures and sends classical bits to Bob
protocol.measure(ebit0, a)
protocol.measure(qubit, b)
protocol.barrier()
# Bob uses the classical bits to conditionally apply gates
with protocol.if_test((a, 1)):
protocol.x(ebit1)
with protocol.if_test((b, 1)):
protocol.z(ebit1)
display(protocol.draw(output="mpl"))

Circuit využívá několik funkcí Qiskitu, které jsme v předchozích lekcích ještě neviděli, včetně funkcí barrier a if_test.
Funkce barrier vytváří vizuální oddělení, díky kterému je diagram Circuit čitelnější, a zároveň brání Qiskitu provádět různá zjednodušení a optimalizace přes bariéru během kompilace, když se Circuit spouštějí na reálném hardwaru.
Funkce if_test aplikuje operaci podmíněně v závislosti na klasickém bitu nebo registru.
Circuit nejprve inicializuje do stavu (což není součástí samotného protokolu), následují Aliciny operace, pak její měření a nakonec Bobovy operace. Abychom ověřili, že protokol funguje správně, aplikujeme náhodně vygenerovanou jednoqubitovou Gate na inicializovaný stav qubit a získáme náhodný kvantový stavový vektor k teleportaci. Aplikací inverze (tedy komplexně sdruženého transpozice) této hradlo na po proběhnutí protokolu můžeme ověřit, že stav byl teleportován, tím, že měřením uvidíme, že se vrátil do stavu .
Nejprve náhodně zvolíme unitární qubitovou Gate.
random_gate = UGate(
theta=random.random() * 2 * pi,
phi=random.random() * 2 * pi,
lam=random.random() * 2 * pi,
)
display(array_to_latex(random_gate.to_matrix()))
Teď vytvoříme nový testovací Circuit, který nejprve aplikuje naši náhodnou Gate na pak spustí teleportační Circuit a nakonec aplikuje inverzi naší náhodné Gate na qubit a provede měření. Výsledek by měl být s jistotou.
# Create a new circuit including the same bits and qubits used in the
# teleportation protocol.
test = QuantumCircuit(qubit, ebit0, ebit1, a, b)
# Start with the randomly selected gate on Q
test.append(random_gate, qubit)
test.barrier()
# Append the entire teleportation protocol from above.
test = test.compose(protocol)
test.barrier()
# Finally, apply the inverse of the random unitary to B and measure.
test.append(random_gate.inverse(), ebit1)
result = ClassicalRegister(1, "Result")
test.add_register(result)
test.measure(ebit1, result)
display(test.draw(output="mpl"))

Nakonec spustíme Aer simulátor na tomto Circuit a vykreslíme histogram výstupů. Uvidíme statistiky pro všechny tři klasické bity: spodní/nejlevější bit by měl být vždy což indikuje, že qubit byl úspěšně teleportován do zatímco ostatní dva bity by měly být přibližně rovnoměrně rozdělené.
result = AerSimulator().run(test).result()
statistics = result.get_counts()
display(plot_histogram(statistics))
Můžeme také vyfiltrovat statistiky tak, aby se zaměřily pouze na výsledkový qubit testu, pokud chceme, a to takto:
filtered_statistics = marginal_distribution(statistics, [2])
display(plot_histogram(filtered_statistics))
Superdense kódování
Superdense kódování je protokol, který v jistém smyslu dosahuje komplementárního cíle k teleportaci. Místo toho, aby umožňoval přenos jednoho qubit pomocí dvou klasických bitů komunikace (za cenu jednoho e-bitu provázanosti), umožňuje přenos dvou klasických bitů pomocí jednoho qubit kvantové komunikace (opět za cenu jednoho e-bitu provázanosti).
Podrobněji: máme odesílatele (Alice) a příjemce (Boba), kteří sdílejí jeden e-bit provázanosti. Podle konvencí zavedených v lekci to znamená, že Alice drží qubit Bob drží qubit a společně je pár ve stavu Alice chce Bobovi přenést dva klasické bity, které budeme značit a a dosáhne toho odesláním jednoho qubit.
Je rozumné považovat tento výkon za méně zajímavý než to, čeho dosahuje teleportace. Odesílání qubit bude pravděpodobně v dohledné budoucnosti mnohem obtížnější než odesílání klasických bitů, takže výměna jednoho qubit kvantové komunikace za dva bity klasické komunikace, navíc za cenu e-bitu, se sotva zdá stát za to. To ale neznamená, že superdense kódování není zajímavé, protože zcela jistě je.
V souladu s tématem lekce je jedním z důvodů, proč je superdense kódování zajímavé, to, že demonstruje konkrétní a (v kontextu teorie informace) poměrně pozoruhodné využití provázanosti. Slavná věta v kvantové teorii informace, známá jako Holevova věta, říká, že bez použití sdíleného provázaného stavu je nemožné komunikovat více než jeden bit klasické informace odesláním jednoho qubit. (Holevova věta je obecnější. Její přesné znění je technické a vyžaduje vysvětlení, ale toto je jeden z jejích důsledků.) Prostřednictvím superdense kódování tedy sdílená provázanost efektivně umožňuje zdvojení kapacity klasického přenosu informace při odesílání qubit.
Protokol
Následující diagram kvantového Circuit popisuje protokol superdense kódování:

Slovy, tady je co Alice dělá:
-
Pokud Alice provede Gate na svém qubit (a pokud neprovede nic).
-
Pokud Alice provede Gate na svém qubit (a pokud neprovede nic).
Alice pak pošle svůj qubit Bobovi.
Když Bob přijme qubit nejprve provede Gate CNOT, kde je řídicí a je cílový, a pak aplikuje Hadamardovu Gate na Poté změří a získá a a získá v obou případech měřením ve standardní bázi.
Analýza
Myšlenka za tímto protokolem je jednoduchá: Alice si vlastně vybere, který Bellův stav chce sdílet s Bobem, pošle Bobovi svůj qubit a Bob měřením zjistí, který Bellův stav Alice zvolila.
To znamená, že na začátku sdílejí a v závislosti na bitech a Alice buď tento stav ponechá beze změny, nebo ho posune do jednoho z ostatních Bellových stavů aplikací nebo na svůj qubit
Bobovy akce mají na čtyři Bellovy stavy následující efekty:
To si můžeš ověřit přímo tak, že spočítáš výsledky Bobových operací na těchto stavech jeden po druhém.
Takže když Bob provede svá měření, dokáže určit, který Bellův stav Alice zvolila. Ověření, že protokol funguje správně, je otázkou kontroly každého případu:
-
Pokud pak stav v okamžiku, kdy Bob obdrží je Tento stav transformuje na a získá
-
Pokud pak stav v okamžiku, kdy Bob obdrží je Tento stav transformuje na a získá
-
Pokud pak stav v okamžiku, kdy Bob obdrží je Tento stav transformuje na a získá
-
Pokud pak stav v okamžiku, kdy Bob obdrží je Tento stav transformuje na a získá (Záporný fázový faktor zde nemá žádný vliv.)
Implementace superdense coding
Tady je jednoduchá implementace superdense coding, kde specifikujeme Circuit sám v závislosti na bitech, které se mají přenést. Nejdřív zvolíme dva bity k přenosu. (Později je budeme volit náhodně, ale prozatím jednoduše provedeme libovolnou volbu.)
c = "1"
d = "0"
Teď sestavíme Circuit podle toho. Zde necháme Qiskit použít výchozí názvy pro qubity: pro horní qubit a pro spodní.
protocol = QuantumCircuit(2)
# Prepare ebit used for superdense coding
protocol.h(0)
protocol.cx(0, 1)
protocol.barrier()
# Alice's operations
if d == "1":
protocol.z(0)
if c == "1":
protocol.x(0)
protocol.barrier()
# Bob's actions
protocol.cx(0, 1)
protocol.h(0)
protocol.measure_all()
display(protocol.draw(output="mpl"))

Nic moc nového tu není, až na funkci measure_all, která změří všechny qubity a uloží výsledky do jednoho klasického registru (v tomto případě tedy se dvěma bity).
Spuštění simulátoru Aer produkuje očekávaný výstup.
result = AerSimulator().run(protocol).result()
statistics = result.get_counts()
for outcome, frequency in statistics.items():
print(f"Measured {outcome} with frequency {frequency}")
display(plot_histogram(statistics))
Measured 10 with frequency 1024
Teď použijeme další qubit jako generátor náhodných bitů -- v podstatě k hodu spravedlivou mincí. Použijeme ho k náhodnému výběru a a pak spustíme protokol superdense coding.
rbg = QuantumRegister(1, "coin")
ebit0 = QuantumRegister(1, "A")
ebit1 = QuantumRegister(1, "B")
Alice_c = ClassicalRegister(1, "Alice c")
Alice_d = ClassicalRegister(1, "Alice d")
test = QuantumCircuit(rbg, ebit0, ebit1, Alice_d, Alice_c)
# Initialize the ebit
test.h(ebit0)
test.cx(ebit0, ebit1)
test.barrier()
# Use the 'coin' qubit twice to generate Alice's bits c and d.
test.h(rbg)
test.measure(rbg, Alice_c)
test.h(rbg)
test.measure(rbg, Alice_d)
test.barrier()
# Now the protocol runs, starting with Alice's actions, which depend
# on her bits.
with test.if_test((Alice_d, 1), label="Z"):
test.z(ebit0)
with test.if_test((Alice_c, 1), label="X"):
test.x(ebit0)
test.barrier()
# Bob's actions
test.cx(ebit0, ebit1)
test.h(ebit0)
test.barrier()
Bob_c = ClassicalRegister(1, "Bob c")
Bob_d = ClassicalRegister(1, "Bob d")
test.add_register(Bob_d)
test.add_register(Bob_c)
test.measure(ebit0, Bob_d)
test.measure(ebit1, Bob_c)
display(test.draw(output="mpl"))

Spuštění simulátoru Aer ukazuje výsledky: klasické bity Alice a Boba se vždy shodují.
result = AerSimulator().run(test).result()
statistics = result.get_counts()
display(plot_histogram(statistics))

Hra CHSH
Posledním příkladem, o kterém se v této lekci budeme bavit, není protokol, ale hra známá jako hra CHSH.
Když v tomto kontextu mluvíme o hře, nemáme na mysli něco, co je určeno k zábavě nebo sportu, ale spíše matematickou abstrakci ve smyslu teorie her. Matematické abstrakce her se studují například v ekonomii a informatice a jsou fascinující i užitečné.
Písmena CHSH odkazují na autory -- Johna Clausera, Michaela Hornea, Abnera Shimonyho a Richarda Holta -- článku z roku 1969, kde byl tento příklad poprvé popsán. Nepopsali tento příklad jako hru, ale jako experiment. Jeho popis jako hry je ale přirozený a intuitivní.
Hra CHSH spadá do třídy her známých jako nelokální hry. Nelokální hry jsou neuvěřitelně zajímavé a mají hluboké souvislosti s fyzikou, informatikou a matematikou -- skrývají záhady, které zůstávají dosud nevyřešené. Tuto sekci začneme vysvětlením toho, co jsou nelokální hry, a pak se zaměříme na hru CHSH a na to, co ji dělá zajímavou.
Nelokální hry
Nelokální hra je kooperativní hra, ve které dva hráči, Alice a Bob, spolupracují na dosažení konkrétního výsledku. Hru řídí rozhodčí, který se chová podle přísných pravidel, jež jsou Alice a Bobovi známa.
Alice a Bob se na hru mohou připravit jakkoli chtějí, ale jakmile hra začne, mají zakázáno komunikovat. Můžeme si představit, že se hra odehrává v nějakém zabezpečeném zařízení -- jako by rozhodčí hrál roli detektiva a Alice s Bobem byli podezřelí vyslýchaní v oddělených místnostech. Ale jiný způsob, jak si to představit, je, že Alice a Bob jsou odděleni obrovskou vzdáleností a komunikace je zakázána, protože rychlost světla ji v době trvání hry neumožňuje. Jinými slovy, pokud se Alice pokusí poslat Bobovi zprávu, hra skončí dříve, než ji obdrží, a naopak.
Nelokální hra funguje tak, že rozhodčí nejprve položí Alice a Bobovi každému jednu otázku. Budeme používat písmeno pro otázku Alice a pro otázku Boba. Zde si a představujeme jako klasické stavy a v hře CHSH jsou a bity.
Rozhodčí používá k výběru těchto otázek náhodnost. Přesněji řečeno, ke každému možnému páru otázek je přiřazena nějaká pravděpodobnost a rozhodčí se zavázal vybírat otázky v okamžiku hry náhodně tímto způsobem. Všichni, včetně Alice a Boba, tyto pravděpodobnosti znají -- ale nikdo neví, jaký konkrétní pár bude zvolen, dokud hra nezačne.
Poté, co Alice a Bob obdrží své otázky, musí poskytnout odpovědi: odpověď Alice je a odpověď Boba je Obecně jsou to klasické stavy a v hře CHSH jsou to bity.
V tuto chvíli rozhodčí rozhodne: Alice a Bob buď vyhrají, nebo prohrají v závislosti na tom, zda je pár odpovědí považován za správný pro pár otázek podle nějaké pevné sady pravidel. Různá pravidla znamenají různé hry a pravidla pro konkrétně hru CHSH jsou popsána v následující sekci. Jak už bylo naznačeno, pravidla jsou všem známa.
Následující diagram poskytuje grafické znázornění interakcí.

Právě nejistota ohledně toho, jaké otázky budou položeny, a konkrétně fakt, že žádný z hráčů nezná otázku toho druhého, dělá nelokální hry pro Alici a Boba náročné -- stejně jako když se spolčení podezřelí v oddělených místnostech snaží udržet svou verzi příběhu konzistentní.
Přesný popis rozhodčího definuje instanci nelokální hry. To zahrnuje specifikaci pravděpodobností pro každý pár otázek spolu s pravidly, která určují, zda každý pár odpovědí vyhrává nebo prohrává pro každý možný pár otázek
Podíváme se na hru CHSH za okamžik, ale předtím si krátce přiznejme, že je také zajímavé uvažovat o dalších nelokálních hrách. Ve skutečnosti je to nesmírně zajímavé; existují poměrně jednoduché nelokální hry, pro které v současnosti není známo, jak dobře mohou Alice a Bob hrát s využitím provázanosti. Nastavení je jednoduché, ale je v tom skrytá složitost -- a pro některé hry může být nemožně obtížné vypočítat nejlepší nebo téměř nejlepší strategie pro Alici a Boba. To je překvapivě neintuitivní povaha modelu nelokálních her.
Popis hry CHSH
Zde je přesný popis hry CHSH, kde (jak je uvedeno výše) je otázka pro Alici, je otázka pro Boba, je odpověď Alice a je odpověď Boba:
-
Otázky a odpovědi jsou všechny bity:
-
Rozhodčí vybírá otázky rovnoměrně náhodně. To znamená, že každá ze čtyř možností, a je vybrána s pravděpodobností
-
Odpovědi vyhrávají pro otázky pokud a prohrávají v opačném případě. Následující tabulka vyjadřuje toto pravidlo tím, že uvádí výherní a proherní podmínky pro odpovědi pro každý pár otázek
Omezení klasických strategií
Nyní se podívejme na strategie pro Alici a Boba ve hře CHSH, počínaje klasickými strategiemi.
Deterministické strategie
Začneme deterministickými strategiemi, kde odpověď Alice je funkcí otázky , kterou obdrží, a stejně tak odpověď Boba je funkcí otázky , kterou obdrží. Takže například můžeme psát pro odpověď Alice, když je její otázka a pro odpověď Alice, když je její otázka
Žádná deterministická strategie nemůže vyhrát hru CHSH pokaždé. Jeden způsob, jak to pochopit, je jednoduše projít jednu po druhé všechny možné deterministické strategie a ověřit, že každá z nich prohrává alespoň pro jeden ze čtyř možných párů otázek. Alice i Bob si mohou vybrat ze čtyř možných funkcí z jednoho bitu na jeden bit -- se kterými jsme se setkali v lekci o Jednotlivých systémech -- a tedy je celkem různých deterministických strategií ke kontrole.
Můžeme to také odvodit analyticky. Pokud strategie Alice a Boba vyhrává, když pak musí platit pokud jejich strategie vyhrává, když pak a podobně, pokud strategie vyhrává pro pak Takže pokud jejich strategie vyhrává pro všechny tři možnosti, pak
To znamená, že strategie prohrává v posledním případě protože pro výhru je zde nutné, aby Tedy nemůže existovat žádná deterministická strategie, která vyhrává pokaždé.
Na druhou stranu je snadné najít deterministické strategie, které vyhrávají ve třech ze čtyř případů, například Z toho vyplývá, že maximální pravděpodobnost výhry Alice a Boba pomocí deterministické strategie je
Pravděpodobnostní strategie
Jak jsme právě odvodili, Alice a Bob nemohou dosáhnout lepšího výsledku než výhry ve hře CHSH v 75 % případů pomocí deterministické strategie. Ale co pravděpodobnostní strategie? Mohlo by Alici a Bobovi pomoci použití náhodnosti -- včetně možnosti sdílené náhodnosti, kde jsou jejich náhodné volby korelované?
Ukazuje se, že pravděpodobnostní strategie vůbec nepomáhají zvýšit pravděpodobnost výhry Alice a Boba. Je to proto, že každou pravděpodobnostní strategii lze alternativně chápat jako náhodný výběr deterministické strategie, stejně jako (jak bylo zmíněno v lekci o Jednotlivých systémech) lze pravděpodobnostní operace chápat jako náhodné výběry deterministických operací. Průměr nikdy není větší než maximum, a z toho vyplývá, že pravděpodobnostní strategie neposkytují žádnou výhodu z hlediska celkové pravděpodobnosti výhry.
Tedy výhra s pravděpodobností je to nejlepší, čeho mohou Alice a Bob dosáhnout pomocí jakékoli klasické strategie, ať už deterministické nebo pravděpodobnostní.
Strategie pro hru CHSH
Přirozenou otázkou v tuto chvíli je, zda si mohou Alice a Bob polepšit pomocí kvantové strategie. Konkrétně, pokud sdílejí provázaný kvantový stav, jak naznačuje následující obrázek, který si mohli připravit před začátkem hry, mohou zvýšit svou pravděpodobnost výhry?

Odpověď je ano, a to je hlavní pointa tohoto příkladu a důvod, proč je tak zajímavý. Pojďme se tedy přesně podívat, jak mohou Alice a Bob v této hře dosáhnout lepšího výsledku pomocí provázanosti.
Potřebné vektory a matice
První věc, kterou musíme udělat, je definovat stavový vektor qubit pro každé reálné číslo (které si budeme představovat jako úhel měřený v radiánech) takto.
Zde je několik jednoduchých příkladů:
Máme také následující příklady, které se objeví v analýze níže:
Podíváme-li se na obecný tvar, vidíme, že skalární součin libovolných dvou z těchto vektorů má tento vzorec:
Podrobně řečeno, v těchto vektorech jsou pouze reálné hodnoty, takže se nemusíme starat o komplexní sdružení: skalární součin je součin kosinů plus součin sinů. Použití jednoho ze součtových vzorců z trigonometrie vede ke zjednodušení uvedenému výše. Tento vzorec odhaluje geometrickou interpretaci skalárního součinu mezi reálnými jednotkovými vektory jako kosinus úhlu mezi nimi.
Pokud vypočítáme skalární součin tenzorového součinu libovolných dvou z těchto vektorů se stavem , získáme podobný výraz, až na to, že má ve jmenovateli:
Náš zájem o tento konkrétní skalární součin se objasní za chvíli, ale prozatím si jej prostě zaznamenáváme jako vzorec.
Dále definujme unitární matici pro každý úhel takto.
Intuitivně řečeno, tato matice transformuje na a na K ověření, že jde o unitární matici, je klíčové pozorování, že vektory a jsou ortogonální pro každý úhel :
Tedy zjistíme, že
Tuto matici můžeme alternativně zapsat explicitně jako
Toto je příklad rotační matice, a konkrétně otáčí dvourozměrné vektory s reálnými hodnotami o úhel kolem počátku.Pokud dodržíme standardní konvenci pro pojmenování a parametrizaci rotací různých forem, máme kde
Popis strategie
Nyní můžeme popsat kvantovou strategii.
-
Příprava: Alice a Bob začínají hru se sdíleným e-bitem: Alice drží qubit Bob drží qubit a společně jsou oba Qubity ve stavu .
-
Akce Alice:
- Pokud Alice obdrží otázku aplikuje na svůj qubit
- Pokud Alice obdrží otázku aplikuje na svůj qubit
Operaci, kterou Alice provádí na , lze alternativně popsat takto:
Poté, co Alice aplikuje tuto operaci, změří měřením ve standardní bázi a nastaví svou odpověď na výsledek měření.
-
Akce Boba:
- Pokud Bob obdrží otázku aplikuje na svůj qubit
- Pokud Bob obdrží otázku aplikuje na svůj qubit
Stejně jako u Alice můžeme Bobovu operaci na vyjádřit takto:
Poté, co Bob aplikuje tuto operaci, změří měřením ve standardní bázi a nastaví svou odpověď na výsledek měření.
Zde je diagram kvantového Circuit, který popisuje tuto strategii:

V tomto diagramu vidíme dva obvyklé řízené Gate, jeden pro nahoře a jeden pro dole. Máme také dva Gate, které vypadají jako řízené Gate, jeden pro nahoře a jeden pro dole, s tím rozdílem, že kroužek představující řídící qubit není vyplněný. To označuje jiný typ řízeného Gate, kde se Gate provede, pokud je řídící qubit nastaven na (namísto jako u běžného řízeného Gate). Takže fakticky Bob provede na svém Qubitu, pokud , a , pokud a Alice provede na svém Qubitu, pokud , a , pokud což je v souladu s výše uvedeným slovním popisem protokolu.
Zbývá zjistit, jak dobře tato strategie pro Alice a Boba funguje. Uděláme to tak, že projdeme čtyři možné páry otázek jednotlivě.
Analýza případ po případu
-
Případ 1:
V tomto případě Alice provede na svém Qubitu a Bob provede na svém, takže stav obou Qubitů po provedení jejich operací je
Pravděpodobnosti pro čtyři možné páry odpovědí jsou tedy následující.
Poté můžeme získat pravděpodobnosti, že a , sečtením.
Pro pár otázek Alice a Bob vyhrávají, pokud a proto v tomto případě vyhrávají s pravděpodobností
-
Případ 2:
V tomto případě Alice provede na svém Qubitu a Bob provede na svém, takže stav obou Qubitů po provedení jejich operací je
Pravděpodobnosti pro čtyři možné páry odpovědí jsou tedy následující.
Opět můžeme získat pravděpodobnosti, že a , sečtením.
Pro pár otázek Alice a Bob vyhrávají, pokud a proto v tomto případě vyhrávají s pravděpodobností
-
Případ 3:
V tomto případě Alice provede na svém Qubitu a Bob provede na svém, takže stav obou Qubitů po provedení jejich operací je
Pravděpodobnosti pro čtyři možné páry odpovědí jsou tedy následující.
Opět zjišťujeme, že pravděpodobnosti, že a , jsou následující.
Pro pár otázek Alice a Bob vyhrávají, pokud takže v tomto případě vyhrávají s pravděpodobností
-
Případ 4:
Poslední případ je trochu jiný, jak bychom mohli očekávat, protože podmínka výhry je v tomto případě odlišná. Když jsou i obě Alice a Bob vyhrávají, když se a liší. V tomto případě Alice provede na svém qubit a Bob provede na svém, takže stav dvou qubit poté, co provedou své operace, je
Pravděpodobnosti pro čtyři možné páry odpovědí jsou tedy následující.
Pravděpodobnosti si oproti třem předchozím případům fakticky vyměnily místa. Pravděpodobnosti a získáme sečtením.
Pro pár otázek Alice a Bob vyhrávají, pokud a proto v tomto případě vyhrávají s pravděpodobností
Vyhrávají v každém případě se stejnou pravděpodobností:
To je tedy pravděpodobnost, s jakou celkově vyhrávají. To je výrazně lepší než jakákoli klasická strategie pro tuto hru; klasické strategie mají pravděpodobnost výhry omezenou hodnotou A to dělá z tohoto příkladu velmi zajímavý případ.
Toto je zároveň optimální pravděpodobnost výhry pro kvantové strategie; lépe si vést nemůžeme, bez ohledu na to, jaký provázaný stav nebo měření zvolíme. Tento fakt je znám jako Cirelsonova nerovnost, pojmenovaná po Borisi Cirelsonovi, který ji jako první dokázal — a který jako první popsal CHSH experiment jako hru.
Geometrický pohled
Strategii popsanou výše je možné si představit geometricky, což může pomoci pochopit vztahy mezi různými úhly zvolenými pro operace Alice a Boba.
Alice vlastně volí úhel v závislosti na své otázce a pak aplikuje na svůj qubit a měří. Podobně Bob volí úhel v závislosti na a pak aplikuje na svůj qubit a měří. Zvolili jsme a následovně.
Prozatím ale vezměme a jako libovolné. Volbou Alice fakticky definuje ortonormální bázi vektorů, která vypadá takto:

Bob dělá totéž, jen s úhlem :

Barvy vektorů odpovídají odpovědím Alice a Boba: modrá pro a červená pro
Pokud nyní zkombinujeme () a (), dostaneme vzorec
to platí pro všechna reálná čísla a
Provedeme-li stejný typ analýzy jako výše, ale s a jako proměnnými, zjistíme toto:
Z toho vyplývají tyto dva vzorce:
Tyto rovnice lze propojit s obrázky výše tak, že si představíme, jak přeložíme báze zvolené Alicí a Bobem přes sebe.
Prozkoumej strategii
Když Alice a Bob volí a a přeložením jejich bází přes sebe získáme tento obrázek:

Úhel mezi červenými vektory je což je stejný úhel jako mezi dvěma modrými vektory. Pravděpodobnost, že se výsledky Alice a Boba shodují, je kosinus na druhou tohoto úhlu,
zatímco pravděpodobnost, že se liší, je sinus na druhou tohoto úhlu,
Když Alice a Bob volí a a přeložením jejich bází přes sebe získáme tento obrázek:

Úhel mezi červenými vektory je opět stejně jako úhel mezi modrými vektory. Pravděpodobnost, že se výsledky Alice a Boba shodují, je opět kosinus na druhou tohoto úhlu,
zatímco pravděpodobnost, že se liší, je sinus na druhou tohoto úhlu,
Když Alice a Bob volí a a přeložením jejich bází přes sebe získáme tento obrázek:

Báze se změnily, ale úhly ne — opět je úhel mezi vektory stejné barvy Pravděpodobnost, že se výsledky Alice a Boba shodují, je
a pravděpodobnost, že se liší, je
Když Alice a Bob volí a Když přeložíme jejich báze přes sebe, vidíme, že se stalo něco jiného:

Díky tomu, jak byly úhly zvoleny, je tentokrát úhel mezi vektory stejné barvy místo Pravděpodobnost, že se výsledky Alice a Boba shodnou, je stále kosinus na druhou tohoto úhlu, ale tentokrát je hodnota
Pravděpodobnost, že se výsledky neshodnou, je sinus na druhou tohoto úhlu, což je v tomto případě:
Poznámky
Základní myšlenka experimentu jako je CHSH hra, kde provázanost vede ke statistickým výsledkům, které jsou nekonzistentní s čistě klasickým uvažováním, pochází od Johna Bella, podle něhož jsou pojmenovány Bellovy stavy. Z tohoto důvodu se experimenty tohoto druhu často označují jako Bellovy testy. Někdy se také mluví o Bellově teorému, který lze formulovat různými způsoby — ale jeho podstatou je, že kvantová mechanika není kompatibilní s takzvanými lokálními teoriemi skrytých proměnných. CHSH hra je obzvlášť čistý a jednoduchý příklad Bellova testu a lze ji chápat jako důkaz či demonstraci Bellova teorému.
CHSH hra nabízí způsob, jak experimentálně otestovat teorii kvantové informace. Můžeme provádět experimenty, které implementují CHSH hru, a testovat typy strategií založených na provázanosti popsané výše. To nám poskytuje vysoký stupeň jistoty, že provázanost je skutečná — a na rozdíl od někdy vágních či poetických způsobů, jakými vysvětlujeme provázanost, nám CHSH hra dává konkrétní a testovatelný způsob, jak provázanost pozorovat. Nobelova cena za fyziku v roce 2022 uznává důležitost tohoto směru výzkumu: cena byla udělena Alainu Aspectovi, Johnu Clauserovi (C v CHSH) a Antonu Zeilingerovi za pozorování provázanosti prostřednictvím Bellových testů na provázaných fotonech.
Implementace v Qiskitu
CHSH hru společně s výše definovanou kvantovou strategií můžeme v Qiskitu implementovat následovně.
Nejprve zde je definice samotné hry, která umožňuje připojit libovolnou strategii jako argument.
def chsh_game(strategy):
# This function runs the CHSH game, using the strategy (a function
# from two bits to two bits), returning 1 for a win and 0 for a loss.
# Choose x and y randomly
x, y = random.randint(0, 1), random.randint(0, 1)
# Use the strategy to determine a and b
a, b = strategy(x, y)
# Decide if the strategy wins or loses
if (a != b) == (x & y):
return 1 # Win
return 0 # Lose
Nyní vytvoříme funkci, která vygeneruje Circuit v závislosti na otázkách pro Alice a Boba. Pro jednoduchost ponecháme qubit s jejich výchozími názvy a pro akce Alice a Boba použijeme vestavěný Gate.
def chsh_circuit(x, y):
# This function creates a `QuantumCircuit` implementing the quantum
# strategy described above (including the e-bit preparation).
qc = QuantumCircuit(2, 2)
# Prepare an e-bit
qc.h(0)
qc.cx(0, 1)
qc.barrier()
# Alice's actions
if x == 0:
qc.ry(0, 0)
else:
qc.ry(-pi / 2, 0)
qc.measure(0, 0)
# Bob's actions
if y == 0:
qc.ry(-pi / 4, 1)
else:
qc.ry(pi / 4, 1)
qc.measure(1, 1)
return qc
Zde jsou čtyři možné Circuit v závislosti na tom, jaké otázky jsou položeny.
# Draw the four possible circuits
print("(x,y) = (0,0)")
display(chsh_circuit(0, 0).draw(output="mpl"))
print("(x,y) = (0,1)")
display(chsh_circuit(0, 1).draw(output="mpl"))
print("(x,y) = (1,0)")
display(chsh_circuit(1, 0).draw(output="mpl"))
print("(x,y) = (1,1)")
display(chsh_circuit(1, 1).draw(output="mpl"))
(x,y) = (0,0)

(x,y) = (0,1)

(x,y) = (1,0)

(x,y) = (1,1)

Nyní vytvoříme úlohu pomocí simulátoru Aer, která spustí Circuit jednou pro daný vstupní pár
def quantum_strategy(x, y):
# This function runs the appropriate quantum circuit defined above
# one time and returns the measurement results
# Setting `shots=1` to run the circuit once
result = AerSimulator().run(chsh_circuit(x, y), shots=1).result()
statistics = result.get_counts()
# Determine the output bits and return them
bits = list(statistics.keys())[0]
a, b = bits[0], bits[1]
return a, b
Nakonec zahrajeme hru 1000krát a vypočítáme podíl výher strategie.
NUM_GAMES = 1000
TOTAL_SCORE = 0
for _ in range(NUM_GAMES):
TOTAL_SCORE += chsh_game(quantum_strategy)
print("Fraction of games won:", TOTAL_SCORE / NUM_GAMES)
Fraction of games won: 0.867
Můžeme také definovat klasickou strategii a podívat se, jak dobře funguje. Toto je jen jedna strategie — další lze otestovat úpravou kódu — ale patří mezi optimální klasické strategie.
def classical_strategy(x, y):
# This function implements just one example of an optimal classical
# strategy for the CHSH game. Other classical strategies can be
# implemented by changing the bit values assigned to a and b.
# Alice's answer
if x == 0:
a = 0
elif x == 1:
a = 1
# Bob's answer
if y == 0:
b = 1
elif y == 1:
b = 0
return a, b
Znovu zahrajeme hru 1000krát, abychom viděli, jak dobře funguje.
NUM_GAMES = 1000
TOTAL_SCORE = 0
for _ in range(NUM_GAMES):
TOTAL_SCORE += chsh_game(classical_strategy)
print("Fraction of games won:", TOTAL_SCORE / NUM_GAMES)
Fraction of games won: 0.747
I když je v tom náhodnost, statistiky se po 1000 bězích velmi pravděpodobně příliš neodchýlí. Kvantová strategie vyhrává přibližně v 85 % případů, zatímco klasická strategie nemůže vyhrát více než přibližně v 75 % případů.