VÉLETLENÍTETT ALGORITMUSOK 1.ea. 1. Bevezetés - (Mire jók a véletleített algoritmusok, alap techikák) 1.1. Gyorsredezés Vegyük egy ismert példát, a redezések témaköréből, méghozzá a gyorsredezés algoritmusát. Ebbe egy adott S halmazba lévő db számot redezük övekvő sorredbe (a számokat sor adatszerkezettel tároljuk). A rekurzív algoritmus a következő: 1. ha a sorozat hossza <=1 akkor vége 2. választuk egy F elemet 3. helyezzük F elé az F-él kisebb, mögé pedig az F-él agyobb elemeket 4. gyorsredezés az F-él kisebb elemekre 5. gyorsredezés az F-él agyobb elemekre 6. vége A godot az F felosztó elem választása jeleti, ugyais ha a választás em megfelelő (F valamelyik oldala üres marad), akkor esetleg fölöslegese hívódik meg a következő rekurzió, ami időveszteséget okoz. Ha ez mide lépésbe megtörtéik, akkor végeredméybe (-1), (-2)... fölösleges hívás lesz, ami így azt eredméyezi, hogy az algoritmus futási ideje O 2. Ismerjük, hogy a legjobb, illetve az átlagos futási idő is O log. A következőkbe megaduk egy olya véletleített algoritmust, amiek várható futási ideje O log lesz. Ezt úgy érjük el, hogy a felosztó elemet egyeletes eloszlás alapjá véletleszerűe választjuk a halmazból (tehát midegyiket azoos valószíűséggel). Ez az RQS (Radomized QuickShort) algoritmus. Mit modhatuk eek az algoritmusak a várható futási idejéről? (a következőkhöz ld. még diszkrét valószíűségi változók, várható érték defiíciója) Az algoritmus egy futását ábrázolhatjuk egy olya biáris keresőfával is, ahol a k. szite lévő csúcsok a rekurzió k. mélységébe választott felosztó elemek leszek, és mide
csúcs bal oldali részfájába a tőle kisebb, jobb oldali részfájába a tőle agyobb elemek kerülek. A halmaz elemeit jelöljük s 1,..., s -el, mégpedig úgy, hogy s i jeletse a redezés utá i. helyre került számot (azaz s 1 a legkisebb, stb.). A fa levelei végül balról jobbra a redezett sorozatot adják meg. A várható futási idő aráyos lesz azzal, hogy a redezés sorá háy összehasolítás törtéik. Legye az X i j valószíűségi változó értéke 1, ha s i és s j össze lesz hasolítva és 0, ha em. Ekkor az összehasolítások száma i, j X i j lesz. Eek várható értéke E X i j = E X i, j lesz. A várható érték defiíciója alapjá E X i, j = P X i, j =1 1 P X i, j =0 0= P X i, j =1. Az RQS futása sorá a fa bármely csúcspotjába érvéyes, hogy az algoritmus össze fogja hasolítai az aktuális csúcsot (felosztó elemet) a két leszármazott részfa elemeivel, de em lesz összehasolítás a két részfa egyik eleme között sem, azaz egy i és egy j elem akkor és csak akkor lesz összehasolítva, ha valamelyikük felosztó elem. Megfogalmazhatjuk még azt a szabályt is, hogy i j elemek akkor és csak akkor leszek összehasolítva, ha valamelyikük hamarabb lesz felosztó elem, mit bármelyik közöttük lévő elem ( s i 1,..., s j 1 ). Ez köye belátható úgy, hogy vegyük azt az s k elemet, ami először lesz kiválasztva a [i;j] itervallumból i k j. Ekkor ha k {i, j } akkor a k csúcs bal oldali részfájába kerül i és jobb oldali részfájába j, így em leszek összehasolítva. Ha pedig k {i, j }, akkor mivel az egyikük felosztó elem, össze leszek hasolítva. A feti elgodolások alapjá így kiszámolhatjuk aak a valószíűségét, hogy az i és a j össze lesz hasolítva: P s i lesz a felosztó elem = 1 j i 1 P s j lesz a felosztó elem = 1 j i 1 P s i vagy s j felosztó elemlesz = 2 j i 1 Így j =i 1 p i j = j=i 1 2 j i 1 i 1 2 j =1 j 2 i =1 j=1 1 j =2 j=1 1 j. Mivel az utóbbi szumma egy harmoikus sor, melyek tagú részletösszege log, ezért azt kaptuk végeredméybe, hogy az RQS algoritmus várható futási ideje
O log, azaz várhatóa jobb eredméyt tudtuk eléri egy véletleített algoritmussal, mit egy determiisztikussal. Az is látható, hogy ez az algoritmus biztosa helyes eredméyt ad. Az ilye típusú algoritmusokat Las Vegas típusú algoritmusak evezzük. Az olya algoritmusokat, amelyek em biztos, hogy helyes eredméyt adak (viszot általába kicsi a futási idejük) Mote Carlo típusú algoritmusokak hívjuk. Eldötési problémákra az utóbbiak kétfélék lehetek. a.) egyoldali hibás Mote Carlo algoritmus: i.) a válasz ige ==> P(Alg iget mod)>=c a válasz em ==> P(Alg emet mod)=1 (azaz ekkor hibázhat) (ilyekor em hibázik) vagy fordítva ii.) a válasz ige ==> P(Alg iget mod)=1 a válasz em ==> P(Alg emet mod)>=c b.) kétoldali hibás Mote Carlo algoritmus: midkét esetbe em 0 valószíűséggel hibázik 1.2. Miimális vágás Egy másik példa 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 (Alg.): Amíg a csúcsok száma>=3 véletleszerűe választuk 2 potot (egyeletes eloszlással) és ezeket összeolvasztjuk. Amikor már csak 2 pot va, ez a két pot fogja reprezetáli a két halmazt. Megtalálja-e ez az algoritmus az optimális megoldást, és ha ige, milye valószíűséggel? Legye OPT egy optimális megoldás (több is lehet) és legye k eek a mérete. Lemma: P(Alg. OPT -t ad vissza) 1 2 Biz.: Nézzük az első összevoást. Az OPT k mérete miatt bármely pot fokszáma >=k, mert ha em így lee, akkor léteze k-ál kisebb méretű megoldás (éppe az ilye potál
vágva). Összese tehát legalább k 2 él va, míg az OPT-ba k él. 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 k/ k 2 = 2. Jelöljük ε i -vel azt az eseméyt, hogy az i. lépésbe em vouk össze OPT-beli élt. Ekkor az egyes lépésekbe aak a valószíűsége, hogy abba a lépésbe em vouk össze OPT-beli élt a következő : P(ε 1 ) 1 2 P(ε 2 ε 1 ) 1 2 1 (mivel a 2. lépésre már csak -1 csúcs marad, valamit feltételezzük, hogy az első lépésbe sem választott ilye élt) P(ε i j=1 i 1 ε j ) 1 2 1 i (itt már csak +1-i csúcs va) Az összes ε i eseméy bekövetkezéséek valószíűsége (tehát hogy egésze addig mellőzzük az OPT-beli élek választását, míg már csak 2 csúcs marad) a feti valószíűségek szorzata: P( 3 ε i ) = P(ε 1 )*P(ε 2 ε 1 )* * P(ε i j=1 i 1 ε j ), ami így 1 2 1 2 1 1 2 2... 1 2 2 = 3 amivel a lemmát bebizoyítottuk. 3 1 4 2... 1 3 = 2 1 1 2 Így egy alsó korlátot kaptuk arra, hogy az algoritmus egy optimális megoldást ad vissza, ebből a helytele eredméy visszaadásáak valószíűségére kapuk egy felső korlátot: P(Alg. Nem ad OPT -t vissza) 1 1 2. Ez em túl alacsoy érték, de a rövid futási idő miatt az algoritmust függetleül többször futtathatjuk, ezáltal a hiba valószíűségét csökketve. Pl ha 2 alkalommal végrehajtjuk, akkor P(Alg. 2 em ad OPT -t vissza) 1 1 2 2, ami alulról tart 1/e -hez és így egy jobb korlátot ad.
1.3. Boyolultságelméleti kitekités Def.: Az RP osztály (Radomized Polyomial Time) azo yelvek osztálya, amikre létezik olya véletleített A algoritmus, ami a yelv bármely szavára legrosszabb esetbe is poliom időbe fut, és x L P(A elfogadja x-et)>=1/2 x L P(A em fogadja el x-et)=1 Def.: A co-rp osztály azo yelvek osztálya, amikre létezik olya véletleített A algoritmus, ami a yelv bármely szavára legrosszabb esetbe is poliom időbe fut, és x L P(A elfogadja x-et)=1 x L P(A em fogadja el x-et)>=1/2 Mit látható, midkét feti osztálybeli algoritmusok egyoldali hibás Mote Carlo algoritmusok. Ha egy probléma midkét osztály eleme egyszerre, akkor megoldható 0 oldali hibával is, azaz biztos helyes megoldás adható (Las Vegas algoritmussal). Def.: A ZPP osztály (Zero-error Probabilistic Polyomial time) azo yelvek osztálya, amikre létezik várhatóa poliomiális időbe futó Las Vegas algoritmus.(zpp=rp co-rp) Def.: A PP osztály azo yelvek osztálya, amikre létezik olya véletleített A algoritmus, ami a yelv bármely szavára legrosszabb esetbe is poliom időbe fut, és x L P(A elfogadja x-et)>1/2 x L P(A em fogadja el x-et)>1/2 Az ilye algoritmusok elég gyege eredméyt adak, ezért haszosabbak a következő osztály algoritmusai: Def.: A BPP osztály azo yelvek osztálya, amikre létezik olya véletleített A algoritmus, ami a yelv bármely szavára legrosszabb esetbe is poliom időbe fut, és x L P(A elfogadja x-et)>3/4 x L P(A em fogadja el x-et)>3/4
2. Játékelméleti techikák 2.1. Játékfa kiértékelés Vegyük egy olya speciális játékfát, ahol a leveleket kivéve mide csúcs biáris. Ekkor a max csúcsokat elevezhetjük OR -ak is, (biáris értékekre a max művelet ugyaazt az eredméyt adja, mit az OR) a mi csúcsokat pedig hasoló megfotolásból AND -ek. Egy determiisztikus algoritmusak, ami kiértékel egy ilye fát, midig adható olya bemeet, amire ki kell értékeli az összes levelet, míg véletleített algoritmust haszálva itt is javíthatuk az eredméye. Jelölje a potok fiaiak számát d (most 2), és vegyük egy olya fát, ami potosa 2k szitből áll. Ekkor a levelek száma 2 2 =4, amit egy determiisztikus algoritmusak legrosszabb esetbe teljese ki kell értékelie. Algoritmusukba ha a gyökér AND akkor válasszuk véletleszerűe az egyik fiút, amit értékeljük ki rekurzíva ha ez 0 AND=0 ha ez 1 mejük a másik fiúra ha az 0 AND=0 ha az 1 AND=1 Ha a gyökér OR akkor válasszuk véletleszerűe az egyik fiút, amit értékeljük ki rekurzíva ha ez 1 OR=1 ha ez 0 mejük a másik fiúra ha az 1 OR=1 ha az 0 OR=0 Állítás: A kiértékelt csúcsok száma (költség) várhatóa<=3 k. Biz.(teljes idukcióval): 1. k=0 ra: az állítás triviális 2. Tfh. (=k) -ra igaz, tehát <=3 k csúcs lesz kiértékelve
3. Bizoyítsuk be, hogy a 2. feltétel mellett az állítás =k+1 -re is igaz. a.) Tfh. a részfába a gyökér egy OR csúcs, ami a kiértékelés sorá 1 értéket kap. Ez úgy állhat elő, hogy legalább az egyik fia 1 kiértékelést fog kapi. Ha szerecsék va, ezt a fiút fogjuk először választai, és ekkor a másik ágat már em is kell kiértékeli. Legrosszabb esetbe viszot először egy 0 kiértékelésű fiát választjuk, és csak utáa egy 1-est. Tehát ½ valószíűséggel a jó oldali fiút választjuk és ekkor csak ezt az egy részfát kell kiértékeli a feltevés szeriti legfeljebb 3 k költséggel, míg ½ valószíűséggel két részfát kell kiértékeli 2*3 k várható költséggel. Ekkor tehát ½ *3 k + ½ (2*3 k )=(3/2)*3 k lesz a várható költség. Ha a gyökér a kiértékelés sorá 0 értéket kap, az csak úgy fordulhat elő, hogy megéztük midkét fiát (és midkettő 0 értékű volt). Ebbe az esetbe tehát 2*3 k lesz a várható költség. (Ez a költségesebb az OR esetébe) b.) Tfh. a gyökér egy AND csúcs, ami a kiértékelés sorá 1 értéket kap. Ez úgy állhat elő, hogy midkét fia 1 kiértékelést fog kapi. Mivel ez 2 db 1 értékű OR csúcs kiértékelését jeleti, a várható költség ez esetbe 2* [(3/2)*3]= 3 k+1 <= 3 k+1, tehát ebbe az esetbe teljesül az idukciós felvetés. Ha az AND gyökér 0 értéket kap, az ½ valószíűséggel úgy jö létre, hogy megéztük az egyik fiút, ami OR, 0 értékű (ekkor ics szükség a másik fiú kiértékelésére), ½ valószíűséggel pedig úgy, hogy kiértékeltük egy 1 értékű OR fiút, majd utáa a másik fiút is (vegyük OR=0 -ak, feltételezve a legrosszabb esetet- az a. potba látható, hogy az költségesebb). Eek várható költsége így ½ * [ 2*3 k ]+ ½ * [ (3/2)*3 k + 2*3 k ]= = 11/4 *3 k <=3 k+1, tehát ebbe az esetbe is teljesül az idukciós felvetés, azaz az állítás igaz. Mivel =4 k levele va a fáak, log 4 =k. Ezt az előbb bebizoyított korlátba beírva azt kapjuk, hogy a Költség<= 3 log 4. Mivel x log a b =b log a x, így Költség<= log 4 3 0.793. Készítette: Oláh Péter