A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre. Az előző részben egy bolha üldözése során pár dolgot megtudtunk az algoritmusokról, speciálisan az algoritmusokkal megadható és az általános, "véletlen'' sorozatok közti különbségről. E különbségről sajnos csak annyi derült ki, hogy általános sorozat ‐ Cantor átlós elve szerint ‐ több van, mint algoritmikus, vannak programmal meg nem adható sorozatok. Láttunk is erre példát a megállási függvény "átlója'', például ilyen volt. E sorozat, amely speciálisan 0-kból és 1-ekből áll, azonban aligha tekinthető egy pénzdobás (=fej,=írás) tipikus eredményének. Igen egyszerű például sok helyen meghatározni: hajtsuk végre az összes programot lépésig, nagy részük végeredményt fog szolgáltatni. Nem tartanánk azt sem véletlennek, ha a bolha mindig éppen eggyel az előtt a mező előtt járna, amelyre mi, pl. az V. eset stratégiája szerint, csapnánk. Különösképpen pedig nem tudjuk a választ a legelőször feltett kérdésre: ha csak néhány, véges sok lépését ismerjük a bolhának (vagy egy fej-írás sorozatnak), honnan ered az az érzetünk, hogy ez szabályos, illetve véletlenszerű. Hiszen bármely sorozat véges sok eleme előállítható programmal (készítsük el e programot), a utasítás segítségével.
A Kolmogorov-komplexitás Módosítsuk a bolhás feladatot úgy, hogy miután (mellé)csaptunk leendő áldozatunknak, meglátjuk, hol is volt valójában. Így a következő lépésben elkaphatjuk a bolhát, ha sikerül kifigyelnünk, milyen szabályt követ az ugrálása. Így a feladat első 4 változata 3 időegység alatt biztosan véget ér. Mi a helyzet az ötödikkel? Tudjuk, hogy egy rögzített szabályt követ a bolha, ezt a szabályt induktívan kell kikövetkeztetnünk, hasonlóan a TV műsorokban, intelligenciatesztekben előforduló feladatokhoz. Célunk itt a legegyszerűbb szabály megtalálása. Például a 3, 5, 7 sorozatot biztosan 9-cel folytatnánk (páratlan számok), és bosszúsak lennénk, ha a bolha tovább ugrálna, mert a páratlan prímekre gondolt és 11 a folytatás. Mit is jelent az, hogy egy szabály egyszerűbb a másiknál? Ezt megfoghatjuk matematikailag úgy, ha a szabályt leíró program hosszát vizsgáljuk. Vezessük be tehát egy számra (amelynek persze a már látott módon megfeleltethető egy sorozat) a = {a legrövidebb program hossza, amely -et előállítja} mennyiséget. Ezt a sorozat Kolmogorov-komplexitásának nevezzük, a híres, 1987-ben elhunyt szovjet matematikus után. természetesen függ attól, hogy milyen "jó'' programnyelvet használunk. Azonban bármely gépen (ha nincs memóriakorlát) elkészíthető bármely programnyelv fordítója, amelynek hosszát a nyelvben megírva jelölje , és a nyelvet fordítsa a -re. Így a és nyelvekhez tartozó és komplexitásokra igaz lesz , minden esetén; -től nem függ, hiszen a -beli programhoz még a hosszú fordítóprogramot kell hozzáilleszteni. Ehhez persze még az is kell, hogy a és nyelvek ugyanazokat a jeleket ‐ pl. 0‐9, vessző stb. ‐ használják. Így, intuitíven | |
nem kiszámítható Ha ismerjük -et, az -et előállító legegyszerűbb szabályt meg is kereshetjük: a hosszú programokat kell lépésenként(!) végrehajtanunk (előfordulhatnak köztük olyanok is, amelyek végtelen ciklusba esnek), azaz az összes hosszú programot az összes lépésszámig ki kell próbálnunk, az egyik biztosan szolgáltatni fogja -et. A próbálgatás módja pedig azonos a -dimenziós bolhaüldözéshez: számpárokat kell kipróbálnunk, az első paraméter a program sorszáma, a második pedig a lépésszám.
Célul most a -et meghatározó algoritmus keresését tűzhetnénk ki. Most már azonban tudjuk, hogy nem minden függvény kiszámítható. meghatározását a megállási függvény ismeretében elvégezhetjük: kipróbáljuk hossz szerinti növekvő sorrendben az összes programot, amely nem esik végtelen ciklusba. Mivel azonban nem kiszámítható, kénytelenek vagyunk ismét csak a lépésenkénti kipróbálás ötletét használni. Például az ábrán látható sorrendben próbáljuk ki a programokat a megfelelő lépésszámig. Mivel minden véges(!) sorozatot elő tudunk állítani programmal, előbb-utóbb találunk is egy ilyent, pl. az -adikat a végrehajtási idővel. Ha minden, az -adik programnál rövidebb program vagy véget ért ekkorra, vagy valamilyen módon bizonyítani tudjuk, hogy végtelen ciklusba esik (pl. ), készen vagyunk. Általában azonban lesznek programok, amelyeket még nem próbáltunk ki elegendő sokáig, ezek között lehet, hogy valamelyik egyszerűbb szabályt szolgáltat -re. 3. Tétel nem kiszámítható. Bizonyítás. A "legkisebb, magyar nyelven ezer betűvel le nem írható szám'' tartalmi paradoxon ötletét vegyük át (ez a szám azért nem létezhet, mivel éppen most írtuk le, ezernél jóval kevesebb betűvel). Tekintsük tehát a legkisebb, -nél nagyobb komplexitású számot, ahol -t majd később választjuk meg. Ha kiszámítható volna, az összes számra kiszámítanánk, amíg az első -nél nagyobbat el nem érjük. Tételezzük fel, hogy ez a program létezik, és -t, mint adatot tartalmazza. Legyen a program hossza az adat nélkül. -t, mint adatot legfeljebb decimális jeggyel leírhatjuk. Így egy -et előállító programot kapunk, amelynek hossza azaz -et erre a hatványra emelve | | ahol tetszőlegesen nagy lehet, tehát -nél is nagyobb. Ekkora választásával tehát ellentmondásra jutunk. Itt persze szó sincs paradoxonról: indirekten azt igazoltuk, hogy mégsem kiszámítható.
A véletlenszerűség és a komplexitás Most már módunkban áll jobb jellemzését adni a véletlenszerűségnek. Egy algoritmikusan előállított végtelen sorozatot egy véges hosszúságú program szolgáltat: a kezdőszeletek komplexitása tehát egy megfelelő hossz után már nagyon kicsiny lesz. A véletlenszerűségérzet ezzel ellentétben a magas komplexitáshoz társul. De mekkora lehet egy véges sorozat komplexitása? Biztosan nem lehet nagyobb mint a PRINT "x" utasítás megfelelő programnyelvre való fordítása, azaz , ahol a sorozatban szereplő számjegyek és vesszők összhossza, pedig -től nem, csak a programnyelvtől függ. Másrészt tekintsük a programokat a már látott módon, a 0‐9 számjegyekkel és a vessző segítségével kódolva. Ekkor -nél rövidebb program | | darab van, míg olyan sorozat, amelynek a hossza (az elválasztó vesszőkkel együtt, két egymást követő vessző közé ismét -t képzelve) ; így van olyan sorozat, amelyre . Ráadásul az hosszú sorozatoknak, amelyek száma , már csak kis része, kevesebb mint része lehet -nél "egyszerűbb''. Egy véges sorozat véletlenszerűségét tehát úgy foghatjuk meg, hogy -re , azaz "nagy'' a komplexitása. A véletlen-érzetünk is megmagyarázható: a sorozatok nagy részére nincs igazán rövid leírás, az egyszerűen előállíthatók aránya kicsi. Így valóban ritkábban fordulnak elő a szabályos, mint a szabálytalan sorozatok. A legtöbb rögzített hosszúságú sorozatot csak a PRINT "x"-nek megfelelő eljárás állítja elő, ez pedig a bolha üldözése szempontjából csekély segítség, hiszen nem ad jóslatot a bolha következő lépésére.
Egy gyenge prímszámtétel Végezetül lássunk a Kolmogorov-komplexitásra két, különböző területről származó alkalmazást. Legyen az -nél nem nagyobb prímek száma. Tétel. , ha elég nagy. Bizonyításvázlat. Tekintsünk egy olyan számítógépet, amely kettes számrendszerbeli be- és kimenetekkel dolgozik. Legyen egy véletlenszerű szám, azaz amelyre ( darab bináris jegyből áll ). Tudjuk, hogy valamely természetes számokra. Mivel , ezért , így az -t leíró jegyek száma, . Állítsuk elő azt a jelsorozatot, amely egyesből, egy -ból (ezek hosszát határozzák meg) majd sorra esetén -kből áll: | | Ennek összhossza tehát (legfeljebb) . Tekintsünk egy programot, amely tartalmaz egy adatot. Megszámolja először az adat elején lévő egyeseket, az első -ig, majd ilyen hosszú "szeletekre'' vágja a további részt, így -ket előállítva. Végül pedig az kimenettel áll le. Legyen e program hossza adat nélkül , adattal együtt tehát E program előállítja -et, tehát hossza -nél nem kisebb: | | azaz | | Mivel tetszőleges nagy lehet, van olyan , amelytől kezdve Ha -t ennél nagyobbnak választjuk, a bizonyítandót kapjuk.
Gödel nemteljességi tétele Gödel tételének egy változata Az is Hilbert egy kérdése volt akkor, hogy az aritmetika axiómái helyesen írják-e le az egész számok világát. Ez 1931-ben kiábrándító választ nyert: Kurt Gödel (1906‐1978) jött arra rá, hogy amennyiben az aritmetikának tetszőleges, algoritmussal felsorolható és ellentmondásmentes axiómarendszerét tekintjük, mindig léteznek olyan állítások, amelyek nem bizonyíthatók ebben az axiómarendszerben. Meg fogok ilyen állításokat adni, előbb azonban ismét csak az aritmetikai állításokról és bizonyításokról alkotott intuitív képünket kell javítanunk. Hogy ez mennyire fontos, a következő példa mutatja. Mit mondjunk a következő állításról:
"Én nem vagyok bizonyítható''.
Ami bizonyítható, az igaz, így az állítás nem lehet hamis, hiszen akkor ő maga mondja ki, hogy bizonyítható. Tehát bebizonyítottuk, hogy az állítás igaz? Hogyan oldható fel az ellentmondás? Úgy, hogy ezt az állítást egy formális rendszerben csak a következőképpen fogalmazhatjuk meg:
"Én nem vagyok bizonyítható az adott formális rendszerben'',
és ekkor bizonyításunk kívül esik a rendszeren, de az állítás valóban igaz. (A Gödel-tétel bizonyításai általábán ilyen típusú állítást adnak meg, formálisan.) E példán látható, hogy mindig beszélhetünk egy objektumon pl. (, összeadás, szorzás), igaz állításokról. Gödel tétele nem azt jelenti, hogy az egész számokra vonatkozó bizonyos állítások "kétféleképpen viselkedhetnek'', "mindössze'' annyit, hogy nem tudjuk őket az adott alapfogalmakban adott axiómákból levezetni. Ez azzal egyenértékű (ez is bizonyításra szoruló állítás!), hogy van két olyan objektum, amelyek nagyon hasonlítanak: érvényes rajtuk az axiómarendszer, azonban bizonyos állítások különböznek rajtuk. Az aritmetika esetén az egyik objektum az +, ahhoz, hogy ezt a másik objektumtól elkülöníthessük, újabb axiómákra van szükség. De mi lenne, ha összes igaz állítását axiómának tekintenénk? Igaz, hogy ez egy végtelen axiómarendszer lenne, de a végességet nem is követeltük meg. Viszont ahhoz, hogy legalábbis elő tudjunk tetszőleges axiómát állítani, ha szükségünk van rá, kell egy algoritmus, amely ezeket felsorolja. A tétel szerint ilyen nem fog létezni. Fogjunk most hozzá az aritmetika nyelvének vizsgálatához. Alapfogalmak lehetnek a szám, a rákövetkezés függvénye: , és az összeadás és szorzás függvények. elemei előállíthatók, mint a rákövetkezői. Mivel az axiómarendszernek más modellje is lehet, az újonnan definiált számokat jelöljük aláhúzással. Így . Végül axiómák legyenek az összeadás, szorzás és a reláció legegyszerűbb ismert tulajdonságai: (mi tudjuk, hogy ez mely hármasra teljesül, és erre kell a rendszert "megtanítanunk''), , ha (hasonlóan), ( most nem aláhúzott, hiszen nem tudjuk, hogy előáll-e, mint ). Nem triviális, de igaz, hogy a programokkal, azaz kiszámítható függvényekkel kapcsolatos állítások megfogalmazhatók e nyelven, így pl. a komplexitás is. A másik tény, amelyre szükségünk lesz, az, hogy az axiómákból következő bizonyításokat fel tudjuk sorolni egy programmal, feltéve, hogy maguk az axiómák felsorolhatók. (Persze így várni a Fermat‐sejtés bizonyítására olyan, mintha ABC sorrendben minden szöveget felírva akarnánk Shakespeare műveit megkapni.) Most már következhet a Tétel. Rögzítsünk egy, az aritmetikát tartalmazó rendszert és axióma rendszerét, amely a fenti axiómákat tartalmazza, ellentmondásmentes és programmal felsorolható. Ekkor van olyan , hogy a "'' igaz állítások ezen axiómából nem bizonyíthatók.(Tudjuk, hogy van olyan , amelyre , így "''-nek igaz állításnak kell lennie.) Bizonyítás. Hasonlóan történik annak igazolásához, hogy nem kiszámítható. Ismét válasszunk egy nagy -t és keressük meg a helyes bizonyítások felsorolásában az elsőt, amelynek konklúziója az, hogy valamely -re . Így előállítható annak a programnak a segítségével, amely felsorolja a helyes bizonyításokat. Ha jóval nagyobb, mint e program hossza (emlékezzünk arra, hogy -t, mint adatot kellett még a programban tárolni), ismét ellentmondásra jutunk, egy -nél nagyobb komplexitású számot egyszerűbben állítunk elő. Itt azonban az ellentmondás csak úgy oldható fel, hogy "'' állítást soha nem is találunk. Ezzel a tételt beláttuk. A konstans elsősorban az axiómarendszer komplexitásától függ, hiszen a formálisan helyes bizonyításokat felsoroló program az axiómáktól függetlenül elkészíthető (az axiómák adatok lehetnek). E megfigyelés alapján Chaitin (1947 ‐) amerikai matematikus, akitől e bizonyítás szármázik, a tételt így foglalta össze: "Ha csak egy 10 font súlyú axiómarendszerünk van, nem tudunk egy 20 font súlyú tételt levezetni belőle.''
A prímszámtétel azt mondja ki, hogy
|