• Nem Talált Eredményt

Prímtesztelés

In document Algoritmusok bonyolultsága (Pldal 110-114)

5. Randomizált algoritmusok 99

5.2. Prímtesztelés

xij, havivj∈E(G), ési < j,

−xji, havivj∈E(G), ési > j, 0, egyébként.

Tutte-tól származik a fent idézett Frobenius–Kőnig-féle tétel következő analogonja, melyet bizonyítás nélkül idézünk:

5.1.4. Tétel. A G gráfban akkor és csak akkor van teljes párosítás, ha det(T)6≡0.

Ebből a tételből, a páros gráf esetéhez hasonlóan egy polinomiális idejű randomizált algoritmus adódik annak eldöntésére, hogy G-ben van-e teljes párosítás.

5.2. Prímtesztelés

Legyen m páratlan természetes szám, el akarjuk dönteni, hogy prím-e. Az előző fejezetben láttuk, hogy ez a probléma NP∩co-NP-ben van. Az ott leírt tanúk azonban (legalábbis egyelőre) nem vezettek polinomiális idejű prím-teszthez. Ezért most először az összetettségnek egy új, bonyolultabb módon való NP-leírását (tanúsítását) adjuk meg.

Idézzük fel az ún. „kis” Fermat-tételt: Ham prím, akkor minden1≤a≤

≤m−1természetes számraam−1−1oszthatóm-mel. Ha – adottmmellett – egyaszámraam−1−1oszthatóm-mel, akkor azt mondjuk, hogyakielégíti a Fermat-feltételt.

A minden1≤a≤m−1számra megkövetelt Fermat-feltétel jellemzi is prí-meket, mert hamösszetett szám, ésa-nak bármely olyan számot választunk, melym-hez nem relatív prím, akkoram−1−1nyilvánvalóan nem osztható m-mel. Természetesen nem tudjuk a Fermat-feltételt minden a-ra ellenőrizni;

ez exponenciális időt igényelne. Kérdés tehát, hogy milyen a-kra alkalmaz-zuk? Vannak olyanm összetett számok (az ún. pszeudo-prímek), melyekre a Fermat-feltétel mindenm-hez relatív prím aszámra teljesül; ezekre külö-nösen nehéz lesz a feltételt megsértő aszámot találni. (Ilyen pszeudo-prím például az561 = 3·11·17.)

Idézzük fel, hogy egymszámmal azonos osztási maradékot adó egész szá-mok halmazátmodulommaradékosztálynaknevezzük. A maradékosztály pri-mitív, ha elemeim-hez relatív prímek (ez nyilván egy maradékosztály minden elemére egyszerre teljesül, mint ahogyan a Fermat-feltétel is).

Érdemes megjegyezni, hogy ham nem pszeudo-prím, akkor a modulom primitív maradékosztályoknak legfeljebb a felére teljesül a Fermat-feltétel.

(A nem primitív maradékosztályok egyikére sem). Az olyanaprimitív mara-dékosztályok ugyanis, melyek a Fermat-feltételt kielégítik, a szorzásra nézve részcsoportot alkotnak. Ha ez a részcsoport valódi, akkor indexe legalább 2, így a primitív maradékosztályoknak legfeljebb a felét tartalmazza.

Így hamnem pszeudo-prím, akkor a következő egyszerű randomizált prím-teszt működik: ellenőrizzük, hogy egy véletlenszerűen választott1≤a≤m−1 szám kielégíti-e a kis Fermat-tételt. Ha nem, tudjuk, hogym nem prím. Ha igen, akkor ismételjük meg az eljárást. Ha 100-szor egymástól függetlenül azt találtuk, hogy a kis Fermat-tétel teljesül, akkor azt mondjuk, hogy m prím. Előfordulhat ugyan, hogymösszetett, de ha nem pszeudo-prím, akkor minden lépésben 1/2-nél kisebb volt annak a valószínűsége, hogy a feltételt kielégítő a-t találtunk, és így 2−100-nál kisebb annak a valószínűsége, hogy egymás után 100-szor ez bekövetkezzen.

Sajnos ez a módszer pszeudo-prímekre csődöt mond (azokat nagy valószí-nűséggel prímeknek találja). Így a Fermat-feltételt kissé módosítjuk. Írjuk fel azm−1 számot2kM alakban, ahol M páratlan. Azt mondjuk, hogy egya számmegsérti a Miller–Rabin-feltételt, ha az

aM−1, aM+ 1, a2M+ 1, a4M+ 1, . . . , a2k−1M+ 1

számok egyike sem oszthatóm-mel. Mivel ezeknek a szorzata éppenam−1−1, minden olyan a szám, mely a Miller–Rabin-feltételt megsérti, megsérti a Fermat-feltételt is (de nem megfordítva, mert m lehet összetett, és így le-het osztója egy szorzatnak anélkül, hogy bármelyik tényezéjőnek is osztója volna).

5.2.1. Lemma. Akkor és csak akkor elégíti ki minden 1≤a≤m−1 egész szám a Miller–Rabin-feltételt, ha mprímszám.

Bizonyítás. I. Hamösszetett, akkor bármely valódi osztója megsérti a Miller–

Rabin-feltételt.

II. Tegyük fel, hogymprím. Ekkor a Fermat-feltétel szerint bármely 1<

< a < mtermészetes számra am−1−1 osztható m-mel. Ez a szám azonban szorzattá bontható:

am−1−1 = (aM−1)(aM+ 1)(a2M+ 1)(a4m+ 1). . .(a2k−1M+ 1).

Így (ismét felhasználva, hogymprím) ezen tényezők valamelyike is osztható kell, hogy legyenm-mel, vagyisakielégíti a Miller–Rabin-feltételt.

Az algoritmus kulcslépése az az eredmény, hogy – a Fermat-feltétellel el-lentétben – a Miller–Rabin-feltételt összetett számokra a maradékosztályok többsége megsérti:

5.2.2. Lemma. Hamösszetett szám, akkor moduloma primitív maradék-osztályoknak legalább fele megsérti a Miller–Rabin-feltételt.

Bizonyítás. Mivel a lemma igazságát nem pszeudo-prímekre már beláttuk, így a továbbiakban feltehetjük, hogy m pszeudo-prím. Először is belátjuk, hogy ekkor m páratlan és négyzetmentes. Ha m páros volna, akkor m−1 megsértené a Fermat-feltételt, mert(m−1)m−1≡ −1 (modm). Tegyük fel, hogy egy p prímre pk osztja m-et valamilyen k >1-re, de pk+1 már nem.

Könnyű látni, hogy ekkora=m/p−1megsérti a Fermat-feltételt, ugyanis ha am−1-et kifejtjük a binomiális tétel szerint, akkor minden tag osztható lesz pk-val, kivéve a két utolsót, tehátam−1≡ −(m−1)(m/p)+ 1≡(m/p)+ 16≡1 (modpk). Persze ígymsem oszthatja(am−1−1)-et.

Legyenmprímfelbontásap1. . . pt(t≥2). Állítjuk, hogy mindeni-repi−1 osztója(m−1)-nek. Tegyük fel, hogy ez nem áll, akkorm−1 = (pi−1)q+r, ahol1≤r < pi−1. A 4.3.5. tétel szerint van olyanpi-vel nem oszthatóaszám, melyrear−1 nem oszthatópi-vel. A kínai maradéktétel szerint van olyanb modulommaradékosztály, hogyb≡a (modpi), és minden1≤j≤tértékre amely különböziki-tőlb≡1 (mod pj). Ez abnyilván primitív maradékosztály, ésbm−1≡am−1= (api−1)qar≡ar6≡1 (mod pi), és ígybm−1−1nem osztható pi-vel, tehát m-mel sem. Ez ellentmond annak, hogympszeudo-prím.

Legyenℓaz a legnagyobb kitevő melyre api−1számok egyike sem osztója 2M-nek. Mivel a pi−1 számok párosak, M pedig páratlan, ilyenℓ létezik, és mivel mindeni-repi−1osztója2kM-nek, ezért0≤ℓ < k. Azℓdefiníciója szerint van olyani, hogypi−1osztója2ℓ+1M-nek és ezértpiosztója(a2sM− 1)-nek minden primitívamaradékosztályra és mindenℓ<s≤k-ra. Ekkor viszont pinem lehet osztója(a2sM+1)-nek és ígymsem osztója(a2sM+1)-nek. Tehát haa olyan primitív maradékosztály, mely kielégíti a Miller–Rabin-feltételt, akkor m szükségképpen osztója az aM−1, aM+ 1, a2M + 1, . . . , a2M+ + 1számok valamelyikének. Ezért minden ilyena-ram vagy az elsől+ 1db (a2M−1) szorzatának, vagy az (a2M+1)-nek osztója. Nevezzük a modulom primitívamaradékosztályt „első fajtának”, haa2M≡1 (modm), és „második fajtának”, haa2M ≡ −1 (mod m).

Becsüljük meg először az első fajta maradékosztályok számát. Tekintsünk egy i, 1≤i≤t indexet. Mivel pi−1 nem osztója a 2M kitevőnek, 2=

= (pi−1)q+r, ahol1≤r < pi−1. A 4.3.5. tétel szerint van olyanpi-vel nem oszthatócszám, melyrecr−1 nem oszthatópi-vel. De ekkor

cm−1= (cpi−1)qcr≡cr6≡1 (modpi),

és ígycm−1−1 nem oszthatópi-vel. Ugyancsak használtuk már azt a gondo-latmenetet, hogy ekkor a modulopi primitív maradékosztályoknak legfeljebb a fele olyan, hogy am−1−1 osztható pi-vel. A kínai maradéktétel szerint kölcsönösen egyértelmű megfeleltetés van a p1. . . pt szorzatra mint modu-lusra vett primitív maradékosztályok és ap1, . . . , pt prímekre vett primitív maradékosztály-t-esek között. Így modulop1. . . pta primitív maradékosztá-lyoknak legfeljebb2t-ed része olyan, hogy mindegyikpiosztója (a2M−1)-nek.

Ezért a modulomvett primitív maradékosztályoknak legfeljebb (2t)-ed része olyan, hogymosztója (a2M−1)-nek.

Könnyű látni, hogy két második fajta maradékosztály szorzata első fajta.

Így a második fajta maradékosztályokat egy rögzített maradékosztállyal vé-gigszorozva különböző első fajta maradékosztályokat kapunk, tehát a második fajta maradékosztályok száma legfeljebb akkora, mint az első fajtájúaké. Így a kettő együtt is a primitív maradékosztályoknak legfeljebb2t−1-edrészét, és így legfeljebb felét teszi ki.

5.2.3. Lemma. Adottm-ről ésa-ról polinomiális időben eldönthető, hogya kielégíti-e a Miller–Rabin-feltételt.

Ehhez csak a 3.1.2. lemmát kell emlékezetbe idézni:ab maradéka modulo c kiszámítható polinomiális időben. E három lemma alapján a következő randomizált algoritmus adható prímtesztelésre:

5.2.4. Algoritmus. Véletlenszerűen választunk egy a számot 1 és m−1 között, és megnézzük, hogy kielégíti-e a Miller–Rabin-feltételt. Ha nem, akkor mösszetett. Ha igen, úja-t választunk. Ha 100-szor egymás után teljesül a Miller–Rabin-feltétel, akkor azt mondjuk, hogymprím.

Hamprím, akkor az algoritmus biztosan ezt mondja. Hamösszetett, ak-kor a véletlenszerűen választottaszám legalább 1/2 valószínűséggel megsérti a Miller–Rabin-feltételt. Így száz független kísérlet során 2−100-nál kisebb annak a valószínűsége, hogy egyszer sem sérül meg a Miller–Rabin-feltétel, vagyis hogy az algoritmus azt mondja, hogymprím.

Megjegyzések. 1.Ha az algoritmus azt találja, hogy mösszetett, akkor – érdekes módon – nem abból látjuk ezt, hogy egy osztóját találja meg, ha-nem (lényegében) abból, hogy megsérti a Miller–Rabin-feltételt. Ha a szám a Fermat-feltételt nem sérti meg, akkormnem lehet aaM−1, aM+1, a2M+ + 1, a4M+ 1, . . . , a2k−1M+ 1számok mindegyikéhez relatív prím, így ezekkel vett legnagyobb közös osztóit kiszámítva, valamelyik egy valódi osztó lesz.

Nem ismeretes (sem determinisztikus, sem randomizált) polinomiális algorit-mus arra, hogy ha a Fermat-feltétel is megsérül, egy valódi osztót találjunk.

Ez a feladat gyakorlatban is lényegesen nehezebb, mint a prímség eldönté-se. A kriptográfiáról szóló fejezetben látni fogjuk, hogy ennek a tapasztalati ténynek fontos alkalmazásai vannak.

2.Megpróbálhatunk adottm-hez a Miller–Rabin-feltételt megsértőa-t nem véletlen választással, hanem az 1, 2 stb. számok kipróbálásával keresni. Nem ismeretes, hogy hamösszetett, milyen kicsi az első ilyen szám. Felhasználva azonban az analitikus számelmélet egy évszázados sejtését, az ún. Általánosí-tott Riemann-hipotézist, meg lehet mutatni, hogy nem nagyobb, mintlog2m.

Így ez a determinisztikus prímtesztelés polinomiális idejű, ha az Általánosí-tott Riemann-hipotézis igaz.

3.Végül 2002-ben Agrawal, Kayal, és Saxena bebizonyították, hogy a prím-tesztelés probléma P-ben van.

Az előzőekben megismert prímtesztelési algoritmust felhasználhatjuk arra, hogy adott n számjegyű prímszámot keressünk (mondjuk kettes számrend-szerben). Válasszunk ugyanis véletlenszerűen egy k számot a [2n−1,2n−1]

intervallumból, és ellenőrizzük, hogy prím-e, mondjuk legfeljebb 2−100 va-lószínűségű hibával. Ha igen, megállunk. Ha nem, új k számot választunk.

Mármost a prímszámok elméletéből következik, hogy ebben az intervallum-ban nemcsak, hogy van prímszám, de a prímszámok száma elég nagy: aszimp-totikusan(loge)2n−1/n, vagyis egy véletlenszerűen választott njegyű szám kb.(loge)/nvalószínűséggel lesz prím. Ezért a kísérletetO(n)-szer ismételve már igen nagy valószínűséggel találunk prímszámot.

Ugyanígy választhatunk véletlen prímet minden elég hosszú intervallum-ból, pl. az[1,2n]intervallumból.

Megjegyzés. Ugyan Agrawal, Kayal, és Saxena tétele alapján a prímtesz-telésről tudjuk, hogy P-ben van, ez azonban nem sokat segít n jegyű prím keresésében. (Ha Cramér sejtése igaz lenne, miszerintpn+1−pn=O(log2n) – aholpn jelöli azn. prímet, – akkor persze tudnánk találni determinisztikus polinomiális idejű prímgenerátort is, de a kriptográfiai alkalmazások céljá-ra ez sem lenne megfelelő, hiszen általában fontos, hogy minden alkalommal az eddigiektől eltérő prímet találjunk.) Tehát az ilyen feladatokra egyelőre a randomizáció egyelőre alapvetőnek látszik, és ha már a keresésre használjuk a randomizációt, akkor semmi nem indokolja, hogy a tesztelésre ne használjuk.

In document Algoritmusok bonyolultsága (Pldal 110-114)