You are on page 1of 77

Budapesti Mszaki s Gazdasgtudomnyi Egyetem

Hradstechnikai tanszk
Kvantum-szmtgpek
programozsa programozsi
nyelvek s paradigmk
Szakdolgozat
Ksztette Konzulens
Molnr Gbor Dr. Imre Sndor
2010. december 13.
BUDAPESTI MUSZAKI s
GAZDASAGTUDOMANYI EGYETEM
HIRADASTECHNIKAI TANSZEK
SZAKDOLGOZAT
Molnr Gbor
mrnkjellt rszre
Kvantum-szmItgpek programozsa programozsi nyelvek s paradigmk
Feladatok:
A jellt ismertesse a kvantumszmItgpek mkdst alapveten rneghatroz
kvanturnmechanika alapelveit!
Mutassa be a kvantumszmItgpek jelenleg hasznlt matematikai modelijeit,
kapcsoldsukat a klasszikus modellekhez (p1. Turing gp)!
Mutasson be olyan kvantum algoritmusokat, amelyekkel az adott problma
megoldsa nagysgrendileg gyorsabb mint a legjobb ismert klasszikus
algoritmussal.
Mutassa be a fontosabb kvanturn programozsi nyelveket, valamint az ltaluk
tmogatott programozsi paradigrnkat, s szemlltesse szintaxisukat egy
kivlasztott kvantum algoritmuson keresztl.
HasonlItsa ssze a bemutatott nyelveket, rtkelje az ltaluk nyjtott
lehetsgeket, eszkzket.
Ismertesse a lehetsges fejldsi irnyokat, s a jelenleg meg megoldatlan
problmkat.
ZArvinga tArgy: Mobil infokommunikIcis rendszerek (BMEVIHIA317)
Feladat benyiljtsdnak hatIrideje: 2010. december 10.
Tanszki lconzulens: Dr. Imre Sdndor, egyetemi tsnfr, tanszkvezet
Ipari konzulens:
Tervezs bfrIlja:
Budapest, 2010. szeptember 7.
(
memat as
incomiatitta Car
Dr. Imre Sndor
egyetemi
tank,
tanszkvezet
Konzultcik:
Idpont Eszrevtelek Konzulens
Ev ho nap
Az ipari konzulens vlemnye:
A tanszki konzulens vlemnye:
HALLGATI NYILATKOZAT
Alulrott Molnr Gbor szigorl hallgat kijelentem, hogy ezt a diplomatervet
meg nem engedett segtsg nlkl, sajt magam ksztettem, csak a megadott for-
rsokat (szakirodalom, eszkzk, stb.) hasznltam fel. Minden olyan rszt, melyet
sz szerint, vagy azonos rtelemben, de tfogalmazva ms forrsbl tvettem, egy-
rtelmen, a forrs megadsval megjelltem.
Hozzjrulok, hogy a jelen munkm alapadatait (szerz(k), cm, angol s magyar
nyelv tartalmi kivonat, kszts ve, konzulens(ek) neve) a BME VIK nyilvnosan
hozzfrhet elektronikus formban, a munka teljes szvegt pedig az egyetem bels
hlzatn keresztl (vagy autentiklt felhasznlk szmra) kzztegye. Kijelentem,
hogy a benyjtott munka s annak elektronikus verzija megegyezik. A teljes szveg
kzzttele dkni engedllyel titkostott diplomatervekre nem vonatkozik.
Budapest, 2010. december 13.
Molnr Gbor
hallgat
Tartalomjegyzk
Tartalomjegyzk
Tartalomjegyzk XI
Kivonat XIII
Abstract XV
Bevezet 1
1. A kvantumszmtgp 3
1.1. A kvantummechanika alapelvei . . . . . . . . . . . . . . . . . . . . . 3
1.1.1. Egy zrt rendszer llapottere . . . . . . . . . . . . . . . . . . 4
1.1.2. llapotvltozs . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.3. Mrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.4. sszetett rendszerek . . . . . . . . . . . . . . . . . . . . . . . 6
1.2. A kvantumszmtgp matematikai modelljei . . . . . . . . . . . . . . 7
1.2.1. Az univerzlis kvantum-szmtgp . . . . . . . . . . . . . . . 8
1.2.2. Kvantum-ramkrk . . . . . . . . . . . . . . . . . . . . . . . 9
2. Hatkony algoritmusok 15
2.1. ptkvek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2. Deutsch-Jozsa algoritmus . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.1. A problma, s klasszikus megoldsa . . . . . . . . . . . . . . 16
2.2.2. Kvantumos megolds . . . . . . . . . . . . . . . . . . . . . . . 16
2.3. Kvantum Fourier Transzformci . . . . . . . . . . . . . . . . . . . . 18
2.3.1. Kapcsolat a DFT s a QFT kztt . . . . . . . . . . . . . . . 19
2.3.2. A QFT felptse egyszer kapukbl . . . . . . . . . . . . . . 20
2.3.3. A QFT alkalmazsai . . . . . . . . . . . . . . . . . . . . . . . 22
2.4. Ms kvantum algoritmusok . . . . . . . . . . . . . . . . . . . . . . . . 22
3. Programozsi nyelvek 23
3.1. Programozsi paradigmk . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2. Formlis szemantika . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3. Szmtgp-architektra - a QRAM modell . . . . . . . . . . . . . . . 25
3.4. Imperatv nyelvek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1. Kvantum pszeudo-kd . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2. QCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.3. Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.4. Ms imperatv nyelvek . . . . . . . . . . . . . . . . . . . . . . 37
XI
Tartalomjegyzk
3.5. Funkcionlis nyelvek . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5.1. Bevezets a klasszikus lambda kalkulusba . . . . . . . . . . . . 38
3.5.2. A van Tonder-fle kvantum lambda kalkulus . . . . . . . . . . 41
3.5.3. Ms kvantum lambda kalkulusok . . . . . . . . . . . . . . . . 45
3.5.4. Ms funkcionlis nyelvek . . . . . . . . . . . . . . . . . . . . . 46
3.6. rtkels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4. Nyitott krdsek, fejldsi irnyok 49
Fggelk 51
F.1. A Deutsch-Jozsa algoritmus kdja klnbz nyelveken . . . . . . . . 51
F.2. A QFT kdja klnbz nyelveken . . . . . . . . . . . . . . . . . . . 53
brk jegyzke 55
Tblzatok jegyzke 57
Irodalomjegyzk 59
XII
Kivonat
Kivonat
A kvantum szmtgpek implementcii a zikusok kutatsainak ksznheten
egyre jobbak, s knnyebben alkalmazhatak lesznek. A kzeljvben elrkezhet
az id, amikor kvantum hardverek br drgn, de hozzfrhetv vlnak szmt-
kzpontok szmra. Jelenleg csak nhny hatkony kvantum algoritmus ismert,
viszont valszn, hogy a jvben egyre tbb praktikus alkalmazst fedeznek fel.
Ezen alkalmazsok kifejlesztst azonban htrltatja a tl alacsony szint nz-
pont, amely jelenleg a kvantum algoritmusok tervezsben dominl. A kvantum
algoritmusok tervezse ltalban kvantum kapuk szintjn zajlik, azonban ahogyan a
klasszikus esetben, itt is rengeteget segthet egy magasabb absztrakcis szint bevo-
nsa. A kvantum szmtgpekhez kifejlesztett programozsi nyelvek clja rszben
ezen magasabb absztrakcis szint elrse, msrszt az algoritmusok lersnak szab-
vnyostsa, s egyszerstse. A kvantum programozsi nyelvek kutatsa rendkvl
aktv, s a tma szakirodalma mr most is meglepen nagy, viszont mg nem rte el
azt a szintet, hogy a tmval foglalkoz szakknyvek a kvantum ramkrkhz ha-
sonlan ezt is egy egyenrtk megkzeltsknt kezeljk. A dolgozat clja az eddig
publiklt kvantum programozsi nyelvek ismertetse, klns hangslyt fektetve a
vizsglt nyelvek praktikus hasznlhatsgra. Ilyen sszefoglal dolgozat mg nem
szletett, egyrszt a tma relatv atalsga miatt, msrsz azrt, mert mg nem lt-
szik a dominns irnyvonal, s hogy a jelenleg ismert nyelvek kzl melyek lesznek
majd a gyakorlatban leghasznosabbak.
XIII
XIV
Abstract
Abstract
The implementations of quantum computers will become better and better thanks to
the physics research. In the near future, the time will come when quantum hardware
is expensive though, but is available for computing. Currently, only a few ecient
quantum algorithm is known, however, it is likely that more and more practical
applications will be discovered. The low-level perspective that currently dominates
the design of quantum algorithms impedes the development of these applications.
The design of quantum algorithms usually takes place at the level of quantum gates,
however, as in the classical case, usage of a higher level of abstraction may help in
making the process more ecient. The purpose of developing quantum programming
languages is to achieve this higher level of abstraction, and to standardize and
simplify the description of algorithms. There is a very active research on quantum
programming languages, and there is already a surprisingly large literature, but has
not yet reached a point where books on the subject of quantum computing treat
quantum programming as an at least equivalent approach to quantum circuits. The
aim of the thesis is the description of the existing quantum programming languages,
with particular emphasis on the practical usability of the languages. Such a summary
paper has not yet been published. The cause of this is the relative youthfulness of
the subject, and that the most successful directions are not yet known.
XV
XVI
Bevezet
Bevezet
Az els magas szint programozsi nyelv, a Fortran a maga idejben rendkvl
npszer volt. Rengeteg terhet vett le a szmtsokat vgezni szndkoz kutatk
vllrl. A programot r szemly elvonatkoztathatott a gpi nyelv korltozsaitl,
s a feladat megvalstsra koncertrlhatott.
Azta a programozsi nyelvek tretlen fejldsnek ksznheten egyre hatko-
nyabban tudunk programokat rni, kivlaszthatjuk a feladathoz legjobban ill nyel-
vet, amin a feladat, s a megolds megfogalmazsa a legegyszerbb, s ezeknek
ksznheten egyre bonyolultabb szoftvereket vagyunk kpesek megvalstani.
A kvantum-szmtgpek programozsa ehhez kpest mg gyerekcipben jr. Ma
mg nincs egy olyan, a Fortranhoz mrhet siker nyelv, amelyet a kutatk egy-
nteten elfogadnak, s szvesen hasznlnak. Ennek kvetkezmnye az is, hogy
a kvantum algoritmusok lersra a lehet legalacsonyabb szint reprezentci, a
kvantum ramkr modell az eltrejedten hasznlt. Az utbbi vekben az igny egy
j programnyelv irnt nagyban megntt, emiatt a tmt aktvan kutatjk.
Dolgozatom clja az utbbi vekben javasolt kvantum programozsi nyelvek t-
tekintse, s rtkelse. Hogy a dolgozat nmagban is megllja a helyt, elszr a
kvantuminformatika alapjait, majd kt hasznos kvantum algoritmust mutatok be, s
csak ezutn kezdem el a nyelvek bemutatst. Az egyes fejezetek szerkezete rviden
a kvetkez.
Az els fejezet - a matematikai alapismereteket leszmtva - minden olyan kvan-
tumszmggpekkel kapcsolatos ismeretet tartalmaz amire a kvetkezkben szksg
lesz. A fejezet a kvantummechanika posztultumainak bemutatsval indul, mert
ez az a szablyrendszer, ami a kvantumszmtgp segtsgvel szmtsra hasznl-
hat. A msodik rsz a kvantumszmtgp kt leginkbb elfogadott matematikai
modelljt, a kvantum Turing-gpet s az ramkrmodellt mutatja be. Ezek tulaj-
donkppen keretrendszert adnak kvantum algoritmusok tervezshez, valamint az
ramkrmodell konkrt eszkzket is az algoritmusok alacsony szint lershoz.
A msodik fejezet clja ketts. Olyan algoritmusokat mutat be, amelyek hat-
konyabbak a legjobb klasszikus megvalstsnl, ezzel egyrszt megadja a kvantum
algoritmusok kutatsa mgtti f motivl ert, msrszt a rszletesen bemutatott
kt algoritmus kivlan hasznlhat ksbb a programozsi nyelvek szintaxisnak
szemlltetsre.
A harmadik fejezet a programozsi nyelvek bemutatsval foglalkozik, gy a dolgo-
zat legfontosabb rsze. A fejezet elszr megadja azt koordintarendszert, amelyben
a programozsi nyelveket elhelyezhetjk, azaz bemutatja a programozsi nyelvek kt
csaldjt, az imperatv s funkcionlis nyelveket. Ezutn a programozsi nyelvek
tervezsnl alapul vett - az els fejezet matematikai modelljeinl gyakorlatiasabb
- hardvermodell, a QRAM modell rvid ismertetse kvetkezik. A programozsi
1
nyelvek kzl elsknt az imperatvak, majd a funkcionlisak kerlnek bemutatsra.
2
1. fejezet
A kvantumszmtgp
A kvantumszmtgp olyan gp, amely a kvantummechanika trvnyeit kihasznlva
vgez szmtsokat. Olyan zikai jelensgeket hasznlhatunk szmtsok elvgzsre,
amelyek a klasszikus szmtgpeknl nem jelentkeznek, gy ezeknek az eszkzknek
a birtokban bizonyos esetkeben a klasszikus vltozatnl hatkonyabb algoritmuso-
kat hozhatunk ltre.
A kvetkezkben elszr a kvantum-mechanika posztultumait (alapelveit) mu-
tatom be, majd a kvantum-szmtgp matematikai modelljeit ismertetem. Ebben
a fejezetben a kvantum-mechanika, s a kvantum-informatikban hasznlt alapvet
ptelemek egy nagyon rvid bemutatsra van csak hely, ezek az alapismeretek
azonban elegendek a tovbbi a dolgozat tbbi rsznek megrtshez. A tma sok-
kal rszletesebb, s szemlletesebb bevezetsei tallhatk a szakirodalomban [17],
[21].
1.1. A kvantummechanika alapelvei
A kvantummechanika mrnki szemmel tulajdonkppen egy keretrendszer. Ebbe
a keretrendszerbe illeszthetjk bele a tbbi zikai trvnyt, amelyekkel a vilgot
lerjuk, azonban ezek mindegyike idomul a kvantummechanika jtkszablyaihoz.
Az egyetlen kivtel jelenlegi tudsunk szerint a gravitci, amit nem tudunk lerni
a kvantummechanika eszkzeivel, azonban a kvantumszmtgpek tanulmnyozsa
sorn ez nem jelent problmt, mert abban a mrettartomnyban (az atomi mre-
tek kztt), ahol a kvantummechanika szablyai dominlnak, a gravitci hatsa
elhanyagolhat.
A ngy posztultum ennek a keretrendszernek a tmr matematikai lersa, ame-
lyet felhasznlva hatkonyan rhatjuk le a zikai rendszerek mkdst. A kvetke-
zkben a posztultumokat mutatom be, mindegyikhez rvid magyarzatot, illetve
alkalmazsi pldkat fzve.
Felttelezem, hogy az olvas rendelkezik azon matematika alapismeretekkel, ame-
lyek a posztultumok megrtshez szksgesek. Ezen ismeretek kz tartozik a
komplex szmok aritmetikja, valamint a lineris algebra bizonyos rszei, pldul a
vektorterek (klnsen a Hilbert-tr), s a bennk vgzett lineris mveletek (ope-
rtorok) lersnak matematikai eszkztra.
3
1. A kvantumszmtgp
1.1.1. Egy zrt rendszer llapottere
Els posztultum. Egy zrt zikai rendszer llapota az llapotvektorval rhat
le, ami egy egysgnyi hossz vektor a V Hilbert-trben (amelyet llapottrnek neve-
znk).
Egy qbit llapottere. A lehet legegyszerbb zrt rendszer llapottere egy kt-
dimenzis Hilbert-tr. A rendszernek kt bzis-llapota van, ezeket jelljk |0-val
s |1-el. A rendszer llapota teht egy |v = [a, b]
T
= a |0 + b |1 vektorral rhat
le, ahol a s b komplex szmokat jell, s teljesl rjuk az |a|
2
+ |b|
2
= 1 megk-
ts. Ezeket az egytthatkat valsznsgi amplitdknak nevezzk, a ktdimenzis
rendszert pedig qbitnek, a klasszikus ktllapot bit analgijra.
A qbit kt klasszikus llapotot vehet fel, ezek: [1, 0]
T
= 1 |0 + 0 |1 = |0, illetve
[0, 1]
T
= 0 |0 + 1 |1 = |1. Elkpzelhetek azonban ms, nem klasszikus llapotok
is, pl. [
1

2
,
1

2
]
T
=
1

2
|0 +
1

2
|1 =
|0+|1

2
.
A htkznapi letben csak klasszikus llapotban lev rendszerekkel (s bitekkel)
tallkozunk, soha nem ltunk egy rendszert llapotainak szuperpozcijban. Ennek
magyarzatval a harmadik posztultumnl foglalkozom bvebben.
1.1.2. llapotvltozs
Msodik posztultum. Egy zrt zikai rendszer vltozsa(evolcija) lerhat
egy unitr transzformcival. Ha t
1
idpontban a rendszer llapota |, t
2
idpontban
|

, akkor az sszefggst a kt llapot kztt az U unitr opertor adja meg, amely


csak t
1
-tl s t
2
-tl fgg,
|

= U(t
1
, t
2
) | .
Ez a posztultum tulajdonkppen a folytonos idre vonatkoz Schrdinger egyen-
let idintervallumokra vonatkoztatott vltozata. Azrt hasznljuk ezt az ekvivalens
formt, mert a kvantum-szmtgpek esetn szmtsi lpsekrl beszlhetnk, egy
ilyen opertor pedig egy szmtsi lpst jelent.
Plda: Pauli-X kapu. Nzzk meg a klasszikus inverterhez tartoz unitr transz-
formcit! A transzformcitl azt vrjuk el, hogy a kvetkez lekpezst valstsa
meg: |0 |1 , |1 |0. A bzisvektorok kpt oszlopvektorknt egyms mell
rva megkapjuk a transzformci mtrixt:
X =
_
0 1
1 0
_
Alkalmazzuk ezt egy egy tetszleges [a, b] qbitre:
_
0 1
1 0
_
[a, b] = [b, a]
Lthat, hogy ha klasszikus bit a bemenet, az inverter megfelel a klasszikus inver-
ternek, ltalnos esetben pedig megcserli a qbit valsznsgi amplitdit. Az ezt a
transzformcit megvalst logikai kaput Pauli-X kapunak nevezzk, a kvantum
logikai kapukkal ksbb rszletesen folglakozom.
4
1.1. A kvantummechanika alapelvei
1.1.3. Mrs
A mrs teremt kapcsolatot a klasszikus, s a kvantum vilg kztt, ezrt a mrs
a kvantum-informatikban nagyon fontos szerepet jtszik. Egy kvantum-algoritmus
kimente pldul lehet a kimeneti bitek egy bizonyos llapota, s ha nem tudjuk a
lehetsges kimeneti llapotokat mrssel megklnbztetni, akkor nem tudjuk az
adott kvantum-algoritmus elnyeit kihasznlni.
Harmadik posztultum. Minden mrs a mrsi opertorok egy {M
m
} halma-
zval rhat le, ahol az m indexek a mrs lehetsges kimeneteleinek felelnek meg.
Annak a valsznsge, hogy m a mrsi eredmny, ha a renszer | llapotban van:
P(m| |) = | M

m
M
m
| (1.1)
A rendszer llapota a mrs utn, ha a mrsi eredmny m:
|

=
M
m
|
_
| M

m
M
m
|
(1.2)
A mrsi opertorokra a kvetkez teljessgi relci kell hogy teljesljn:

m
M

m
M
m
= I
A teljessgi relci annak a kvetkezmnye, hogy a lehetsges mrsi eredmnyek-
hez tartoz valsznsgek sszege 1 kell hogy legyen:
1 =

m
P(m| |) =

m
| M

m
M
m
| = |
_

m
M

m
M
m
_
| .
Figyelembe vve, hogy | = 1, ez az egyenlet ekvivalens a teljessgi relcival.
Megjegyzem, hogy a |

meghatrozsnl, az 1.2. egyenletben a nevez a szm-


llban lev vektor hossza, teht az oszts normalizlst jelent. Ez garantlja, hogy
az llapotvektor a mrs utn is egysgnyi hossz marad.
Egy qbit olvassa. Nzzk meg azt a mrst, amely a klasszikus bit olvass
megfelelje! Vlasszuk a mrsi opertorok kvetkez halmazt:
M = {M
0
, M
1
}, M
0
=
_
1 0
0 0
_
, M
1
=
_
0 0
0 1
_
.
Vgezzk el a mrst az 1.1. egyenlet alapjn a | = [a, b] llapot qbitre:
P(0| |) = | M

0
M
0
| = [b

, a

]
_
1 0
0 0
_ _
1 0
0 0
_
[a, b]
T
= a

a = |a|
2
,
P(1| |) = | M

1
M
1
| = [b

, a

]
_
0 0
0 1
_ _
0 0
0 1
_
[a, b]
T
= b

b = |b|
2
.
5
1. A kvantumszmtgp
A qbit llapota a mrs utn, ha a mrsi eredmny m:
|

=
_
_
_
M
0
|

|M

0
M
0
|
=
[a,0]
T

|a|
2
= [1, 0]
T
= |0 , ha m = 0,
M
1
|

|M

1
M
1
|
=
[b,0]
T

|b|
2
= [0, 1]
T
= |1 , ha m = 1.
Teht ha egy | = a |0 + b |1 llapotban lev qbiten vgrehajtjuk ezt a m-
rst, |a|
2
valsznsggel 0-t kapunk, s a rendszer llapota |0 lesz, valamint |b|
2
valsznsggel 1-t kapunk, s a rendszer llapota |1 lesz a mrs utn.
Ha a mrst pldul a
|0+|1

2
szuperpozcin hajtjuk vgre, akkor |
1

2
|
2
= 0.5
valsznsggel 1-et, 0.5 valsznsggel 0-t kapunk, s a mrs utn a szuperpozci
a mrsi eredmnynek megfelel klasszikus llapotba esik ssze
1
.
Meggyelhet mennyisgek. Ha a mrsi opertorok ortogonlisak egymsra
(mi csak ilyen mrsekkel fogunk foglalkozni), akkor projektv mrsrl beszlnk.
Ebben az esetben denilhatunk egy

K mtrixot, amelyet meggyelhet mennyisg
mtrixnak neveznk:

K =

m
mM
m
.
A mtrix specilis tulajdonsga, hogy a lehetsges mrsi eredmnyek a sajtrtkei.
Egy mtrix spektrumnak nevezzk a sajtrtkeinek halmazt, teht a meggyel-
het mennyisg spektruma a lehetsges mrsi eredmnyek halmaza.
A mtrix egyik hasznos tulajdonsga, hogy ha adott az a | llapot, amin a
mrst vgezzk, akkor segtsgvel knnyen meghatrozhatjuk a mrsi eredmny
vrhat rtkt:
E(

K) = |

K| .
1.1.4. sszetett rendszerek
Negyedik posztultum. Egy sszetett W rendszer llapottere az t alkot rend-
szerek llapotternek tenzor szorzataknt llthat el: W = V Y . Valamint ha
|v V s |y Y akkor az sszetett rendszer llapota |w = |v |y = |vy.
Regiszterek. Jelljk a qbit llapottert V
1
-el. Ekkor a kt qbites regiszter lla-
pottere a negyedik posztultum szerint V
2
= V
1
V
2
, aminek a bzisvektorai |00,
|01, |10, |11. Ez azt jelenti, hogy egy ktbites regiszter llapota a ktbites bzis-
llapotok szuperpozcija:
| = |00 + |01 + |10 + |11 .
Ha vesznk kt qbitet, legyenek ezek [a
1
, b
1
]
T
, s [a
2
, b
2
]
T
, majd ezekbl egy re-
gisztert kpznk, a kvetkez regiszter-llapotot kapjuk:
| = (a
1
|0 +b
1
|1) (a
2
|0 +b
2
|1) = a
1
a
2
|00 +a
1
b
2
|01 +b
1
a
2
|10 +b
1
b
2
|11
1
Figyelemremlt, hogy a mrs kimenetele tnylegesen vletlenszer, ezrt ez a jelensg fel-
hasznlhat tkletes vletlenszmgenertor ptsre.
6
1.2. A kvantumszmtgp matematikai modelljei
sszefonds. Felmerl a krds, hogy minden regiszterllapot elllthat-e qbi-
tek sszefogsval, bellk regisztert kpezve. A vlasz meglep mdon nem. Pl-
dul a | =
|00+|11

2
llapot nem ll el qbitek tenzor-szorzataknt. Megklnbz-
tethetjk teht az sszetett rendszerek ktfle llapott: a szorzatknt elllthat
llapotokat (szorzat llapotok), valamint azokat, amelyek szorzatknt nem lltha-
tk el (sszefondott llapotok). Klasszikus bitekbl kpzett regiszterek llapota
mindig szorzat-llapot, teht az sszefonds egy specilis kvantumos jelensg.
Ha az elz | regiszter els bitjn elvgznk egy mrst, s eredmnyknt m-et
kapunk, akkor utna ha a msodik biten is elvgezzk a mrst, biztosak lehetnk
benne, hogy az eredmny szintn m lesz. Az sszefondott qbitek kztt valamilyen
nehezen megmagyarzhat kapcsolat ll fent, amit megfelelen kihasznlva akr
kommunikcira is hasznlhatunk.
Kvantum prhuzamossg. Mint lttuk, egy regiszter szuperpozcis llapotban
is lehet. Kpzeljnk el egy 50 bites regisztert, amely az sszes lehetsges bzisl-
lapotnak egyenl sly szuperpozcijban van. Ez sszesen 2
50
klasszikus lla-
potnak felel meg. Ha a regiszteren elvgznk egy mveletet, akkor a mvelet az
sszes lehetsges llapoton egyszerre hajtdik vgre. Ezt a technikt kvantum pr-
huzamossgnak hvjuk, s a ksbbiekben bemutatott algoritmusok mindegyikben
fontos szerepet kap.
1.2. A kvantumszmtgp matematikai modelljei
A huszadik szzad els felben Alan Turing s Alonzo Chruch egymstl fgget-
lenl kidolgoztk az algoritmus, illetve az algoritmikusan megoldhat problmk
dencijt. Turing 1936-os cikkben [36] egy egyszer gp modelljt vzolta fel,
mg Chruch [8] ugyanabban az vben algoritmusokat ler matematika eszkzt-
rat mutatott be, amit -kalkulusnak nevezett el
2
. Ksbb bebizonytottk, hogy a
kt modell ekvivalens, vagyis az algoritmusok ugyanazon halmazt kpes lerni, az
ezen algoritmusok ltal kiszmthat fggvnyek halmaza a rekurzvan kiszmthat
fggvnyek halmaza. A Chruch-Turing hipotzis szerint brmilyen olyan fggvny,
amit htkznapi rtelemben kiszmthatnak neveznk, benne van ebben a halmaz-
ban, vagyis kiszmthat a Turing-gpen. A kiszmthat fggvnyek dencija
teht Turing s Chruch szerint az, hogy az adott fggvnyt ki lehet szmtani a
Turing-gpen.
David Deutsch 1985-s cikkben [13] abbl indult ki, hogy minden szmtsokat
vgz gp valjban egy zikailag megvalstott gp, vagyis a zika trvnyeinek
engedelmeskedik. Minden ilyen gpre vonatkoznak kvantummechanika szablyai is,
ebbl kiindulva meghatrozhatjuk a szmtsok vgzsnek zikai rtelemben sok-
kal preczebb modelljt, amelyben azokat a fggvnyeket nevezzk kiszmthatnak,
amelyek egy zikai gppel kiszmthatak, nem pedig azokat, amiket a htkznapi
rtelemben kiszmthatnak neveznk. Ez a megkzelts elvezetett az Univerzlis
Kvantum Szmtgp dencijhoz, ezzel a kvantum-informatika megszletshez.
Fontos megjegyezni, hogy a modell a klasszikus elkpzels ltalnostsa, teht min-
den r vonatkoz megllapts igaz a klasszikus esetre is. A kvetkezkben ezt
2
Az ezekbl a megkzeltsekbl ered programozsi paradigmkrl lsd a 3.1. rszt.
7
1. A kvantumszmtgp
modellt, ilettve a vele ekvivalens kvantum-ramkr modellt mutatom be.
1.2.1. Az univerzlis kvantum-szmtgp
A klasszikus Turing-gp
Egy Turing-gp kt f rszbl ll: egy vgtelen, linerisan cmezhet memribl
(amelybl azonban mindig csak egy vges rszt hasznl), s egy vges processzorbl.
A szmts x T ideig tart lpsekbl ll, amelyek sorn a processzor, s a memria
egy vges hossz rsze lp interakciba, a memria tbbi rsze rintetlen marad. A
szmts dinamikjt a processzor hatrozza meg. Msik processzort hasznlva egy
msik Turing-gpet kapunk, amely egy msik fggvnyt valst meg.
Az univerzlis Turing-gp egy olyan gp, amely brmely Turing-gpet kpes szi-
mullni. Ezt gy ri el, hogy a bementn a szimulland gp lerst is tartalmazza
valamilyen formban, ez tulajdonkppen a vgrehajtand program.
Kvantum Turing-gpek
A Church-Turing hipotzis zikai megfelelje Deutsch szerint a Chruch-Turing elv:
Minden vges zikai rendszer tkletesen
szimullhat egy vges univerzlis szmtgppel.
Ezt a gpet Univerzlis Kvantum Szmtgpnek nevezzk, jellse Q.
Elszr foglalkozzunk egy adott programot vgrehajt Q[U] gppel. Ez a klasszi-
kus Turing-gphez hasonlan szintn kt f rszbl ll, vgtelen memribl, s egy
vges processzorbl. A gp llapottert a kvetkez mdon rhatjuk le. A processzor
llapotregisztere egy M qbit-es regiszter, amelynek llapota:
|n |n
0
, n
1
, , n
M1
,
mg a memria egy mindkt irnyban vgtelen qbit-sor, amelynek llapota:
|m | , n
1
, n
0
, n
1
, .
Az llapotlershoz hozz tartozik egy x programszmllknt hasznlt meggyel-
het mennyisg, amelynek spektruma Z. Q[U] bzisllapotai a gp ltal felvehet
klasszikus llapotok halmaza, llapottere pedig a gp bzisllapotai ltal kifesztett
tr. A gp llapota teht a kvetkezkppen rhat le:
| =

x,n,m

x,n,m
|x; n; m

x,n,m
|
x,n,m
|
2
= 1
_
_
_
A kezdeti llapotban a processzor llapotregisztere s a programszmll lla-
pota |0, a memria pedig tartalmazza a bemeneti adatot. A rendszer dinamikjt
az U konstans unitr opertor hatrozza meg. A rendszer llapota az n. idszelet
utn:
|(nT) =
_
_
_

m
|0; 0; m , ha n = 0
U
n
|(0) , ha n Z
+
8
1.2. A kvantumszmtgp matematikai modelljei
Megkts valamint, hogy az U olyan legyen, hogy minden lpsben a program-
szmll csak eggyel nvekedjen vagy cskkenjen, valamint hogy a transzformci-
ban csak a programszmll ltal kijellt memriabit, illetve a processzor lla-
potregisztere vehet rszt. Ez a megkts a Turing-gpek lersnl szoksos l-
lapottmenet fggvny hasznlatval is kifejezhet, ennek felrst azonban most
elhagyom.
A Turing-gpek a kvantum Turing-gpek olyan specilis eseti, amelyeknl minden
szmtsi lps vgn a gp llapota egy klasszikus llapot, feltve hogy a lps eltt
is az volt. Ebbl az is kvetkezik, hogy ha ltezik Q, akkor az klasszikus univerzlis
Turing-gp is lesz egyben.
A program befejeztt klasszikus esetben az jelzi, hogy a gp kt egymst kvet
lps utn ugyanabban az llapotban marad. Ez a megkzelts kvantum Turing-gp
esetn azrt nem mkdik, mert ehhez minden lps utn mrst kellene vgeznnk,
ami megzavarja a gp llapott, befolysolja a program futst. Ezrt a processzor
llapotregiszternek egyik bitjt kinevezzk meglls bitnek, amelynek kezdeti r-
tke 0. Ha a processzor vgzett a program vgrehajtsval, a meglls bitet 1-re
lltja. Ezt a bitet egy kls meggyel minden lps utn mrheti, s megllapt-
hatja hogy a gp vgzett-e a programmal.
Deutsch [13] megadja a bizonytst annak, hogy ltezik olyan U, amelyre Q[U]
univerzlis, teht hogy ltezik a Q univerzlis kvantum szmtgp.
1.2.2. Kvantum-ramkrk
A Turing-gp a szmtgp absztrakt modellje. A vals szmtgpek logikai h-
lzatokbl (ramkrkbl), azok pedig logikai kapukbl llnak, ugyangy kvantum-
szmtgpek is lerhatk logikai hlzatokkal. Azrt is fontos ez a lersmd, mert
egyrszt ekvivalens a Turing-gpes lerssal, msrszt jelenleg a legtbb kvantum-
algoritmust hardver szinten, kvantum ramkrknt rjk le. Nzzk meg teht,
hogyan pl fel egy kvantum-szmtgp a harder szintjn!
A szmtgp mint zikai rendszer
A kvantum-informatika vilgban egy szmtsokat vgz gp egy olyan zikai rend-
szer, amelynek idbeli vltozsa a szmts elvgzsnek tekinthet. A szm-
tsra hasznlt zikai rendszeren meghatrozunk hrom meggyelhet mennyisget:

I,

h,

O. Az

I spektruma a lehetsges bemeneti rtkek halmaza, a rendszert az ind-
ts eltt ezek egyikbe lltjuk. A

h a megllsjelz bit, melynek spektruma {0, 1},
ezt a gp futsa sorn minden szmtsi lps utn mintavtelezzk, s ha a mrs
eredmnyekppen 1-et kapunk, a gp befejezte a szmtst, az eredmnyt pedig az

O meggyelhet mennyisg tartalmazza.


A bit, s zikai hordozja
A bit az informci legkisebb egysge. A valsgban a biteket mindig valamilyen
zikai mennyisg (pl. feszltsg) hordozza. A legegyszerbb zrt rendszer a kvan-
tummechanika szerint a ktllapot rendszer, a qbit (amely pldul egy elektron
spinjnek llapott trolja), ez pedig tkletesen megfelel bitek hordozsra, s t-
rolsra.
9
1. A kvantumszmtgp
Klasszikus s kvantum kapuk
Ebben a rszben a klasszikus kapuk ltalnostsval kt lpsben fogunk a kvantum
kapukig eljutni. Els lpsknt a klasszikus kapukbl kiindulva a reverzibilitst
megkvetelve eljutunk a reverzibilis kapukig. Ebben a lpsben nem cskken a
megvalsthat kapuk kre, mert minden klasszikus kapubl kpezhet reverzibilis a
Bennett [6] ltal megadott mdszerrel. A kvetkez lpsben a reverzibilis kapukbl
kiindulva, rengeteg j szabadsgi fokot bevezetve eljutunk a kvantum kapukig.
Kezdjk a logikai kapu meghatrozsval. A logikai kapu egy olyan szmtsokat
vgz gp, amely elre meghatrozott szm bemenettel s kimenettel egy adott
szmtst vgez, amely fggetlen a bemeneti adatoktl, s x ideig tart. A x
hosszsg szmts miatt a logikai kapuknak nincs meglls bitjk. Forrsnak
nevezzk az olyan egykimenet kaput, amely kimenetn mindig ugyanaz az rtk
van (ezeket hasznlhatjuk konstans rtkek ellltsra).
Nzzk meg hogyan rhat le egy logikai kapu mkdse! Megadhatjuk hogy
milyen logikai mveleteket vgez a bemeneten, ez viszont bizonyos esetekben nehz-
kes lehet. Egy ltalnosabb mdszer ha megadjuk, hogy melyik bemeneti llapot
hatsra milyen llapot jelenik meg a kimenetn (igazsgtbla). A harmadik, leg-
ltalnosabb megadsi mdszer, ha a kapu hatst a bemeneti llapoton vgzett
transzformciknt rjuk le. Ha pl. egy NAND kapu bemenete 01, akkor az eh-
hez tartoz llapotvektor: |01 = [0, 1, 0, 0]
T
, a kapu hatsa pedig gy rhat le:
N |01 = |1 = [0, 1]
T
, teht a kapu ebben az esetben egy 2 4-es mtrix.
Ha az egysg vezetk, forrsok, s egy tovbbi kapu felhasznlsval a logikai
ramkrk egy H halmaznak minden elemt el tudjuk lltani, akkor ezt a H
halmaz univerzlis kapujnak nevezzk. A klasszikus logikai ramkrk esetn ilyen
pldul a NAND/NOT kapu (a NAND az elz denci szerint nmagban azrt
nem, mert vezetkelgazs nem valsthat meg vele). A NAND/NOT kapu mk-
dsnek lersa az 1.1. brn lthat.
a
N
a
b
ab
(a) Logikai
mveletek

I

O
|00 |11
|01 |11
|10 |01
|11 |00
(b) Igazsgtbla
_

_
0 0 0 1
0 0 1 0
0 0 0 0
1 1 0 0
_

_
(c) Mtrixos le-
rs
1.1. bra. A NAND/NOT kapu
Jl lthat, hogy a NAND/NOT kapu nem reverzibilis (pl. |11 kiemenet esetn
nem dnthet el hogy mi volt a bemenet). Tudjuk viszont, hogy a termszetben
minden vltozs invertlhat (lsd 1.1.2. rsz), ezrt modellezhetjk gy a nem re-
verzibilis kapukat, mint egy reverzibilis kapu hasznlata, majd informci eldobs
3
.
Tooli [35] egy olyan kaput dolgozott ki, amely a reverzibilis logikai ramkrk
kztt univerzlis kapu. A kapu az 1.2. brn lthat.
3
A reverzibilis logikai ramkrk kutatsval azrt kezdtek el foglalkozni, mert az informci el-
dobs a krnyezet entrpijt (hmrsklett) nveli, vagyis ha kpesek lennnk reverzibilis logikai
ramkrket tervezni, jelentsen tudnnk az ramkrk hleadst, ezzel fogyasztst cskkenteni.
10
1.2. A kvantumszmtgp matematikai modelljei
a
T
a
b b
c
c ab
(a) Logikai
mveletek

I

O
|000 |000
|001 |001
|010 |010
|011 |011
|100 |100
|101 |101
|110 |111
|111 |110
(b) Igazsgtbla
_

_
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
_

_
(c) Mtrixos lers
1.2. bra. A Tooli kapu
A reverzibilis kapuk hatsa mindig a lehetsges bemeneti llapotokon vgzet per-
mutciknt rhat le (pl. a Tooli kapuhoz tartoz permutci minden llapotot
helybenhagy, kivve a |110-t s a |111-t, ezeket felcserli). Ez a mtrix reprezen-
tciban annyit jelent, hogy minden oszlopban s sorban pontosan egy 1-es van.
A termszetben azonban nem csak ilyen transzormcik valsthatk meg, hanem
minden olyan transzformci, amelynek mtrixa unitr. Ez egy sokkal gyengbb
korltozst jelent
4
. A reverzibilis logikai kapuk ilyen ltalnostsval a kvantum
kapukat kapjuk. Ezen kapuk esetn mr nincs rtelme az igazsgtblt, s logikai
mveletes reprezentcinak, csak a mtrixos hasznlhat. Itt is ltezik univerzlis
kapu, amelyet Deutsch dolgozott ki elszr [11], s az 1.3. brn lthat. = 1
vlaszts esetn visszakapjuk a Tooli kaput, teht a Deutsch kapu a Tooli kapu
ltalnostsa, ezrt vele minden klasszikus reverzibilis logikai ramkr megvalst-
hat. Bebizonythat hogy minden kvantum ramkr is megvalsthat ezt az egy
kapu felhasznlva.
_

_
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 A B
0 0 0 0 0 0 B A
_

_
A =
1
2
(1 +e
i
), B =
1
2
(1 e
i
), Q

1.3. bra. A Deutsch-fle univerzlis kvantum kapu


4
Itt felidznm az unitr transzformci egyik dencijt, miszerint egy transzformci unitr,
ha mtrixnak sorainak, illetve oszlopainak halmaza ortonormlt bzist alkot (ha az egyik felttel
teljesl, akkor a msik is biztosan teljesl). Ebben az esetben a Hilbert trben hat a transzformci,
teht mtrixnak elemei komplex szmok
11
1. A kvantumszmtgp
Kvantum logikai hlzatok
Logikai hlzatokat logikai kapuk sszektsvel kpezhetnk. A logikai hlzatokra
nem vonatkoznak a logikai kapuk korltai, teht futsi idejk fgghet a bemenettl
(ezrt szksg van meglsjelz bit hasznlatra a szmts elkszltnek jelzsre),
visszacsatols lehet bennk, s ennek ksznheten memrijuk is lehet, teht nem
felttlenl ugyangy viselkednek mindig egy adott bemenetre.
Deutsch bebizonytotta, hogy az univerzlis kaput felhasznlsval pthet olyan
kvantum logikai hlzat, amellyel az univerzlis kvantum Turing-gp mkdse szi-
mullhat, teht a szmtsok logikai hlzatokkal val lersa ekvivalens a Turing-
gpes lerssal.
Elemi kvantum kapuk
Mg egybites reverzibilis klasszikus kapubl csak kett ltezik (az inverter s az
egysg-transzformci, vagyis az egy lps ksleltets), egy bites kvantum kapubl
vgtelen sok konstrulhat. Nzzk meg a leggyakrabban hasznlt egybites kapukat!
A klasszikus inverter kvantum megfelelje a mr bemutatott Pauli-X kapu, amit
bit-ip kapunak is neveznk. A | = [a, b]
T
qbit-re a kapu a kvetkezkppen hat:
_
a
b
_
X | =
_
0 1
1 0
_ _
b
a
_
= b |0 +a |1
.
A Pauli-Z kapu, vagy ms nven fzis-ip kapu a |1 bzisvektorhoz tartoz val-
sznsgi amplitdt invertlja:
_
a
b
_
Z | =
_
1 0
0 1
_ _
a
b
_
= a |0 b |1
.
A Pauli kapuk sort a Pauli-Y kapu zrja, amely kicserli, s j-vel szorozza az
llapot valsznsgi amplitdit:
_
a
b
_
Y | =
_
0 j
j 0
_ _
jb
ja
_
= jb |0 +ja |1
.
A fzisforgat kapu az paramter fggvnyben a kvetkez mveletet hajtja
vgre:
_
a
b
_
P() | =
_
1 0
0 e
j
_ _
a
e
j
b
_
= a |0 +e
j
b |1
.
A Hadamard kapu rendkvl gyakran hasznlt, ezrt fontos kapu, amely a kvet-
12
1.2. A kvantumszmtgp matematikai modelljei
kez transzformcit hajtja vgre:
_
a
b
_
H | =
1

2
_
1 1
1 1
_
_
a+b

2
ab

2
_
=
a+b

2
|0 +
ab

2
|1
.
rdemes mg megnznnk, hogy a Hadamard transzformci hogyan hat a bzisl-
lapotokra:
H |0 =
|0 +|1

2
, H |1 =
|0 |1

2
.
Vezrelt kapuk
A gyakorlatban a tbb bites kapuk kzl leginkbb a vezrelt kapukat hasznljuk.
A vezrelt kapu azt jelenti, hogy van egy engedlyez bemenete, s ha ez logikai
igaz, akkor vgrehajtja a megfelel unitr opertort, ha viszont hamis, akkor egy-
sgtranszformciknt viselkedik. Ez termszetesen a szoksos mdon kiterjeszthet
olyan esetekre, amikor a vezrl bemenet egy szuperpozci. A vezrelt kapuk mt-
rixa, s jellse a kvetkezkppen nz ki:

_
I 0
0 U
_
.
A leghasznosabb vezrelt kapu a CNOT (Controlled NOT, vezrelt tagads). Ez
egy vezrelt X kapu, viszont specilis jellst hasznlunk r. Ezt szemllteti a lenti
bra.

_
13
1. A kvantumszmtgp
14
2. fejezet
Hatkony algoritmusok
Kvantum algoritmusokat tervezni tbb szempontbl is nehz. Egyrszt egy kvantum
algoritmus csak akkor rdekes, ha hatkonyabb mint a legjobb klasszikus algoritmus.
Msrszt a kvantummechanika vilga htkznapi fogalmainkkal nehezen rhat le,
ezrt egy nagyon sajtos gondolkodsmdot ignyel. Ha a htkznapi intucinkra
hallgatunk egy algoritmus megalkotsa kzben, klasszikus algoritmust kapunk.
Ebben a fejezetben kt fontos algoritmust mutatok be, amelyek szemlltetik a
kvantum algoritmusok tipikus sszetevit, s elemzsi mdszereit. Az els a Deutsch-
Jozsa algoritmus, amely egy kvantum ramkr elemzsnek mdszerbe enged bepil-
lantst, viszont kevsb mutatja be az algoritmus megalkotsnak mdjt. A msik
a Kvantum Fourier Transzformci, amelynl a problma matematikai lersbl
kiindulva konstruktvan kapjuk meg a megoldst implementl ramkrt.
Az algoritmusok egyrszt szemlltetik a kvantum algoritmusok mgtti logikt,
msrszt a harmadik fejezetben bemutatott programozsi nyelvek szemlltetshez
j alapot adnak.
2.1. ptkvek
Egy kvantum-algoritmus alapveten hrom szakaszbl ll: a bemenet elksztse,
unitr transzformci, s mrs, aminek eredmnyekppen megkapjuk az algoritmus
futsnak eredmnyt. A lnyegi szmts elvgzse, vagyis az unitr transzformci
ltalban tbb jellemez rszbl ll.
Az algoritmusok egy jelents rsze a kvantum prhuzamossgot hasznlja ki,
vagyis hogy egy regiszter vagy bit rtke lehet az rtkkszletnek sszes elembl
kialaktott szuperpozciban is. Ezen a regiszteren mveleteket vgezve a regiszter a
mveletek eredmnyeinek szuperpozcijban lesz, teht kvzi az rtkkszlet sszes
elemn elvgeztk az adott mveletet egy lpsben. Elsknt teht ltalban vala-
milyen szuperpozcit alaktunk ki Hadamard kapukkal, majd ezen a szuperpozcin
vgznk szmtsokat.
A szmtsok elvgzse utn gynevezett amplitd-erstst hajtunk vgre. Ez
azrt szksges, mert miutn a szuperpozcin az adott mveleteket elvgezzk, az
eredmny a kiszmtott eredmnyek szuperpozcija, s a mrs sorn az eredmnyek
kzl vletlenszeren vlasztdik ki egy, s ezt kapjuk meg a mrs eredmnyekp-
pen. Ez ilyen formban tulajdonkppen egyenrtk azzal, hogy vletlenszeren
vlasztunk egy klasszikus bemenetet egy klasszikus algoritmusnak. Az amplitd
15
2. Hatkony algoritmusok
ersts a kvantum interferencit hasznlja ki, s valamilyen mdon kombinlja,
vagy szri a kiszmtott eredmnyeket (kiszmtott eredmnyek szuperpozcijt)
gy, hogy egy megfelel hatrozott kimenetet kapjunk, amit aztn megmrhetnk.
2.2. Deutsch-Jozsa algoritmus
A Deutsch-Jozsa algoritmus [12] a fenti smt szemllteti, s az eldje, a Deutsch
algoritmus [13] volt az els olyan szmtsi feladat, amelynl egy kvantum-algoritmus
jobb eredmnyt tudott elrni mint a legjobb klasszikus megfelelje.
2.2.1. A problma, s klasszikus megoldsa
A problma, amire az algoritmus hatkony megoldst ad a kvetkez. Adott egy f
fggvny, amelynek rtkkszlete {0, 1}
n
, azaz n darab binris bemenete van, rtel-
mezsi tartomnya pedig {0, 1}, azaz egy binris kimenettel rendelkezik
1
. Az adott
fggvnytl megkveteljk, hogy legyen vagy kiegyenslyozott, teht a lehetsges be-
menetek felre 0-t, a msik felre 1-et ad eredmnyl, vagy konstans, azaz az sszes
bemenetre ugyanazt a vlaszt adja. A feladat hogy egy ilyen fggvnyt megvalst
fekete doboz ramkrrl dntsk el, hogy kiegyenslyozott, vagy konstans fggvnyt
implementl.
A klasszikus esetben nincs ms vlasztsunk, mint elkezdeni a lehetsges bemene-
teket prblgatni, s ha tallunk kt olyat, amelyre klnbz vlaszt kapunk, akkor
tudjuk, hogy egy kiegyenslyozott fggvnyrl van sz. Ha viszont a bemenetek tbb
mint felre ugyanolyan vlaszt kapunk, biztosak lehetnk benne, hogy egy konstans
fggvnnyel van dolgunk. Legrosszabb esetben n/2 lpst kell vgrehajtanunk.
2.2.2. Kvantumos megolds
Hagyomnyos ramkr implementci helyett vegyk az f kvantum-ramkrkkel
megvalstott vltozatt. Tudjuk, hogy minden klasszikus ramkr talakthat
reverzibilis ramkrr, s minden reverzibilis ramkr megvalsthat kvantum ka-
pukkal (lsd 1.2.2. rsz), teht valstsuk meg a fekete doboz ramkrt ilyen mdon,
jelljk ezt az ramkrt Q
f
-el.
Konstruljunk olyan, a CNOT-hoz hasonl kaput, amelyet nem kzvetlenl a
control bemenet, hanem a control bemenetek f fggvnye vezrel (lsd 2.1. bra).
Ezt a kaput nevezzk U
f
-nek. Ha nagyobb ramkr rszeknt hasznljuk az U
f
-et,
ltalban elhagyjuk a konstans bemenetet, s az eredmny kimenetet (|0 s |f(x)),
mert ha nem vgznk mrst a kimeneten, akkor ezek nem befolysoljk a nagyobb
ramkr mkdst.
A Deutsch-Jozsa algoritmus a kvantum prhuzamossgot hasznlja ki. Az algo-
ritmus menete rviden a kvetkez. Az n bites regiszterben ellltjuk a lehetsges
sszes n bites binris rtk szuperpozcijt, s ezzel vezreljk az U
f
kapun keresztl
az als vezetken bemen H |1 szuperpozcit. Amplitdrstsknt a kimeneti
regiszteren alkalmazunk n Hadamard kaput, majd megmrjk a regiszter rtkt.
1
A Deutsch algoritmusnl n=1.
16
2.2. Deutsch-Jozsa algoritmus
|x
Q
f
|x
|0 |f(x)
|
1

_
_ _ _ _ _ _ _ _

_ _ _ _ _ _ _ _
|
2

|x
U
f
|x
|
1
|
2

2.1. bra. f-kontrolllt CNOT kapu


|
0
= |0
/
n
H
U
f
H

|1
H

|
0

|
1

|
2

|
3

2.2. bra. A Deutsch-Jozsa algoritmus kvantum-ramkre


Kvessk vgig, hogy a rendszer llapota hogyan alakul az egyes lpsek utn!
Els lps a qbitek inicializlsa:
|
0
= |
0
|1 = |0
n
|1 .
A kvetkez lpsben ellltjuk a lehetsges bemenetek szuperpozcijt:
|
1
= H
n
|
0
H |1 = (H |0)
n
H |1
=
_
_
1

2
n

x{0,1}
n
|x
_
_
. .

|0 |1

2
.
Az gy kialakult szuperpozcira (teht minden lehetsges bemenetre egyszerre)
alkalmazzuk az U
f
kaput:
|
2
= U
f
|
1
=
1

2
n

x{0,1}
n
|x
|f(x) |1 f(x)

2
=
1

2
n

x{0,1}
n
|x (1)
f(x)
|0 |1

2
=
_
_
1

2
n

x{0,1}
n
(1)
f(x)
|x
_
_
. .
|
2

|0 |1

2
.
17
2. Hatkony algoritmusok
rdekes mdon a kapu alkalmazsa az als qbit llapott nem vltoztatta meg, a
regiszter szuperpozcijban pedig azoknak az x-eknek a valsznsgi amplitdjt
vltoztatta ellenttesre, amelyekre az f(x) rtke 1. Ez persze ilyen megfogalmazs-
ban nem teljesen igaz, ez csak a ltszat, a jelensg valjban az sszefonds egy
rdekes megnyilvnulsa.
Az mrst elkszt lps az amplitdersts, amely sorn a regiszterre n
darab Hadamard kaput alkalmazunk. Igazolhat, hogy egy n qbites |x bzislla-
potban lev regiszter llapota egy n darabos Hadamard tmb alkalmazsa utn:
H
n
|x =
1

2
n

z{0,1}
n
(1)
xz
|z ,
ahol az xz az x s z binris skalris szorzatt jelenti
2
. Az amplitdersts hatsa
a | regiszterre:
|
3
= H
n
|
2
=
1

2
n

x{0,1}
n
(1)
f(x)
H
n
|x
=
1

2
n

x{0,1}
n
(1)
f(x)
1

2
n

z{0,1}
n
(1)
xz
|z
=

z{0,1}
n
_
_
1
2
n

x{0,1}
n
(1)
xz+f(x)
_
_
. .
c
z
|z , (2.1)
valamint az egsz rendszer llapotra:
|
3
= (H
n
I)(|
2

|0 |1

2
) = |
3

|0 |1

2
.
Az utols lps a mrs elvgzse olyan mdon, hogy kpesek legynk klnbsget
tenni a konstans, s a kiegyenslyozott f fggvnyek kztt. A regiszter egy |z
bzisllapothoz tartoz valsznsgi amplitdjt a 2.1. egyenletben c
z
jelli. A
|z = |0 bzisllapothoz tartoz amplitd:
c
0
=
1
2
n

x{0,1}
n
(1)
x0+f(x)
=
1
2
n

x{0,1}
n
(1)
f(x)
,
amirl rgtn ltszik, hogy ha f(x) konstans, akkor rtke 1, vagy 1. Ha f ki-
egyenslyozott, akkor a szumma tagjainak fele +1, a fele 1, azaz a valsznsgi
amplitd 0. Ha teht a mrsi eredmny |0, biztos hogy a fggvny konstans, ha
brmi ms, akkor biztos hogy a fggvny kiegyenslyozott.
2.3. Kvantum Fourier Transzformci
A Fourier transzformci egy jel idbeli, s frekvenciatartomnybeli reprezentcija
kztti kapcsolatot adja meg, s a mrnki gyakorlatban felfedezse ta egy nagyon
2
Binris szmjegyeiket pronknt sszeszorozzuk, majd modulo 2 sszeadjuk.
18
2.3. Kvantum Fourier Transzformci
fontos s gyakran hasznlt mdszer. Br a Peter Shor ltal felfedezett [34] hatkony
Kvantum Fourier Transzofrmci exponencilisan gyorsabban szmolhat a klasszi-
kushoz kpest, ltni fogjuk, hogy az eredmny nem kzvetlenl hozzfrhet valsz-
nsgi amplitdk formjban jelentkezik. Ezrt nem is igen hasznlhat kzvetle-
nl Fourier transzormlsra, csak ms kvantum algoritmusok ptkve lehet, ilyen
szempontbl ez az algoritmus nem illeszkedik a fejezet elejn felvzolt smra. Ez
azonban semmit nem von le hasznossgbl, st, a legtbb olyan algoritmus, amely
a klasszikus mdszernl nagysgrendekkel gyorsabb, a QFT-re vezethet vissza.
A DFT mdszernek interpretcijval a fejzetben nem foglalkozom, felttelezem
hogy az olvas tisztban van ezzel, ehelyett a DFT matematika dencijbl indulok
ki.
2.3.1. Kapcsolat a DFT s a QFT kztt
A DFT egy olyan transzformci, amelynek bemenete s kimenete N dimenzis
komplex vektor. A bemenet legyen x = [x
0
, x
1
, ..., x
N1
]
T
, ekkor ennek transzfor-
mltja az y = DFT{x} vektor, melynek Fourier egytthati (komplex koordinti):
y
k
=
1

N
N1

i=0
x
i
e
j
2
N
ik
.
D =
_

_
1 1 1 1 1
1
2

3

N1
1
2

6

2(N1)
1
3

9

3(N1)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
N1

2(N1)

3(N1)

(N1)(N1)
_

_
= e
j
2
N
2.3. bra. A DFT mtrix alakja
Ezt felrhatjuk mtrix alakban is (lsd 2.3. bra), ekkor a transzformci alkal-
mazsa ezzel a mtrix-szal val szorzst jelent.
A kvantummechanikban hasznlt llapotvektorok szintn komplex vektorok. sz-
revehetjk, hogy egy n bites kvantum-regiszterben kitnen lehet trolni az N = 2
n
bemenet DFT bemeneti s kimeneti vektorait (normalizlt formban). Ismert to-
vbb, hogy a Fourier transzformci mtrixa unitr, ez alapjn deniljuk a Kvan-
tum Fourier Transzormcit egy n bites | regiszteren vgzet transzormciknt.
A regiszter llapota kezdetben:
| = [
0
,
1
, ...,
N1
]
T
=
N1

i=0

i
|i ,
majd a QFT-t vgrehajtva a | = F | regiszterllapothoz jutunk, melynek val-
19
2. Hatkony algoritmusok
sznsgi amplitdi:

k
=
1

N
N1

i=0

i
e
j
2
N
ik
,
teht a transzformci utn a regiszter llapota:
| = F | =
N1

k=0

k
|k =
1

N
N1

k=0
N1

i=0

i
e
j
2
N
ik
|k .
Az QFT inverze az unitrt mivolta miatt az adjungltja:

k
=
1

N
N1

k=0

i
e
j
2
N
ik
,
ezzel az inverz transzformcival itt rszletesebben nem foglalkozom, bizonyos algo-
ritmusokban azonban ez is fontos szerepet kap.
2.3.2. A QFT felptse egyszer kapukbl
A QFT kplett megfelelen talaktva eljuthatunk egy olyan lersig, amelyben csak
nhny egyszer kapu szerepel, gy praktikusan megpthetv vlik
3
. Ez fontos,
mert hiba tudjuk a mtrix-alakjt, ha nincs megfelel felbontsunk, a hardver
megptse nem lehetsges, vagy nagyon bonyolult.
Induljunk ki az llapottr egy bzisvektornak transzformlsbl, majd a szu-
perpozci elvt hasznlva ltalnostsuk a megoldst egy tetszleges bemenetre!
Egy |i bzisvektorra alkalmazva a transzformcit, gyelembe vve hogy N = 2
n
:
F |i =
1

2
n
2
n
1

k=0
e
j
2
2
n
ik
|k . (2.2)
Egy 2
n
tag szuperpozcit kapunk. rjuk fel a szuperpozci minden egyes tagjra
a regiszter bitekre lebontott llapott. Ehhez a |k-t |k
1
|k
2
|k
n
alakra kell
hoznunk, az egyes bitek egytthatit pedig a k binris felrsa alapjn hatrozzuk
meg, ami: k = k
1
2
n1
+ k
2
2
n2
+ + k
n
2
0
=

n
l=1
k
l
2
nl
. Ekkor a kvetkez
alakhoz jutunk:
e
j
2
2
n
ik
|k = e
j
2
2
n
i

n
l=1
k
l
2
nl
n

l=1
|k
l
= e
j2i

n
l=1
k
l
2
l
n

l=1
|k
l
,
majd felhasznlva, hogy e
+
= e

, valamint a produktum s a tenzor-produktum


sszevonhatsgt:
e
j2i

n
l=1
k
l
2
l
n

l=1
|k
l
=
n

l=1
e
j2ik
l
2
l
n

l=1
|k
l
=
n

l=1
e
j2ik
l
2
l
|k
l
.
A (2.2) egyenletet teht erre az alakra hoztuk:
F |i =
1

2
n
2
n
1

k=0
n

l=1
e
j2ik
l
2
l
|k
l

3
Feltve hogy a felhasznlt kapuk megpthetek.
20
2.3. Kvantum Fourier Transzformci
Ez a regiszterllapot az sszes lehetsges llapot egy slyozott szuperpozcija,
ami ebben az esetben egyenrtk azzal, hogy minden bit a |0 s |1 slyozott
szuperpozcijban van. Az egytthatkat a |0 s |1-hez csoportostva:
F |i =
1

2
n
n

l=1
(e
j2i(k
l
=0)2
l
|0 +e
j2i(k
l
=1)2
l
|1)
=
1

2
n
n

l=1
(|0 +e
j2i2
l
|1)
=
n

l=1
1

2
_
|0 +e
j2i2
l
|1
_
. .
|
l

=
n

l=1
|
l

Ha a
l
-t mg tovbb alaktjuk, s megkapjuk hogy rtke hogyan fgg az i egyes
bitjeinek rtktl, akkor felrajzolhatjuk a QFT-t megvalst kvantum-ramkrt.
Ehhez elszr vegyk szre, hogy a kitevben az i2
l
kifejezsnek csak a trtrsze
szmt, mert ez a 2-hez tartoz arnyszm, s egsz szm teljes krbeforgats
utn ugyanaz a szget kapjuk
4
. Az i-t bontsuk fel binris szmm: i =

n
k=1
i
k
2
nk
,
teht az i binris szmjegyei: i
1
, i
2
, ..., i
n
. Knnyen belthat, hogy i2
l
trtrsze:
_
n
k=n+1l
i
k
2
k
_
2
l
. Ezt, valamint a hatvnyozs azonossgait felhasznlva:

l
=
1

2
_
|0 +e
j22
l

n
k=n+1l
i
k
2
k
|1
_
=
1

2
_
|0 +
n

k=n+1l
e
j22
(l+k)
i
k
|1
_
=
1

2
_
|0 +
n

k=n+1l
_
e
j22
(l+k)
_
i
k
|1
_
Nzzk meg
l
-t nhny l rtkre:
|
1
=
|0 + (1)
i
n
|1

2
|
2
=
|0 + (1)
i
n1
_
e
j

2
_
i
n
|1

2
|
3
=
|0 + (1)
i
n2
_
e
j

2
_
i
n1
_
e
j

4
_
i
n
|1

2
.
.
.
|
n
=
|0 + (1)
i
1

n
k=2
_
e
j

2
k
_
i
k
|1

2
A kapott eredmnybl mr kiolvashatjuk hogy az egyes vezetkeken milyen ka-
pukat kell alkalmaznunk. Az els egyenlet megegyezik a Hadamard kapu hatsval,
4
Ezt az Euler-fle komplex szm jells miatt hasznlhatjuk ki.
21
2. Hatkony algoritmusok
teht |
1
= H |i
n
. A msodik egyenletben elszr egy Hadamard kaput alkalmaz-
tunk a |i
n1
-re, majd egy

2
-es fziskaput, ha i
n
= 1. A |i
p
ltal kontrolllt 22
h
radint forgat fzis kaput R
p
h
-val jellve ezt gy rhatjuk le: |
2
= R
n
2
H |i
n
. Ezt
tetszleges l > 1 rtkre ltalnosthatjuk:
|
l
=
_
n

i=n+2l
R
i
in+l
_
H |i
n+1l
(2.3)
A 2.3. egyenlet alapjn mr felrajzolhat a QFT-t megvalst kvantum ramkr
Hadamard, s vezrelt fzis kapuk hasznlatval (lsd 2.4. bra). Az brn a kapuk-
nl fels indexben nem jelltem a vezrl vezetk indext, mert enlkl is ltszik,
hogy melyik vezetk a vezrl. Ahhoz, hogy a kimeneten a megfelel sorrendben
legyenek a qbitek, mg egy swap kaput is hasznlnunk kellett, ami nem csinl mst,
mint megcserli a bemen qbitjei sorrendjt a kimenetn.
|i
1

H

S
|
1

.
.
.
.
.
.
|i
n3

H R
2
R
3
R
4
|
n3

|i
n2

H R
2
R
3
|
n2

|i
n1

H R
2
|
n1

|i
n

H
|
n

2.4. bra. A QFT kvantum-ramkre


2.3.3. A QFT alkalmazsai
Az egyik leghresebb alkalmazsa a QFT-nek a szintn Shor ltal publiklt prmfak-
torizcis algoritmus [34]. Ha tudunk nagy szmokat prmtnyezkre bontani, akkor
az RSA titkosts knnyen trhet. Az algoritmus ltezse ezrt egy nagy motivl
er kvantum szmtgpek ptsre.
Egy kvantum-informatikn belli alkalmazs a kvantum fzisbecsls. Ha adott
egy unitr transzformci, akkor az inverz QFT-t felhasznlva pthetnk olyan
ramkrt, amely kpes a transzformci egy adott sajtvektorhoz tartoz sajtrtk
tetszleges pontossg becslsre
5
.
2.4. Ms kvantum algoritmusok
Egy msik olyan algoritmust is ki szoktak emelni, amely miatt a kvantumszm-
tgpeket hatkonyabbnak mondhatjuk a klasszikus szmtgpeknl. Ez Grover
algoritmusa [16], amellyel rendezetlen adatbzisban O(

N) lpsben kereshetnk.
5
Unitr transzformcik esetn a sajtrtk mindig e
j
alak. Hossza teht egysgnyi, s csak
a fzist kell meghatroznunk, innen ered a fzisbecsls elnevezs.
22
3. fejezet
Programozsi nyelvek
Kvantum algoritmusok lersra ltalban ramkrk, s informlis szveg keverkt
hasznljuk. Ez sok szempontbl nem idelis megolds.
Ahogy a klasszikus esetben is, sokkal tmrebben lehet egy algoritmus mkdst
lerni egy programozsi nyelven, valamint ezt knnyebb is befogadni azoknak, akik
mr ismerik az adott nyelvet. Egy szabvnyos programozs nyelvet hasznlva kln-
vlaszthatjuk az algoritmus elemzst az algoritmus lerstl, azonban a megfelel
formlis nyelveket hasznlva akr egy program helyessgt is bizonythatjuk hosszas
szveges bizonytsok nlkl.
A kvantum ramkrk hasznlatnak egy msik htrnya, hogy br kivlan meg-
jelentik az adatramlst a rendszerben, nem kpesek vezrlsi szekezetek (pl. ciklu-
sok) hatkony lersra; erre a programozsi nyelvek mindenkpp jobban alkalmasak.
Kvantum-szmtgpek a gyakorlatban mg nem hozzfrhetek, azonban ez nem
jelenti azt, hogy programozsi nyelvek fejlesztse rtelmetlen lenne. Elszr is belt-
hat idn bell vrhat, hogy kereskedelmi forgalomba kerlnek ilyen szmtgpek,
ami megnyitja majd a kaput a praktikus alkalmazsok eltt. Msrszt a klasszikus
nyelvek gyors fejldse olyan tem, hogy a programozsi nyelvek elmlete nem min-
den esetben tudja kvetni, mrpedig ebbl sok elny is szrmazhatna (mint pl. a
Java esetn, amelynek jabb verzii mgtt megfelel elmleti httr is ll). A kvan-
tum nyelvek ebbl a szempontbl idelis helyzetben vannak, mert mire elterjedten
hasznlhatak lesznek, mr megfelel elmleti httr gylik ssze mgttk.
3.1. Programozsi paradigmk
Gottfried Leibniz, a nmet matematikus s lozfus nagy vgya volt
i. ltrehozni egy univerzlis nyelvet, amin minden problma lerhat, s
ii. tallni egy mdszert, amivel minden univerzlis nyelven megfogalmazott prob-
lma megoldhat.
Ha a problmk lerst matematikai problmkra korltozzuk, akkor az elsrend
logika megfelel univerzlis nyelvnek.
A (ii) pont viszont fontos lozai krdss vlt: Megoldhat-e minden prob-
lma amit egy univerzlis nyelven fogalmazunk meg?. Ez a krds eldnthetsgi
problma (Entscheidungsproblem) nven vlt ismertt.
23
3. Programozsi nyelvek
A krdsre a negatv vlaszt 1936-ban egymstl fggetlenl Alan Turing [36] s
Alonzo Church [8] adta meg. Ehhez mindketten kidolgoztk az eldnthet probl-
mk dencijt, s egy nyelvet, amin algoritmusokat fejezhetnk ki.
Turing kidolgozta a ksbb rla elnevezett Turing-gpek elmlett, Church pedig
a -kalkulust. A kt megkzeltsrl kiderlt hogy ekvivalensek, s a megoldhat
problmk ugyanazon osztlyt rjk le
1
.
Az elsrend logikra pl szemllet a logikai programozs. A Turing-gpek
szekvencilisan hajtanak vgre utastsokat, az ezt a szemlletet tvev programo-
zsi nyelvek az imperatv programozsi nyelvek. A kalkulusban egy program egy
kifejezs, amely tartalmazza az algoritmust s a bemenetet is, a program vgrehaj-
tsa pedig a kifejezs reduklsa egszen addig, amg az eredmnyt nem lehet tovbb
alaktani; ekkor a kifejezs megfelel a program kimenetnek. Az utbbi szemlletben
ltrehozott programozsi nyelveket nevezzk funkcionlis programozs nyelveknek.
3.2. Formlis szemantika
Egy nyelv formlis szemantikja matematikailag egzakt mdon megadja a kapcso-
latot a nyelv elemei, s valamilyen szmtsi modell kztt. Ha megfelel mate-
matikai modell lltunk egy nyelv mg, kpesek lehetnk programok helyessgnek
matematikai bizonytsra, vagy pldul a programkd optimalizlsra. Egy nyelv
szemantikja tbb mdon is megadhat, ezek egymstl abban klnbznek, hogy
milyen matematikai struktrra kpezik le a nyelv elemeit. Hrom olyan szeman-
tikai irnyzat van, amivel rdemes itt foglalkozni: a denotcis, avagy matematikai
szemantika, az opercis, avagy mveleti szemantika, valamint a kategriaelmleti
szemantika.
Denotcis szemantika. A denotcis szemantikban a nyelv minden kifejezse
egy msik nyelv egy kifejezsre fordtdik. Ez hasonlt a szmtstechnikai r-
telemben vett fordtshoz, azonban a clnyelv ltalban valamilyen matematikai
formalizmus.
Mveleti szemantika. Egy nyelv mveleti szemantikja nem egy msik nyelvre
val fordtssal adja meg a program rtelmezst, hanem kzvetlenl a futtats mi-
kntjt adja meg, ha adott a program adott nyelven lert kdja. Ez trtnhet pldul
egy absztrakt gp megadsval, aminek az llapott a program kifejezsei vltoztat-
jk, vagy akr gy is, hogy a program futtatst tiszta szintaktikai manipulciknt
adjuk meg, ahogy a lambda kalkulus esetben (lsd 3.5.1. rsz).
Kategriaelmleti szemantika. Mieltt a kategriaelmleti, avagy kategorikus
szemantikval foglalkoznnk, nagyon rviden bemutatom a kategriaelmlet fonto-
sabb fogalmait. Rszletes, s pldkkal tzdelt bevezetk tallhatk a szakiroda-
lomban, lsd pl. [14].
A kategriaelmlet a matematika egy viszonylag atal ga. Taln a halmazel-
mlethez ll a legkzelebb, ennek ltalnostsaknt tekinthet. A kategria olyan
elemek gyjtemnye, amik valamilyen kzs tulajdonsggal rendelkeznek. Ezeket
1
A kvantum informatikban hasznlt szmtsi modellekrl bvebben lsd az 1.2. rszt.
24
3.3. Szmtgp-architektra - a QRAM modell
az elemeket objektumoknak nevezzk, s kztk nyilakat, vagy morzmusokat de-
nilhatunk, amelyek mindig kt objektumot ktnek ssze. A morzmus tipusa
meghatrozza hogy melyik kt objektumot kti ssze s melyik irnyba mutat.
Egy objektum lehet pldul a vals szmok halmaza, egy msik az egsz szmok
halmaza, s egy ket sszekt morzmus az egszre kerekts. Denilhatunk mg
funktorokat, amelyek egy kategrit egy msikra kpeznek le, megadva az egyms-
nak megfeleltetett objektumokat, illetve morzmusokat.
A kategriaelmleti szemantikban a nyelv szintaxisa, s a szintaxishoz tartoz
interpretci egy-egy kategrit alkot, s a kztk denilt funktor adja meg a szin-
taxishoz tartoz jelentst.
3.3. Szmtgp-architektra - a QRAM modell
A 1.2. fejezetben mr ismertettem a kvantumszmtgp matematikai modelljeit.
Mai ismereteink szerint egyre valsznbb, hogy a kvantumszmtgpek a jvben
a hagyomnyos szmtgpekhez kapcsolt kls hardverknt lesznek hasznlatosak,
nem pedig nmagukban. A praktikus felhasznlst gyelembe vve a matematikai
modellek mellett rdemes bevezetnnk egy kevsb absztrakt modellt, ami erre a
megkzeltsre pl, s amit a programnyelvek trgyalsnl hardver modellknt
kezelhetnk.
A QRAM (Quantum Random Access Machine - Kvantum Vletlen Hozzfrs
Gp) modell ezt szem eltt tartva vetette fel elszr Knill 1996-ban, a kvantum
pszeudo-kdot is ler cikkben, s azta is elszeretettel hasznljk kvantum hard-
ver modellezsre. A modell alapja teht az, hogy van egy hagyomnyos szmtgp,
ami valamilyen interfszen keresztl hozzfr egy kvantum hardverhez. A zikai
interfsz most lnyegtelen, ez lehet egy illesztkrtya, vagy akr egy interneten ke-
resztli kapcsolat egy tvoli kvantumszmtgphez.
A kvantum hardver bizonyos szm qbitet kezel, ezeket egy lineris cmtrbe k-
pezzk le. A logikai interfsz lehetsget biztost unitr transzformcik egy hard-
vertl fgg halmaznak vgrehajtsra brmely qbithalmazon, valamint mrs el-
vgzsre. A transzorfmcik halmazval kapcsolatban az egyetlen megkts, hogy
univerzlis kapuhalmaz legyen (pldul Hadamard, fzis, s vezrelt fzis kapu), ez
az alkalmazott zikai implementcitl fgg.
Kvantum-hardvert hasznl programok esetn, mint ahogy a hagyomnyos eset-
ben is, szksgnk van egy fordtra, vagy rtelmezre. A fordt (rtelmez) az,
ami elfedi a programoz ell a kvantum hardver korltozsait, s zikai, valamint
logikai interfszt. Pldul lehetsget biztosthat tetszleges unitr transzform-
ci vgrehajtsra, ha ezeket fordtsi idben kpes a hardvernek megfelel elemi
transzformcikra lebontani. A programoznak nem kell a kvantum hardver logi-
kai s zikai interfszvel sem foglalkozni, ezeket a fordt, vagy meghajtprogram
kezeli.
A kvetkezkben teht a QRAM modellt vesszk alapul, praktikus hasznlhat-
sga miatt.
25
3. Programozsi nyelvek
3.4. Imperatv nyelvek
3.4.1. Kvantum pszeudo-kd
Valsznleg a legkorbbi javaslat egy formalizlt kvantum programozsi nyelvre
Knill cikke [18] volt. A szerz egy imperatv stlus pszedokdot javasol, s ennek
szintaktikjt mutatja be. Klasszikus algoritmusok lersnl gyakran hasznlnak
pszeudonyelveket. Ezeknek az elnye, hogy ha szksges, olyan elemeket vonhat-
nak be az algoritmus lersba amik egyik szigoran meghatrozott szintaktikj
nyelvben sem szerepelnek, mint pldul matematikai kpletek hasznlata, utast-
sok szveges megfogalmazsa, vagy tetszleges pontossg szmtpusok, azaz elvo-
natkoztathatnak az implementci konkrt rszleteitl.
Nyelvi elemek
Kommentek. A programkdban a C: jells utn helyezhetnk el kommentet
(amelyet nyomtatsban dlt betvel is elklntnk a kd tbbi rsztl).
Fggvnyhvs. A fggvnyhvsokat hasonlan kezeljk, s jelljk, mint a tbbi
imperatv nyelvben (pl. C). A fggvnynevek jellsre nyomtatsban kiskapitlis
betket hasznlunk.
Regiszterek. Az els specilis kvantum elem a Knill-fle pszeudokdban a klasszi-
kus s kvantum regiszterek klnvlasztsa. Ha egy regiszter a bzisllapotainak
szuperpozcijban van, ezt a regiszter nevnek alhzsval jelezzk. Egy regiszter
nincs a klasszikus, vagy kvantum tpushoz ktve. Ha pldul egy klasszikus regisz-
terrel olyan mveletet vgznk, amelynek hatsra nem klasszikus llapotba kerl,
egyszeren alhzzok a nevt, s ettl a ponttl kvantum regiszterknt kezeljk. A
regiszterek inicializlsnak mdjait a 3.1. brn lthat kdrszlet mutatja be.
Unitr opertorok. Egy kvantum regiszterre csak unitr opertorok, s mrs
tjn gyakorolhatunk hatst, unitr opertort pedig csak kvantum regiszterre al-
kalmazhatunk (illetve megfelel konverzi utn klasszikus regiszterre is). Az unitr
opertorokat nyomtatsban rott bettpussal jelljk (pl. H, Hadamard kapu), s
a mtrixukkal deniljuk. A paramter fziskapu dencija pldul:
R

(a) =
_
1 0
0 e
i
_
a
Vezrlsi szekezetek. Knill az if feltetel then parancs s a for i = kezdet to i =
veg vezrlsi szekezeteket hasznlja, azonban ezek mintjra knnyen denilhat
akr egy while ciklus is. A vezrlsi szekezetek egymsba gyazsnl zrjelek
helyett az indentci hasznlhat a klnbz szintek megklnbztetsre. Az
unitr opertorok vezrlsre hasznlhat a if q
1
then A(q
2
) szerkezet, ezzel rhat
le pldul a Fourier transzformci kontrolllt forgatsa.
26
3.4. Imperatv nyelvek
a 42
C: A klasszikus a regiszter a decimlis 10 rtket kapja rtkl.
a KlasszikusMuvelet()
C: Az a regiszter a KlasszikusMuvelet() fggvnyhvs visszatrsi rtkt
kapja rtkl.
a UniformSzuperpozicio(d)
C: Az UniformSzuperpozicio(d) mvelet klasszikus bemenetet kap, de egy
kvantum llapottal tr vissza. A fggvny ltrehozza a d bites regisztert amely
az sszes bzisllapotnak egyenletes szuperpozcijban van.
c Szorzs(b, d)
C: A szubrutin klasszikus, s kvantum regisztereket is hasznl paramterknt,
s j kvantum regisztert hoz ltre. Az j regiszter lehet hogy sszefondott
llapotban van a b regiszterrel.
x KvantumMvelet(x, y)
C: A szubrutin hvsa sorn x valamilyen szuperpozci llapotba kerl, teht
innentl kvantum regiszterknt kezeljk.
3.1. bra. Regiszterek inicializlsa a kvantum pszeudo-kdban
Mrs. A mrst legegyszerbben a a a rtkadssal jellhetjk. Ha egy fgg-
vnyhvs sorn egy kvantum regiszter megmrnk, akkor az rtkads jobb oldaln
a megmrt regiszter mg kvantum regiszterknt szerepel, a bal oldalon mr klasszi-
kusknt (pl.: a MveletMajdMrs(a, b, c)). A legltalnosabb esetben egy
rtkads bal oldaln tbb regiszter is megadhat, ezzel jelezhetjk ha a fggvny a
paramterei kzl tbbet is megmr.
Egyb kiterjesztsek. Az eredeti cikk nem adja meg hogy egy fggvnyen bell
hogyan adhatunk meg visszatrsi rtkeket, erre hasznlhatjuk pldul a return a,
vagy tbb visszatrsi rtk esetn a return (a, b) kifejezst. Hasznos lehet ha para-
mterknt fggvnyeket, vagy unitr opertorokat tudunk tadni, ezt pldul jell-
hetjk kiskapitlis, illetve rott bettpus hasznlatval a fggvny deklarcijakor
(ezt hasonlkppen rtelmezhetjk, mint a C++ sablonjait, teht a fggvny ebben
az esetben egy sablon, amibe a megfelel helyre egy unitr opertort beilleszthe-
tnk).
Formlis szemantika
Mivel egy pszeudokdrl van sz, nem beszlhetnk formlis szemantikrl. A nyel-
vet algoritmusok embereknek szl egysges lersra talltk ki, s sem a kvantum
ramkrre fordts lehetsge, sem a szilrd elmleti httr nem volt szempont a
nyelv tervezsnl.
27
3. Programozsi nyelvek
DeutschJozsa(Fuggveny, n)
C: Inicializls.
x UniformSzuperpozicio(n)
a 1
H(a)
C: A paramter fggvny tal kontrolllt CNOT.
y Fuggveny(x
1
, x
2
, . . . , x
n
)
if y then X(a)
C: Amplitd ersts.
H(x)
C: Mrs.
x x
if x = 0 then return A fuggveny konstans.
return A fuggveny kiegyensulyozott.
3.2. bra. A Deutsch-Jozsa algoritmus pszeudo-kdja
Pldk
Deutsch-Jozsa algoritmus. Az algoritmus kvantum pszeudo-kdja a 3.2. brn
lthat. Az f ltal kontrolllt CNOT kaput az if feltteles szerkezettel fejeztem
ki. A kdban hasznlt X unitr opertor a Pauli-X kapu, azaz a negls egybites
kapuja.
QFT. Az algoritmus pszeudo-kdja a 3.3. brn lthat. A kd az ramkr br-
jnl tmrebben, a 2.3. egyenletnl pedig jobban rtheten fejezi ki az algoritmus
mkdst.
Fourier(a, d)
for i = 1 to i = d
H(a
i
)
for j = i + 1 to j = d
C: Kontrolllt fzis kapu
if a
j
then R
2/2
ji+1(a
i
)
C: Swap kapu
S(a)
3.3. bra. A QFT pszeudo-kdja
28
3.4. Imperatv nyelvek
tpus jellse korltozs
qureg nincs korltozs
quconst minden szubopertorra invarins (nem vltozhat az rtke)
quvoid res amikor a nem-invertlt opertort meghvjuk
quscratch a hvs eltt s utn is res
3.1. tblzat. A QCL tpusok, s a rjuk vonatkoz korltozsok
3.4.2. QCL
Az els valdi, implementlt kvantum programozsi nyelv az 1998-ban publiklt
QCL [23], amelyet a szerz, Bernhard mer ksbb folyamatosan fejlesztett, s
karbantartott (lsd [24], [25], [26], [27]). Ez egy imperatv nyelv, amely szintaktik-
jban sokat mert a C-bl. A szerz kzztett egy szimultort is a nyelvhez, ami a
honlapjrl letlthet [22]. A QCL a pszeudo-kdhoz hasonlan a QRAM modellt
hasznlja hardvermodellknt.
Nyelvi elemek
Tpusok, vltozk. A nyelv tpusos, teht minden vltozhoz egy tpust kell hoz-
zrendelnnk. Az alapvet kvantum vltoztpus a qureg, amely kvantum regisztert
jelent. Az 1 hosszusg kvantum regiszter egy kvantum bitet jell. A regiszter mre-
tt a C tmbjeihez hasonlan jelljk, pl. a qureg a[3] vltozdeklarci egy 3 bites
regisztert jelent. Szubrutinok paramtereinek deklarlsnl tbb kvantum tpust is
hasznlhatunk, ezek korltozhatjk a szubrutin adott vltozhoz val hozzfrst.
Ez a lehetsg tbb dolog miatt szerepel a nyelvben. Egyrszt ha ilyen korltozso-
kat hatrozunk meg, a fordt hatkonyabb ramkrt generlhat a kdbl, msrszt
futsidben kiszrhetk gy bizonyos programozsi hibk
2
. A tpusokat, s a r-
juk vonatkoz korltozsokat a 3.1. tblzat mutatja be. Emellett hasznlhatunk
klasszikus tpusokat is, pl. int, vagy brmely ms megszokott alaptpus.
Szubrutin hierarchia, s mellkhatsok. Tbbfle szubrutint deklarlhatunk.
Egy szubrutin lehet eljrs, kvantum opertor, kvantum fggvny, vagy fggvny.
Az osztlyozs az alapjn trtnik, hogy egy adott szubrutin milyen mellkhat-
sokkal
3
rendelkezik a klasszikus, valamint a kvantum gp llapotra nzve. Egy
adott hierarchia szinten lev szubrutin csak vele egyenl, vagy alacsonyabb hierar-
chiaszint szubrutint hvhat, ezzel megakadlyozzuk hogy tbb mellkhatsa legyen,
mint amit a tpusa megenged. A hierarchiaszinteket a 3.2. tblzat mutatja. Az S
jelenti a klasszikus gpre vonatkoz lehetsges mellkhatst, a jelenti a kvantum
gpre vonatkoz mellkhatst. A fggvny, a kvantum fggvny, valamint az oper-
tor kapcsolata szoros analgiban van a 1.2.2. rszben bemutatott nem invertlhat,
invertlhat, valamint kvantum kapuk kzti kapcsolattal.
2
Ez egy szoksos rv a statikusan tipusos nyelvek mellett ltalban is.
3
A mellkhats nagyvonalakban azt jelenti, hogy a fggvny a visszatrsi rtknek eltrolsn
kvl ms vltoztatst is vgez az t vgrehajt gp memrijban. A funkcionlis nyelvekben
ltalban nem megengedett a mellkhats.
29
3. Programozsi nyelvek
szubrutin jells S invertlhat
eljrs procedure brmi brmi nem
kvantum opertor operator semmi unitr igen
kvantum fggvny qufunct semmi permutci igen
fggvny visszatrsi tpus semmi semmi nem
3.2. tblzat. A QCL szubrutinok hierarchija
Fggvnyek. A fggvny a legjobban korltozott szubrutin tpus. Nem lehet
mellkhatsa a klasszikus s kvantum llapotgpre. ltalban matematikai fgg-
vnyek deklarlsra hasznljuk. Hardver megfelelje a klasszikus logikai hlzat,
gy nem invertlhat, viszont kiegszthet invertlhat fggvnny, ezrt hvhat
alapveten kvantum (azaz invertlhat) szubrutinokbl. Ebben az esetben a fordt
(szimultor) gondoskodik a megfelel ideiglenes plusz qbit-ek lefoglalsrl, amik az
invertlhatv ttelhez kellenek.
Kvantum fggvnyek. Ez a tpus tulajdonkppen megfelel a klasszikus inver-
tlhat logikai hlzatoknak (a mellkhatsoktl eltekintve). Ez azt jelenti, hogy a
kimeneten az egyes bemeneti bzisllapotok permutcijt valstja meg. Klasszikus
llapotban (bzisllapotban) lev bemenetre klasszikus llapotban lev kimenetet
produkl (ettl fggetlenl a paramterei kvantum regiszterek), viszont alkalmaz-
hat szuperpozciban lev bemenetekre is. Kvantum fggvnyknt valsthat meg
pl. a regiszter nvelse fggvny:
quf unct i nc ( qureg x) {
i nt i ;
f o r i = #x1 to 1 s t ep 1 {
CNot( x [ i ] , x [ 0 : i 1] ;
}
Not ( x [ 0 ] ) ;
}
Kvantum opertorok. Ilyen tipus szubrutinban egy tetszleges unitr ope-
rtort valsthatunk meg, teht nem korltozzuk a szubrutin mkdst llapot-
permutcira, mint a kvantum fggvnyek esetn. Bemenetknt kaphatunk klasszi-
kus, valamint kvantum rtkeket is. Mint ahogy az elz szubrutin tpusoknl, itt
is tiltottak a kvetkezk:
globlis vltozk hasznlata
mellkhatsok a klasszikus gp llapotra
adat bekrs a felhasznltl, s a random() fggvny hvsa
nem-unitr kvantum mveletek (pl. measure s reset )
Az opertorok adjungltjt, vagyis inverzt a fordt az eredeti opertor alapjn
kpes generlni, ezt az opertor neve el rt ! szimblummal krhetjk. Az in-
verz Fourier transzformcit pldul gy hasznlhatjuk: !qft(a) ha a qft-t mr
deklarltuk.
30
3.4. Imperatv nyelvek
Eljrsok. Egy eljrs megfelel annak, amit pl. Pascalban eljrsnak hvunk
(vagy C-ben a void visszatrsi tipus fggvny). Nem vonatkoznak r az elz-
ekben trgyalt korltozsok.
Opertor feltteles alkalmazsa. Programozs sorn nagyon gyakori, hogy fel-
tteles szerkezeteket hasznlunk. A kvantumbitekkel vgzett mveletek sorn az
egyik mdja ennek az opertorok feltteles alkalmazsa, ahol egy enable qubit ha-
trozza meg, hogy az adott opertor alkalmazzuk-e. Egy ilyen feltteles szerkezetet
knnyen unitr mtrix alakra hozhatunk (az else g elhagysa esetn U
2
= I):
if e U1(x) else U2(x);
_
U
2
0
0 U
1
_
Feltteles elgazs. Ha a feltteles szerkezetben lev kifejezs megvltoztathatja
a program llapotot (pldul loklis vltozknak ad rtket), akkor ezt a fordt
mskpp kezeli mint az opertorok feltteles alkalmazst. Vgigkveti a vezrls
lehetsges tjait, majd sorbarendezi a prhuzamosan az egyes szlakban alkalma-
zott utastsokat, s gy hajtja vgre azokat.
Mrs. A mrs nyelvi elem, s a measure q, i; kifejezssel rhat le. Itt a q
regisztert mrjk meg, s a mrs eredmnyt az i regiszterbe tltjk.
Formlis szemantika
A QCL szemantikja nem denilt. Ebbl kifolylag matematikailag nem tudjuk
egy QCL program helyessgt bizonytani, fordtprogram rsa pedig nehezebb,
mint egy jl denilt szemantikval rendelkez nyelv esetn.
Pldk
Deutsch-Jozsa algoritmus. Az algoritmus QCL kdja a 3.4. brn lthat.
Kezdetben adott a G opertor, ami a vizsgland fggvny ltal kontrolllt NOT
kaput valstja meg, valamint a bemeneti regiszternek mrete, amit az n globlis
vltoz trol.
QFT. Az algoritmus QCL kdja a 3.5. brn lthat.
3.4.3. Q
Bettelli et al. [7] egy magas szint objektumorientlt megkzeltst mutatnak be,
ami begyazhat a ltez objektumorientlt nyelvekbe. A szerzk konkrt megva-
lstsa egy C++ fggvnyknyvtr, de rvelsk szerint akr Java-ban, vagy ms
nyelvben is megvalsthat lenne.
A nyelv tervezsnl fontos szempont volt, hogy ne egy ad-hoc nyelvet hozzanak
ltre, hanem egy elterjedt, szles krben hasznlt nyelvet egsztsenek ki. Ez sok
elnnyel jr, pldul knnyebb implementlhatsg, s szles krben ismert szintaxis,
magas szint nyelvi elemek (pl. objektumorientlt programozs). Egy msik elny,
31
3. Programozsi nyelvek
i nt n = . . . ;
oper at or G( qureg x [ n ] , qureg y) { . . . }
procedure deutsch ( ) {
qureg x [ n ] , y [ 1 ] ;
i nt m;
H( x & y) ;
G( x , y) ;
H( x) ;
measure x , m;
i f m == 0 pr i nt "Af uggveny konstans . "
el se pr i nt "Af uggveny ki e gye ns ul yoz ot t . " ;
}
3.4. bra. A Deutsch-Jozsa algoritmus QCL kdja
oper at or qf t ( qureg q) {
i nt i ; i nt j ;
for i = 1 to #q {
for j = i +1 to #q
i f q [ j ] CPhase (2 pi /2^( j i +1) , q [ i ] ) ;
H( q [ i ] ) ;
}
f l i p ( q) ;
}
3.5. bra. A QFT QCL kdja
32
3.4. Imperatv nyelvek
Prototpus Lers
class Qreg; Regiszter osztly.
Qreg::address Qbit cm tpus.
Qreg::size_type Qbit mret tpus.
Qbitset Qbithalmaz tpus.
Qreg::Qreg(size_type s = 1, value v = 0); Ltrehozs j qbitekbl.
Qreg::Qreg(const Qbitset &the_bits); Ltrehozs meglev qbitekbl.
Qreg::Qreg(const Qreg &a_register); Msol konstruktor.
Qreg::~Qreg(); Destruktor - felszabadts.
void Qreg::operator=(const Qbitset &the_bits) const; Qbithalmazhoz rendels.
Qreg Qreg::operator[](address n) const; n. qbit kivlasztsa.
Qreg Qreg::operator()(address n, size_type s) const; n. - (n+s). qbit kivlasztsa.
Qreg operator&(const Qreg &r_1, const Qreg &r_2); Regiszterek sszevonsa.
Qreg &Qreg::operator&=(const Qreg &second_register); Regiszter beolvasztsa.
Qreg &Qreg::operator+=(size_type the_size); Mret nvels.
Qreg &Qreg::operator-=(size_type the_size); Mret cskkents.
Qreg::size_type Qreg::size(void) const; Mret lekrdezs.
Qbitset Qreg::measure(void) const; Mrs elvgzse.
void Qreg::operator=(value v) const; rtkads klasszikus rtkkel.
3.3. tblzat. A Q regiszter osztlya
hogy gy knnyebben elvlaszthat egymstl a kvantum, s klasszikus szmts,
ami azrt fontos, mert ez a nyelv is a QRAM modellt veszi alapul.
Egy msik fontos szempont, amiben a nyelv klnbzik ms imperatv nyelvektl
az az objektumorientlt megkzelts. A regisztereket, s az opertorokat objektu-
mokknt kezeljk. Ez egyrszt knyelmes, tlthat szintaxist jelent, msrszt az
opertorok optimalizlsa miatt is fontos. A kvantum mveleteket - mint ahogy
ltni fogjuk - deklaratv mdon adjuk meg, gy sokkal knnyebben optimalizlha-
tak, mint pl. egy QCL fggvny, ami egy kvantum opertornak felel meg.
A szerzk nem adjk meg a nyelvi kiterjesztsk nevt. A Q elnevezst - amely
valsznleg abbl szrmazik, hogy a kvantum erforrsokat reprezentl osztlyok
neve nagy Q-val kezddik, s kisbetkkel folytatdik - ms forrsok hasznljk a
szerzk munkjra val hivatkozskor.
Nyelvi elemek - regiszterek
A kvantum regiszterekhez nem frhetnk kzvetlenl hozz, hanem csak az ket
reprezentl Qreg objektumokon vgezhetnk mveleteket. Az objektum publikus
metdusai hatrozzk meg a vgezhet mveletek halmazt. A Qreg osztly teht
egy interfsz a kvantum hardver fel. Az interfsz elemeit a 3.3. tblzat sorolja fel.
Lefoglals. Regiszter lefoglals a Qreg osztly pldnyostsval a regiszter mre-
tnek megadsa mellett lehetsges, ezutn a ltrejv objektum az jonnan lefoglalt,
eddig hasznlaton kvli qbiteket reprezentlja. A konstruktornak paramterl ad-
hatjuk a lefoglaland regiszter mrett, s a regiszter kezdeti rtkt. Alaprtelmezs
szerint 1 qbitet foglal le a konstruktor.
33
3. Programozsi nyelvek
tmretezs. A kezdeti mretet ksbb brmikor mdosthatjuk. Erre a += s
-= (felldenilt C++) opertorok hasznlhatak. A regiszter mretnek cskken-
tsekor a mr nem kell qbiteket a keretrendszer felszabadtja, ennek mdjrl a
regiszter felszabadts rszben rok rszletesebben.
Cmzs, s sszevons. Regisztert nem csak j qbitek lefoglalsval hozhatunk
ltre. A msik lehetsges mdszer, hogy mr meglev, ms regiszterekben sze-
repl qbiteket vonunk ssze, s kezelnk regiszterknt. Ilyen mdon egymst tfed
regiszterek is ltrehozhatk, de ez nem jelent problmt, st, bizonyos esetekben
knyelmesebb regiszterkezelst jelent. Nem kvetelmny az sem, hogy egy regiszter
bitjei egyms mellett legyenek - a regiszter valjban qbit referencik halmaza. A
q regiszter n. bitjre mutat referencit a q[n], az n-tl n+m-edik bitjig terjed
alregiszterre mutat referencit a q(n,m) kifejezssel kaphatunk. Kt regisztert az
& opertorral vonhatunk ssze.
rtkads. A regiszternek brmikor adhatunk rtkl klasszikus rtket. Ekkor a
kvantum hardver egy mrs utn a megadott klasszikus llapotba hozza regisztert.
Egy regiszternek rtkl adhatunk msik regisztert, vagy qbithalmazt, ez viszont
nem msolst jelent (ami egybknt sem lenne lehetsges), hanem a regiszterhez tar-
toz qbithalmaz megvltoztatst az rtkads jobb oldaln szerepl qbithalmazra.
Ugyanez vonatkozik a msol konstruktor alkalmazsra is.
Qbit felszabadts. Minden qbithez szmon tarthatunk egy szmllt, ami azt
mutatja meg, hogy hny regiszter mutat r. Ha ez a szmll 0-ra cskken, akkor a
qbit szabadd vlik az j lefoglalsok szmra. A szerzk nem foglalkoznak vele, de
a vletlenszer idpontban (a qbit jrafoglalsa utni inicializcikor) bekvetkez
dekoherencia elkerlse miatt rdemes lenne minden qbitet felszabadtskor implicit
megmrni.
Mrs elvgzse. A Qbit osztly rendelkezik egy measure metdussal, ezen ke-
resztl vgezhetnk a regiszteren mrst. Az visszatrsi rtkknt kapott Qbitset-
et egsz tpusra cast-olva megkapjuk a mrs eredmnyt.
Nyelvi elemek - opertorok
A Q-ban az opertorokat elemi kapukbl, illetve ms, elre megadott elemekbl pt-
jk fel, nem pedig a mtrix reprezentcit adjuk meg
4
. ltalban igaz a hatkony
kvantum algoritmusokra, hogy alacsony szint ptelemekbl ptkeznek, klnben
nem tekintjk ket hatkonynak. Az opertorok C++ interfszt a 3.4. tblzat
szemllteti.
Alapvet ptelemek. Szksg van egy olyan ptelem halmazra, amelybl
aztn a bonyolultabb transzformcikat megpthetjk. Nagyon sok univerzlis ka-
puhalmazt lehet denilni, de hogy melyiket rdemes hasznlni, az ltalban fgg a
4
Nem tudok rla, hogy mtrix reprezentciban is meg lehetne adni opertorokat. Ez a kpessg
bizonyos esetekben hasznos lenne, pl. egy algoritmus nem teljesen dekompozitlt, flksz alakjnak
szimullsra.
34
3.4. Imperatv nyelvek
Prototpus Lers
class Qop; Opertor osztly
Qop::Qop(); Alaprt. konstruktor
Qop::Qop(const Qop &op); Msol konstruktor
Qop::Qop(const Qop &op, size_type ctrl); Vezrelt opertor kpzs.
Qop::Qop(int (*f)(int), size_type in, size_type out); Oracle opertor kpzs.
Qop::Qop(bool (*f)(int), size_type in); Fzis oracle kpzs.
Qop operator&(const Qop &op_1, const Qop &op_2,); sszefzs klnbz
Qop &Qop::operator&=(const Qop &op); mdokon, lsd lers
Qop &Qop::operator<<(Qop &op);
Qop &Qop::split(size_type head, size_type jump); Vgs.
Qop &Qop::invert(size_type head, size_type size); Bitsorrend invertlsa.
Qop Qop::operator()(size_type,size_type,op_type) const; Lsd a lerst.
Qop Qop::offset(size_type jump); Eltols.
Qop Qop::operator>>(size_type jump) const; Eltolt op. ltrehozsa.
Qop &Qop::adjoin(void); Adjungls (invertls).
Qop Qop::operator!(void) const; Inverz op. ltrehozsa
Qop Qop::operator()(const Qreg &a_register) const; Alkalmazs regiszterre.
3.4. tblzat. A Q opertor osztlya
kvantum hardvertl. A Q tervezsekor a Hadamard, a fzis, s a vezrelt fziskapu
halmazt vlasztottk, de valjban az ket reprezentl osztlyok elfedik ezt, s
ksbb az alaphalmaz akr mdosthat is. Mindegyik ptelemhez tartoz osztly
konstruktora els paramterknt egy darabszmot vr, gy lehetsg van egyszerre
tbb kapu ltrehozsra. A fzis kapuk megegyeznek a Fourier transzformcinl
hasznlt R
k
kapukkal, teht a fzis paramter a szget a kvetkez sszefggs
alapjn hatrozza meg: (k) = exp(j2/2
k
). Nzznk meg nhny pldt az pt-
elemek ltrehozsra:
QHadamard H(3); QPhase P(3, 2); QCondPhase CP(2, 4);
H
H
H
R
2
R
2
R
2

R
4
R
4
0
1
_
2
_
3
4
5
6
_
Tovbbi ptelemek. Elre denilt ptelemknt elrhetek
mg a QCnot, a QToffoli, a QSwap, s a QFourier opertorok. A
swap s a Fourier opertor mretet vr paramterknt, a Cnot pa-
ramterezse viszont rdekesebb. Kpes egyszerre tbb kaput ltre-
hozni, ezrt kt listt vr paramterknt. Az els lista azoknak a
vezetkeknek a felsorolsa, amik vezrl bitekknt fognak mkdni, a
msodik a vezrelt qbitek listja. Ha pldul avezrl qbitek listja
{0,4,5}, a vezrelt qbitek listja {1,2,6}, akkor a jobb oldalon lthat
ramkr jn ltre.
35
3. Programozsi nyelvek
Ltrehozs. Ha a tetszleges mret regiszterre alkalmazhat egysg opertorbl
akarunk elkezdeni ptkezni, akkor a Qop osztly alaprtelmezett konstruktort kell
hasznlnunk.
Lehetsg van viszont egy mr meglev opertor lemsolsra is a msol konst-
ruktorral, vagy ltrehozhatunk egy olyan msolatot, ami az eredetivel ellenttben
kontrolllt.
A harmadik lehetsg az inicializlsra egy klasszikus fggvny alapjn val lt-
rehozs. Ekkor a fordt a megadott fggvny kdjt reverzibiliss alaktja, majd a
mtrix reprezentcijt veszi. Lehetsg van bool s int visszatrsi rtk fgg-
vny talaktsra is. Az gy ltrehozott opertorokat oracle opertornak nevezzk
a Grover algoritmusban betlttt szerepkre utalva.
Megjegyeznm, hogy nem minden fggvny alkalmas oracle opertor ltrehoz-
sra, hanem csak azok, amik nem mdostjk illetve olvassk a program llapotvl-
tozit. Tulajdonkppen a matematikai fggvnyekre korltozdik az talakts, de
ennek ellenrzsnek, s az talakts implementlsnak lehetsgeit a szerzk sem
ltjk tisztn, ezrt a referencia-implementcibl ez a lehetsg hinyzik
5
.
sszefzs s trendezs. Az opertorunkat sszefzssel bvthetjk, talak-
tani pedig a vgs, az eltols, s a bitsorrent invertls mveletekkel tudjuk. Mind-
egyik mveletnek ltezik olyan vltozata, amely j opertor objektumot hoz ltre,
s olyan, amelyik az adott opertoron helyben vgrehajtja az adott mveletet. A
vgs s a bitsorrend invertls kt paramtert vr, az els kijelli az els vezetket,
a msodik a vezetkek szmt amin hatnia kell a mveletnek. A kvetkez pld-
ban az els sorban az adott opertoron hat, a msodik sorban pedig a msolatot
ltrehoz C++ opertorokat szemlltetem. A harmadik sor ezek hatst mutatja az
opertornak megfelel ramkrre.
QHadamard A(2) .split(1,1) .offset(1) .invert(2,2) <<QCondPhase(2,4);
QHadamard A(2);B=A(1,1,SPLIT); C=B<<1; D=C(2,2,INVERT);E=D&QCondPhase(2,4);
H
H
H
H
H
H
H
H

H

H R
4
R
4
Adjungls. A Qop objektumokat adjunglni (teht invertlni) is tudjuk. A m-
velet kt kivitelben ltezik. A felkiltjel (!) C++ opertorral j, az eredeti adjun-
glt opertort hozunk ltre, mg a .adjoin() fggvny az adott opertort adjun-
glja.
Alkalmazs. Opertort azrt hozunk ltre, hogy alkalmazzuk valamilyen regiszte-
ren. Ezt gy tehetjk meg, hogy az adott Qop objektumot fggvnyknt alkalmazzuk
5
A funkcionlis nyelvekben eleve nem megengedettek a fggvny mellkhatsok, teht egy funk-
cionlis nyelvben ez a problma nem jelentkezne.
36
3.4. Imperatv nyelvek
bool deutsch ( bool ( f ) ( i nt ) , Qreg : : si ze_type s ) {
Qop D = H( s +1) << Qop( f , s ) << H( s ) ;
Qreg R = Qreg ( s , 0) & Qreg ( 1 , 1) ;
D(R) ;
i nt m = R( 0 , s ) . measure ( ) ;
i f (m==0) return true ; // A f uggveny konst ans .
el se return f al se ; // A f uggveny k i e g y e ns ul y o z o t t .
}
3.6. bra. A Deutsch-Jozsa algoritmus C++ kdja a Q knyvtrat hasznlva
cl ass QFouri er : public Qop {
i nt s i z e ;
public :
QFouri er ( si ze_type s i z e ) : Qop( ) , s i z e ( s i z e ) {
for ( i nt i = 0; i < s i z e ; i ++) {
&thi s << QHadamard( 1) . o f f s e t ( i ) ;
for ( i nt j = i +1; j < s i z e ; j ++)
&thi s << QCondPhase ( 1 , j i +1) . i nve r t ( 0 , 2)
. s p l i t ( 1 , j i 1)
. o f f s e t ( i ) ;
}
&thi s << QSwap( s i z e ) ;
}
}
3.7. bra. A QFT C++ kdja a Q knyvtrat hasznlva
egy Qreg objektumra. Ez a knyelmes szintaktika is a C++ opertor felldenilsi
kpessgnek ksznhet.
Formlis szemantika
Ahogyan a QCL-nl, a nyelv szemantikjt a szerzk itt sem deniltk matematikai
mdszerekkel.
Pldk
Deutsch-Jozsa algoritmus. Az algoritmus kdja a 3.6. brn lthat.
QFT. Az algoritmus a Q fggvnyknyvtrban mr meg van valstva, s Qfourier
nven elrhet. Egy lehetsges implementci a 3.7. brn lthat.
3.4.4. Ms imperatv nyelvek
qGCL
A qGCL (quantum Guarded Command Language) nyelvet Sanders s Zuliani publi-
klta 2000-ben [29]. A nyelv alapja a pGCL nyelv (probabilistic Guarded Command
37
3. Programozsi nyelvek
Language), ami viszont Dijkstra GCL (Guarded Command Language) programnyel-
vn alapul. Azrt vlasztottk a GCL-t alapul, mert jl meghatrozott szemantikja
van.
A GCL-t a szerzk kiegsztettk kvantum eljrsok hvsval. Egy ilyen szubrutin
hrom tpusba tartozhat: inicializci, evolci, s nalizci (mrs).
A nyelv egyarnt hasznlhat egy program mkdsnek speciklsra, s ma-
gnak a programnak az elksztsre. A matematikai szemantiknak ksznheten
lehetsges a program helyessgrl rvelni, s a programkdot msik ekvivalens prog-
ramkdd alaktani, azaz a programkdot automatikus egyszersteni.
Br a rekurzi a GCL-nek, s a pGCL-nek is rsze, a qGCL nem tmogatja a
hasznlt fordtsi technika miatt.
LanQ
Ez egy viszonylag atal nyelv, 2007-ben mutatta be Hynek Mlnark [20]. Pontosan
denilt mveleti szemantikja van, gy ilyen szempontbl a QCL s a Q eltt jr,
s a szerz szerint gyakorlatiasabban hasznlhat mint a qGCL. Kpes prhuzamos
szlakat futtatni, s a szlak kztt kommunikcit megvalstani.
3.5. Funkcionlis nyelvek
3.5.1. Bevezets a klasszikus lambda kalkulusba
Ebben a rszben rviden bemutatom a klasszikus lambda kalkulus elemeit, ezzel
bevezetve a kvantum lambda kalkulusokat. A nyelv konstansokkal bvtett, tpusta-
lan vltozatval foglalkozom, mert a ksbbiekben bemutatand kvantum vltozat
is erre pl.
Nyelvi elemek
A konstansokkal bvtett lambda kifejezsek halmazt (C)-vel jelljk. A kife-
jezsek felptst formlisan a 3.8. bra adja meg. Az egyes elemek jelentst a
kvetkezkben rszletesen megmagyarzom.
C C C (C) (Konstansok)
x V x (C) (Vltozk)
M, N (C) (MN) (C) (Alkalmazs)
M (C), x V (x.M) (C) (Absztrakci)
3.8. bra. A lambda kalkulus kifejezsei
Vltozk. A vltozkat kisbetkkel jelljk, s pldul fggvnyek megadsra
hasznlhatk, a kvetkezkben lert mdon.
38
3.5. Funkcionlis nyelvek
Absztrakci s Alkalmazs (applikci). Ezek tulajdonkppen a fggvny
deklarlst, s fggvnyhvst (pontosabban vltoz-behelyettestst) jelentik. Te-
gyk fel, hogy van egy M kifejezs, amiben van egy szabad x vltoz (ezt gy jell-
jk: M[x]). Ekkor a x.M jelenti az M absztrakcijt, a (x.M)a kifejezs pedig az
absztrakci alkalmazst az a vltozra. Vegyk pldul a M[x] = 2x+3 kifejezst.
Ekkor a (x.(2x + 3))a kifejezst az alkalmazst hasznlva gy rhatjuk t: 2a + 3.
Alkalmazst nem csak vltozkkal hasznlhatunk, hanem tetszleges lambda kifeje-
zssel. Ha egy Absztrakcihoz tbb paramtert akarunk hasznlni, ezt a kvetkez
jellst felhasznlva tehetjk meg:
F = x
1
. . . x
n
.f(x
1
. . . x
n
) x
1
.(x
2
.( x
n
.f(x
1
. . . x
n
) )).
Az eredmnyl kapott F kifejezs a vrakozsainknak megfelelen, a kvetkez egy-
szer mdon hasznlhat (a

szimblum pontos jelentsvel a kvetkez bekezds


foglalkozik):
Fx
1
. . . x
n

f(x
1
. . . x
n
).
-redukci. A -redukci azon redukcis szablyok sszessgt jelenti, amiket fel-
hasznlva egy lambda kifejezst egyszerbb alakra hozunk. Ez alapveten a vltoz-
behelyettestst (Alkalmazs), valamint a hozz kapcsold szablyokat jelenti. Ha
az A kifejezs egy lpsben -reduklhat B kifejezsre, akkor ezt A

B-vel jell-
jk. Ha az A kifejezs (egy vagy tbb lpsben) -reduklhat B kifejezsre, akkor
ezt gy jelljk: A

B. A kvetkez lltsok igazak a -redukcira:


i. (x.M[x])N

M[x := N];
ii. M

N ZM

ZN, MZ

NZ, s x.M

x.N.
Az els llts magt a redukcis szablyt adja meg, teht az Alkalmazs elvgzs-
nek mdjt. A msodik a -redukci tulajdonsgait rja le: a redukci egy szomsz-
dos kifejezst (Z) rintetlenl hagyva is rvnyes marad (teht nagy kifejezseknek
egy kisebb rszt kivlasztva, s csak azon vgrehajtva is rvnyes a redukci), s
hogy egy fggvnyabsztrakci belsejben is elvgezhet a redukci.
Konstansok. A konstansok olyan elemek, amelyekhez mi rendelhetnk jelentst,
s akr redukcis szablyokat is. Pldul denilhatjuk konstansknt az egsz sz-
mokat, s redukcis szablyknt az sszeadst. Ezzel a redukcis szabllyal kt
sszeadsjellel sszekttt szmkonstans egy szmkonstanss reduklhatunk. Eze-
ket a szablyokat szablyoknak, illetve redukcis lpseknek nevezzk. Az egy,
valamint a tbb lpsnyi -redukci jellse a -redukcinl megszokott mdon

.
Plda: redukci s konstansok. A redukcis eljrs tulajdonkppen a prog-
ram futtatst jelenti, ezrt rdemes egy pldn keresztl szemlltetni. Az albbi
programban az sqr = x.x x, a doublemapsum = fxy.(fx + fy), valamint az
sqrsum = xy.doublemapsum sqr x y kifejezst felhasznlva kiszmoljuk kt szm-
39
3. Programozsi nyelvek
konstans ngyzetsszegt:
sqrsum 2 3

doublemapsum sqr 2 3

sqr 2 + sqr 3

2 2 + 3 3

13
Magasabb rend konstrukcik s vezrlsi szerkezetek
A lambda kalkulusak tulajdonkppen az sszes nyelvi elemt bemutattam az elz-
ekben. A magasabb rend konstrukcik ezeket hasznljk fel, s bizonyos esetekben
rvidtseket rendelnek bizonyos kifejezsekhez. Fontos hagslyozni, hogy pl. a case,
vagy a listk kezelse nem nyelvi elem, hanem alapvet nyelvi elemekbl ltrehozott
bonyolultabb konstrukci.
A let szably. Bonyolultabb formulk tlthatbb felrsnl hasznos a let hasz-
nlata, ami a kvetkezkppen denilhat:
let (t
1
. . . t
n
) = (x
1
. . . x
n
) in t ((t
1
. . . t
n
).t)(x
1
. . . x
n
)
Szmok. Szmokat nem csak konstansokkal vezethetnk be, hanem ms nyelvi
elemekkel is. Ennek hasznt ksbb a listknl kezelsnl ltjuk majd (azon fell
hogy a konstansok hasznlata kikszblhet, gy egyszersthet a nyelv). Most
hasznljuk a kvetkez dencit
6
:
0, 1 succ 0, 2 succ 1, . . . ,
, ahol
id x.x
0 xy.(x id)
succ nxy.(y n).
Listk. A tbbi funkcionlis nyelvhez hasonlan a listk els elemt kln ke-
zeljk, s fejnek hvjuk (s ltalban h-val jelljk), a tbbi elem tmbjt pedig
faroknak nevezzk (s ltalban t-vel jelljk). A msodik elem a lista farknak a
feje, s gy tovbb, a lista vgt pedig egy reslista farok jelzi.. A listk formlis
dencija a szmokhoz hasonl, de itt a cons listapt konstruktort hasznljuk a
succ helyett:
() xy.(x id) (3.1)
cons htxy.((y h) t).
A () az reslistt jelenti. Szoks a cons h t kifejezst gy rvidteni: h : t. A denci
elnye, hogy a szmok dencijhoz nagyon hasonl, gy listkra is alkalmazhatjuk
mdosts nll a kvetkez bekezdsben bemutatott case szerkezetet.
6
Church eredeti szmfogalma eltr az itt lerttl. egy fggvny n-szer val alkalmazst vette
az n szm lambda kalkulus-beli reprezentcijnak.
40
3.5. Funkcionlis nyelvek
Case szerkezet. A szmok s listk dencijt gy adtuk meg, hogy knny
legyen egy case szerkezetet bevezetni. rtelmezzk a case kifejezst a kvetkez-
kppen szmok s listk esetn:
case n of (0 T
1
, succ m T
2
[m]) n (z.T
1
) (m.T
2
), (3.2)
case l of (() T
1
, cons h t T
2
[h, t]) l (z.T
1
) (ht.T
2
).
A case segtsgvel megadhatunk egy olyan elgazst, amiben meghatrozhatjuk
azt a kifejezst, amit a 0, illetve az reslista esetn, valamint azt, amit nem-nulla,
illetve nem-res lista esetn akarunk alkalmazni. Lista esetn a nem-res listt a
case sztbontja fejre, s farokra, s ezeket kln kezelhetjk.
Pldk
Case szmokon. A case-t alkalmazva megadhatjuk pldul a nyelvi elemeket
felhasznl (nem konstansokat hasznl) szmdencihoz tartoz sszeads fgg-
vnyt (pontosabban a jobb olvashatsg kedvrt azt, hogy mire redukldik az els
lpsben):
add a b

case a of
_
0 b
succ m add m (succ b).
Case listkon. Listakezelsre is knnyen alkalmazhat a case. Tegyk fel hogy
adott a listk sszefzst vgz append fggvny. Nzzk meg a lista megfordtst
vgz reverse fggvnyt:
reverse list

case list of
_
() ()
h : t append (reverse t) (h).
Egy plda az alkalmazsra:
reverse 1 : 2 : 3 : ()

3 : 2 : 1 : ()
Formlis szemantika
A lambda kalkulus szemantikja opercis, avagy mveleti szemantika. A nyelv
bemutatsnal mr ismertettem a program futtatsnak lerst - ez ugyanis -
redukcis lpsek sorozatnak vgrehajtst jelenti. Ezzel a nyelv szemantikja tu-
lajdonkppen teljes, s ennek minden elnyt magnak tudhatja a lambda kalkulus
(pl. matematikai mdszerekkel manipullhatjuk, egyszersthetjk a programk-
dot).
3.5.2. A van Tonder-fle kvantum lambda kalkulus
Tbb problma is felmerl a lambda kalkulus kvantumos alkalmazsval kapcsolat-
ban. Elszr is, egy lambda kifejezs redukcija (teht a program futtatsa) nem
reverzibilis mvelet. Msodszor, knnyen krealhatunk olyan lambda kifejezst,
amely vltozit tekintve nem lineris, vagyis vltozkat dob el, vagy nemlineris
mveleteket vgez rajtuk. Ezt a kt problmt kell kikszblnnk egy hasznlhat
kvantum lambda kalkulus ltrehozshoz.
41
3. Programozsi nyelvek
Tbb prblkozst is tallunk a szakirodalomban. Elsknt Maymin publiklt
egy kvantum lambda kalkulust 1996-ban (
q
kalkulus [19]). Errl azonban kiderlt,
hogy valsznleg kvantumszmtgpeken nem szimullhat a nyelv, teht zikailag
nem megvalsthat. Ezt az is altmasztja, hogy a nyelv hatkonyan kpes meg-
oldani NP-teljes problmkat, ez pedig jelenlegi tudsunk szerint nem lehetsges
kvantumszmtgpeken.
Az els igazn j megoldst Andr van Tonder adta 2003-ban [39]. A kvetkezk-
ben az ltala bevezetett
q
kalkulust veszem alapul. Ksbb tbb ms kvantum
lambda kalkulus is szletett, ezekkel a 3.5.3. fejezetben foglalkozom rviden.
Nyelvi elemek
Konstansok. A 0, az 1, s a szoksosan hasznlt kvantum kapuk a nyelvben kons-
tansokknt jelennek meg. Egy tetszleges kvantum llapotot szintn konstansnak
tekintnk, s a szoksos mdon a ket-et hasznlva jelljk. Egy redukcis szably
lehetne pldul:
|(H 0)

2
(|0 +|1)
|(H 1)

2
(|0 |1),
viszont ez a redukci nem reverzibilis, mert nem lehet egyrtelmen meghatrozni
a redukci kiindul llapott.
Reverzibilis redukci. Mostantl az egyszersg kedvrt nem klnbztetem
meg a valamint a redukcit (ettl fggetlenl termszetesen nem ugyanaz a
kett). A reverzibilis redukci alaptlete az, hogy a redukci eredmnyben trol-
junk annyi trtnet informcit, ami ppen elegend a redukcis lps rekonstru-
lsra. Az eltrtnetet az aktulis llapottl pontosvesszvel elvlasztva troljuk.
|(H 0) redukcija pldul gy nzne ki:
|(H 0)
1

2
(|(H 0); 0 +|(H 0); 1)
= |(H 0);
1

2
(|0 +|1).
Ez mg nem megfelel, mert bonyolultabb kifejezsek (pl. |(H (H 0))) redukcija-
kor a trtnet nem mindig emelhet ki, s ez megakadlyozza az egybknt ssze-
vonhat kifejezsek sszevonst. A problma gykere az, hogy tbb informcit t-
rolunk mint amennyi felttlenl szksges. A megolds az, hogy csak az aktulisan
reduklt alkifejezst troljuk. Lssuk a |(H (H 0)) helyes reverziblis redukcijt:
|(H (H 0))
1

2
(|(_ (H _); (H 0) +|(_ (H _); (H 1))
= |(_ (H _);
1

2
(|(H 0) +|(H 1))
|(_ (H _);
1
2
(|(H _); 0 +|(H _); 1 +|(H _); 0 |(H _); 1)
= |(_ (H _); (H _); |0 .
42
3.5. Funkcionlis nyelvek
Lineris kifejezsek. A kvantum lambda kalkulustl fggetlenl ltezik n. li-
neris lambda kalkulus, ennek a jellseit s kifejezseit vette t van Tonders kvan-
tum lambda kalkulusa. Klnbztessnk meg lineris (x.t) s nemlineris (!x.t)
Absztrakcit, a !t pedig jelentsen nemlineris kifejezst. F klnbsg egy lineris
s egy nemlineris Absztrakci kztt, hogy a lineris esetben minden argumen-
tumot pontosan egyszer kell felhasznlnunk, nemlineris esetben pedig nincs ilyen
korltozs.
Jlformltsg. A linearitst ellenrizve minden kifejezsrl meghatrozhatjuk
hogy jlformlt-e. A kvetkez pldkban a bal oldalon jlformlt a jobb oldalon
pedig nem jlformlt kifejezsek lthatk:
!x.0 x.0
x.x x.!x
!x.(x x) x.(x x)
y.(!x.y) y.(x.y)
!y.!(!x.y) y.!(!x.y)
.
nmagban a jlformltsg azonban nem jelenti hogy a program hibtlanul le tud
futni. A y.((!z.0)y) jlformlt kifejezs, de az argumentumtl fggen vagy
futsidben hibt generl (ha y lineris kifejezs), vagy hibtlanul lefut.
Magasabb rend konstrukcik s vezrlsi szerkezetek
A cons (listapt opertor), illetve a listakezel case szerkezet kis mdostsokkal
kpes listkban lineris rtkeket kezelni. A lista dencijban (3.1. egyenlet)
az x-et s y-t mindenhol nemlinerisra cserlve, valamint a case (3.2. egyenlet)
felbontst a kvetkez mdon helyettestve kszen is vagyunk:
case n of (0 T
1
, succ m T
2
[m]) n !(!z.T
1
) !(m.T
2
),
case l of (() T
1
, cons h t T
2
[h, t]) l !(!z.T
1
) !(ht.T
2
).
A mrs hinya, s kvetkezmnyei
A kalkulusnak nem rsze a mrs. Sok esetben ez azrt nem problma, mert a mrs
az utols lps, s vehetjk gy, hogy a kalkulus az algoritmus bels mkdst
rja le, anlkl hogy a kimenet rtelmezst (vagyis a mrst, majd az eredmny
kirtkelst) magba foglaln. Ms esetekben viszont fontos lps az algoritmus
vgrehajtsa sorn a mrs elvgzse (teleportci, modulo rend meghatrozsa),
ezekben az esetekben ez a kvantum lambda kalkulus nem elg kifejez. Cserbe
stabil, tisztn elmleti szemantikt fogalmaz meg, ellenttben pldul a kvantum
pszeudo-kddal.
Formlis szemantika
A nyelv szemantikja a klasszikus lambda kalkulushoz hasonl, attl a fent bemu-
tatott mdon kis mrtkben eltr (pl. a redukci itt reverzibilis mvelet).
43
3. Programozsi nyelvek
deutsch U
f
let (x
0
, y
0
) = (0 : 0 : : 0 : (), 1) in
let (x
1
, y
1
) = (hadamard_array x
0
, H y
0
) in
let (x
2
, y
2
) = (U
f
(x
1
, y
1
)) in
let (x
3
, y
3
) = (hadamard_array x
2
, y
2
) in
(x
3
, y
3
),
hadamard_array list case list of
_
() ()
h : t H h : hadamard_array t
3.9. bra. A Deutsch-Jozsa algoritmus a kvantum lambda kalkulusban
fourier list reverse fourier

list
fourier

list case list of


_
() ()
h : t let h

: t

= (phases (H h) t !2) in h

: fourier

phases target controls !n


case controls of
_

_
() (target)
ch : ct let (target

, ch

) = (R !n)(target, ch) in
let target

: ct

= phases target

t !(succ n) in
target

: control

: ct

3.10. bra. A QFT algoritmus a kvantum lambda kalkulusban


44
3.5. Funkcionlis nyelvek
Pldk
Deutsch-Jozsa algoritmus. Az algoritmus kvantum lambda kalkulus-beli alakja
a 3.9. brn lthat. Az algoritmus viszonylag szpen lerhat a let kifejezst, va-
lamint a hadamard_array segdfggvnyt hasznlva. A vgs kvetkeztets, vagyis
annak eldntse, hogy a bementi fggvny konstans vagy kiegyenslyozott nem fe-
jezhet ki a van Tonder-fle kvantum lambda kalkulus nyelvn a mrs hinya miatt.
QFT. Az algoritmust a 3.10. bra mutatja be. A phases feladata, hogy ha adottak
a megfelel vezrl vezetkek, akkor alkalmazza a vezrelt fziskapukat a bementi
qbit-re. Az els paramtere a bemeneti qbit, a msodik a vezrl qbit-ek listja,
a harmadik pedig egy segdvltoz, ami a phases rekurzv megvalstsnl lesz
hasznos. Ez a vltoz mondja meg, hogy a vezrl bementek kzl az els milyen
forgatsi szg fziskaput vezrel (a szg az n paramter fggvnyben: = 2/2
n
).
A phases-ben hasznlt R-t nem fejtem ki, mert viszonylag egyszeren megvalst-
hat. Ez egy hrom paramter vr fggvny, amely a vezrelt, paramteres szg
fziskaput valstja meg. Paramterknt elszr az n rtkt, majd a cl, s a vezrl
qbit-et vrja.
3.5.3. Ms kvantum lambda kalkulusok
Van Tonder lambda kalkulusa nem hasznlt tpusrendszert, ehelyett a jlformltsg
dencijt megadva knyszerti ki a no-cloning tulajdonsgot, teht a tiszta kvan-
tum llapotok msolsnak lehetetlensgt. Maga a szerz is beltja, hogy ez nem
elg, mert ez a mdszer csak a feltn programozsi hibk ellen vd, s a valdi
megolds a tpusrendszer bevezetse lenne.
A lambda kalkulusok irodalmban tpusrendszereket elszr Curry [10], s Church
[9] hasznltak. A lambda kalkulus tpus fogalma a modern nyelvekben hasznlt
tpusfogalomhoz hasonl: a kifejezsekhez tpusokat rendelhetnk, s ez korltozst
jelent arra nzve, hogy az adott kifejezst hogyan hasznlhatjuk. Bizonyos fggvny
kifejezst pldul csak bizonyos tpus argumentum kifejezsek elfogadsra akarunk
korltozni.
Megfelel tpusrendszer kidolgozsval tbben prblkoztak. Ezek a munkt sok
tletet vesznek a lineris logikbl. A lineris logika egy olyan logikai rendszert
denil, amelyben ha egy premisszbl kvetkeztetst vonunk le, azt a premisszt
tbbszr nem hasznlhatjuk (vagy esetleg meghatrozott szm alkalommal hasz-
nlhatjuk). Ennek az rtelme az, hogy knnyen modellezhetnk vele erforrsokat,
s felhasznlsukat. Pldul az A llts lehet az, hogy Van 70 forintom.. A B
llts legyen az, hogy Van egy cappucinom.. Igaz az, hogy A B, de ha ezt a
szablyt felhasznlva A-bl B-t kapjuk, akkor ezentl az A nem lesz igaz, tbbet
nem hasznlhatjuk fel. Ezt a logikt felhasznlhatjuk pldul tervkszt rendsze-
rekhez, vagy Petri hlkkal kapcsolatos szmtsokhoz. A lineris logika lambda
kalkulus-beli alkalmazsa a lineris tpusrendszerek kialaktsa.
A kvantum lambda kalkulusokhoz azrt illeszkednek jl a lineris tipusrendszerek,
mert modellezhetjk velk a kvantum erforrsokat. Ha egy regiszteren vgrehaj-
tunk egy unitr transzformcit, akkor mr csak a regiszter transzformci utni
llapothoz tudunk hozzfrni, ellenttben egy klasszikus rendszerrel, ahol pldul
45
3. Programozsi nyelvek
utasthatjuk a processzort, hogy egy szmts vgeredmnyt egy msik memriare-
keszbe rakjon.
Elsknt Wehr [40] javasolta lineris logikn alapul tpusrendszer alkalmazst,
br nem dolgozott ki konkrt tpusrendszert. Perdrix [28] olyan tpusrendszert ho-
zott ltre, amiben kifejezhet az ekvivalencia relci kt vltoz kztt, gy az ssze-
fonds modellezhet vele. Lambda kalkulusokat dolgozott ki Arrighi s Dowek [5],
valamint Selinger s Valiron [32] is, ezek szintn statikusan tpusosak, s lineris
tpusrendszert hasznlnak.
A kvantum lambda kalkulusok sokflesge taln azzal magyarzhat, hogy a
lambda kalkulus a klasszikus funkcionlis nyelvek kztt a legtbbet tanulmnyo-
zott, mindemellett a legkevesebbb nyelvtani szabllyal rendelkez nyelv, gy rdemes
elszr egy ilyen alacsony szint nyelvet a kvantuminformatika szablyaihoz igaz-
tani, ez viszont tbb klnbz megkzeltssel is megtehet.
3.5.4. Ms funkcionlis nyelvek
QPL
Peter Selinger QPL [30] nyelve egy fontos tpusos funkcionlis kvantum programozsi
nyelv. A nyelv elemei kzt sok ms nyelvvel ellenttben nem tallhatak kvantum
vezrlsi szerkezeteket, viszont gy is alkalmas minden klasszikus s kvantum szm-
ts lersra.
A nyelv szintaxisnak kt egyenrtk formja van. Az egyik a grakus reprezen-
tci, ami egy fajta folyamatbra, s szorosan kapcsoldik a nyelv szemantikjhoz,
viszont nehezen kezelhet. A msik forma ezrt egy strukturlt programkd forma.
A kvantum adatok lineris kezelst a szintaxis knyszerti ki. Ennek egyik eszkze
a vltozk nagyon korltozott kezelse. Nem lehet kifejezseket, vagy akr msik
vltozkat rtkl adni egy vltoznak, ehelyett ha pldul az a rtkt a b rtkvel
szeretnnk egyenlv tenni, akkor ezt gy tehetjk meg: if b then a := 1 else a := 0.
Itt az if mindenkppen mrs jelent, teht ilyen mdon egy kvantum regisztert nem
tudunk msolni. A knyelmesebb hasznlat rdekben termszetesen bevezethet az
rtkadsra rvidts.
A QPL az els olyan kvantumos nyelv, amelynek jl denilt denotcis sze-
mantikja van. Brmely programrszlethez hozzrendelhet szuperopertorok
7
egy
halmaza, amely srsgi mtrixok egy halmazn hat. Egy rekurzihoz tartoz szu-
peropertor az egyes rekurzis lpsekhez tartoz szuperopertorok sorozatnak ha-
trrtke lesz, s ez minden esetben meghatrozhat. Hasonlkppen kezelhetek a
ciklusok is.
Selinger egy kategriaelmleti szemantikt is denil a nyelvhez, amelyrl ksbb
[31] megmutatta, hogy milyen kapcsolatban ll a QML szemantikjval.
QML
A QML egy tpusos funkcionlis nyelv, amit Altenkirch s Grattage alkotott meg
[3]. A nyelv tervezst a szemantika vezrelte. A mr jelen dolgozatban is tbbszr
7
Egy szuperopertort a kvantuminformatikai rtelmezsben vehetnk gy, mint egy unitr ope-
rtor, majd egy projekci egy alacsonyabb dimenziszm trre, azaz mrs. A szuperopertorok
srsgi mtrixokon hatnak.
46
3.6. rtkels
hasznlt tmenet mentn vezetik le a kvantum szmtsok modelljt az irreverzibi-
lis klasszikus szmtsok modelljbl kiindulva. A levezets alapjn ezen tmenet
mentn termszetesen addik a kvantum szmtsok szuperopertorokkal val mo-
dellezse.
Mg a QPL-ben a kvantum vltozk dupliklsa tiltott, a QML-ben csak az el-
dobsuk. A duplikls itt megosztst jelent, vagyis tulajdonkppen egy referencia
tadst. A kvantum vltozk linearitsval kapcsolatos szablyokat a lineris logi-
kn alapul tpusrendszer biztostja.
Az egyedli vezrlsi szerkezet a feltteles szerkezet. Ebbl kt tpus is van, az els
mrst vgez a felttelknt megadott vltozn, gy a klasszikus feltteles szekezetnek
feleltethet meg, a msodik nem vgez mrst, de az igaz s a hamis gra korlto-
zsok vonatkoznak. A kt g ortogonlis bzisban kell hogy ljen, mint ahogy egy
egybites kvantum kapu mtrixnak oszlopainak is mindig ortogonlisnak kell len-
nik egymsra; mindkt megkts az unitr tulajdonsgbl adddik. A kvantumos
feltteles szerkezet itt ahhoz hasonl, mint amit pl. C-ben gy runk: x ? a : b,
csak itt a vgeredmny nem a vagy b lesz, hanem a kett lineris kombincija az x
rtktl fggen.
A nyelv szintaktikjt rviden szemlltetve a Hadamard kaput pldul gy fejez-
hetjk ki:
H x = if
o
x
then (false + (1) true)
else (false +true)
A nyelv szemantikja a QPL-hez hasonlan denotcis, viszont a htterben ka-
tegriaelmleti konstrukcik vannak: az irreverzibilis, a reverzibilis, s a kvantum
szmtsok kategrik, amelyekben a konkrt szmtsi feladatok, vagyis szuperope-
rtorok az objektumok. A QPL programok egy-egy ilyen objektumnak feleltethetek
meg, valamint kvantum ramkrkre is lekpezhetek.
3.6. rtkels
A bemutatott nyelvek tulajdonsgait a 3.5. tblzatban foglaltam ssze. A flkvr
betvel szedett nyelveket a dolgozatban rszletesen is ismertettem, a tbbirl csak
rvid lerst adtam. A tulajdonsgok oszlopban az E: utn az elnys tulajdons-
gokat, mg a H: utn a htrnyos tulajdonsgokat soroltam fel.
A bemutatott nyelvek kzl a Q tnik a legpraktikusabban hasznlhatnak. L-
tezik implementcija is, br nhny funkci hinyzik belle, pldul a klasszikus
fggvnyek oracle opertorr alaktsa. Ezt a kpessget vlemnyem szerint nagyon
nehz egy imperatv nyelvben megvalstani, s a szerzk is szmos problmval
szembesltek, amiket mg nem tudtak megoldani.
Az ers szemantikai httr miatt a QML-t tartom a legalkalmasabbnak arra, hogy
ms, gyakorlatiasabb funkcionlis nyelvek kifejlesztsnek alapjul szolgljon.
A szintaxis knnyebb sszehasonltsa rdekben a fggelkben megtallhat a
Deutsch-Jozsa algoritmus, s a QFT kdja a rszletesebben bemutatott nyelveken.
47
3. Programozsi nyelvek

v
N
y
e
l
v
S
z
e
r
z

(
k
)
R
e
f
.
N
y
e
l
v
c
s
a
l

d
S
z
e
m
a
n
t
i
k
a
T
u
l
a
j
d
o
n
s

g
o
k
1
9
9
6
k
v
.
p
s
z
u
e
d
o
k

d
K
n
i
l
l
[
1
8
]
i
m
p
e
r
a
t

v
-
p
s
z
e
u
d
o
n
y
e
l
v
:
E
:
k

p
l
e
t
e
k
h
a
s
z
n

l
a
t
a
,
u
t
a
s

s
o
k
s
z

-
v
e
g
e
s
m
e
g
f
o
g
a
l
m
a
z

s
a
i
s
l
e
h
e
t
s

g
e
s
,
H
:
c
s
a
k
e
m
b
e
r
i
o
l
-
v
a
s

s
r
a
a
l
k
a
l
m
a
s
1
9
9
8
Q
C
L

m
e
r
[
2
3
]
,
[
2
4
]
,
[
2
5
]
,
[
2
6
]
,
[
2
7
]
i
m
p
e
r
a
t

v
-
E
:
C
-
n
a
l
a
p
u
l

s
z
i
n
t
a
x
i
s
,
o
p
e
r

t
o
r
g
e
n
e
r

s
f

g
g
v

n
y
-
b

l
,
e
l
s

i
m
p
l
e
m
e
n
t

l
t
n
y
e
l
v
,
H
:
n
e
m
m
a
g
a
s
a
b
b
r
e
n
d

n
y
e
l
v
(
n
i
n
c
s
e
n
e
k
f
v
-
r
e
f
e
r
e
n
c
i

k
)
2
0
0
0
q
G
C
L
S
a
n
d
e
r
s
,
Z
u
l
i
a
n
i
[
2
9
]
,
[
4
1
]
i
m
p
e
r
a
t

v
o
p
e
r

c
i

s
E
:
s
p
e
c
i

s
r
a
,
p
r
o
g
r
a
m

s
r
a
i
s
h
a
s
z
n

l
h
a
t

,
i
m
p
l
e
-
m
e
n
t

l
t
,
H
:
n
i
n
c
s
r
e
k
u
r
z
i

e
g
z
o
t
i
k
u
s

s
z
i
n
t
a
x
i
s
2
0
0
3
Q
B
e
t
t
e
l
l
i
,
C
a
l
a
r
c
o
,
S
e
r
a

n
i
[
7
]
i
m
p
e
r
a
t

v
-
E
:
C
+
+
a
l
a
p

,
o
b
j
e
k
t
u
m
o
r
i
e
n
t

l
t
m
e
g
k

z
e
l

s
,
k
v
a
n
-
t
u
m

s
k
l
a
s
s
z
i
k
u
s
s
z

s
t
u
d
a
t
o
s
e
l
k

s
e
,
i
m
p
l
e
-
m
e
n
t

l
t
f

g
g
v

n
y
k

n
y
v
t

r
2
0
0
4
k
v
a
n
t
u
m
l
a
m
b
d
a
k
a
l
k
u
l
u
s
v
a
n
T
o
n
d
e
r
[
3
9
]
f
u
n
k
c
i
o
n

l
i
s
o
p
e
r

c
i

s
E
:
e
l
s

k
v
.
l
a
m
b
d
a
k
a
l
k
u
l
u
s
,
l
i
n
e
a
r
i
t

s
r

s
z
l
e
g
e
s
k

n
y
-
s
z
e
r

s
e
,
H
:
n
i
n
c
s
m

s
,
m
i
n
d
e
n
s
z

s
k
v
a
n
t
u
m
o
s
2
0
0
4
Q
P
L
S
e
l
i
n
g
e
r
[
3
0
]
,
[
3
1
]
f
u
n
k
c
i
o
n

l
i
s
d
e
n
o
t

c
i

s
,
k
a
t
e
g
o
r
i
k
u
s
k
v
a
n
t
u
m
a
d
a
t
-
k
l
a
s
s
z
i
k
u
s
v
e
z

r
l

s
,
E
:
t

p
u
s
r
e
n
d
s
z
e
r
,
e
l
s

d
e
n
o
t

c
i

s
s
z
e
m
a
n
t
i
k
a
,
H
:
n
a
g
y
o
n
s
z
i
g
o
r

s
z
a
b

-
l
y
o
k
a
v

l
t
o
z

k
r
a
(
p
l
.
c
s
a
k
e
g
y
r
e
f
e
r
e
n
c
i
a
l
e
h
e
t
)
2
0
0
4
k
v
a
n
t
u
m
l
a
m
b
d
a
k
a
l
k
u
l
u
s
S
e
l
i
n
g
e
r
,
V
a
l
i
r
o
n
[
3
8
]
,
[
3
7
]
,
[
3
2
]
,
[
3
3
]
f
u
n
k
c
i
o
n

l
i
s
o
p
e
r

c
i

s
,
d
e
n
o
t

c
i

s
k
v
a
n
t
u
m
a
d
a
t
-
k
l
a
s
s
z
i
k
u
s
v
e
z

r
l

s
,
E
:
t

p
u
s
r
e
n
d
s
z
e
r
,
a
d
e
n
o
t
.
s
z
e
m
a
n
t
i
k
a
k
i
t
e
r
j
e
s
z
t

s
e
m
a
g
a
s
a
b
b
r
e
n
d

e
s
e
t
r
e
2
0
0
5
Q
M
L
A
l
t
e
n
k
i
r
c
h
,
G
r
a
t
t
a
g
e
[
3
9
]
,
[
4
]
f
u
n
k
c
i
o
n

l
i
s
d
e
n
o
t

c
i

s
,
k
a
t
e
g
o
r
i
k
u
s
E
:
k
v
a
n
t
u
m
a
d
a
t
-
k
v
a
n
t
u
m
v
e
z

r
l

s
,
l
i
n
e

r
i
s
t

p
u
s
-
r
e
n
d
s
z
e
r
(
i
t
t
v

l
t
o
z

k
e
l
d
o
b

s
a
t
i
l
t
o
t
t
,
d
e
m
e
g
o
s
z
t

s
a
n
e
m
,
v

.
Q
P
L
)
,
e
r

s
s
z
e
m
a
n
t
i
k
a
i
h

t
t

r
,
s
z
e
m
l

l
e
t
e
s
k
l
a
s
s
z
i
k
u
s

k
v
a
n
t
u
m

t
m
e
n
e
t
,
i
m
p
l
e
m
e
n
t

l
t
s
z
i
m
u
l

-
t
o
r
,
k
v
a
n
t
u
m
f
e
l
t

t
e
l
e
s
s
z
e
r
k
e
z
e
t
r

s
z
l
e
t
e
s
k
i
d
o
l
g
o
z

s
a
,
H
:
m

s
v
e
z

r
l

s
i
s
z
e
r
k
e
z
e
t
e
k
h
i

n
y
a
2
0
0
7
L
a
n
Q
M
l
n
a
r

k
[
2
0
]
i
m
p
e
r
a
t

v
o
p
e
r

c
i

s
E
:
a
r

g
e
b
b
i
i
m
p
e
r
a
t

v
n
y
e
l
v
e
k
h
i
b

i
t
m
e
l
l

z
i
,
i
m
p
l
e
-
m
e
n
t

l
t
,
C
-
r
e
h
a
s
o
n
l

s
z
i
n
t
a
x
i
s
H
:
n
e
m
e
g
y
n
y
e
l
v
i
k
i
t
e
r
j
e
s
z
t

s
,
m
i
n
t
a
Q
3
.
5
.
t

b
l

z
a
t
.
A
b
e
m
u
t
a
t
o
t
t
n
y
e
l
v
e
k

s
s
z
e
h
a
s
o
n
l

s
a
48
4. fejezet
Nyitott krdsek, fejldsi irnyok
Rengeteg olyan lehetsg van, amit a kvantum programozsi nyelvek mg nem ak-
nztak ki, gy a jvben a nyelvek tovbbi fejldsre lehet szmtani.
Felfedezetlen mg a magasabb rend kvantumos vezrlsi szerkezetek, illetve az
sszetett kvantumos adattpusok terlete. Nem tudjuk, hogy lteznek-e olyan lta-
lnosan hasznlhat tervezsi mintk, vagy vezrlsi szerkezetek, amelyekkel hat-
konyan aknzhatjuk ki pldul a kvantum prhuzamossgot.
A nyelvek szemantikja nagyon aktv kutats trgya. Az imperatv nyelvekrl
elmondhat, hogy eddig nagyon kevs rendelkezett szilrd szemantikai alappal. A
funkcionlis nyelvek tervezsnl ezzel ellenttben ltalban a nyelvet egytt mutat-
jk be egy egzakt szemantikai httrrel. Lehetsges, hogy a kvantummechanika ltal
meghatrozott szmtsi modellek jobban illeszkednek a funkcionlis nyelvekhez, de
elkpzelhet az is, hogy a jvben az imperatv nyelvekhez is rszletes szemantikt
dolgoznak majd ki.
Viszonylag keveset kutatott terlet a hatkony fordt infrastruktra ltrehozsa.
Amint gyakorlatban is hozzfrhetek lesznek kvantum hardverek, hatkony ford-
tprogramokra lesz szksg. Egyrsz azrt, hogy az algoritmusokat az adott hard-
ver korltozsaihoz lehessen igaztani, msrszt azrt, mert a qubit-ek, illetve az
sszefondsok (azaz a kvantum erforrsok) kezdetben valsznleg nagyon szks
szmban fognak rendelkezsre llni, gy az algoritmusokat ersen optimalizlni kell
majd.
Nagyon igretes kutatsi terlet a kategorikus kvantum mechanika. Termszetes
mdon kpes egyesteni a klnbz nyelvekhez kidolgozott kategorikus szemantikai
httereket, s magt a kvantummechanikt egy kategriaelmleti modellben [2].
A kvantum programozsi nyelvek kutatsa fellendl gban van, amit az is jelez,
hogy az utbbi vekben rendszeresen megrendezik a tmval foglalkoz Quantum
Physics and Logic konferencit [1]. Nemrg jelent meg egy ktet [15], amiben az
utbbi vek eredmnyeit foglalja ssze tbb neves kutat (kztk Selinger, Valiron,
Abramsky, Coecke, Altenkirch, s Perdrix).
49
4. Nyitott krdsek, fejldsi irnyok
50
Fggelk
Fggelk
F.1. A Deutsch-Jozsa algoritmus kdja klnbz
nyelveken
DeutschJozsa(Fuggveny, n)
C: Inicializls.
x UniformSzuperpozicio(n)
a 1
H(a)
C: A paramter fggvny tal kontrolllt CNOT.
y Fuggveny(x
1
, x
2
, . . . , x
n
)
if y then X(a)
C: Amplitd ersts.
H(x)
C: Mrs.
x x
if x = 0 then return A fuggveny konstans.
return A fuggveny kiegyensulyozott.
F.1.1. bra. A Deutsch-Jozsa algoritmus pszeudo-kdja
51
i nt n = . . . ;
oper at or G( qureg x [ n ] , qureg y) { . . . }
procedure deutsch ( ) {
qureg x [ n ] , y [ 1 ] ;
i nt m;
H( x & y) ;
G( x , y) ;
H( x) ;
measure x , m;
i f m == 0 pr i nt "Af uggveny konstans . "
el se pr i nt "Af uggveny ki e gye ns ul yoz ot t . " ;
}
F.1.2. bra. A Deutsch-Jozsa algoritmus QCL kdja
bool deutsch ( bool ( f ) ( i nt ) , Qreg : : si ze_type s ) {
Qop D = H( s +1) << Qop( f , s ) << H( s ) ;
Qreg R = Qreg ( s , 0) & Qreg ( 1 , 1) ;
D(R) ;
i nt m = R( 0 , s ) . measure ( ) ;
i f (m==0) return true ; // A f uggveny konst ans .
el se return f al se ; // A f uggveny k i e g y e ns ul y o z o t t .
}
F.1.3. bra. A Deutsch-Jozsa algoritmus C++ kdja a Q knyvtrat hasznlva
deutsch U
f
let (x
0
, y
0
) = (0 : 0 : : 0 : (), 1) in
let (x
1
, y
1
) = (hadamard_array x
0
, H y
0
) in
let (x
2
, y
2
) = (U
f
(x
1
, y
1
)) in
let (x
3
, y
3
) = (hadamard_array x
2
, y
2
) in
(x
3
, y
3
),
hadamard_array list case list of
_
() ()
h : t H h : hadamard_array t
F.1.4. bra. A Deutsch-Jozsa algoritmus a kvantum lambda kalkulusban
52
F.2. A QFT kdja klnbz nyelveken
F.2. A QFT kdja klnbz nyelveken
Fourier(a, d)
for i = 1 to i = d
H(a
i
)
for j = i + 1 to j = d
C: Kontrolllt fzis kapu
if a
j
then R
2/2
ji+1(a
i
)
C: Swap kapu
S(a)
F.2.1. bra. A QFT pszeudo-kdja
oper at or qf t ( qureg q) {
i nt i ; i nt j ;
for i = 1 to #q {
for j = i +1 to #q
i f q [ j ] CPhase (2 pi /2^( j i +1) , q [ i ] ) ;
H( q [ i ] ) ;
}
f l i p ( q) ;
}
F.2.2. bra. A QFT QCL kdja
53
cl ass QFouri er : public Qop {
i nt s i z e ;
public :
QFouri er ( si ze_type s i z e ) : Qop( ) , s i z e ( s i z e ) {
for ( i nt i = 0; i < s i z e ; i ++) {
&thi s << QHadamard( 1) . o f f s e t ( i ) ;
for ( i nt j = i +1; j < s i z e ; j ++)
&thi s << QCondPhase ( 1 , j i +1) . i nve r t ( 0 , 2)
. s p l i t ( 1 , j i 1)
. o f f s e t ( i ) ;
}
&thi s << QSwap( s i z e ) ;
}
}
F.2.3. bra. A QFT C++ kdja a Q knyvtrat hasznlva
fourier list reverse fourier

list
fourier

list case list of


_
() ()
h : t let h

: t

= (phases (H h) t !2) in h

: fourier

phases target controls !n


case controls of
_

_
() (target)
ch : ct let (target

, ch

) = (R !n)(target, ch) in
let target

: ct

= phases target

t !(succ n) in
target

: control

: ct

F.2.4. bra. A QFT algoritmus a kvantum lambda kalkulusban


54
brk jegyzke
brk jegyzke
1.1. A NAND/NOT kapu . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2. A Tooli kapu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3. A Deutsch-fle univerzlis kvantum kapu . . . . . . . . . . . . . . . . 11
2.1. f-kontrolllt CNOT kapu . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2. A Deutsch-Jozsa algoritmus kvantum-ramkre . . . . . . . . . . . . 17
2.3. A DFT mtrix alakja . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4. A QFT kvantum-ramkre . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1. Regiszterek inicializlsa a kvantum pszeudo-kdban . . . . . . . . . 27
3.2. A Deutsch-Jozsa algoritmus pszeudo-kdja . . . . . . . . . . . . . . . 28
3.3. A QFT pszeudo-kdja . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4. A Deutsch-Jozsa algoritmus QCL kdja . . . . . . . . . . . . . . . . . 32
3.5. A QFT QCL kdja . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.6. A Deutsch-Jozsa algoritmus C++ kdja a Q knyvtrat hasznlva . . 37
3.7. A QFT C++ kdja a Q knyvtrat hasznlva . . . . . . . . . . . . . 37
3.8. A lambda kalkulus kifejezsei . . . . . . . . . . . . . . . . . . . . . . 38
3.9. A Deutsch-Jozsa algoritmus a kvantum lambda kalkulusban . . . . . 44
3.10. A QFT algoritmus a kvantum lambda kalkulusban . . . . . . . . . . . 44
F.1.1.A Deutsch-Jozsa algoritmus pszeudo-kdja . . . . . . . . . . . . . . . 51
F.1.2.A Deutsch-Jozsa algoritmus QCL kdja . . . . . . . . . . . . . . . . . 52
F.1.3.A Deutsch-Jozsa algoritmus C++ kdja a Q knyvtrat hasznlva . . 52
F.1.4.A Deutsch-Jozsa algoritmus a kvantum lambda kalkulusban . . . . . 52
F.2.1.A QFT pszeudo-kdja . . . . . . . . . . . . . . . . . . . . . . . . . . 53
F.2.2.A QFT QCL kdja . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
F.2.3.A QFT C++ kdja a Q knyvtrat hasznlva . . . . . . . . . . . . . 54
F.2.4.A QFT algoritmus a kvantum lambda kalkulusban . . . . . . . . . . . 54
55
brk jegyzke
56
Tblzatok jegyzke
Tblzatok jegyzke
3.1. A QCL tpusok, s a rjuk vonatkoz korltozsok . . . . . . . . . . . 29
3.2. A QCL szubrutinok hierarchija . . . . . . . . . . . . . . . . . . . . . 30
3.3. A Q regiszter osztlya . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4. A Q opertor osztlya . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5. A bemutatott nyelvek sszehasonltsa . . . . . . . . . . . . . . . . . 48
57
Tblzatok jegyzke
58
Irodalomjegyzk
Irodalomjegyzk
[1] 7th qpl workshop - quantum physics and logic. http://web.comlab.ox.ac.
uk/people/bob.coecke/QPL_10.html.
[2] Samson Abramsky and Bob Coecke. A categorical semantics of quantum proto-
cols. In Proceedings of the 19th Annual IEEE Symposium on Logic in Computer
Science (LICS). IEEE Computer Society, 2004. Also arXiv:quant-ph/0402130.
[3] Thorsten Altenkirch and Jonathan Grattage. A functional quantum program-
ming language. In Proceedings of the 20th Annual IEEE Symposium on Logic
in Computer Science (LICS). IEEE Computer Society, 2005. Also arXiv:quant-
ph/0409065.
[4] Thorsten Altenkirch and Jonathan Grattage. QML: Quantum data and control.
Manuscript, 2005.
[5] Pablo Arrighi and Gilles Dowek. Linear-algebraic -calculus. arXiv:quant-
ph/0501150, 2005.
[6] Charles H. Bennett. Logical reversibility of computation. IBM J. Res. Dev.,
17(6):525532, 1973.
[7] Stefano Bettelli, Tommaso Calarco, and Luciano Serani. Toward an architec-
ture for quantum programming. The European Physical Journal D, 25:181200,
2003. Also arXiv:cs.PL/0103009.
[8] Alonzo Church. An unsolvable problem of elementary number theory. American
Journal of Mathematics, 58(2):345363, April 1936.
[9] Alonzo Church. A formulation of the simple theory of types. Journal of Symbolic
Logic, 5:5668, 1940.
[10] H. Curry. Functionality in combinatorial logic. In Proceedings of National
Academy of Sciences, volume 20, pages 584590, 1934.
[11] D Deutsch. Quantum computational networks. Proc. Roy. Soc. London A425,
(73), 1989.
[12] D Deutsch and R Jozsa. Rapid solution of problems by quantum computation.
Proc Roy Soc Lond A, 439:553558, October 1992.
[13] David Deutsch. Quantum theory, the Church-Turing principle and the universal
quantum computer. Proceedings of the Royal Society of London A, 400:97117,
1985.
59
Irodalomjegyzk
[14] M.M. Fokkinga. A gentle introduction to category theory the calculational
approach. In Lecture Notes of the STOP 1992 Summerschool on Constructive
Algorithmics, pages 172 of Part 1. University of Utrecht, September 1992.
[15] Simon Gay and Ian Mackie, editors. Semantic Techniques in Quantum Comp-
utation. Cambridge University Press., 2010.
[16] Lov K. Grover. A fast quantum mechanical algorithm for database search. In
Proceedings of the twenty-eighth annual ACM symposium on Theory of compu-
ting, STOC 96, pages 212219, New York, NY, USA, 1996. ACM.
[17] Sandor Imre and Ferenc Balazs. Quantum Computing and Communications:
An Engineering Approach. John Wiley & Sons, 2005.
[18] Emmanuel Knill. Conventions for quantum pseudocode. Technical Report
LAUR-96-2724, Los Alamos National Laboratory, 1996.
[19] Philip Maymin. Extending the lambda calculus to express randomized and
quantumized algorithms. arXiv:quant-ph/9612052, 1996.
[20] Hynek Mlnarik. Operational semantics and type soundness of quantum
programming language lanq. 2007.
[21] Michael A. Nielsen and Isaac L. Chuang. Quantum Computation and Quantum
Information. Cambridge University Press, 2000.
[22] Bernhard mer. Qcl - a programming language for quantum computers. http:
//tph.tuwien.ac.at/~oemer/qcl.html.
[23] Bernhard mer. A procedural formalism for quantum computing. Masters the-
sis, Department of Theoretical Physics, Technical University of Vienna, 1998.
[24] Bernhard mer. Quantum programming in QCL. Masters thesis, Institute of
Information Systems, Technical University of Vienna, 2000.
[25] Bernhard mer. Procedural quantum programming. In Proceedings of the AIP
Conference on Computing Anticipatory Systems (AIP Conference Proceedings
627), pages 276285. American Institute of Physics, 2001.
[26] Bernhard mer. Classical concepts in quantum programming. arXiv:quant-
ph/0211100, 2002.
[27] Bernhard mer. Structured Quantum Programming. PhD thesis, Technical
University of Vienna, 2003.
[28] Simon Perdrix. Quantum patterns and types for entanglement and separabi-
lity. In Proceedings of the 3rd International Workshop on Quantum Program-
ming Languages (QPL 2005), volume 170 of Electronic Notes in Theoretical
Computer Science, pages 125138, 2007.
[29] Je W. Sanders and Paolo Zuliani. Quantum programming. In Mathematics
of Program Construction, volume 1837 of Lecture Notes in Computer Science,
pages 8099. Springer, 2000.
60
Irodalomjegyzk
[30] Peter Selinger. Towards a quantum programming language. Mathematical
Structures in Computer Science, 14(4):527586, 2004.
[31] Peter Selinger. Dagger compact closed categories and completely positive maps:
(extended abstract). In Proceedings of the 3rd International Workshop on Qu-
antum Programming Languages (QPL 2005), volume 170 of Electronic Notes
in Theoretical Computer Science, pages 139163, 2007.
[32] Peter Selinger and Benot Valiron. A lambda calculus for quantum computation
with classical control. In Proceedings of the 7th International Conference on
Typed Lambda Calculi and Applications (TLCA), volume 3461 of Lecture Notes
in Computer Science. Springer, 2005.
[33] Peter Selinger and Benot Valiron. A lambda calculus for quantum computation
with classical control. Mathematical Structures in Computer Science, 16(3):527
552, 2006.
[34] P. W. Shor. Algorithms for quantum computation: discrete logarithms and
factoring. In Proceedings of the 35th Annual Symposium on Foundations of
Computer Science, pages 124134, Washington, DC, USA, 1994. IEEE Com-
puter Society.
[35] Tommaso Tooli. Reversible computing. In Proceedings of the 7th Colloquium
on Automata, Languages and Programming, pages 632644, London, UK, 1980.
Springer-Verlag.
[36] Alan M. Turing. On computable numbers, with an application to the Entschei-
dungsproblem. Proceedings of the London Mathematical Society, 2(42):230265,
1936.
[37] Benot Valiron. A functional programming language for quantum computation
with classical control. Masters thesis, University of Ottawa, 2004.
[38] Benot Valiron. Quantum typing. In Peter Selinger, editor, Proceedings of the
2nd International Workshop on Quantum Programming Languages, number 33
in TUCS General Publications. Turku Centre for Computer Science, 2004.
[39] Andr van Tonder. A lambda calculus for quantum computation. SIAM Journal
on Computing, 33(5):11091135, 2004. Also arXiv:quant-ph/0307150.
[40] Martin Wehr. Quantum computing: a new paradigm and its type theory.
Lecture given at the Quantum Computing Seminar, Lehrstuhl Prof. Beth, Uni-
versitt Karlsruhe, 1996.
[41] Paolo Zuliani. Quantum Programming. DPhil thesis, University of Oxford,
2001.
61

You might also like