Véletleített algoritmusok Tegyük fel, hogy va két doboz (A,B), amely egyike 1000 Ft-ot tartalmaz, a másik üres. 500 Ft-ért választhatuk egy dobozt, amelyek a tartalmát megkapjuk. A feladat megoldására két determiisztikus algoritmus haszálható vagy A-t választjuk vagy B-t. Midkét algoritmus költsége a legrosszabb esetbe 500 (azo iput eseté, amelybe em találtuk meg a pézt). Másrészt, ha egy olya véletleített algoritmust haszáluk, amely 1/2 valószíűséggel választja midkét ládát, akkor midkét iputra az algoritmus költségéek várható értéke 1/2 500 + 1/2 500 = 0. Ilye esetbe, ha az algoritmus haszál véletleül geerált dötéseket, véletleített algoritmusról beszélük. Eze algoritmusok futása függ a véletle dötésektől, így az algoritmus hatékoysága (a kapott eredméy vagy a futási idő) egy valószíűségi változó, amelyek a várható értékét szokás vizsgáli. Las Vegas és Mote Carlo algoritmusok Az olya algoritmusokat, amelyek biztosa helyes eredméyt adak Las Vegas típusú algoritmusak evezzük (ez esetbe az algoritmus futási ideje függ a véletle dötésektől és az egy valószíűségi változó). Az olya algoritmusokat, amelyek em biztos, hogy helyes eredméyt adak (viszot általába kicsi a futási idejük, és gyakra függetle a véletle dötésektől) Mote Carlo típusú algoritmusokak hívjuk. Eldötési problémákra az utóbbiak kétfélék lehetek. Egyoldali hibás Mote Carlo algoritmus: ekkor az algoritmus az egyik (vagy az ige vagy a em) válasz eseté em hibázhat, a másik válasz eseté a hiba valószíűsége alulról korlátozott. Kétoldali hibás Mote Carlo algoritmus: midkét válasz eseté hibázhat az algoritmus, de adott alsó korlát a hibázás valószíűségére. Mukatárs felvételéek problémája Tegyük fel, hogy egy vállalat alkalmazottat keres és egy állásközvetítő mide ap egy új jelöltet küld. A jelölt meghallgatása utá dötei kell felvesszük -e. Ekkor a következő eljárás léyegébe az egyetle, amelyek a végé a legjobb jelöltük va. A küldött embereket 1-től -ig jelöljük. MUNKATARS legjobb:=1 for i=2 to if i jobb jelölt mit legjobb the elbocsát legjobb felvesz i legjobb:=i Az algoritmus költsége az elbocsátások száma. A legjobb esetbe, ha az első jelölt a legjobb egyetle elbocsátás sem szükséges a legrosszabb esetbe pedig (ha a jelöltek jóság szerit övekvőe redezettek) -1. Átlagos eset Feltesszük, hogy az iput egyeletes eloszlás alapjá geerált az ember mide lehetséges! permutációja ugyaakkora valószíűséggel lehet a feladat iputja. Legye X i az a valószíűségi változó, amely 1 ha az i-edik jelöltet felvesszük és 0, ha em. Ekkor az elbocsátások számát az X = i=1 X i 1 változó adja meg. 1
Másrészt Pr(X i = 1) = 1/i, mivel az első i jelölt is egyeletes eloszlás alapjá érkezik, így ez aak a valószíűsége, hogy az i-edik a legjobb. Tehát E(X i ) = 1/i. Következésképpe E(X) = i=1 E(X i ) 1 = i=1 1/i 1 = H 1 l 1. Véletleített algoritmus a mukatárs felvételére Az átlagos eset elemzéssel az a baj, hogy általába ics igazá okuk az iput egyeletes eloszlását feltételezi. Véletleített algoritmussal gyakra ez a probléma kiküszöbölhető. Tegyük fel, hogy megkapjuk előre a jelöltek listáját (csak a listát semmi egyéb iformációt) és mi modhatjuk meg milye sorredbe jöjjeek. Ekkor a következő véletleített algoritmus haszálható. RMUNKATARS legye a(1),a(2),...,a() a jelöltek egy egyeletes eloszlás alapjá kapott permutációja legjobb:=a(1) for i=2 to if a(i) jobb jelölt mit legjobb the elbocsát legjobb felvesz a(i) legjobb:=a(i) Ekkor ugyaúgy, mit a feti átlagos eset aalízisbe látható, hogy RMUNKATARS várható költsége H 1. Fotos megjegyezük, hogy itt már em tételeztük fel semmit az iputról a várható érték a véletleített algoritmus dötéseire voatkozik. Gyorsredezés véletleül geerált felosztó elemmel RadomGyorsredez 1. Ha csak egy elem va retur. 2. Egyébkét választuk egyeletes eloszlás alapjá egy felosztó elemet. 3. A felosztó elem elé helyezzük a ála kisebb, mögé a ála agyobb elemeket. 4. RadomGyorsredez a felosztó elemél kisebb elemekre 5. RadomGyorsredez a felosztó elemél agyobb elemekre Lemma: A futási idő várható értéke legrosszabb esetbe is O(log) Bizoyítás: Legye X a eljárás végrehajtása sorá a felosztásokba végrehajtott összehasolítások száma elemű bemeetre. Ekkor a teljes futási idő O( + X). Legye z i az i-edik legkisebb eleme a bemeetek, és Z i j = {z i,z i+1,...,z j }. Legye p i j aak a valószíűsége, hogy z i -t és z j -t valamelyik feloszt eljárás összehasolítja. 2
Ekkor p i j = 2/( j i + 1), mivel akkor leszek összehasolítva, ha a Z i j halmazból vagy z i vagy z j az első felosztó elem, és a felosztó elem véletleszerű választása alapjá mide elem ugyaakkora valószíűséggel lesz a halmazból az első felosztó elem. Az összehasolítások várható száma 1 i=1 j=i+1 2/( j i + 1) = O(log) Miimális vágás algoritmusa A miimális vágás feladat, ahol egy multigráfot kell egy vágással 2 részre osztai úgy, hogy a vágás mérete miimális legye. (Multigráf: olya gráf, ahol bármely 2 pot között lehet több él is, azaz az élekek multiplicitása va). A vágás mérete:= a két csúcshalmaz között átmeő élek száma. Egy egyszerű véletleített algoritmussal létre tudjuk hozi a kívát vágást. Az algoritmus amíg a csúcsok száma legalább 2 véletleszerűe (egyeletes eloszlás alapjá) kiválaszt egy élet és eek két végpotját összevoja egy potba. Amikor már csak 2 pot va, a két potba összevot pothalmazok adják a két halmazt. Legye OPT egy optimális megoldás (több is lehet) és legye k eek a mérete. Lemma Aak a valószíűsége, hogy az algoritmus az OPT megoldást adja vissza legalább 1/ 2. Bizoyítás Nézzük az első összevoást. Az OPT k mérete miatt bármely pot fokszáma legalább k, mert ha em így lee, akkor léteze k-ál kisebb méretű vágás. Összese tehát legalább k/2 él va, ebből az OPT-ba k darab szerepel. Tehát aak valószíűsége, hogy a véletleített algoritmusuk az első lépésbe végez olya összevoást, ami OPT-beli élet érit legfeljebb k/( k/2) = 2/. Legye E i az az eseméy, hogy az i. lépésbe em vouk össze OPT-beli élet. Ekkor: Pr(E 1 ) 1 2/. Továbbá Pr(E 2 E 1 ) 1 2/( 1), mivel, ha E 1 feáll, akkor az összevot gráfra is teljesül, hogy a miimális vágás k. És így tovább Pr(E i E 1 E i 1 ) 1 2/( + 1 i), mide i-re. Az összes E i bekövetkezéséek (azaz aak, hogy egyáltalá em választuk OPT beli élt) a valószíűsége a feti feltételes valószíűségek szorzata, azaz legalább i=3 (1 2 i ) = 1 ( 1) 1/2. A lemma alapjá azt kapjuk, hogy Pr(Alg em optimális megoldást ad vissza) 1 1/ 2. Viszot egymástól függetle véletle dötésekkel újra végrehajtva az algoritmust, az alsó korlátok szorzódak, így 2 végrehajtás utá a hibás erdeméy valószíűsége kisebb lesz, mit 1/e. 3-MAX-SAT probléma 3-MAX-SAT probléma iputja egy kojuktív ormálforma, amely m klóz kojukciója és mide klóz potosa három külöböző literált (változó vagy egáltja) diszjukciója, és egyik klóz sem tartalmazza ugyaazt a változót és egáltját. A 3-SAT problémába meg kell határozi, hogy kielégíthető -e a formula, azaz va -e olya értékadás, amely mellett mide klóz igaz. A 3-MAX-SAT probléma azt méri milye közel va a formula a kielégíthetőséghez, azaz mi a maximális száma a kielégíthető klózokak. A következő tétel mutatja, hogy egy agyo egyszerű véletleített algoritmus egy jó approximációt ad. Tétel Ha mide változóak egymástól függetleül 1/2 valószíűséggel aduk 0 és 1 értéket, akkor a kielégített klózok várható száma legalább 7/8m. Bizoyítás: Defiiáljuk az Y i idikátor változót, amely akkor 1 ha az i-edik klóz ki va elégítve, egyébkét 0. Ekkor aak a valószíűsége, hogy a klóz ics kielégitve 1/8, hisz aak felel meg, hogy egyik literál sem igaz. Következésképpe E(Y i ) = 7/8. Másrészt, ha Y a kielégített klózok száma, akkor Y = i=1 Y i, így E(Y ) = i=1 E(Y i) = 7/8m. 3
Poliomok egyelőségéek elleőrzése Legye P(x) és Q(x) két -edfokú poliom a feladat elleőrízi, hogy azoosak -e. Ha a poliomok az együtthatók által vaak megadva, akkor yilvávaló megoldás az együtthatók egyelőségéek elleőrzése. De előfordulhatak olya alkalmazások, ahol a poliomok em az együtthatókkal vaak megadva, haem egy jóval boyolultabb formába, esetleg csak csak egy eljárást haszálhatuk, amely adott helye megadja a poliom értékét. A feladat tulajdoképpe az, hogy a P(x) Q(x) = 0 poliom egyelőséget kell elleőrízi. Mivel egy -edfokú poliomak legfeljebb gyöke va, ezért egy megoldás, hogy veszük +1 darab értéket x 1,x 2,...,x +1 és mide i-re teszteljük a P(x i ) Q(x i ) = 0 egyelőséget. Ha mide esetbe egyelőség áll fe, akkor tudjuk, hogy a poliomok megegyezek egyébkét pedig külöbözőek. Egy gyorsabb Mote Carlo algoritmus a következő: Vegyük S elemet, amelyeke a poliomok értelmezve vaak, válasszuk véletleszerűe egyeletes eloszlás alapjá egy x elemet. Ha P(x) Q(x), akkor a poliomok külöbözőek, egyébkét azt modjuk megegyezek. Lemma Aak a valószíűsége, hogy az algoritmus külöböző poliomokat megegyezőek mod legfeljebb / S. Megjegyzés: A hiba valószíűsége csökkethető a S halmaz méretéek övelésével, és függetle tesztek ismételt végrehajtásával. Mátrixok egyelőségéek elleőrzése A cél két F test feletti méretű mátrix A és B egyelőségéek elleőrzése. Az algoritmust akkor érdemes haszáli, ha a mátrixok em adottak explicit formába csak fekete dobozkét számolhatuk velük, vagy mátrixszorzások elleőrzésére. A két mátrix, akkor és csak akkor egyelő, ha C = A B azoosa 0. Tétel Legye C egy em azoosa 0 mátrix F felett, továbbá r egyeletes eloszlás alapjá geerált a {0,1} halmazból. Ekkor PR(C r = 0) 1/2. Halasztott dötések techikája Adott 1 pakli fracia kártya, 52 lap: ebből 13db 4 kártyát tartalmazó kupacot hozuk létre. A következő játékot játsszuk. a 13-dik pakliból levesszük a legfelső kártyát, amilye szám va az aktuálisa felvett kártyá azzal a paklival folytatjuk, a játékak vége, ha üres kupachoz érkezük, yertük: ha mide kártyát felvettük. Az a kérdés mi a yerés valószíűsége, ha egyeletes keverés alapjá lettek lerakva a kártyák. A halasztott dötés elve az, hogy amikor a következő kártyát felvesszük, akkor az a kártya a még játékba lévő kártyákból egyeletes eloszlás alapjá kerül ki. (Úgy vesszük a játékot, mitha a keverést elhalasztaák eddig az időpotig.) Következésképpe a játékba egy egyeletes eloszlás alapjá kapott véletle permutáció sorredjébe vesszük a kártyákat. Vegyük észre, hogy potosa akkor yerük, ha király a permutációba az utolsó lap (potosa a egyedik királyál áll meg a játék). Eek a valószíűsége, így a játék megyeréséek a valószíűsége is 1/13. A tétel bizoyítása Feltehetjük, hogy C-ek az első sora em 0, és a em 0 értékek a sorba megelőzik a 0 értékeket. Aak a valószíűségét szereték meghatározi, hogy Cr=0. Legye c a C első sorvektora, melyek első k értéke em 0, k>0. Vizsgáljuk aak a valószíűségét, hogy c és r belső szorzata em 0, ez alsó korlátot ad arra, valószíűségre ézve, hogy Cr=0. A belső szorzat c T r = 0, akkor ha 4
r 1 = k i=2 c i r i c 1. Viszot a halasztott dötések techikája alapjá r 1 -et választhatjuk a többi érték rögzítése utá, így a feti egyelőség valószíűsége legfeljebb 1/2. A tétel alapjá a véletleül geerált r vektorra elleőrízve az Ar = Br egyelőséget, egy 1/2 hibakorlátos Mote Carlo algoritmust kapuk. Szorgalmi Igazoljuk, hogy egy tetszőleges m klózt tartalmazó CNF-be, ha mide változóak egymástól függetleül 1/2 valószíűséggel aduk 0 és 1 értéket, akkor a kielégített klózok várható száma legalább m/2. Beküldés: cimreh@if.u-szeged.hu, Bizoyítás első égy megoldó 6-6 pot a második égy megoldó 3-3 pot A szerzett plusszpotok a vizsga miimumkövetelméyébe em számítaak bele. 5