Užívateľ:Viliam: Rozdiel medzi revíziami

Z bur.sk
Skočit na navigaci Skočit na vyhledávání
Riadok 1: Riadok 1:
 
https://arxiv.org/pdf/1803.05316.pdf
 
https://arxiv.org/pdf/1803.05316.pdf
 +
An Invitation to Applied Category Theory
  
Terry Rudolph
 
http://www.qisforquantum.org/
 
  
Populárne vysvetlenia modernej fyziky majú málo podrobností, veľa žargónu, pochybné analógie, a tajomné komentáre o podstate fyzikálnej reality. Plus historické anekdoty, ako všetky tieto objavy zmiatli známych fyzikov.
+
https://quantum.country/
 +
https://michaelnielsen.org/blog/quantum-computing-for-the-determined/
  
NOT: 0 - 1, 1 - 0.
+
Slovo "superpozícia" znamená lineárna kombinácia stavov.
  
CNOT: 00 - 00, 01 - 01, 10 - 11, 11 - 10. Prvý bit je "control", druhý "target".
 
  
CCNOT: 00x - 00x, 01x - 01x, 10x - 10x, 110 - 111, 111 - 110.
 
  
SWAP: 00 - 00, 01 - 10, 10 - 01, 11 - 11.
+
Ak máme hodnotu "a*k0 + b*k1", nevieme zistiť čísla "a" a "b".
 +
Vieme však s pravdepodobnosťou "|a*a|" dostať hodnotu 0 (čím sa hodnota zmení na k0), a s pravdepodobnosťou "|b*b|" hodnotu 1 (čím sa hodnota zmení na k1).
  
CSWAP: 0xy - 0xy, 1xy - 1yx.
+
Kvantová brána je komplexná matica 2×2, ktorá zachováva jednotkovú dĺžku vektorov.
 +
Aby to platilo, musí byť [[a b] [c d]] × [[a' c'][b' d']] = [[1 0] [0 1]].
  
CNOT(#3: #2) CSWAP (#1: #2 #3) CNOT (#3: #2) = CCNOT(#1 #2: #3)
+
rotácia = [[cos q -sin q] [sin q cos q]]
0x0 - 0x0 - 0x0 - 0x0
 
0x1 - 0X1 - 0X1 - 0x1
 
100 - 100 - 100 - 100
 
101 - 111 - 111 - 101
 
110 - 110 - 101 - 111
 
111 - 101 - 110 - 110
 
  
  
P
+
CNOT × [|+> |->] = [|-> |->]  = ako je to možné?
0 - 0 | 1
 
1 - 0 | 1
 
  
P P = I
 
0 - ? - 0
 
1 - ? - 1
 
  
P: 0 - { 1: 0, 1: 1 }, 1 { 1: 0, -1: 1 }
+
Toffoli gate
 +
t k00z = k00z
 +
t k01z = k01z
 +
t k10z = k10z
 +
t k110 = k111
 +
t k111 = k110
  
P P:
+
Toffoli gate sa dá poskladať z CNOT a jednoqubitových brán, konkrétne z [[1 0][0 0.7+0.7i]] a jeho daggeru.
0 - { 1: 0, 1: 1 } - { 1: 0, 1: 1, 1: 0, -1: 1 = 2: 0 } = 0
 
1 - { 1: 0, -1: 1 } - { 1: 0, 1: 1, -1: 0, 1: 1 = 2: 1 } = 1
 
  
  
Mame 8 predmetov, ocislovanych binarne 000 az 111, bud su 4 z nich dobre alebo ziaden.
+
Uncomputation:
Mame suciastku, ktora ako prve 3 inputy dostane kod predmetu, stvrty je jednotka, prve tri vrati nezmenene, stvrty vrati ci dany predmet je dobry.
+
kvantové brány sú reverzibilné
Tuto suciastku mozeme pouzit iba raz.
+
dajú sa nimi simulovať klasické výpočty, ale potrebujeme pomocné bity, ktoré sa naplnia medzivýpočtami
 +
ak chceme výpočet opakovať, potrebujeme pomocné bity vyčistiť
 +
postup:
 +
urobíme výpočet
 +
pomocou CNOT skopírujeme výsledok výpočtu do výstupných bitov
 +
revertneme výpočet
  
0001 P(#1) P(#2) P(#3) P(#4) Test(#1 #2 #3: #4) P(#1) P(#2) P(#3)
+
Hľadanie:
 +
začíname v stave 000...
 +
aplikujeme H na každý vstupný qubit, dostaneme rovnomerne pokryté všetky možnosti
 +
klasicky vypočítame, či je riešenie dobré a podľa toho nastavíme "solution bit"
 +
skopírujeme "solution bit" a revertneme výpočet
  
ak su vsetky predmety zle
 
{ 000 001 010 011 100 101 110 111 }
 
{ 000 100 001 101 010 110 011 111 000 -100 001 -101 010 -110 011 -111 } = { 000 001 010 011 }
 
{ 000 010 001 011 000 -010 001 -011 } = { 000 001 }
 
{ 000 001 000 -001 } = 000
 
{ 0000 -0001 } = 000?
 
  
ak su dobre napriklad 001, 010, 101, 111
+
Ak máme dva qubity v stave [a, b, c, d] a odmeriame prvý,
{ 0000 0010 0100 0110 1000 1010 1100 1110 -0001 -0011 -0101 -0111 -1001 -1011 -1101 -1111 }
+
dostaneme 0 s pravdepodobnosťou |a|^2 + |b|^2
{ 0000 0011 0101 0110 1000 1011 1100 1111 -0001 -0010 -0100 -0111 -1001 -1010 -1101 -1110 }
+
druhý qubit je v stave [a / |a|^2 + |b|^2, b / |a|^2 + |b|^2]
P(#1) { 0000 1000 0011 1011 0101 1101 0110 1110 0000 -1000 0011 -1011 0100 -1100 0111 -1111 -0001 -1001 -0010 -1010 -0100 -1100 -0111 -1111 -0001 1001 -0010 1010 -0101 1101 -0110 1110 }
+
dostaneme 1 s pravdepodobnosťou |c|^2 + |d|^2,
= { 0000 -0001 -0010 0011 -1100 1101 1110 -1111 }
+
druhý qubit je v stave [c / |c|^2 + |d|^2, b / |c|^2 + |d|^2]
P(#2) { 0000 0100 -0001 -0101 -0010 -0110 0011 0111 -1000 1100 1001 -1101 1010 -1110 -1011 1111 }
 
P(#3) { 0000 0010 0100 0110 -0001 -0011 -0101 -0111 -0000 0010 -0100 0110 0001 -0011 0101 -0111 -1000 -1010 1100 1110 1001 1011 -1101 -1111 1000 -1010 -1100 1110 -1001 1011 1101 -1111 }
 
= { 0010 -0011 0110 -0111 -1010 1011 1110 -1111 } = ??1?
 
  
dá sa zovšeobecniť na 2^N predmetov, z ktorých je buď polovica dobrá alebo sú všetky zlé
+
Ak máme dva qubity v stave [a b c d] a odmeriame prvý v bázach e0 = [√½ √½] a e1 = [√½ -√½],
 +
[1 0] = √½(e0 + e1)
 +
[0 1] = √½(e0 - e1)
 +
takže [a, b, c, d] = √½(a+c)[e0 0] + √½(b+d)[e0 1] + √½(a-c)[e1 0] + √½(b-d)[e1 1]
 +
pravdepodobnosť e0 je (a+c)^2+(b+d)^2 /2
  
asi 20% problémov, ktoré dnes riešia superpočítače, by boli rýchlejšie kvantové (chemické reakcie, dizajn nových molekúl, machine learning)
+
Ak máme bázy b0 = 00+11, b1 = 10+01, b2 = 00-11, b3 = 10-01
plus problémy, ktoré sa dnes ani nepokúšame riešiť, lebo by to klasické počítače nezvládali
+
00 = b0+b2
 +
01 = b1-b3
 +
10 = b1+b3
 +
11 = b0-b2
  
 +
https://www.youtube.com/watch?v=NZqRUH1uSlE
 +
vývoj kvantového systému v čase
  
verzia pre 2 predmety: 01 P(#1) P(#2) Test(#1: #2) P(#1)
 
{ 01 11 }
 
{ 00 -01 10 -11 }
 
ak oba zlé
 
{ 00 -01 10 -11 }
 
{ 00 10 -01 -11 00 -10 -01 11 } = { 00 -01 } = 0?
 
ak 0 dobrý
 
{ 01 -00 10 -11 }
 
{ 01 11 -00 -10 00 -10 -01 11 } = { -10 11 } = 1?
 
ak 1 dobrý
 
{ 00 -01 11 -10 }
 
{ 00 10 -01 -11 01 -11 -00 10 } = { 10 -11 } = 1?
 
  
verzia pre 4 predmety: 001 P(#1) P(#2) P(#3) Test(#1 #2: #3) P(#1) P(#2)
 
{ 001 011 101 111 } = P(#1) P(#2)
 
{ 000 -001 010 -011 100 -101 110 -111 } = P(#1) P(#2) P(#3)
 
ak všetky štyri zlé
 
{ 000 100 -001 -101 010 110 -011 -111 000 -100 -001 101 010 -110 -011 111 } = { 000 -001 010 -011 } = T P(#1)
 
{ 000 010 -001 -011 000 -010 -001 011 } = { 000 -001 } = 00? = T P(#1) P(#2)
 
ak 00 a 01 dobré
 
{ 001 -000 011 -010 100 -101 110 -111 } = T
 
{ 001 101 -000 -100 011 111 -010 -110 000 -100 -001 101 010 -110 -011 111 } = { -100 101 -110 111 } = T P(#1)
 
{ -100 -110 101 111 -100 110 101 -111 } = { -100 101 } = 10? = T P(#1) P(#2)
 
ak 00 a 10 dobré
 
{ 001 -000 010 -011 101 -100 110 -111 } = T
 
{ 001 101 -000 -100 010 110 -011 -111 001 -101 -000 100 010 -110 -011 111 } = { -000 001 010 -011 } = T P(#1)
 
{ -000 -010 001 011 000 -010 -001 011 } = { -010 011 } = 01? = T P(#1) P(#2)
 
ak 00 a 11 dobré
 
{ 001 -000 010 -011 100 -101 111 -110 } = T
 
{ 001 101 -000 -100 010 110 -011 -111 000 -100 -001 101 011 -111 -010 110 } = { -100 101 110 -111 } = T P(#1)
 
{ -100 -110 101 111 100 -110 -101 111 } = { -110 111 } = 11? = T P(#1) P(#2)
 
ak 01 a 10 dobré
 
{ 000 -001 011 -010 101 -100 110 -111 } = T
 
{ 000 100 -001 -101 011 111 -010 -110 001 -101 -000 100 010 -110 -011 111 } = { 100 -101 -110 111 } = T P(#1)
 
{ 100 110 -101 -111 -100 110 101 -111 } = { 110 -111 } = 11? = T P(#1) P(#2)
 
  
 +
.
  
hra na telepatiu:
 
hrá sa 4000 kôl, vždy sa hodia 2 mince, každý hráč vidí jednu, nemôžu komunikovať
 
ak padne TT a hráči povedia YY, vyhrávajú $1000; keďže sa to stane cca v každom štvrtom kole, teoreticky môžu dokopy vyhrať milión; za úspech považujeme aspoň 20 000
 
ak padne HH a hráči povedia YY, prehrávajú všetko
 
ak padne TH a hráči povedia YN (TY+HN), prehrávajú všetko
 
  
deterministické stratégie nefungujú:
+
Pri modelovaní kvantového počítača potrebujeme vedieť amplitúdy všetkých možných stavov qubitov.
ak na T povedia N, nikdy nevyhrajú
+
Počítač s N qubitmi teda reprezentuje vektor s 2^N komplexnými číslami.
ak na T povedia Y, potom ak na H povedia Y, riskujú prehru "HY+HY", ak na H povedia N, riskujú prehru "TY+HN"
+
Pri vektore nie je podstatné poradie čísel, je to skôr mapa z P(B) do C.
náhodné stratégie sú len lineárna kombinácia horeuvedených; zníženie obrovského rizika prehry primerane zníži riziko výhry
+
Tradične je poradie stavov pre jeden qubit ["q0=0", "q0=1"], pre dva qubity ["q0=0 q1=0", "q0=0 q1=1", "q0=1 q1=0", "q0=1 q1=1"] čiže [|00> |01> |10> |11>], atď.
  
riešenie: hráči prinesú 4000 párov previazaných častíc v stave { 00 01 10 }
+
[1 0]  =  |0>  = qubit je (klasicky) vypnutý
ak padne H, hráč odmeria časticu a povie 1:Y, 0:N
+
[0 1]  =  |1>  = qubit je (klasicky) zapnutý
ak padne T, hráč najprv urobí P, potom odmeria časticu a povie 1:Y, 0:N
+
[a b]  =  a|0> + b|1>  = qubit je v superpozícii; "a" a "b" sú komplexné čísla; "|a|^2 + |b|^2 = 1"
  
ak padlo HH, hráči povedia 1/3 NN, 1/3 NY, 1/3 YN
+
Vektor "ket" je zvislý.
ak padlo TH, { 00 01 10 } P(#1) { 00 10 01 11 00 -10 } = { 00 00 01 11 } = 2/3 NN, 1/3 NY, 1/3 YY
+
Vektor "bra" je vodorovný a komplexné hodnoty majú otočené znamienko pri imaginárnej časti; čiže "<x| = |x>†".
ak padlo TT, { 00 01 10 } P(#1) { 00 10 01 11 00 -10 } = { 00 00 01 11 } P(#2) { 00 01 00 01 00 -01 10 -11 } = { 00 00 00 01 10 -11 } = 3/4 NN, 1/12 NY, 1/12 YN, 1/12 YY
+
Kedže "x × x* = |x|^2", tak "<x|x> = <x| × |x> = | |x> |^2".
čiže nikdy neprehrajú, a vyhrajú cca 1000/12 = 83 kôl, zarobia 83 333
 
  
 +
Skrátené zápisy
 +
[√½  √½] = |+>
 +
[√½ -√½] = |->
  
čiastočné pozorovanie: majme P(#1) P(#2) CCNOT(#1 #2: #3) = { 000, 010, 100, 111 }
 
ak pozrieme prvú guľu, je to { 000, 001 } + { 100, 111 }, teda 1/2: 0 { 00, 10 } = 0 { 0, 1 } 0; 1/2: 1 { 00, 11 }
 
ak pozrieme tretiu guľu, je to { 000, 010, 100 } + { 111 }, teda 3/4: { 00, 01, 10 } 0; 1/4: 11 1
 
  
 +
Fyzickú operáciu s qubitmi reprezentuje štvorcová matica komplexných čísel, mapa z P(B)×P(B) do C.
  
rôzne kolapsy:
+
  ×  [p]
začíname so stavom { 00, 01, 10 }
+
          [q]
Alica sa rozhodne, či odmeria prvý bit, alebo urobí P(#1) a potom ho odmeria
+
[a b] [ap+bq]
ak odmeria, 2/3: 0 { 0, 1 }; 1/3: 1 0
+
[c d] [cp+dq]
ak P(#1), { 00, 10, 01, 11, 00 -10 } = { 00, 00, 01, 11 }
 
ak odmeria, 5/6: 0 { 0, 0, 1 }; 1/6: 1 1
 
  
 +
Intuitívne, stĺpec v matici je východiskový stav, riadok v matici je cieľový stav.
 +
Ak aplikujeme viac operácií, napríklad najprv A, potom B, nakoniec C, výsledok je: C(B(Ax)) = CBAx
  
prvý bit 0 alebo { 0, 1 }, druhý je 0 alebo { 0, 1 }, vieme rozoznať, ktorý je to prípad? aspoň ktorý to určite nebol
+
 
aplikujeme CNOT(#1: #2) P(#1) CNOT(#1: #2)
+
Ak je prvý qubit [a b] a druhý [c d], spolu sú [ac ad bc bd].
0 0 = 00 -- 00 -- { 00, 10 } -- { 00, 11 }
+
Čiže ak máme stav [a b c d], kde ad = bc, sú to dva nepreviazané qubity.
0 { 0, 1 } = { 00, 01 } -- { 00, 01 } -- { 00, 10, 01, 11 } -- { 00, 11, 01, 10 }
+
 
{ 0, 1 } 0 = { 00, 10 } -- { 00, 11 } -- { 00, 10, 01, -11 } -- { 00, 11, 01, -10 }
+
Matica [[a b][c d]] aplikovaná na prvý alebo druhý z dvoch qubitov:
{ 0, 1 } { 0, 1 } = { 00, 01, 10, 11 } -- { 00, 01, 11, 10 } -- { 00, 10, 01, 11, 01, -11, 00, -10 } = { 00, 01 } -- { 00, 01 }
+
[a 0 b 0]  [a b 0 0]
pozrieme druhý bit, ak je 0 aplikujeme P(#1), pozrieme prvý bit
+
[0 a 0 b]  [c d 0 0]
{ 00, 11 } -- 11 | 00, 10
+
[c 0 d 0]  [0 0 a b]
{ 00, 11, 01, 10 } -- 01, 11 | 00
+
[0 c 0 d]  [0 0 c d]
{ 00, 11, 01, -10 } -- 01, 11 | 10
+
aplikovaná na prvý, druhý, alebo tretí z troch qubitov:
{ 00, 01 } -- 01 | 00, 10
+
[a 0 0 0 b 0 0 0]  [a 0 b 0 0 0 0 0]  [a b 0 0 0 0 0 0]
00 = nebolo to { 0, 1 } 0
+
[0 a 0 0 0 b 0 0]  [0 a 0 b 0 0 0 0]  [c d 0 0 0 0 0 0]
01 = nebolo to 0 0
+
[0 0 a 0 0 0 b 0]  [c 0 d 0 0 0 0 0]  [0 0 a b 0 0 0 0]
10 = nebolo to 0 { 0, 1 }
+
[0 0 0 a 0 0 0 b]  [0 c 0 d 0 0 0 0]  [0 0 c d 0 0 0 0]
11 = nebolo to { 0, 1 } { 0, 1 }
+
[c 0 0 0 d 0 0 0]  [0 0 0 0 a 0 b 0]  [0 0 0 0 a b 0 0]
 +
[0 c 0 0 0 d 0 0]  [0 0 0 0 0 a 0 b]  [0 0 0 0 c d 0 0]
 +
[0 0 c 0 0 0 d 0]  [0 0 0 0 c 0 d 0]  [0 0 0 0 0 0 a b]
 +
[0 0 0 c 0 0 0 d]  [0 0 0 0 0 c 0 d]  [0 0 0 0 0 0 c d]
 +
 
 +
Matica [[a b c d][e f g h][i j k l][m n o p]] aplikovaná v opačnom poradí:
 +
[...
 +
 
 +
 
 +
 
 +
.
 +
 
 +
X[p q] = [q p]
 +
X[1 0] = [0 1]  čiže  X|0> = |1>
 +
X[0 1] = [1 0]  čiže  X|1> = |0>
 +
 
 +
Y[p q] = [-qi pi]
 +
Y[1 0] = [0  i]  čiže  Y|0> = i|1>
 +
Y[0 1] = [-i 0]  čiže  Y|1> = -i|0>
 +
 
 +
Z[p q] = [p -q]
 +
Z[1 0] = [1  0]  čiže  Y|0> = |0>
 +
Z[0 1] = [0 -1]  čiže  Y|1> = -|1>
 +
 
 +
H[p q] = [p+q p-q]÷√2
 +
H[1 0] = [1  1]÷√2  čiže  H|0> = √½|0> + √½|1>
 +
H[0 1] = [1 -1]÷√2  čiže  H|0> = √½|0> - √½|1>
 +
 
 +
XX = I
 +
YY = I
 +
ZZ = I
 +
HH = I
 +
 
 +
|H[p q]|^2 = |√½[p+q p-q]|^2 = ½((p+q)^2 + (p-q))^2) = ½(pp + 2pq + qq + pp - 2pq + qq) = pp + qq
 +
 
 +
.
 +
H = [1  1]
 +
[1 -1]÷√2
 +
 
 +
[√½  0  √½  0]  [√½  √½  0  0]
 +
[ 0 √½  0  √½]  [√½ -√½  0  0]
 +
[√½  0 -√½  0]  [ 0  0 √½  √½]
 +
[ 0 √½  0 -√½]  [ 0  0 √½ -√½]
 +
 
 +
.
 +
 
 +
X = [0 1]
 +
[1 0]
 +
 
 +
[0 0 1 0]  [0 1 0 0]
 +
[0 0 0 1]  [1 0 0 0]
 +
[1 0 0 0]  [0 0 0 1]
 +
[0 1 0 0]  [0 0 1 0]
 +
 
 +
.
 +
 
 +
Y = [0 -i]
 +
[i  0]
 +
 
 +
.
 +
Z
 +
[1  0]
 +
[0 -1]
 +
 
 +
[1 0  0  0]  [1  0 0  0]
 +
[0 1  0  0]  [0 -1 0  0]
 +
[0 0 -1  0]  [0  0 1  0]
 +
[0 0  0 -1]  [0  0 0 -1]
 +
 
 +
.
 +
 
 +
CNOT - CN, NC
 +
[1 0 0 0] [1 0 0 0]
 +
[0 1 0 0] [0 0 0 1]
 +
[0 0 0 1] [0 0 1 0]
 +
[0 0 1 0] [0 1 0 0]
 +
 
 +
Toffoli
 +
[1 0 0 0 0 0 0 0]
 +
[0 1 0 0 0 0 0 0]
 +
[0 0 1 0 0 0 0 0]
 +
[0 0 0 1 0 0 0 0]
 +
[0 0 0 0 1 0 0 0]
 +
[0 0 0 0 0 1 0 0]
 +
[0 0 0 0 0 0 0 1]
 +
[0 0 0 0 0 0 1 0]
 +
 
 +
.
 +
 
 +
 
 +
Superhusté kódovanie
 +
https://www.youtube.com/watch?v=w5rCn593Dig
 +
 
 +
Vytvoríme dva previazané qubity, jeden pošleme Alici, druhý Bobovi
 +
0--[H]--[C]-
 +
0-------[N]-
 +
[1] [√½] [√½]
 +
[0] [ 0] [ 0]
 +
[0] [√½] [ 0]
 +
[0] [ 0] [√½]
 +
 
 +
Alica má dva klasické bity, a podľa ich hodnoty urobí so svojím qubitom nasledujúcu operáciu: 00 = I, 01 = X, 10 = Z, 11 = XZ (najprv Z, potom X), výsledok pošle Bobovi
 +
00   01  10    11
 +
[√½] [ 0] [ √½] [  0]
 +
[ 0] [√½] [  0] [-√½]
 +
[ 0] [√½] [  0] [ √½]
 +
[√½] [ 0] [-√½] [  0]
 +
 
 +
Bob má dva qubity 00+11, 10+01, 00-11, 10-01 (všetky štyri možnosti sú na seba kolmé), revertne pôvodné previazanie, a odmeria ich.
 +
-----[C]--[H]
 +
-----[N]-----
 +
[√½] [√½] [1] = 00
 +
[ 0] [ 0] [0]
 +
[ 0] [√½] [0]
 +
[√½] [ 0] [0]
 +
 
 +
[ 0] [ 0] [0]
 +
[√½] [√½] [1] = 01
 +
[√½] [ 0] [0]
 +
[ 0] [√½] [0]
 +
 
 +
[ √½] [ √½] [0]
 +
[  0] [  0] [0]
 +
0] [-√½] [1] = 10
 +
[-√½] [  0] [0]
 +
 
 +
[  0] [  0] [ 0]
 +
[-√½] [-√½] [ 0]
 +
[ √½] [  0] [ 0]
 +
[  0] [ √½] [-1] = 11
 +
 
 +
.
 +
 
 +
Alica má tajný qubit [a b].
 +
Vytvoríme dva previazané qubity [√½ 0 0 √½], jeden pošleme Alici, druhý Bobovi
 +
[a√½ 0 0 a√½ b√½ 0 0 b√½] = a×000 + a×011 + b×100 + b×111
 +
 
 +
see: https://www.youtube.com/watch?v=3wZ35c3oYUE
 +
 
 +
 
 +
CNOT zo source qubitu na previazaný, Hadamard na source qubit
 +
odmeriame previazaný qubit; ak je 1, povieme adresátovi, nech na svojom qubite spraví X
 +
odmeriame source qubit; ak je 1, povieme adresátovi, nech na svojom qubite spraví Z
 +
teraz je adresátov qubit v rovnakom stave, ako bol source qubit na začiatku
 +
aj keby niekto odpočúal poslané informácie, nič mu to nepovie
 +
 
 +
.

Verzia zo dňa a času 16:01, 12. máj 2023

https://arxiv.org/pdf/1803.05316.pdf An Invitation to Applied Category Theory


https://quantum.country/ https://michaelnielsen.org/blog/quantum-computing-for-the-determined/

Slovo "superpozícia" znamená lineárna kombinácia stavov.


Ak máme hodnotu "a*k0 + b*k1", nevieme zistiť čísla "a" a "b". Vieme však s pravdepodobnosťou "|a*a|" dostať hodnotu 0 (čím sa hodnota zmení na k0), a s pravdepodobnosťou "|b*b|" hodnotu 1 (čím sa hodnota zmení na k1).

Kvantová brána je komplexná matica 2×2, ktorá zachováva jednotkovú dĺžku vektorov. Aby to platilo, musí byť [[a b] [c d]] × [[a' c'][b' d']] = [[1 0] [0 1]].

rotácia = [[cos q -sin q] [sin q cos q]]


CNOT × [|+> |->] = [|-> |->] = ako je to možné?


Toffoli gate t k00z = k00z t k01z = k01z t k10z = k10z t k110 = k111 t k111 = k110

Toffoli gate sa dá poskladať z CNOT a jednoqubitových brán, konkrétne z [[1 0][0 0.7+0.7i]] a jeho daggeru.


Uncomputation: kvantové brány sú reverzibilné dajú sa nimi simulovať klasické výpočty, ale potrebujeme pomocné bity, ktoré sa naplnia medzivýpočtami ak chceme výpočet opakovať, potrebujeme pomocné bity vyčistiť postup: urobíme výpočet pomocou CNOT skopírujeme výsledok výpočtu do výstupných bitov revertneme výpočet

Hľadanie: začíname v stave 000... aplikujeme H na každý vstupný qubit, dostaneme rovnomerne pokryté všetky možnosti klasicky vypočítame, či je riešenie dobré a podľa toho nastavíme "solution bit" skopírujeme "solution bit" a revertneme výpočet


Ak máme dva qubity v stave [a, b, c, d] a odmeriame prvý, dostaneme 0 s pravdepodobnosťou |a|^2 + |b|^2 druhý qubit je v stave [a / |a|^2 + |b|^2, b / |a|^2 + |b|^2] dostaneme 1 s pravdepodobnosťou |c|^2 + |d|^2, druhý qubit je v stave [c / |c|^2 + |d|^2, b / |c|^2 + |d|^2]

Ak máme dva qubity v stave [a b c d] a odmeriame prvý v bázach e0 = [√½ √½] a e1 = [√½ -√½], [1 0] = √½(e0 + e1) [0 1] = √½(e0 - e1) takže [a, b, c, d] = √½(a+c)[e0 0] + √½(b+d)[e0 1] + √½(a-c)[e1 0] + √½(b-d)[e1 1] pravdepodobnosť e0 je (a+c)^2+(b+d)^2 /2

Ak máme bázy b0 = 00+11, b1 = 10+01, b2 = 00-11, b3 = 10-01 00 = b0+b2 01 = b1-b3 10 = b1+b3 11 = b0-b2

https://www.youtube.com/watch?v=NZqRUH1uSlE vývoj kvantového systému v čase


.


Pri modelovaní kvantového počítača potrebujeme vedieť amplitúdy všetkých možných stavov qubitov. Počítač s N qubitmi teda reprezentuje vektor s 2^N komplexnými číslami. Pri vektore nie je podstatné poradie čísel, je to skôr mapa z P(B) do C. Tradične je poradie stavov pre jeden qubit ["q0=0", "q0=1"], pre dva qubity ["q0=0 q1=0", "q0=0 q1=1", "q0=1 q1=0", "q0=1 q1=1"] čiže [|00> |01> |10> |11>], atď.

[1 0] = |0> = qubit je (klasicky) vypnutý [0 1] = |1> = qubit je (klasicky) zapnutý [a b] = a|0> + b|1> = qubit je v superpozícii; "a" a "b" sú komplexné čísla; "|a|^2 + |b|^2 = 1"

Vektor "ket" je zvislý. Vektor "bra" je vodorovný a komplexné hodnoty majú otočené znamienko pri imaginárnej časti; čiže "<x| = |x>†". Kedže "x × x* = |x|^2", tak "<x|x> = <x| × |x> = | |x> |^2".

Skrátené zápisy [√½ √½] = |+> [√½ -√½] = |->


Fyzickú operáciu s qubitmi reprezentuje štvorcová matica komplexných čísel, mapa z P(B)×P(B) do C.

× [p]

         [q]

[a b] [ap+bq] [c d] [cp+dq]

Intuitívne, stĺpec v matici je východiskový stav, riadok v matici je cieľový stav. Ak aplikujeme viac operácií, napríklad najprv A, potom B, nakoniec C, výsledok je: C(B(Ax)) = CBAx


Ak je prvý qubit [a b] a druhý [c d], spolu sú [ac ad bc bd]. Čiže ak máme stav [a b c d], kde ad = bc, sú to dva nepreviazané qubity.

Matica [[a b][c d]] aplikovaná na prvý alebo druhý z dvoch qubitov: [a 0 b 0] [a b 0 0] [0 a 0 b] [c d 0 0] [c 0 d 0] [0 0 a b] [0 c 0 d] [0 0 c d] aplikovaná na prvý, druhý, alebo tretí z troch qubitov: [a 0 0 0 b 0 0 0] [a 0 b 0 0 0 0 0] [a b 0 0 0 0 0 0] [0 a 0 0 0 b 0 0] [0 a 0 b 0 0 0 0] [c d 0 0 0 0 0 0] [0 0 a 0 0 0 b 0] [c 0 d 0 0 0 0 0] [0 0 a b 0 0 0 0] [0 0 0 a 0 0 0 b] [0 c 0 d 0 0 0 0] [0 0 c d 0 0 0 0] [c 0 0 0 d 0 0 0] [0 0 0 0 a 0 b 0] [0 0 0 0 a b 0 0] [0 c 0 0 0 d 0 0] [0 0 0 0 0 a 0 b] [0 0 0 0 c d 0 0] [0 0 c 0 0 0 d 0] [0 0 0 0 c 0 d 0] [0 0 0 0 0 0 a b] [0 0 0 c 0 0 0 d] [0 0 0 0 0 c 0 d] [0 0 0 0 0 0 c d]

Matica [[a b c d][e f g h][i j k l][m n o p]] aplikovaná v opačnom poradí: [...


.

X[p q] = [q p] X[1 0] = [0 1] čiže X|0> = |1> X[0 1] = [1 0] čiže X|1> = |0>

Y[p q] = [-qi pi] Y[1 0] = [0 i] čiže Y|0> = i|1> Y[0 1] = [-i 0] čiže Y|1> = -i|0>

Z[p q] = [p -q] Z[1 0] = [1 0] čiže Y|0> = |0> Z[0 1] = [0 -1] čiže Y|1> = -|1>

H[p q] = [p+q p-q]÷√2 H[1 0] = [1 1]÷√2 čiže H|0> = √½|0> + √½|1> H[0 1] = [1 -1]÷√2 čiže H|0> = √½|0> - √½|1>

XX = I YY = I ZZ = I HH = I

|H[p q]|^2 = |√½[p+q p-q]|^2 = ½((p+q)^2 + (p-q))^2) = ½(pp + 2pq + qq + pp - 2pq + qq) = pp + qq

. H = [1 1] [1 -1]÷√2

[√½ 0 √½ 0] [√½ √½ 0 0] [ 0 √½ 0 √½] [√½ -√½ 0 0] [√½ 0 -√½ 0] [ 0 0 √½ √½] [ 0 √½ 0 -√½] [ 0 0 √½ -√½]

.

X = [0 1] [1 0]

[0 0 1 0] [0 1 0 0] [0 0 0 1] [1 0 0 0] [1 0 0 0] [0 0 0 1] [0 1 0 0] [0 0 1 0]

.

Y = [0 -i] [i 0]

. Z [1 0] [0 -1]

[1 0 0 0] [1 0 0 0] [0 1 0 0] [0 -1 0 0] [0 0 -1 0] [0 0 1 0] [0 0 0 -1] [0 0 0 -1]

.

CNOT - CN, NC [1 0 0 0] [1 0 0 0] [0 1 0 0] [0 0 0 1] [0 0 0 1] [0 0 1 0] [0 0 1 0] [0 1 0 0]

Toffoli [1 0 0 0 0 0 0 0] [0 1 0 0 0 0 0 0] [0 0 1 0 0 0 0 0] [0 0 0 1 0 0 0 0] [0 0 0 0 1 0 0 0] [0 0 0 0 0 1 0 0] [0 0 0 0 0 0 0 1] [0 0 0 0 0 0 1 0]

.


Superhusté kódovanie https://www.youtube.com/watch?v=w5rCn593Dig

Vytvoríme dva previazané qubity, jeden pošleme Alici, druhý Bobovi

0--[H]--[C]-
0-------[N]-

[1] [√½] [√½] [0] [ 0] [ 0] [0] [√½] [ 0] [0] [ 0] [√½]

Alica má dva klasické bity, a podľa ich hodnoty urobí so svojím qubitom nasledujúcu operáciu: 00 = I, 01 = X, 10 = Z, 11 = XZ (najprv Z, potom X), výsledok pošle Bobovi

00   01   10    11

[√½] [ 0] [ √½] [ 0] [ 0] [√½] [ 0] [-√½] [ 0] [√½] [ 0] [ √½] [√½] [ 0] [-√½] [ 0]

Bob má dva qubity 00+11, 10+01, 00-11, 10-01 (všetky štyri možnosti sú na seba kolmé), revertne pôvodné previazanie, a odmeria ich.


[C]--[H]


[N]-----

[√½] [√½] [1] = 00 [ 0] [ 0] [0] [ 0] [√½] [0] [√½] [ 0] [0]

[ 0] [ 0] [0] [√½] [√½] [1] = 01 [√½] [ 0] [0] [ 0] [√½] [0]

[ √½] [ √½] [0] [ 0] [ 0] [0] [ 0] [-√½] [1] = 10 [-√½] [ 0] [0]

[ 0] [ 0] [ 0] [-√½] [-√½] [ 0] [ √½] [ 0] [ 0] [ 0] [ √½] [-1] = 11

.

Alica má tajný qubit [a b]. Vytvoríme dva previazané qubity [√½ 0 0 √½], jeden pošleme Alici, druhý Bobovi [a√½ 0 0 a√½ b√½ 0 0 b√½] = a×000 + a×011 + b×100 + b×111

see: https://www.youtube.com/watch?v=3wZ35c3oYUE


CNOT zo source qubitu na previazaný, Hadamard na source qubit odmeriame previazaný qubit; ak je 1, povieme adresátovi, nech na svojom qubite spraví X odmeriame source qubit; ak je 1, povieme adresátovi, nech na svojom qubite spraví Z teraz je adresátov qubit v rovnakom stave, ako bol source qubit na začiatku aj keby niekto odpočúal poslané informácie, nič mu to nepovie

.