Přeskočit na hlavní obsah

Kvantová teleportace

Pro tento modul Qiskit in Classrooms musí mít studenti funkční prostředí Pythonu s nainstalovanými následujícími balíčky:

  • qiskit v2.1.0 nebo novější
  • qiskit-ibm-runtime v0.40.1 nebo novější
  • qiskit-aer v0.17.0 nebo novější
  • qiskit.visualization
  • numpy
  • pylatexenc

Informace o nastavení a instalaci výše uvedených balíčků najdeš v průvodci Instalace Qiskitu. Abys mohl/a spouštět úlohy na skutečných kvantových počítačích, budeš si muset vytvořit účet u IBM Quantum® podle kroků popsaných v průvodci Nastavení účtu IBM Cloud.

Tento modul byl otestován a spotřeboval 14 sekund QPU času. Jedná se pouze o odhad. Skutečná spotřeba se může lišit.

# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-aer qiskit-ibm-runtime
# Uncomment and modify this line as needed to install dependencies
#!pip install 'qiskit>=2.1.0' 'qiskit-ibm-runtime>=0.40.1' 'qiskit-aer>=0.17.0' 'numpy' 'pylatexenc'

Podívej se na průvodní výklad modulu od Dr. Katie McCormick níže, nebo klikni sem a sleduj jej na YouTube.


Úvod a základní pojmy

Kvantová teleportace je technika v kvantové fyzice, která umožňuje přenos kvantové informace z jednoho místa na druhé, aniž by se fyzicky pohybovaly částice. Na rozdíl od sci-fi konceptu teleportace tento proces nezahrnuje transport hmoty. Místo toho se opírá o princip kvantového provázání, při němž jsou dvě částice vzájemně propojeny bez ohledu na vzdálenost. Prostřednictvím série přesných měření a klasické komunikace lze kvantový stav jedné částice znovu vytvořit v jiné částici na vzdáleném místě, čímž se kvantová informace efektivně „teleportuje". V tomto modulu uvidíme, jak to funguje matematicky, a pak implementujeme kvantovou teleportaci na skutečném kvantovém počítači. Úvod zde bude stručný; pro více zázemí o kvantové informaci a podrobnější vysvětlení teleportace doporučujeme kurz Johna Watrouse Základy kvantové informace, a zejména část o Teleportaci.

Klasické bity mohou nabývat stavů 0 nebo 1. Kvantové bity (qubity) mohou nabývat kvantových stavů označených 0|0\rangle a 1|1\rangle a také jejich lineárních kombinací, tzv. „superpozicí", jako je ψ=α00+α11|\psi\rangle = \alpha_0|0\rangle +\alpha_1|1\rangle, kde α0,α1C,\alpha_0,\alpha_1 \in \mathbb{C}, a α02+α12=1.|\alpha_0|^2+|\alpha_1|^2 = 1. Přestože stavy mohou existovat v této superpozici, měření stavu ho „zhroutí" buď do stavu 0|0\rangle, nebo 1|1\rangle. Parametry aa a bb souvisejí s pravděpodobností každého výsledku měření podle

P0=α02P_0 = |\alpha_0|^2 P1=α12P_1 = |\alpha_1|^2

Z toho plyne podmínka α02+α12=1.|\alpha_0|^2+|\alpha_1|^2 = 1.

Dalším klíčovým rysem je, že kvantové bity mohou být „provázány", což znamená, že měření jednoho qubitu může ovlivnit výsledek měření jiného, provázaného qubitu. Pochopit, čím se provázání liší od pouhých klasických korelací, je trochu složité. Nejprve si vysvětlíme notaci. Nazvěme dva qubity patřící příteli 0 (Alici) a příteli 1 (Bobovi), přičemž každý je ve stavu 0|0\rangle

0B0A|0\rangle_B|0\rangle_A

nebo

0100|0\rangle_1|0\rangle_0

zkráceně jen

00|00\rangle

Všimni si, že qubit s nejnižším číslem (nebo písmenem) je nejvíce vpravo. Jde o konvenci zvanou notace „little-endian", která se používá v celém Qiskitu. Pokud je dvouqubitový stav přátel 00|00\rangle a oni změří stav svých příslušných qubitů, každý z nich najde 0. Podobně pokud by qubity byly ve stavu 11|11\rangle, každé jejich měření by dalo výsledek 1. To se nijak neliší od klasického případu. V kvantovém počítání ale můžeme toto zkombinovat se superpozicí a získat stavy jako

12(00+11)\frac{1}{\sqrt{2}}(|00\rangle+|11\rangle)

Ve stavu jako je tento není ještě známo, ani přírodou určeno, zda mají Alice a Bob qubity ve stavu 0 nebo 1, přesto víme, že naměří stejný stav svého qubitu. Pokud například Bob změří svůj qubit a najde stav 0|0\rangle, jediná možnost, jak k tomu mohlo dojít, je, že měření zhroutilo dvouqubitový stav do jednoho ze dvou možných stavů, konkrétně do 00|00\rangle. Tím je qubit Alice také ve stavu 0|0\rangle.

Provázání qubitů tímto způsobem nevyžaduje, aby qubity zůstaly fyzicky blízko sebe. Jinými slovy, můžeme qubity provázat, pak je od sebe vzdálit na velkou vzdálenost a použít jejich provázání k přenosu informace. Provázaný stav jako výše popsaný je základní jednotkou provázání a někdy se označuje jako „e-bit" — jeden bit provázání. Tyto e-bity lze považovat za zdroje v kvantové komunikaci, protože každý e-bit sdílený mezi vzdálenými partnery lze použít, jak zde popisujeme, k přenosu informace z jednoho místa na druhé.

První myšlenka, která mnohým při prvním setkání s tímto tématem napadne, se týká porušení relativity: lze to použít k přenosu informace rychleji než světlo? Rozhodně se neptej a ptej se dál na vědecká pravidla, ale bohužel to nám neumožní přenášet informace rychleji než světlo, z důvodů, které v průběhu tohoto modulu budou jasné. Spoiler: úžasně to NENÍ způsobeno rychlostí šíření tohoto zhroucení, které se zdá probíhat rychleji než světlo [1]. Začínáme se dvěma spolupracovníky Alicí a Bobem, kteří jsou zpočátku na stejném místě a mohou společně pracovat se stejnými qubity. Tito spolupracovníci provážou své qubity. Pak se rozdělí na dvě různá geografická místa a vezmou s sebou příslušné qubity. Alice pak získá kvantovou informaci na novém qubitu Q. Nepředpokládáme nic o informaci na Q. Stav Q mohl být tajný, neznámý pro Alici; mohl být neznámý všem. Ale Alice dostane za úkol přenést informaci na Q k Bobovi. To provede pomocí kvantové teleportace.

K tomu budeme potřebovat znát některé kvantové operace neboli „hradla".

Kvantové operátory (hradla)

Tuto sekci klidně přeskoč, pokud již kvantová hradla znáš. Pokud chceš těmto hradlům lépe porozumět, podívej se na Základy kvantové informace, zejména na první dvě lekce, na IBM Quantum Learning.

Pro tento teleportační protokol budeme primárně používat dva typy kvantových hradel: Hadamardovo hradlo a hradlo CNOT. Menší roli sehrají ještě: hradlo XX, hradlo ZZ a hradlo SWAP.

Tento modul lze dokončit s velmi omezenými znalostmi lineární algebry, ale někdy může být vizualizace kvantově-mechanických hradel pomocí matic a vektorů užitečná. Proto zde uvádíme maticové/vektorové formy kvantových hradel/stavů.

Stavy, které jsme již představili, jsou zvoleny (částečně konvencí a částečně omezením) tak, aby měly vektorové formy:

0=(10)|0\rangle = \begin{pmatrix}1 \\ 0\end{pmatrix} 1=(01)|1\rangle = \begin{pmatrix}0 \\ 1\end{pmatrix}

Libovolný stav ψ=a0+b1|\psi\rangle = a|0\rangle+b|1\rangle lze pak zapsat jako

ψ=(ab)|\psi\rangle =\begin{pmatrix}a \\ b\end{pmatrix}

Existuje určitá volnost v tom, jak notaci rozšířit na stavy více qubitů, ale níže uvedená volba je poměrně standardní:

00=(1000),01=(0100),10=(0010),11=(0001).|00\rangle = \begin{pmatrix}1 \\ 0 \\ 0 \\ 0\end{pmatrix},|01\rangle = \begin{pmatrix}0 \\ 1 \\ 0 \\ 0\end{pmatrix}, |10\rangle = \begin{pmatrix}0 \\ 0 \\ 1 \\0\end{pmatrix},|11\rangle = \begin{pmatrix}0 \\ 0 \\ 0 \\ 1\end{pmatrix}.

S touto vektorovou notací na paměti můžeme představit potřebná kvantová hradla, jejich účinky na kvantové stavy a jejich maticové formy.

Hadamardovo hradlo H: Vytváří superpozici. Jednoqubitové hradlo.

H0=12(0+1),H|0\rangle = \frac{1}{\sqrt{2}}\left(|0\rangle+|1\rangle\right), H1=12(01)H|1\rangle = \frac{1}{\sqrt{2}}\left(|0\rangle-|1\rangle\right) H=12(1111)H=\frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}

Obvod s Hadamardovým hradlem se vytvoří takto:

from qiskit import QuantumCircuit

qc = QuantumCircuit(1)
qc.h(0)
qc.draw("mpl")

Output of the previous code cell

Hradlo CNOT (řízený NOT): Toto hradlo používá dva qubity: řídící a cílový. Zkontroluje stav řídícího qubitu, který se nemění. Pokud je však řídící qubit ve stavu 1|1\rangle, hradlo změní stav cílového qubitu; pokud je řídící qubit ve stavu 0|0\rangle, nedochází k žádné změně. V níže uvedené notaci předpokládáme, že qubit AA (nejpravější qubit) je řídící a qubit BB (nejlevější qubit) je cílový. Níže se používá notace CNOT(qcontrol,qtarget)BA.CNOT(q_{control},q_{target})|BA\rangle.

CNOT(A,B)00=00,CNOT(A,B)01=11,CNOT(A,B)10=10,CNOT(A,B)11=01CNOT(A,B)|00\rangle = |00\rangle, \\ CNOT(A,B)|01\rangle = |11\rangle, \\ CNOT(A,B)|10\rangle = |10\rangle, \\ CNOT(A,B)|11\rangle = |01\rangle

Někdy se CNOT píše bez explicitního pořadí řídícího a cílového qubitu. V kódu nebo v diagramech obvodů ale taková nejednoznačnost neexistuje.

CNOT=(1000000100100100)CNOT=\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0\end{pmatrix}

Hradlo CNOT vypadá v obvodu trochu jinak, protože vyžaduje dva qubity. Takto se implementuje:

qc = QuantumCircuit(2)
qc.cx(0, 1)
qc.draw("mpl")

Output of the previous code cell

Ověř si porozumění

Přečti si otázku níže, zamysli se nad odpovědí a pak kliknutím na trojúhelník zobraz řešení.

Většina hradel má v Qiskitu stejnou maticovou formu jako kdekoliv jinde. Ale hradlo CNOT působí na dva qubity, a tak se najednou stane problémem pořadí qubitů. Texty, které řadí qubity jako q0,q1,...|q_0,q_1,...\rangle, budou ukazovat jinou maticovou formu svých hradel CNOT. Ověř explicitním maticovým násobením, že výše uvedená matice CNOT má správné působení na stav 01.|01\rangle.

Odpověď:

CNOT01=(1000000100100100)(0100)=(0001)=11CNOT|01\rangle =\begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0\end{pmatrix}\begin{pmatrix}0 \\ 1 \\ 0 \\0\end{pmatrix} = \begin{pmatrix}0 \\ 0 \\ 0 \\1\end{pmatrix} = |11\rangle

Hradlo XX: Ekvivalent operace NOT. Jednoqubitové hradlo.

X0=1,X1=0X|0\rangle = |1\rangle,\\X|1\rangle=|0\rangle X=(0110)X=\begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}

V Qiskitu vypadá vytvoření obvodu s hradlem XX takto:

qc = QuantumCircuit(1)
qc.x(0)
qc.draw("mpl")

Output of the previous code cell

Hradlo ZZ: Přidá ke stavu „fázi" (prefaktor, který v případě vlastních stavů Z, 0|0\rangle a 1|1\rangle, nabývá hodnoty 1, resp. -1). Jednoqubitové hradlo.

Z0=0,Z1=1Z|0\rangle = |0\rangle,\\Z|1\rangle=-|1\rangle Z=(1001)Z=\begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}

V Qiskitu vypadá vytvoření obvodu s hradlem ZZ takto:

qc = QuantumCircuit(1)
qc.z(0)
qc.draw("mpl")

Output of the previous code cell

Teorie

Pojďme si matematicky popsat protokol kvantové teleportace. V další části pak tento postup realizujeme na kvantovém počítači.

Alice a Bob prováží své qubity: Na začátku jsou qubit Alice a qubit Boba každý zvlášť ve stavu 0|0\rangle (rozumný předpoklad a zároveň správná inicializace pro kvantové počítače IBM®). Toto můžeme zapsat jako 0B0A|0\rangle_B|0\rangle_A nebo jednoduše jako 00|00\rangle. Vypočítejme, co se stane, když Alice a Bob použijí Hadamardovo hradlo na qubit Alice a poté hradlo CNOT s qubitem Alice jako řídícím a qubitem Boba jako cílovým:

CNOT(A,B)HA0B0A=CNOT(A,B)0B12(0A+1A)=12(CNOT(A,B)0B0A+CNOT(A,B)0B1A)=12(0B0A+1B1A)\begin{aligned} CNOT(A,B)H_A |0\rangle_B|0\rangle_A &= CNOT(A,B)|0\rangle_B\frac{1}{\sqrt{2}}\left(|0\rangle_A+|1\rangle_A\right)\\ &=\frac{1}{\sqrt{2}}\left(CNOT(A,B)|0\rangle_B|0\rangle_A+CNOT(A,B)|0\rangle_B|1\rangle_A\right)\\ &=\frac{1}{\sqrt{2}}\left(|0\rangle_B|0\rangle_A+|1\rangle_B|1\rangle_A\right) \end{aligned}

Všimni si, že nyní jsou qubity Alice a Boba provázány. Přestože ještě není přírodou určeno, zda jsou oba jejich qubity ve stavu 0|0\rangle nebo 1|1\rangle, víme, že jejich qubity jsou ve stejném stavu. Alice a Bob se rozloučí: Oba přátelé přesunou své qubity na nová místa, možná velmi daleko od sebe. S tím je spojeno mnoho výhrad: přesun kvantové informace bez narušení není triviální. Ale lze to provést, a skutečně to v tomto modulu provedeš. Měj ale na paměti, že při přesouvání kvantové informace lze očekávat určité chyby.

Je připraven qubit Q: Tajný stav je připraven na qubitu Q:

ψQ=α00Q+α11Q|\psi\rangle_Q = \alpha_0 |0\rangle_Q + \alpha_1 |1\rangle_Q

V tento okamžik je Q jednoduše vedle qubitu Alice (A). Nedošlo k žádnému provázání, takže kvantový stav tří qubitů dohromady lze zapsat jako:

ψABψQ=12(0B0A+1B1A)(α00Q+α11Q).|\psi\rangle_{AB}|\psi\rangle_Q = \frac{1}{\sqrt{2}}\left(|0\rangle_B|0\rangle_A+|1\rangle_B|1\rangle_A\right)\left(\alpha_0 |0\rangle_Q + \alpha_1 |1\rangle_Q\right).

Cílem je přesunout informaci na Q z místa Alice na místo Boba. V tuto chvíli nijak nepožadujeme ani netvrdíme nic o tajnosti nebo rychlosti přenosu informace. Jen zkoumáme, jak může informace přejít od Alice k Bobovi. Protože informace začíná na Q, budeme předpokládat, že Q je přiřazen nejnižší číslo qubitu, takže little-endian notace způsobuje, že Q je v níže uvedené matematice nejpravější qubit.

Alice prováže qubity A a Q: Alice nyní použije hradlo CNOT se svým qubitem jako řídícím a Q jako cílovým, poté aplikuje Hadamardovo hradlo na Q. Vypočítejme tříqubitový stav po této operaci:

HQCNOT(A,Q)ψABψQ=HQCNOT(A,Q)12(0B0A+1B1A)(α00Q+α11Q)=HQCNOT(A,Q)12((α00B0A0Q+α10B0A1Q)+(α01B1A0Q+α11B1A1Q))=HQ12(α00B0A0Q+α10B1A1Q+α01B1A0Q+α11B0A1Q)=12(α00B0A0Q+α00B0A1Q+α10B1A0Qα10B1A1Q)+12(α01B1A0Q+α01B1A1Q+α11B0A0Qα11B0A1Q)\begin{aligned} H_Q CNOT(A,Q)|\psi\rangle_{AB}|\psi\rangle_Q &= H_Q CNOT(A,Q)\frac{1}{\sqrt{2}}\left(|0\rangle_B|0\rangle_A+|1\rangle_B|1\rangle_A\right)\left(\alpha_0 |0\rangle_Q + \alpha_1 |1\rangle_Q\right)\\ &= H_Q CNOT(A,Q)\frac{1}{\sqrt{2}}\left(\left(\alpha_0 |0\rangle_B|0\rangle_A|0\rangle_Q + \alpha_1 |0\rangle_B|0\rangle_A|1\rangle_Q\right)+\left(\alpha_0 |1\rangle_B|1\rangle_A|0\rangle_Q + \alpha_1 |1\rangle_B|1\rangle_A|1\rangle_Q\right)\right)\\ &= H_Q \frac{1}{\sqrt{2}}\left(\alpha_0 |0\rangle_B|0\rangle_A|0\rangle_Q + \alpha_1 |0\rangle_B|1\rangle_A|1\rangle_Q+\alpha_0 |1\rangle_B|1\rangle_A|0\rangle_Q + \alpha_1 |1\rangle_B|0\rangle_A|1\rangle_Q\right)\\ &= \frac{1}{2}\left(\alpha_0 |0\rangle_B|0\rangle_A|0\rangle_Q + \alpha_0 |0\rangle_B|0\rangle_A|1\rangle_Q + \alpha_1 |0\rangle_B|1\rangle_A|0\rangle_Q-\alpha_1 |0\rangle_B|1\rangle_A|1\rangle_Q\right)\\ &+\frac{1}{2}\left(\alpha_0 |1\rangle_B|1\rangle_A|0\rangle_Q + \alpha_0 |1\rangle_B|1\rangle_A|1\rangle_Q + \alpha_1 |1\rangle_B|0\rangle_A|0\rangle_Q - \alpha_1 |1\rangle_B|0\rangle_A|1\rangle_Q\right) \end{aligned}

Protože A a Q jsou na stejném místě, seskupme výše uvedené členy podle výsledků měření qubitů A a Q:

ψ=12((α00B+α11B)0A0Q+(α00Bα11B)0A1Q+(α10B+α01B)1A0Q+(α10B+α01B)1A1Q)\begin{aligned} |\psi\rangle = \frac{1}{2}\left((\alpha_0 |0\rangle_B+\alpha_1 |1\rangle_B)|0\rangle_A|0\rangle_Q + (\alpha_0 |0\rangle_B-\alpha_1 |1\rangle_B)|0\rangle_A|1\rangle_Q + (\alpha_1 |0\rangle_B+\alpha_0 |1\rangle_B)|1\rangle_A|0\rangle_Q+ (-\alpha_1 |0\rangle_B+\alpha_0 |1\rangle_B)|1\rangle_A|1\rangle_Q \right)\\ \end{aligned}

Ověř si porozumění

Přečti si otázku níže, zamysli se nad odpovědí a pak kliknutím na trojúhelník zobraz řešení.

Jaká je pravděpodobnost, že měření qubitů A a Q dá výsledek 0A0Q|0\rangle_A|0\rangle_Q, s ohledem na výše uvedený výraz pro stavy všech tří qubitů?

Odpověď:

25 %. Abychom to viděli, připomeneme, že stav Boba musí být normovaný, tedy A0Q0120A0Q(α00B+α11B)2=14(α00B+α11B)2=14 |_A \langle0|_Q\langle0| \frac{1}{2} |0\rangle_A|0\rangle_Q (\alpha_0 |0\rangle_B+\alpha_1 |1\rangle_B)|^2 = \frac{1}{4}|(\alpha_0 |0\rangle_B+\alpha_1 |1\rangle_B)|^2 = \frac{1}{4}

Nyní Alice může změřit qubity A a Q. Nemůže ovlivnit výsledek tohoto měření, protože kvantová měření jsou pravděpodobnostní. Takže když měří, existují 4 možné výsledky, přičemž všechny 4 jsou stejně pravděpodobné: 0A0Q,|0\rangle_A|0\rangle_Q, 0A1Q,|0\rangle_A|1\rangle_Q, 1A0Q,|1\rangle_A|0\rangle_Q, a 1A1Q.|1\rangle_A|1\rangle_Q. Všimni si, že každý výsledek má jiné důsledky pro qubit Boba. Pokud například Alice zjistí, že její qubity jsou ve stavu 0A0Q,|0\rangle_A|0\rangle_Q, zhroutí se celý tříqubitový kvantový stav na (α00B+α11B)0A0Q.(\alpha_0|0\rangle_B+\alpha_1|1\rangle_B)|0\rangle_A|0\rangle_Q. Ostatní výsledky měření Alice vedou k různým stavům Boba. Ty jsou shrnuty v tabulce níže.

Výsledek AliceStav BobaInstrukce pro BobaVýsledek
0A0Q \vert 0\rangle_A \vert 0\rangle_Qα00B+α11B\alpha_0\vert 0\rangle_B+\alpha_1\vert 1\rangle_BŽádnáα00B+α11B\alpha_0\vert 0\rangle_B+\alpha_1\vert 1\rangle_B
0A1Q \vert 0\rangle_A \vert 1\rangle_Qα00Bα11B\alpha_0\vert 0\rangle_B-\alpha_1\vert 1\rangle_BZZα00B+α11B\alpha_0\vert 0\rangle_B+\alpha_1\vert 1\rangle_B
1A0Q \vert 1\rangle_A \vert 0\rangle_Qα10B+α01B\alpha_1\vert 0\rangle_B+\alpha_0\vert 1\rangle_BXXα00B+α11B\alpha_0\vert 0\rangle_B+\alpha_1\vert 1\rangle_B
1A1Q \vert 1\rangle_A \vert 1\rangle_Qα10B+α01B-\alpha_1\vert 0\rangle_B+\alpha_0\vert 1\rangle_BXX a pak ZZα00B+α11B\alpha_0\vert 0\rangle_B+\alpha_1\vert 1\rangle_B
Pro všechny možné výsledky měření qubitů Alice zůstane qubit Boba ve stavu vzdáleně připomínajícím tajný stav původně na Q. V případě, kdy Alice naměří $0\rangle_C0\rangle_A(prvnıˊrˇaˊdektabulky),jequbitBobaprˇesneˇvtajneˊmstavu!Vostatnıˊchprˇıˊpadechjesestavemneˇcosˇpatneˇ.Koeficienty( (první řádek tabulky), je qubit Boba přesně v tajném stavu! V ostatních případech je se stavem něco špatně. Koeficienty (\alpha)jsouprohozeny,nebojetamznameˊnko"tam,kdebymeˇlobyˊt+",neboobojıˊ.AbyBobmohlupravitsvu˚jqubittak,abybylprˇesneˇroventajneˊmustavu,musıˊmuAlicezavolat(pouzˇıˊtneˇjakyˊprostrˇedekklasickeˊkomunikace)arˇıˊctmu,jakeˊdodatecˇneˊoperacemaˊnasveˊmqubituproveˊst,jakjepopsaˊnovtabulce.Naprˇıˊkladvetrˇetıˊmrˇaˊdkujsoukoeficientyprohozeny.PokudAlicezavolaˊBoboviarˇeknemu,abyaplikovalhradlo) jsou prohozeny, nebo je tam znaménko „-" tam, kde by mělo být „+", nebo obojí. Aby Bob mohl upravit svůj qubit tak, aby byl přesně roven tajnému stavu, musí mu Alice zavolat (použít nějaký prostředek klasické komunikace) a říct mu, jaké dodatečné operace má na svém qubitu provést, jak je popsáno v tabulce. Například ve třetím řádku jsou koeficienty prohozeny. Pokud Alice zavolá Bobovi a řekne mu, aby aplikoval hradlo Xnasvu˚jqubit,zmeˇnıˊna svůj qubit, změní0\ranglenana

Nyní by mělo být jasné, proč nemůžeme toto nastavení použít k přenosu informace rychleji než světlo. Může se nám povést změřit 0A0Q,|0\rangle_A|0\rangle_Q, což znamená, že Bob okamžitě má tajný stav. Ale Bob to neví, dokud mu nezavoláme a neřekneme mu: „Naměřili jsme 0A0Q|0\rangle_A|0\rangle_Q, takže nemusíš dělat nic."

V myšlenkovém experimentu jsou qubity často fyzicky odděleny a přeneseny na nové místo. Kvantové počítače IBM® používají pevnolátkové qubity na čipu, které nelze oddělit. Takže místo přesouvání Alice a Boba na různá místa oddělíme informaci na samotném čipu pomocí tzv. „swap hradel", která přesouvají informaci z jednoho qubitu na jiný.

Experiment 1: Základní teleportace

IBM Quantum doporučuje přistupovat k problémům kvantového výpočtu pomocí rámce, který nazývají „Qiskit patterns" (vzory Qiskit). Skládá se z následujících kroků.

  • Krok 1: Namapuj svůj problém na kvantový obvod
  • Krok 2: Optimalizuj svůj obvod pro spuštění na skutečném kvantovém hardwaru
  • Krok 3: Spusť svůj úkol na kvantových počítačích IBM pomocí Runtime Primitives
  • Krok 4: Post-processing výsledků

Krok 1: Namapuj svůj problém na kvantový obvod

Všechna matematika, kterou jsme provedli výše, popisovala krok 1. Teď ji implementujeme a sestavíme kvantový obvod pomocí Qisku! Začneme vytvořením kvantového obvodu se třemi qubity a propojíme (entanglujeme) dva qubity Alenky a Boba. Budeme předpokládat, že jde o qubity 1 a 2, a qubit 0 si vyhradíme pro tajný stav.

# Step 1: Map your problem to a quantum circuit

# Import some general packages
from qiskit import ClassicalRegister, QuantumCircuit, QuantumRegister
import numpy as np

# Define registers
secret = QuantumRegister(1, "Q")
Alice = QuantumRegister(1, "A")
Bob = QuantumRegister(1, "B")

cr = ClassicalRegister(3, "c")

qc = QuantumCircuit(secret, Alice, Bob, cr)

# We entangle Alice's and Bob's qubits as in our work above. We apply a Hadamard gate and then a CNOT gate.
# Note that the second argument in the CNOT gate is the target.
qc.h(Alice)
qc.cx(Alice, Bob)

# Inserting a barrier changes nothing about the logic. It just allows us to force gates to be positioned in "layers".
qc.barrier()

# Now we will use random variables to create the secret state. Don't worry about the "u" gate and the details.
np.random.seed(42) # fixing seed for repeatability
theta = np.random.uniform(0.0, 1.0) * np.pi # from 0 to pi
varphi = np.random.uniform(0.0, 2.0) * np.pi # from 0 to 2*pi

# Assign the secret state to the qubit on the other side of Alice's (qubit 0), labeled Q
qc.u(theta, varphi, 0.0, secret)
qc.barrier()

# Now entangle Q and Alice's qubits as in the discussion above.
qc.cx(secret, Alice)
qc.h(secret)
qc.barrier()

# Now Alice measures her qubits, and stores the outcomes in the "classical registers" cr[]
qc.measure(Alice, cr[1])
qc.measure(secret, cr[0])

# Now we insert some conditional logic. If Alice measures Q in a "1" we need a Z gate, and if Alice measures A in a "1" we need an X gate (see the table).
with qc.if_test((cr[1], 1)):
qc.x(Bob)
with qc.if_test((cr[0], 1)):
qc.z(Bob)

qc.draw(output="mpl")

Output of the previous code cell

To je vše, co musíme udělat, aby byl Alenčin stav teleportován Bobovi. Vzpomeňme si ale, že když měříme kvantový stav α00+α11\alpha_0 |0\rangle+\alpha_1|1\rangle, dostaneme buď 0|0\rangle, nebo 1.|1\rangle. Na konci celého procesu tedy Bob Alenčin tajný stav skutečně má, ale nelze to snadno ověřit měřením. Aby nám měření řeklo, že jsme to provedli správně, musíme použít trik. Měli jsme operátor označený „U" (z anglického „unitary" – unitární), který jsme použili k přípravě Alenčina tajného stavu. Na konec obvodu můžeme aplikovat inverz U. Pokud U zobrazilo Alenčin stav 0|0\rangle na α00+α11\alpha_0 |0\rangle+\alpha_1|1\rangle, pak inverz U zobrazí Bobův stav α00+α11\alpha_0 |0\rangle+\alpha_1|1\rangle zpět na 0.|0\rangle. Tato poslední část by se nemusela provádět, pokud by cílem bylo jen přenést kvantovou informaci. Dělá se pouze proto, abychom si mohli zkontrolovat výsledek.

# Add the inverse of U and measure Bob's qubit.
qc.barrier()

qc.u(theta, varphi, 0.0, Bob).inverse() # inverse of u(theta,varphi,0.0)
qc.measure(Bob, cr[2]) # add measurement gate

qc.draw(output="mpl")

Output of the previous code cell

Pokud jsme tedy vše provedli správně, mělo by měření Bobova qubitu poskytnout stav 0|0\rangle. Tato měření jsou samozřejmě probabilistická. Pokud tedy existuje byť malá pravděpodobnost naměřit Bobův qubit ve stavu 1|1\rangle, může jediné měření skutečně vrátit 1.|1\rangle. Abychom se ujistili, že pravděpodobnost 0|0\rangle je skutečně vysoká, bylo by potřeba provést mnoho měření.

Krok 2: Optimalizace problému pro kvantové spuštění

Tento krok vezme operace, které chceme provést, a vyjádří je pomocí funkcionality konkrétního kvantového počítače. Zároveň namapuje náš problém na uspořádání kvantového počítače.

Začneme načtením několika balíčků potřebných ke komunikaci s kvantovými počítači IBM. Musíme také vybrat backend, na kterém spustíme výpočet. Můžeme zvolit nejméně vytížený backend, nebo vybrat konkrétní backend, jehož vlastnosti známe.

Níže je kód pro první uložení přihlašovacích údajů. Po jejich uložení do prostředí tyto informace z notebooku smaž, aby nebyly omylem sdíleny při sdílení notebooku. Více informací najdeš v Nastavení účtu IBM Cloud a Inicializace služby v nedůvěryhodném prostředí.

# Load the Qiskit Runtime service
from qiskit_ibm_runtime import QiskitRuntimeService

# Load the Qiskit Runtime service

# Syntax for first saving your token. Delete these lines after saving your credentials.
# QiskitRuntimeService.save_account(channel='ibm_quantum_platform', instance = '<YOUR_IBM_INSTANCE_CRN>', token='<YOUR-API_KEY>', overwrite=True, set_as_default=True)
# service = QiskitRuntimeService(channel='ibm_quantum_platform')

# Load saved credentials
service = QiskitRuntimeService()

# Use the least busy backend, or uncomment the loading of a specific backend like "ibm_brisbane".
backend = service.least_busy(operational=True, simulator=False, min_num_qubits=127)
# backend = service.backend("ibm_brisbane")
print(backend.name)
ibm_sherbrooke

Explicitně povolíme logiku pro měření.

from qiskit.circuit import IfElseOp

backend.target.add_instruction(IfElseOp, name="if_else")

Nyní musíme kvantový obvod „transpilovat". Tento proces zahrnuje mnoho dílčích kroků a je fascinujícím tématem sám o sobě. Jako příklad dílčího kroku: ne všechny kvantové počítače dokáží přímo implementovat všechny logické hradla Qisku. Musíme přepsat hradla z našeho obvodu pomocí hradel, která daný kvantový počítač umí. Tento proces (a další) lze provést pomocí přednastavených správců průchodů (pass manager). Nastavením optimization = 3 (nejvyšší úroveň optimalizace) zajistíme, že mapování z abstraktního kvantového obvodu na instrukce zadávané kvantovému počítači bude co nejefektivnější.

# Step 2: Transpile
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

target = backend.target
pm = generate_preset_pass_manager(target=target, optimization_level=3)
qc_isa = pm.run(qc)

„Sampler" (vzorkovač) je primitivum navržené k vzorkování možných stavů vznikajících z kvantového obvodu a ke sběru statistik o tom, jaké stavy mohou být naměřeny a s jakou pravděpodobností. Zde importujeme Qiskit Runtime Sampler:

# Load the Runtime primitive and session
from qiskit_ibm_runtime import SamplerV2 as Sampler

sampler = Sampler(mode=backend)

Ne každý výpočet na kvantovém počítači lze rozumně simulovat na klasických počítačích. Tuto jednoduchou teleportaci klasicky simulovat lze, ale vůbec není překvapující, že dokážeme klasicky uložit informaci na jedno nebo druhé místo. Důrazně doporučujeme provádět tyto výpočty na skutečném kvantovém počítači IBM. Pokud jsi ale vyčerpal/a bezplatné měsíční využití, nebo pokud je potřeba dokončit úkol ve třídě a nechce se čekat ve frontě, lze tento modul dokončit pomocí simulátoru. K tomu jednoduše spusť buňku níže a odkomentuj příslušné řádky v krocích „Execute".

# Load the backend sampler
from qiskit.primitives import BackendSamplerV2

# Load the Aer simulator and generate a noise model based on the currently-selected backend.
from qiskit_aer import AerSimulator
from qiskit_aer.noise import NoiseModel

noise_model = NoiseModel.from_backend(backend)

# Define a simulator using Aer, and use it in Sampler.
backend_sim = AerSimulator(noise_model=noise_model)
sampler_sim = BackendSamplerV2(backend=backend_sim)

# Alternatively, load a fake backend with generic properties and define a simulator.
# backend_gen = GenericBackendV2(num_qubits=18)
# sampler_gen = BackendSamplerV2(backend=backend_gen)

Krok 3: Spuštění

Použij sampler ke spuštění úkolu; jako argument zadej obvod.

job = sampler.run([qc_isa])
# job = sampler_sim.run([qc_isa])
res = job.result()
counts = res[0].data.c.get_counts()

Krok 4: Post-processing a analýza

Vykreslíme výsledky a interpretujeme je.

# This required 5 s to run on a Heron r2 processor on 10-28-24
from qiskit.visualization import plot_histogram

plot_histogram(counts)

Output of the previous code cell

Ověř své porozumění

Přečti si níže uvedenou otázku, zamysli se nad odpovědí a pak klikni na trojúhelník pro zobrazení řešení.

Které ze stavů výše ukazují úspěšnou teleportaci a jak to poznáš?

Odpověď:

Stavy 000,|000\rangle, 001,|001\rangle, 010,|010\rangle, 011|011\rangle jsou všechny konzistentní s úspěšnou teleportací. Přidali jsme totiž hradlo, které vrátí zpět počáteční přípravu tajného stavu. Pokud byl tajný stav úspěšně teleportován na Bobův qubit, toto přídavné hradlo by mělo vrátit Bobův qubit do stavu 0|0\rangle. Každý stav výše, kde se Bobův qubit (qubit 0, měřený do 0. složky klasického registru, tedy nejvyšší/zcela vpravo) nachází ve stavu 0|0\rangle, tedy indikuje úspěch.

Tento histogram zobrazuje všechny výsledky měření tří qubitů za 5 000 pokusů neboli „shots". Dříve jsme zmínili, že Alenka naměří pro qubity A a Q všechny možné stavy se stejnou pravděpodobností. Qubity 0–2 jsme v obvodu přiřadili Q, A a B v tomto pořadí. V little-endian notaci je Bobův qubit zcela vlevo/nejnižší. Čtyři pruhy vlevo tedy odpovídají Bobovu qubitu ve stavu 0|0\rangle a zbývající dva qubity jsou ve všech možných kombinacích s přibližně stejnou pravděpodobností. Všimni si, že téměř všechna (obvykle ~95 %) měření vrátí Bobův qubit ve stavu 0|0\rangle, což znamená, že naše nastavení bylo úspěšné! Existuje jen hrstka shots (~5 %), kde byl Bobův qubit naměřen ve stavu 1|1\rangle. To by logicky nemělo být možné. Všechny moderní kvantové počítače však trpí šumem a chybami v mnohem větší míře než klasické počítače. A kvantová korekce chyb je stále rozvíjejícím se oborem.

Experiment 2: Teleportace přes procesor

Nejzajímavější aspekt kvantové teleportace je pravděpodobně to, že kvantový stav lze teleportovat na velké vzdálenosti okamžitě (přestože klasická komunikace dalších hradel okamžitá není). Jak již bylo řečeno, nemůžeme qubity odlomit od procesoru a přemísťovat je. Informaci ale můžeme přesunout z jednoho qubitu na druhý, dokud qubity zapojené do teleportace nejsou na opačných stranách procesoru. Zopakujme kroky, které jsme provedli výše, ale tentokrát vytvoříme větší obvod s dostatkem qubitů, aby pokryl celý procesor.

Krok 1: Namapuj svůj problém na kvantový obvod

Tentokrát se qubity odpovídající Alence a Bobovi budou měnit. Nebudeme tedy pojmenovávat jediný qubit „A" a druhý „B". Místo toho qubity očíslujeme a použijeme proměnné k reprezentaci aktuální polohy informace na qubitech patřících Alence a Bobovi. Všechny ostatní kroky kromě swap hradel jsou stejné jako dříve.

# Step 1: Map

# Define registers
qr = QuantumRegister(13, "q")

qc = QuantumCircuit(qr, cr)

# Define registers
secret = QuantumRegister(1, "Q")
ebitsa = QuantumRegister(6, "A")
ebitsb = QuantumRegister(6, "B")
# q = ClassicalRegister(1, "q meas")
# a = ClassicalRegister(1, "a")
# b = ClassicalRegister(1, "b")
cr = ClassicalRegister(3, "c")
qc = QuantumCircuit(secret, ebitsa, ebitsb, cr)

# We'll start Alice in the middle of the circuit, then move information outward in both directions.
Alice = 5
Bob = 0
qc.h(ebitsa[Alice])
qc.cx(ebitsa[Alice], ebitsb[Bob])

# Starting with Bob and Alice in the center, we swap their information onto adjacent qubits, until the information is on distant qubits.

for n in range(Alice):
qc.swap(ebitsb[Bob], ebitsb[Bob + 1])
qc.swap(ebitsa[Alice], ebitsa[Alice - 1])
Alice = Alice - 1
Bob = Bob + 1

qc.barrier()

# Create a random state for Alice (qubit zero)
np.random.seed(42) # fixing seed for repeatability
# theta = np.random.uniform(0.0, 1.0) * np.pi #from 0 to pi
theta = 0.3
varphi = np.random.uniform(0.0, 2.0) * np.pi # from 0 to 2*pi

qc.u(theta, varphi, 0.0, secret)

# Entangle Alice's two qubits
qc.cx(secret, ebitsa[Alice])
qc.h(secret)

qc.barrier()

# Make measurements of Alice's qubits and store the results in the classical register.
qc.measure(ebitsa[Alice], cr[1])
qc.measure(secret, cr[0])

# Send instructions to Bob's qubits based on the outcome of Alice's measurements.
with qc.if_test((cr[1], 1)):
qc.x(ebitsb[Bob])
with qc.if_test((cr[0], 1)):
qc.z(ebitsb[Bob])

qc.barrier()

# Invert the preparation we did for Carl's qubit so we can check whether we did this correctly.
qc.u(theta, varphi, 0.0, ebitsb[Bob]).inverse() # inverse of u(theta,varphi,0.0)
qc.measure(ebitsb[Bob], cr[2]) # add measurement gate

qc.draw("mpl")

Output of the previous code cell

Z diagramu obvodu vidíš, že logické kroky jsou stejné. Jediný rozdíl je, že jsme použili swap hradla k přesunutí stavu Alenčina qubitu z qubitu 6 (A5A_5) na qubit 1 (A0A_0), hned vedle Q. A použili jsme swap hradla k přesunutí Bobova počátečního stavu z qubitu 7 (B0B_0) na qubit 12 (B5B_5). Všimni si, že stav qubitu 12 vůbec nesouvisí s tajným stavem Q, dokud nejsou provedena měření na vzdálených qubitech 0 a 1, a stav qubitu 12 se nerovná tajnému stavu, dokud nejsou aplikována podmíněná hradla XX a ZZ.

Krok 2: Optimalizace obvodu

Obvykle, když používáme správce průchodů k transpilaci a optimalizaci obvodů, má smysl nastavit optimization_level = 3, protože chceme, aby naše obvody byly co nejefektivnější. V tomto případě však nemáme žádný výpočetní důvod k přenosu stavů z qubitů 6 a 7 na qubity 1 a 12. To jsme udělali jen proto, abychom demonstrovali teleportaci na vzdálenost. Pokud bychom požádali správce průchodů o optimalizaci obvodu, zjistil by, že pro tato swap hradla neexistuje logický důvod, a odstranil by je a provedl by operace hradel na sousedních qubitech. Pro tento speciální případ tedy nastavíme optimization_level = 0.

# Step 2: Transpile
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager

target = backend.target
pmzero = generate_preset_pass_manager(target=target, optimization_level=0)

qc_isa_zero = pmzero.run(qc)

print(qc_isa_zero.depth())
105

Kde se tyto qubity na kvantovém procesoru nacházejí, můžeme vizualizovat pomocí funkce plot_circuit_layout.

Krok 3: Spuštění

Stejně jako dříve doporučujeme spustit výpočet na skutečných kvantových počítačích IBM. Pokud jsi vyčerpal/a bezplatné měsíční využití, klidně odkomentuj buňky simulátoru pro spuštění na simulátoru.

# This required 5 s to run on a Heron r2 processor on 10-28-24
job = sampler.run([qc_isa_zero])
# job = sampler_sim.run([qc_isa_zero])
counts = job.result()[0].data.c.get_counts()
from qiskit.visualization import plot_histogram

plot_histogram(counts)

Output of the previous code cell

Krok 4: Klasický post-processing

Opět vidíme, že pravděpodobnosti možných výsledků pro Alenčiny qubity jsou celkem rovnoměrné. Existuje silná preference pro nalezení Bobova qubitu ve stavu 0|0\rangle po invertování tajného kódu, což znamená velkou pravděpodobnost, že jsme tajný stav správně teleportovali přes procesor z Q na Boba (qubity 0 na 12). Poznamenejme ale, že nyní je přibližně vyšší šance nenaměřit 0|0\rangle pro Boba. To je důležitá lekce kvantového výpočtu: čím více hradel, zejména vícekvantových hradel jako jsou swap hradla, tím více šumu a chyb se projeví.

Otázky

Instruktoři mohou požádat o verze těchto notebooků s odpovědmi a pokyny k zařazení do běžných osnov vyplněním tohoto krátkého dotazníku o způsobu použití notebooků.

Klíčové koncepty

  • Qubity mohou být provázané (entanglované), což znamená, že měření jednoho qubitu ovlivní nebo dokonce určí stav druhého qubitu.
  • Provázanost se liší od klasických korelací; například qubity A a B mohou být v superpozici stavů jako α000+α111.\alpha_0|00\rangle+\alpha_1|11\rangle. Stav A nebo B může být přírodou neurčený, a přesto mohou být A a B zaručeně ve stejném stavu.
  • Prostřednictvím kombinace provázanosti a měření můžeme přenést stav (který může nést informaci) z jednoho qubitu na druhý. Tento přenos lze provést i na velké vzdálenosti — tomu říkáme kvantová teleportace.
  • Kvantová teleportace se opírá o kvantová měření, která jsou probabilistická. Klasická komunikace může být proto nutná k doladění teleportovaných stavů. To zabraňuje kvantové teleportaci přenášet informaci rychleji než světlo. Kvantová teleportace neporušuje relativitu ani kauzalitu.
  • Moderní kvantové počítače jsou náchylnější k šumu a chybám než klasické počítače. Počítej s chybovostí několika procent.
  • Čím více hradel v sekvenci přidáš (zejména dvouqubitových hradel), tím více chyb a šumu lze očekávat.

Otázky pravda/nepravda

  1. P/N Kvantová teleportace lze použít k přenosu informací rychleji než světlo.
  2. P/N Moderní experimentální důkazy naznačují, že kolaps kvantového stavu se šíří rychleji než světlo.
  3. P/N V Qisku jsou qubity ve stavech uspořádány tak, že qubit s nejnižším číslem je zcela vpravo, tedy q3,q2,q1,q0|q_3,q_2,q_1, q_0\rangle

Otázky s výběrem odpovědi

  1. Qubity A a B jsou provázány, poté odděleny na velkou vzdálenost dd. Qubit A je změřen. Které tvrzení o rychlosti, jakou je ovlivněn stav qubitu B, je správné?
  • a. Qubit B je ovlivněn okamžitě, v rámci experimentální přesnosti, v dosud provedených experimentech.
  • b. Qubit B je ovlivněn po době d/cd/c, což znamená, že kvantový stav „kolabuje" přibližně rychlostí světla, v rámci experimentální přesnosti.
  • c. Qubit B je ovlivněn teprve po proběhnutí klasické komunikace, tedy v době delší než d/cd/c.
  • d. Žádná z výše uvedených možností.
  1. Vzpomeňme, že pravděpodobnost měření souvisí s amplitudami kvantových stavů. Například pokud je qubit zpočátku ve stavu α00+α11,\alpha_0|0\rangle+\alpha_1 |1\rangle, pravděpodobnost naměření stavu 0|0\rangle je α02.|\alpha_0|^2. Ne všechny sady měření přesně odpovídají těmto pravděpodobnostem, a to kvůli konečnému vzorkování (stejně jako hod mincí může přinést dvakrát za sebou hlavu). Níže uvedený histogram měření by mohl odpovídat kterému z následujících kvantových stavů? Vyber nejlepší odpověď.

entangled_teleportation_fig

  • a. 0|0\rangle
  • b. 12(01)\frac{1}{\sqrt{2}}\left(|0\rangle-|1\rangle\right)
  • c. 12(0+1)\frac{1}{\sqrt{2}}\left(|0\rangle+|1\rangle\right)
  • d. 450+351\frac{4}{5}|0\rangle+\frac{3}{5}|1\rangle
  • e. 350+451\frac{3}{5}|0\rangle+\frac{4}{5}|1\rangle
  1. Které z následujících stavů ukazují provázané qubity A a B? Vyber všechny správné odpovědi.
  • a. 12(0B0A+1B1A)\frac{1}{\sqrt{2}}\left(|0\rangle_B|0\rangle_A+|1\rangle_B|1\rangle_A\right)
  • b. 450B0A+351B1A\frac{4}{5}|0\rangle_B|0\rangle_A+\frac{3}{5}|1\rangle_B|1\rangle_A
  • c. 12(0B1A1B0A)\frac{1}{\sqrt{2}}\left(|0\rangle_B|1\rangle_A-|1\rangle_B|0\rangle_A\right)
  • d. 12(0B0A+1B0A)\frac{1}{\sqrt{2}}\left(|0\rangle_B|0\rangle_A+|1\rangle_B|0\rangle_A\right)
  • e. 0B0A|0\rangle_B|0\rangle_A
  1. V tomto modulu jsme připravili provázaný stav: 12(0B0A+1B1A).\frac{1}{\sqrt{2}}\left(|0\rangle_B|0\rangle_A+|1\rangle_B|1\rangle_A\right). Existuje ale mnoho dalších provázaných stavů, které by bylo možné použít pro podobný protokol. Který ze stavů níže by mohl vést k histogramu měření dvou qubitů jako na následujícím obrázku? Vyber nejlepší odpověď.

entangled_teleportation_fig_0110

  • a. 12(0B0A+1B1A)\frac{1}{\sqrt{2}}\left(|0\rangle_B|0\rangle_A+|1\rangle_B|1\rangle_A\right)
  • b. 450B0A+351B1A\frac{4}{5}|0\rangle_B|0\rangle_A+\frac{3}{5}|1\rangle_B|1\rangle_A
  • c. 12(0B1A1B0A)\frac{1}{\sqrt{2}}\left(|0\rangle_B|1\rangle_A-|1\rangle_B|0\rangle_A\right)
  • d. 450B1A+351B0A\frac{4}{5}|0\rangle_B|1\rangle_A+\frac{3}{5}|1\rangle_B|0\rangle_A
  • e. 0B0A|0\rangle_B|0\rangle_A

Diskusní otázky

  1. Popiš protokol kvantové teleportace od začátku do konce svému partnerovi/skupině. Zjistěte, zda mají co dodat nebo zda mají otázky.

  2. Je na počátečním provázaném stavu mezi Alenkou a Bobem 12(0B0A+1B1A)\frac{1}{\sqrt{2}}\left(|0\rangle_B|0\rangle_A+|1\rangle_B|1\rangle_A\right) něco jedinečného? Pokud ano, co je na něm jedinečného? Pokud ne, jaké jiné provázané stavy bychom mohli použít?