• Nem Talált Eredményt

A pszeudovéletlenszám-generátor fogalma

In document Algoritmusok bonyolultsága (Pldal 138-142)

7. Pszeudovéletlen számok 127

7.2. A pszeudovéletlenszám-generátor fogalma

Általánosságban, egy pszeudo-véletlen bitgenerátor átalakít egy rövid, való-ban véletlen s sorozatot (a „magot”) egy hosszabb g(s) sorozattá, amelyik még mindig véletlenszerű. Hogy mennyire jól használható a g(s)egy valódi véletlen sorozat helyett, az attól függ, hogy mennyire használja ki az adott alkalmazásg(s) véletlen mivoltát. Meg fogjuk mutatni, hogy ez lényegében attól függ, hogy az alkalmazással nagyságrendileg azonos időben mennyire tudjuk tesztelni, hogy g(s) véletlenszerű-e. Ha az alkalmazás képes végig-nézni minden lehetséges magot, melyg(s)-t generálhatta, akkor megtalálja az igazit is, és nem sok véletlenszerűség marad. Ennek eléréséhez viszont az alkalmazás esetleg túl sokáig kellene hogy fusson. Akkor akarunk egyg-t pszeudo-véletlen bitgenerátornak hívni, ha semelyik polinom időben futó al-kalmazás nem tudja megkülönböztetnig(s)-t egy valódi véletlen sorozattól.

A pontos definíció kimondásához előkészületekre van szükség. Azt mond-juk, hogy egyf: Z+→Rfüggvényelhanyagolható, ha minden fixk-ran→ ∞ eseténnkf(n)→0. Szavakkal,f gyorsabban tart 0-hoz mint bármelyik poli-nom reciproka. Jelöljük ezt (a nagy O-hoz hasonlóan) úgy, hogy

f(n) = NEGL(n).

Figyeljük meg, hogy egy elhanyagolható függvény bármilyen polinommal megszorozva elhanyagolható marad, azaz

nr·NEGL(n) = NEGL(n) minden fixresetén.

Tekintsünk egy polinom időben számíthatóG:{0,1}→{0,1}függvényt, melyre feltesszük, hogy|G(x)| csak |x|-től függ és |x|<|G(x)|<|x|c egy c konstansra. Egy ilyen függvényt hívunkgenerátornak. LegyenAegy polinom idejű randomizált algoritmus (Turing-gép), amely bármely z bemenetre ki-számít belőle egyA(z)bitet (a kimenetnél a 0 jelentése, hogy „nem véletlen”, míg az 1 jelentése, hogy „véletlen” volt a bemenet). Rögzítsünk le egyn≥1 számot. Válasszukx-et egyenletesen {0,1}n-ből és y-t egyenletesen {0,1}N -ből, aholN =|G(x)|. Feldobunk egy érmét és az eredménytől függően vagy G(x)-et vagyy-t adjuk megA-nak bemenetként. Akkor hívjukA-tsikeresnek (ezekre a véletlen választásokra nézve), ha vagyG(x)volt a bemenet és 0 a kimenet, vagy pedigy volt a bemenet és 1 a kimenet.

EgyGgenerátor(biztonságos) pszeudovéletlenszám-generátor, ha minden polinom idejű randomizáltAalgoritmusra, melynek bemenete egy z 0-1 so-rozat és kimenete egy A(z) bit, annak valószínűsége, hogy A sikeres, leg-feljebb 1/2 + NEGL(n). Ez a feltétel azt jelenti, hogyG(x)átmegy minden

„értelmes” (polinom időben számolható) teszten abban az értelemben, hogy annak valószínűsége, hogy a teszt felismeri, hogyG(x)nem valódi véletlen, elhanyagolhatóan nagyobb csak1/2-nél (az1/2könnyen elérhető véletlen ta-lálgatással is). A definícióban a valószínűségetxésy véletlen választása, az érmefeldobás, mely eldönti melyik (G(x)vagyy) leszAbemenete és végülA belső érmefeldobásai szerint értjük.

Ez a feltétel annyira erős, hogy nem is tudjuk, hogy biztonságos vélet-lenszám-generátor létezik-e egyáltalán (ha igen, akkorP6= NP, lásd a 7.4.3.

feladatot). A következő alfejezetekben látni fogjuk, hogy bizonyos bonyolult-ságelméleti feltételek esetén léteznek ilyen generátorok.

Ez a feltétel nagyon általános és egyáltalán nem világos, hogy hogyan lehet ellenőrizni. Yao következő tétele megad egy gyakran kényelmesebb módszert, mellyel eldönthető, hogy egy függvény biztonságos véletlenszám-generátor-e.

Azt állítja, hogy ha a jóslásra használt algoritmus nem használ túl sok időt, akkorG(x)bármely bitje szinte teljesen megjósolhatatlan az előző bitekből.

Azt mondjuk, hogy a g generátormegjósolhatatlan, ha a következő telje-sül. Legyenn≥1 és válasszukx-et egyenletesen {0,1}n-ből. Legyen g(x) =

=G1G2. . . GN. Itt minden Gi egy-egy véletlen bit, viszont ezen bitek álta-lában nem függetlenek. Legyen i véletlen egész szám, egyenletes eloszlással választva {1, . . . , N}-ből. Ekkor minden polinom idejű B randomizált algo-ritmus esetén, mely azn szám mellett egy z∈ {0,1}i sorozatot fogad el be-menetként és egy bitet ad kibe-menetként, teljesül, hogy

Pr

B(n;G1. . . Gi) =Gi+1

=1

2+ NEGL(n). (7.1)

Tehát ha B-t arra próbáljuk használni, hogy megjósoljuk G1. . . GN mind-egyik bitjét az előző bitekből, akkor csak elhanyagolhatóan nagyobb1/2-nél (amit véletlen találgatással is elérhetünk) annak az esélye, hogy ez sikerül.

7.2.1. Tétel (A. Yao). Egy g generátor akkor és csak akkor biztonságos véletlenszám-generátor, ha megjósolhatatlan.

A tétel bizonyítása előtt vegyük észre a tétel egy érdekes következményét:

nyilván, ha megfordítjuk egy biztonságos véletlenszám-generátor kimenetét, akkor egy másik biztonságos véletlenszám-generátort kapunk, mivel tetszőle-ges olyan algoritmus, mely meg tudja különböztetni az eredeti sorozatot egy valódi véletlen sorozattól, a megfordítottat is meg tudja, ha először megfor-dítja. Így ha egy generátor megjósolhatatlan, akkor a megfordítottja is az (és ez amúgy a definícióból nem látszik egyből).

Bizonyítás. I. Tegyük fel, hogyg nem megjósolhatatlan. Ekkor van egy po-linom idejű randomizáltB algoritmus, egyk >0 konstans és végtelen sokn érték, hogy egy véletleni∈ {1, . . . , N}-re

(ahol x∈ {0,1}n egy egyenletesen véletlenül választott sorozat és g(x) =

=G1. . . GN).

Ekkor viszont a következő véletlenséget ellenőrzőAtesztet tudjuk elvégez-ni azy=y1. . . yN sorozatra: Válasszunk egy véletleni∈{1, . . . , N}számot. Ha B(n;y1. . . yi) =yi+1, akkory-t „nem véletlennek” mondjuk, ellenkező esetben pedig „véletlennek”.

Megmutatjuk, hogy ez a teszt működik. Tegyük fel, hogyA-nak vagy egy R1. . . RN valódi véletlen sorozatot adunk vagy pedig g(x)-et (mindkettőt 1/2-1/2 valószínűséggel), ekkor a sikeres válasz valószínűsége

1

Miután ez nem elhanyagolhatóan nagyobb1/2-nél, a generátor nem bizton-ságos.

II. Tegyük fel, hogy létezik egy olyanAalgoritmus, mely végtelen sokn ér-tékre megkülönbözteti a pszeudo-véletleng(x) =G1. . . GN sorozatot a valódi véletlenr=R1. . . RN sorozattól, azaz az algoritmus sikerességének valószí-nűsége1/2+n−k valamilyenk >0konstanssal. Megmutatjuk, hogy ebben az esetben megjósolhatjuk azi. bitjét aG1. . . GN sorozatnak egy véletleni-re.

AzAalgoritmus sikerességének valószínűsége egy fix iesetén:

1

2Pr(A(r) = 1) +1

2Pr(A(g(x)) = 0)

(mivel a siker azt jelenti, hogy A elfogadja r-et, ha r volt a bemenete és elutasítjag(x)-et, hag(x)volt a bemenete). Ez egyenlő

1 2+1

2

Pr(A(r) = 1)−Pr(A(g(x)) = 1) , és így

Pr(A(r) = 1)−Pr(A(g(x)) = 1)> 2

nk. (7.2)

ABelőrejelző algoritmus trükkje az, hogy az yi=G1. . . GiRi+1. . . RN

kevert sorozatokat adjuk A-nak bemenetként. Ekkor y0=r és yN =g(x).

Szükségünk lesz még a

zi=G1. . . Gi−1GiRi+1. . . RN

sorozatra is, aholGi= 1−Gi.

Tegyük fel, hogy már láttuk G1. . . Gi−1-et. Pénzérme feldobásával gene-ráljunkRi. . . Rn független véletlen biteket. FuttassukA-tyi−1-en, és legyen

B(n;G1. . . Gi−1) =

Ri, haA(yi−1) = 0, Ri, egyébként a jóslatunk. Ekkor a jóslat helyességének valószínűsége:

Pr(Bjól jósol) = Pr(Gi=Ri, A(yi−1) = 0) + Pr(Gi=Ri, A(yi−1) = 1) = Pr(A(yi−1)=0|Gi=Ri)·Pr(Gi=Ri)+Pr(A(yi−1)=1|Gi=Ri)·Pr(Gi=Ri)=

1

2Pr(A(yi) = 0|Gi=Ri) +1

2Pr(A(zi) = 1|Gi=Ri) = 1

2Pr(A(yi) = 0) +1

2Pr(A(zi) = 1),

mivel haGi=Ri, akkoryi−1=yi, ha pedigGi=Ri, akkoryi−1=zi, és az A(yi)=0ésA(zi)=1események függetlenek aGi=Rieseménytől. Használjuk még ki, hogy

Pr(A(yi−1) = 0) = 1

2Pr(A(yi) = 0) +1

2Pr(A(zi) = 0) =

= 1

2+1

2Pr(A(yi) = 0)−1

2Pr(A(zi) = 1).

Az utolsó tagot kifejezve és az előző egyenletbe beírva kapjuk, hogy Pr(B jól jósol) =1

2+ Pr(A(yi−1) = 1)−Pr(A(yi) = 1)

minden rögzítetti-re igaz.

Véletleni-t választva a jobb oldalt átlagolnunk kell, így Pr(Bjól jósol) = 1

2+ 1 N

XN i=1

Pr(A(yi−1) = 1)−Pr(A(yi) = 1)

=

= 1

2+ 1 N

Pr(A(y0) = 1)−Pr(A(yN) = 1)

>1 2+ 1

nkN, ami nem elhanyagolhatóan nagyobb, mint1/2.

Az imént ismertetett pszeudo-véletlen bitgenerátorok létezése következik bizonyos (nem bizonyított, de valószínűnek tűnő) bonyolultságelméleti felté-telezésekből. Ezeket tárgyaljuk a következő alfejezetekben.

In document Algoritmusok bonyolultsága (Pldal 138-142)