$$\newcommand{\ket}[1]{\left|{#1}\right\rangle}$$
$$\newcommand{\bra}[1]{\left\langle{#1}\right|}$$

## Tehtävä 1

Kvanttitietokoneen muistissa tieto esitetään kubittien avulla. Kertauksena viime kierrokselta, kubitin perustilat ovat $\ket 0$ ja $\ket{1}$, ja ne esitetään pystyvektoreina

$$
\begin{align}
\ket 0 &= \pmatrix {1 \\ 0}, \\
\ket 1 &= \pmatrix {0 \\ 1}.
\end{align}
$$

NOT-portin matriisiesitys on seuraava:

$$
X=\pmatrix {0 & 1 \\ 1 & 0}
$$

Kierroksella 1 laskimme, että kun $X$-portti operoi kubittiin, niin kubitin tila muuttuu käänteiseksi (bit-flip gate), eli

$$
X\ket 0 = \ket 1 \\
X\ket 1 = \ket 0
$$

Voit palauttaa a- ja b-kohdat Classroomiin haluamassasi muodossa.

a) Osoita matriisiesitystä käyttäen, että

$$
\begin{align}
XX\ket 0 &= \ket 0 \text{ja} \\
XX\ket 1 &= \ket 1
\end{align}
$$


<a href="https://youtu.be/JDDSjsQLv80" target="_blank">ohjevideo NOT-portin toiminnasta</a>


b) Osoita laskemalla matriisien tulo, että $XX=I$, missä $I$ on yksikkömatriisi. Tämä tarkoittaa, että $X$ on itsensä käänteismatriisi.

c) Seuraavassa esimerkissä luodaan Qiskitiä käyttäen kvanttipiiri, jossa on yksi kubitti, jota operoidaan $X$-portilla.


```python
# Otetaan qiskit-kirjasto käyttöön
from qiskit import *

# Luodaan kvanttipiiri muuttujaan circ, jossa on yksi kubitti (diagrammissa q).
circ1 = QuantumCircuit(1)

# Operoidaan kubittia 0, eli piirin ainoaa kubittia X-portilla.
circ1.x(0)

# Piirretään luotu piiri.
# Parametri output="mpl" kertoo, että piirto tapahtuu graafisesti.
circ1.draw(output="mpl")
```

Kirjoita alle yllä olevan esimerkin mukaisesti Python-koodi, joka luo kvanttipiirin, jossa on kaksi kubittia. Sen jälkeen lisää piiriin portteja siten, että ensimmäiseen kubittiin tehdään kaksi $X$-operaatiota, ja toiseen yksi $X$-operaatio. Lopuksi piirrä luomasi piiri.


```python
# Kirjoita koodisi tähän


```

## Tehtävä 2

Hadamard eli $H$-portti muuttaa kubitin tilat $\ket 0$ ja $\ket 1$ superpositioon seuraavasti:

$$
H\ket 0 = \frac{1}{\sqrt 2} (\ket 0 +  \ket 1) = \ket +   \\
H\ket 1 = \frac{1}{\sqrt 2} (\ket 0 -  \ket 1) = \ket -
$$

Huomaa, että näitä kyseisiä tiloja merkitään välillä myös $\ket +$ ja $\ket -$.

$H$-portin matriisiesitys on seuraava:

$$
H = \frac{1}{\sqrt 2} \pmatrix {1 & 1 \\ 1 & -1}
$$


a) Osoita matriisiesitystä käyttäen, että

$$
\begin{align}
HH\ket 0 &= \ket 0 \text{ja} \\
HH\ket 1 &= \ket 1.
\end{align}
$$

b) Osoita laskemalla matriisien tulo, että $HH=I$, missä $I$ on yksikkömatriisi. Tämä tarkoittaa jälleen, että $H$ on itsensä käänteismatriisi.

<a href="https://youtu.be/x6gOp_o7Bi8" target="_blank">ohjevideo H-portin toiminnasta</a>


c) Seuraavassa esimerkissä luodaan Qiskitiä käyttäen kvanttipiiri, jossa on yksi kubitti ja $H$-portti.


```python
from qiskit import *

# Luodaan yhden kubitin kvanttipiiri kuten edellisessä esimerkissä.
circ2 = QuantumCircuit(1)

# Operoidaan kubittia 0 H-portilla.
circ2.h(0)

# Piirretään luotu piiri.
circ2.draw(output="mpl")
```

Kirjoita alle yllä olevan esimerkin mukaisesti Python-koodi, joka luo kvanttipiirin, jossa on kaksi kubittia. Sen jälkeen lisää piiriin portteja siten, että ensimmäiseen kubittiin tehdään yksi $H$-operaatio, ja toiseen yksi $X$-operaatio. Piirrä myös tämä piiri.


```python
# Kirjoita koodisi tähän

```

## Tehtävä 3 
Kubittien tilat $\ket +$ ja $\ket -$ määritettiin
$$
 \ket + = \frac{1}{\sqrt 2} (\ket 0 +  \ket 1), \\
 \ket - = \frac{1}{\sqrt 2} (\ket 0 -  \ket 1). 
$$

Z-portin (ns. phase-flip gate) matriisiesitys on seuraava:

$$
Z=  \pmatrix {1 & 0 \\ 0 & -1}
$$

Osoita seuraavat yhtälöt oikeiksi laskemalla matriisien tulo:

$$
\begin{align}
Z\ket + &= \ket - \text{ja}\\
Z\ket - &= \ket +
\end{align}
$$

## Tehtävä 4

Tehtävät 1 - 3 käsittelivät yhden kubitin systeemiä. Seuraavassa kahdessa tehtävässä tarkastelemme controlled NOT -porttia ($\mathit{CNOT}$), joka on kahden kubitin välinen operaatio. Kahden kubitin kvanttipiirissä systeemin tila esitetään seuraavilla kantavektoreilla:

$$
\ket{00},\ \ket{01},\ \ket{10},\ \ket{11}, 
$$

missä 

$$
\ket{00}=\pmatrix{1 \\ 0 \\ 0 \\0},\ \ket{01}=\pmatrix{0 \\ 1 \\ 0 \\0},\ 
\ket{10}=\pmatrix{0 \\ 0 \\ 1 \\0},\ \ket{11}=\pmatrix{0 \\ 0 \\ 0 \\1}.
$$

$\mathit{CNOT}$-portin operoidessa ensimmäinen qubitti on ns. ohjaava kubitti (control qubi1t), ja jälkimmäinen on kohdekubitti (target qubit). $\mathit{CNOT}$ vaikuttaa koko systeemin tilaan seuraavasti:

$$
\ket{00} \rightarrow  \ket{00}   \\
\ket{01} \rightarrow  \ket{01}   \\
\ket{10} \rightarrow  \ket{11}   \\
\ket{11} \rightarrow  \ket{10}   \\
$$

Tulos tarkoittaa, että jos ensimmäinen, ns. ohjaava kubitti on $0$, niin kohdekubitin tila ei muutu. Jos ohjaavakubitti $1$, niin kohdekubitin tila muuttuu. 

$\mathit{CNOT}$-portin matriisiesitys on seuraava:

$$
\mathit{CNOT} = \pmatrix {1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0} 
$$

Huomaa, että vaikka matriisia merkitään monella kirjaimella, se ei ole monen matriisin tulo.

Piirrosmerkki, jossa ylempänä esitetty kubitti on ohjaava, ja alempi toimii kohteena:



a) Laske CNOT-matriisin ja 2 kubitin tilaa kuvaavan pystyvektorin tulo, ja osoita että 

$$
\ket{01} \rightarrow  \ket{01} \text{eli laske tulo  } \mathit{CNOT} \ket{01}  \\
\ket{10} \rightarrow  \ket{11}  \text{eli laske tulo  } \mathit{CNOT} \ket{10} \\
$$


<a href="https://youtu.be/rLF-oHaXLtE" target="_blank">ohjevideo CNOT-portin toiminnasta</a>



b) Alla on esimerkki, jossa Qiskitillä luodaan kvanttipiiriin kaksi kubittia. Ensimmäistä kubittia operoi ensin Hadamard-portti $H$, jonka jälkeen tehdään molempien kubittien välinen $\mathit{CNOT}$-operaatio.


```python
from qiskit import *
circ3 = QuantumCircuit(2)

circ3.h(0)
circ3.cx(0,1)

# Piirretään luotu piiri.
circ3.draw(output="mpl")
```

Huomaa, että kuvassa aika eli suoritusjärjestys etenee vasemmalta oikealle. 

Kirjoita alle koodi, joka luo kolmen kubitin kvanttipiirin.
Ensimmäiseen kubittiin operoi H-portti.
Tämän jälkeen kvanttipiirissä on $\mathit{CNOT}$-portti kubittien 0 ja 1 välillä siten, että kubitti 0 on ohjaava kubitti ja kubitti 1 kohde. Lisää piiriin $\mathit{CNOT}$-portti myös kubittien 1 ja 2 välille, jossa kubitti 1 on ohjaava.


```python
# Kirjoita koodisi tähän

```

## Tehtävä 5

Seuraavassa esimerkissä kvanttipiiriä täydennetään kahdella kvanttirekisterillä ja kahdella klassisella rekisterillä. Kvanttipiiri luodaan syöttämällä rekisterit parametrina komennolle QuantumCircuit(). Kun H-portti operoi systeemiin, niin systeemin, niin kubitin 0 tila on määritetty tilojen $\ket 0$ ja $\ket 1$ superpositiona. Kun piirin tila mitataan, niin silloin systeemi siirtyy tiettyyn hyvin määritettyyn tilaan, jonka arvo tallenetaan klassiseen rekisteriin. 

Kvanttimekaanisella systeemillä jokaisella mahdollisella mitatulla tilalla on tietty todennäköisyys, ja kaikkien eri tilavaihtoehtojen todennäköisyyksien summa on 1.



```python
from qiskit import *
# Luodaan 2 kubitin rekisteri piiriä varten.
qr = QuantumRegister(2)

# Luodaan kahden bitin klassinen rekisteri mittaustulosten tallentamista varten.
cr = ClassicalRegister(2)

# Luodaan nyt kvanttipiiri käyttäen juuri luotuja rekistereitä.
mycircuit = QuantumCircuit(qr, cr)

# H-portti operoi kubittiin 0Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads

mycircuit.h(qr[0])

# Määrätään piiri mittaamaan molemmat kubitit ja tallennetaan tulokset klassiseen rekisteriin.
mycircuit.measure(qr, cr)

mycircuit.draw(output='mpl')
```

a) Kerro alla olevan kvanttipiirin toimintaperiate. Miten piiri toimii?


<a href="https://youtu.be/SMbh0GgCN7I" target="_blank">Lisämateriaalia: Measuring a qubit?</a>

Kirjoita vastauksesi tähän.


b) Kokeile määritellä piiri Python-kooodilla. 


```python
# Kirjoita koodisi tähän

```

## Tehtävä 6

Pelkät vastaukset riittävät.

a) Mikä on kompleksiluvun $-2+3i$ reaaliosa ja imaginääriosa?


Olkoot  $z_1=2+3i$ ja $z_2=5-4i$ kompleksilukuja. Laske

b) summa $z_1 +z_2$ ja

c) tulo $z_1 z_2$.


d) ratkaise yhtälö $x^2 = -1$ kompleksilukujen joukossa.

e) Mikä on luvun $z=3+2i$ kompleksikonjukaatti eli liittoluku $\bar{z}$? 

f) Määritä luvun $z=-3+4i$ moduli eli itseisarvo $\vert z\vert = \sqrt{z\bar{z}}$.

g) Ratkaise seuraavien polaarimuotoisten kompleksilukujen reaali- ja imaginaariosat:
$$
\begin{gather}
e^{i \pi} \\
e^{i {3\pi}/2} \\
\sqrt 2 e^{i \pi/4}
\end{gather}
$$

Esim. $e^{i \pi/2} = \cos \frac \pi 2 + i \sin \frac \pi 2 = 0 + 1i$. Tässä tapauksessa kulma oli $\frac \pi 2  = 90^{\circ}.$




<a href="http://math.tkk.fi/opetus/p3/04/L/L1printit.pdf" target="_blank">Kompleksilukujen laskutoimitukset</a>




Kirjoita vastauksesi tähän.

a)

b)

c)

d)
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads

e)

f)

g)

e^{i pi} = 

e^{i 3pi/4} = 

sqrt(2) e^{i pi/4} = 


## Tehtävä 7 (lisätehtävä, ei pakollinen)

Lataa Classroomista Skrolli-lehden pdf-tiedosto, ja lue sieltä artikkeli "Kvantit horisontissa".

Kerro lyhyesti kvanttialgoritmin suorituksen keskeisistä vaiheista (s. 7-8).

Mitä tarkoittaa kvanttiherruus? Selitä lyhyesti.

Kirjoita vastauksesi tähän.


a3aa277c582b8f440d85b09a3e12a4bf5a727239
ipynb
Jupyter Notebook
kv_laskuharjoitukset/kierros2/Kvanttilaskenta, kierros 2.ipynb
otaniemen-lukio/projects
eb73d9055747dc39aa2607af6f29aee02175d371
MIT
2020-03-11T07:50:10.000Z
2020-03-11T07:50:10.000Z
kv_laskuharjoitukset/kierros2/Kvanttilaskenta, kierros 2.ipynb
otaniemenlukio/projek
eb73d9055747dc39aa2607af6f29aee02175d371
MIT
kv_laskuharjoitukset/kierros2/Kvanttilaskenta, kierros 2.ipynb
otaniemenlukio/projek
eb73d9055747dc39aa2607af6f29aee02175d371
MIT
2021-03-09T11:19:55.000Z
2021-03-09T11:19:55.000Z
Qwen/Qwen-72B
1. YES
2. YES