XIII. Bolyai Konferencia Bodnár József Eötvös József Collegium, ELTE TTK, III. matematikus A véletlen nyomában
Mi is az a véletlen? 1111111111, 1010101010, 1100010111 valószínűsége egyaránt 1/1024 Melyiket könnyebb megjegyezni? A Hardy-Ramanujan anekdota: miért jegyezte meg Ramanujan az 1729-et? 1729 = 1 3 + 12 3 = 9 3 + 10 3 Univerzális Turing-gép: adatszalag + programszalag = kimenet Egy szó Kolmogorov-bonyolultsága a legrövidebb program hossza, mely kiírja őt. A tömörítőprogramok elve! Srinivasa Ramanujan Turing-gép
Tényleg egyszerű a nem véletlen? Miért nem véletlen az 1010101010101010101010101010101010101010 sorozat? for i := 1 to 20 do write(10) A sorozatot előállító program sokkal rövidebb a sorozatnál! A szó Kolmogorov-bonyolultsága kisebb a hosszánál: K(x) < x Az ilyen szó jól tömöríthető. Végtelen sorozat informatikus véletlensége: Kezdőszeleteinek bonyolultsága átlagban nagy: K(x n )/n 1 vagy K(x n ) n korlátos. Független, ½ valószínűséggel 0 vagy 1 értékű valószínűségi változók érétkeinek végtelen sorozata 1 valószínűséggel informatikusan véletlen. Azaz: ami a valószínűségszámítás alapján véletlennek gondolt sorozat a mi definíciónk szerint is véletlen!
Mit várunk a statisztika alapján? Alapvető elvárás az átlag: a 1001100010 sorozat átlaga 0,4, a várható érték 0,5. Az egyesek relatív gyakorisága jó közelítéssel a valószínűség. x egy n hosszú sorozat k darab 1-essel. Mennyi a bonyolultsága? Egy programnak elég megadni, hányadik a sorozat a k darab 1-est n tartalmazó n hosszú sorozatok (legfeljebb ( ) darab ilyen szó) között: 1.: 00011 2.: 00101 3.: 00110 4.: 01001 5.: 01010 6.: 01100 7.: 10001 8.: 10010 9.: 10100 10: 11000 Megadandó: 4, 2, 5. Egy N szám megadásához kb. log N darab jegy kell. Azaz az x sorozat megadásához (alkalmas program mellett) n log ( k ) + log n + log k + c jegy elég. Ez jóval kisebb lehet, mint n, ha k nagyon eltér n/2-től. k
Egyéb statisztikai tesztek: Legnagyobb blokkméret: 1000001110100100111111111101001 Khi-négyzet próba: T = (egyesek száma n/2)2 + (nullák száma n/2) 2 n/2
Néhány (ál)véletlen sorozat statisztikai tesztjei: (184 200 bites sorozatok) Khi (%) Korreláció Dobókocka 88,28 0,130332 Pascal 47,95 0,077694 Excel 25,79-0,127210 Ember (nem figyel) 88,28-0,065340 Ember (figyel) 76,81-0,348460 Ember (billentyűütögetés) 30,20-0,465000 Khi (%) Korreláció Dobókocka 55,53 0,019886 Pascal 57,16-0,021640 Excel 77,73-0,100440 Ember (nem figyel) 37,63-0,091600 Ember (figyel) 76,81-0,217970 Ember (billentyűütögetés) 10,48-0,411480 Khi (%) Korreláció Dobókocka 0,51-0,044550 Pénzérme 38,16-0,003000 Khi (%) Korreláció Pascal 99,99 0 Excel 15,73 0,030303 Ember 88,52-0,104290
Álvéltetlenszámok: x n+1 := a x n + b mod m Mindenképpen periodikus, de ha a periódus hosszú, ez nem zavaró. Spektrálpróba: a véletlenszámokat valahány dimenziós koordinátáknak tekintjük.
A Monte Carlo módszer Numerikus integrálás: Egyenletes eloszlású pontokat generálva: Területarány = az odaesés valószínűsége = relatív gyakoriság Hányszor lesz f(x n ) > y n? Főleg gyorsan oszcilláló függvényekre hasznos:
Véletlenszámok alkalmazása: polinomazonosság ellenőrzése A soktényezős szorzat kibontása exponenciálisan sok taghoz vezetne! Megoldás: Találgassunk behelyettesítési értékeket. Kicsi az esély, hogy gyököt találunk, ha a polinom nem azonosan nulla: Egy f(x 1,, x n ) nem nulla, x i a [0, N -1] intervallumból való érték. Ekkor N n féle behelyettesítésből legfeljebb kn n-1 esetben lesz nulla a helyettesítési érték. Véletlenszerű választással: a 0 helyettesítési érték esélye legfeljebb k/n. N := 2k választással, 100-szor ismételve az eljárást, csak 1/2 100 az esélye, az egyik irányban tévedünk a polinom 0 voltát illetően. Gyakorlatilag megbízható polinomiális algoritmus!
Egy meglepő gráfelméleti alkalmazás: párosítás páros gráfokban A gráfot egy mátrixszal ábrázoljuk 1 2 3 4 A 0 XA2 0 XA4 B XB1 0 0 0 C 0 XC2 0 XC4 D 0 0 XD3 0 Akkor és csak akkor van teljes párosítás, ha a mátrixhoz tartozó determinánspolinom nem azonosan 0! (A polinom egy nem 0 tagja egy kifejtési tag.) Létezik determinisztikus algoritmus is, de ez jól párhuzamosítható!
Kommunikációs protokollok 01 11 10001110 01 10101110 01 Pl.: A két gépnek el kell döntenie (minél kevesebb információcserével), hogy azonosak-e az n hosszúságú bemeneteik. Bizonyítható (és nem is túlságosan meglepő), hogy ahhoz, hogy ezt eldöntsék, legalább n bites forgalmat kell bonyolítsanak. Randomizált protokollal ez 2 log n + konstansra csökkenthető! Az eredmény nem lesz tökéletesen biztos, de a tévedés lehetősége kicsivé tehető!
Randomizált protokoll: x és y a két n hosszú bemenet. Rögzítsünk egy N számot, majd véletlenszerűen válasszunk egy N-nél kisebb p prímet. Elküldeni: p-t és x p-vel való osztásakor keletkező r maradékot. r p N : elküldendő 2 log n bit x az n hosszú bemenet y maradéka p-vel osztáskor r? y az n hosszú bemenet Tévedünk, ha p osztója x y = d nek. d = p 1 p k prímfelbontás. 2 n d 2.3..q 2 q-1, azaz n q, a k-adik prím. Vagyis n-ig legalább k darab prím van. A tévedés valószínűsége k/(prímek száma N-ig) (prímek száma n-ig)/(prímek száma N-ig). A prímszámtétel szerint ez kb. 1/c, ha N = cn. Azaz tetszőlegesen kicsivé tehető.
Prímtényezőkre bontás Egy szám prítényezőkre bontására nem ismert gyors (polinomiális) algoritmus, még randomizált sem. De a leggyorsabbak, legtöbbször célravezetők nem determinisztikusak. Pl.: N egy prímosztóját keressük; ha N osztója u 2 v 2 = (u + v)(u - v) nek, de nem osztója egyik tényezőnek sem, akkor lnko(n, a + b) osztója N-nek. Lnko számítása gyors (euklideszi algoritmus). Kell: u, v pár, hogy u 2 v 2 mod N, de u ±v mod N. Az első feltételhez: keresünk b j -t, hogy b j2 -nek N-nel való osztási maradéka, c j csak R-nél kisebb prímekkel osztható (R rögzített). Eggyel több b j -t választunk, mint ahány prím van R-ig. Ekkor néhány c j szorzata négyzetszám lesz: v 2 = c j = b 2 j = u 2
Prímtényezőkre bontás Teljesül-e a második, u ±v mod N feltétel? Legalább ½ valószínűséggel IGEN! Tegyük fel, hogy N = pq, két prím szorzata. Tudjuk, hogy u 2 v 2 mod N, azaz u 2 v 2 mod p és u 2 v 2 mod q azaz: mod p mod q mod N u +v u +v u ±v u +v u -v u ±v u -v u +v u ±v u -v u -v u ±v
Irodalom: Hraskó András: Új matematikai mozaik Knuth, D. E.: A számítógép-programozás művészete, 2. kötet Lovász László: Algoritmusok bonyolultsága Srejgyer, A.: Monte Carlo módszerek Internetes hivatkozások: www.fourmilab.ch/random ENT véletlenségtesztelő program