1 / 34

Számításelmélet Számítástudomány alapjai

Számításelmélet Számítástudomány alapjai. PTE-TTK 2006. ősz. Kilián Imre H-7683 Gyűrűfű Cseresznyéskert tel: +36-73-554412 kilian@axelero.hu. Bonyolultságelmélet Complexity Theory. Mi mennyi?-re bonyolult? Hogyan mérhető? Minőség Mennyiség? Számítási modellek Eldönthetőség

patty
Download Presentation

Számításelmélet Számítástudomány alapjai

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Számításelmélet Számítástudomány alapjai PTE-TTK 2006. ősz Kilián Imre H-7683 GyűrűfűCseresznyéskerttel: +36-73-554412 kilian@axelero.hu

  2. BonyolultságelméletComplexity Theory • Mi mennyi?-re bonyolult? Hogyan mérhető? • MinőségMennyiség? • Számítási modellek • Eldönthetőség • Erőforrásigény (Idő és tár) • Nemdeterminizmus és párhuzamosság • Információbonyolultság • Döntési fák • Kommunikációs bonyolultság • Kriptográfia

  3. BonyolultságelméletComplexity Theory • Hopcroft-Ullman: Introduction to Automata Theory, Language and Computation, AddisonWesley 1979. • Leiserson-Rivest-Cormen: (Új) Algoritmusok. Műszaki kiadó Budapest. • Papadimitru: Számítási bonyolultság, Novodat 1999. • Lovász-Gács: Computational Complexity (Postscript fájl, 1994.) • Bach Iván: Formális nyelvek. Typotex 2001.

  4. Alapfogalmak • Ábécé: S véges szimbólumhalmaz. • Szavak, mondatok: az ábécé betűiből képzett véges sorozatok. • Nyelv: L az ábécé betűiből képezhető összes véges sorozat egy részhalmaza. Az L nyelv szavai, mondatai: az L elemei • Üres szó: Æ, e • Üres nyelv: Æ (de!! Æ≠{Æ}) • Si : a betűiből alkotott, pontosan i hosszú szavak • S*=i=1U¥Li • Összes szó: S* • |wÎS*| vagyis a || operátor: egy w szó hossza • Nyelv: LÍS* • abc szerinti/alfabetikus/lexikografikus rendezés • Z,Z+ egész számok, pozitív egészek • R,R+ valós számok, pozitív valósak • Q,Q+ racionális számok, pozitív racionálisak

  5. Függvények aszimptotikus viselkedése:A Θ jelölés • Hatékonyságfüggvények értékkészlete/értelmezési tartománya: egész számok • Függvényhalmazt határoz meg: „=„ itt halmazhoz tartozás • Adott f(n) függvényhez akkor mondjuk, hogy Θ(g(n)) = f(n), ha • Léteznek n0, c1, c2 állandók, hogy • n>n0 esetén • 0<=c1*g(n)<=f(n)<=c2*g(n) • (aszimptotikusan korlátok közé szorítható)

  6. Az alacsonyabb rendű tagok elhagyhatók • A legmagasabb rendű tag együtthatója elhagyható • Bizonyítás gondolatmenete: az ilyen módon leegyszerűsített függvényhez meghatározható a n0 küszöbérték, és a c1, c2 aszimptotikus alsó és felső korlátok úgy, hogy 0<= c1*g(n)<=f(n)<=c2*g(n) teljesüljön

  7. Pl: n2/2-3n = Θ(n2) • Azaz: 0<=c1*n2<=n2/2-3n<=c2*n2 | /n2 • 0<=c1<=1/2-3/n<=c2 • Válasszuk n-t szabadon meg… • Pl:n=7>n0 • c2>=1/2-3/7=1/14 • c1<=1/14

  8. O jelölésAszimptotikus felső korlát • Adott f(n) függvényhez akkor mondjuk, hogy O(g(n)) = f(n), ha • Léteznek n0, c állandók, hogy • n>n0 esetén • 0<=f(n)<=c*g(n) • (aszimptotikusan felső korlát alá szorítható) • Legrosszabb érték becslésére használják

  9. Ω jelölésAszimptotikus alsó korlát • Adott f(n) függvényhez akkor mondjuk, hogy Ω(g(n)) = f(n), ha • Léteznek n0, c állandók, hogy • n>n0 esetén • 0<=c*g(n) <=f(n)

  10. Tétel • f(n) és g(n)-re: f(n) = Θ(g(n)) akkor és csak akkor, ha • f(n) = O(g(n)) és • f(n) = Ω(g(n)) • Bizonyítás: házifeladat

  11. o jelölés (kis ordó) Aszimptotikus éles!! felső korlát • Adott f(n) függvényhez akkor mondjuk, hogy o(g(n)) = f(n), ha • Bármely c állandóra • Létezik n0 állandó, hogy • n>n0 esetén • 0<=f(n)<=c*g(n) • Másik definíció: az f(n) a g(n)-hez képest jelentéktelenné válik, vagyis • lim(n∞)f(n)/g(n) = 0

  12. ω jelölésAszimptotikus éles!! alsó korlát • Adott f(n) függvényhez akkor mondjuk, hogy ω(g(n)) = f(n), ha • Bármely c állandóra • Létezik n0 állandó, hogy • n>n0 esetén • 0<=c*g(n) <=f(n) • Másik definíció: f(n) a g(n)-hez képest tetszőlegesen nagy lehet, vagyis • lim(n∞)f(n)/g(n) = ∞

  13. Tulajdonságok (bizonyítás nélkül) • Tranzitivitás, vagyis (O-ra, o-ra, Ω-ra, és ω-ra is!!):f(n) = Θ(g(n)) és g(n) = Θ(h(n)) akkorf(n) = Θ(h(n)) • Reflexivitás: (O-ra és Ω-ra is!) • f(n) = Θ(f(n)) • Szimmetria: f(n) = Θ(g(n)) akkor és csak akkor, ha g(n) = Θ(f(n)) • Felcserélt szimmetria: • f(n) = O(g(n)) akkor és csak akkor, ha g(n) = Ω(f(n)) • f(n) = o(g(n)) akkor és csak akkor, ha g(n) = ω(f(n))

  14. Vigyázat! Párhuzam! • f(n) = O(g(n)) ≈ a<=b • f(n) = Ω(g(n)) ≈ a>=b • f(n) = Θ(g(n)) ≈ a=b • f(n) = o(g(n)) ≈ a<b • f(n) = ω(g(n)) ≈ a>b • Bár hasonlít a valós számok fölött értelmezett függvényekre, a Trichotómia NEM IGAZ!! • Vagyis előfordulhat, hogy két függvényre. f(n)-re és g(n)-re • sem f(n) = Θ(g(n)) • sem f(n) = o(g(n)) • sem f(n) = ω(g(n)) nem teljesül….

  15. Számítási modellek • Mi a számítógép? Mi az algoritmus? • „…mechanikusan kiszámítható matematikai eljárás…” Church tézis • Matematikai gép: O=F(I) O,IÍS* (stringek) • Turing gép (1936)… • Random Access Machine (RAM) • Véges automata – Sejtautomata • Def: Szimuláció: M1 gép szimulálja M2-t, ha M1 ugyanazon bemenő stringekre ugyanazokat a kimenő stringeket állítja elő, mint M2

  16. Véges automaták • Reguláris nyelvek felismerésére • Csak olvasófej van és véges vezérlés. Memória nincs. • M=(Q, S, d,q0, F), ahol… • Q az állapotok véges halmaza • S: A szalagábécé • q0ÎQ: kitüntetett kiinduló állapot • FÍQ: elfogadó állapotok halmaza • d: Q´SQ, az automata mozgási szabályai

  17. Véges automaták működése • Automataállapot, v. konfiguráció: K=<q,w>, ahol:q: az automata belső állapotaw: a bemenő szalag tartalma… • kikj az automata egy lépése akkor következik be, ha ki=<qi,awj> és kj=<qj,wj>, valamint létezik <qi,a>qj mozgási szabály. • ki*kj qi-ből wj bemenő szalag első (j-i) karakterének elolvasásával qj-be véges számú (j-i) lépéssel jut el • Az automata egy w szót akkor fogad el, ha: <q0,w>*<q,e>, ahol qÎF

  18. a b c a b c Diszkusszió • Véges automaták ábrázolása: gráf, melynek csomópontjai az állapotoknak felelnek meg, élei a beolvasott karakterekkel vannak címkézve. • Pl: Felismert nyelv: aibjck • Megadható-e két <q,a>q1, ill. <q,a>q2 szabály? Nemdeterminisztikus automata… • Mi van akkor, ha k=<q,aw>, de nincs <q,a>q1 szabály? Nem teljes automata…

  19. Turing gép és megállási problémája • Turing 1936. Szalag-író/olvasófej-véges vezérlőmű • T=(Q,S,G,d,q0,F), ahol • Q: véges állapothalmaz • S: kezdő ábécé, véges szimbólumhalmaz • G: a szalag ábécéje, SÍG • d:mozgási szabályok • q0:kiindulási állapot • FÍQ: elfogadó állapotok halmaza • Mozgási szabályok: QxGQx(G-º)x{l,r}, ahol º az üres szimbólum. (az állapot és az elolvasott szimbólum függvényében átmegy egy új állapotba, visszaír valamit és jobbra vagy balra elmozdul) • Esetleg: több szalag, esetleg több lépés

  20. Példák • Változtassuk a szöveg 0 és 1 karaktereit X és Y-ra • Találjuk meg a megkettőzött XX karaktereket • Bináris inkrementálás

  21. Példák • Adjunk meg olyan Turing gépet, amely a ‘wcw’ nyelvet elemzi, ahol w=(aub)*. • Adjunk meg olyan Turing gépet, amely a bemenő szót átmásolja • Adjunk meg olyan Turing gépet, amely az x1,…,xn sorozatból előállítja az x1,…,xn sorozatot. • Hogyan lehet Turing géppel karaktert beszúrni? • Hogyan lehet fog-t (két függvény szuperpozícióját kiszámítani)?

  22. Church-tézis: minden, ami algoritmusokkal megvalósítható, az T-géppel kiszámítható • Eljáráshívás: T1 hívja T2-t. Egyesítsük az állapotaikat. Induljon a T1, hívás: olyan szabály, ami a T2-t indítja, Befejezés: T2 végállapotai után térjen valahová T1-be vissza • Beszúrás: T állapothalmaza legyen képes egy szimbólum eltárolására. A szalagra férjen még egy jelölő is. Jelöljük meg a helyet. Cseréljük ki a tároltat a szalagon levővel. Lépjünk jobbra. Ha üres szimbólumot olvasunk, akkor visszatekerünk a jelölőig; ha nem, akkor a cserétől újrakezdjük a ciklust.

  23. A T-gép megáll, ha nincs a helyzetnek (állapot-szalag) megfelelő szabály. Elfogadja a bemeneti nyelvet, ha elfogadó állapotban áll meg. Elutasítja, ha nem elfogadó állapotban áll meg, vagy végtelen ciklusba esik. • Neumann-elv: program-adat ekvivalencia • T-gép képes egy (másik) T-gépet szimulálni úgy, hogy induláskor a szalagján van a (másik) gép leírása, plusz a másik gép bemenete. (kb. 60 mozgási szabály elég hozzá). Programbetöltés, Univerzális T-gép • A T-gép egyenértékű egy egyállapotú T-géppel. • Számítógép: Random Access Machine egyenértékű a T-géppel • Egy T-gép által elfogadott bemenetek egy nyelvet alkotnak • Tétel: A T-gépek a Chomsky 0 osztályú (legszabadabb) nyelvek elemzésére képesek

  24. A megállási probléma • Megállapítható-e, hogy mikor esik a T-gép végtelen ciklusba? Módszer: univerzális T-gépnek odaadjuk a T-gép(ek) leírását bemenetként… • Odaadhatjuk-e univerzális T-gépnek a saját leírását bemenetként? • Odaadhatjuk-e egyes T-gépeknek a saját leírásukat bemenetként? Mi történik? lesz olyan, amelyik elfogadja/elutasítja/ciklusba esik • Legyen: L1 azon T-gép leírások nyelve, amelyek sajátmagukat elfogadják, L2 pedig azoké, amelyek sajátmagukat elutasítják

  25. Az univerzális T-gépet egészítsük ki egy a leírást megkettőző (gép+adat) előkészítő algoritmussal. Ez a T-gép éppen az L1 nyelvet fogja elfogadni. • Készíthetünk-e olyan T-gépet, amely az L2 nyelvet fogadja el? Nem • Tfh. létezik ilyen (a saját leírását elutasító gépeket elfogadó) gép. Mit csinál ez a gép a saját leírásával? Ha elfogadja, akkor a saját leírását elutasítónak kell lennie, vagyis el kellene utasítaniaHa elutasítja, akkor a specifikáció miatt el kellene fogadnia • Nincs az L2 nyelvet elfogadó T-gép. Az L2 nyelv nem írható le generatív módon

  26. Eldönthető-e minden T-gépre és minden bemenetre, hogy a T-gép megáll-e? Nem. (eldönthető egy kérdés, ha megáll) • Tfh. igen. Ekkor szerkeszthető lenne olyan (univerzális) T-gép, ami minden gépleírást-bemenet párt elfogad, ha a leírt gép a bemenetre ciklusba esne, és elutasít vagy ciklusba esik, ha a gép az adatra megállna. • Mit tenne a gép a saját megkettőzött leírására? elfogadná? (akkor, ha ciklusba kellene esnie)ellentmondáselutasítaná vagy ciklusba esne? (akkor a specifikáció miatt meg kellene állnia… ellentmondás • nem dönthető el minden gépre és bemenetre, hogy a gép megáll-e Léteznek nem eldönthető problémák…

  27. Turing gép-RAM gép • Random Access Machine: nincs olvasófej, nem kell odatekercselni, hanem közvetlenül lehet a szalagon indexelni/címezni • Szalagműveletek helyett utasítások • Utasításfajták: x[i]:=0, x[i]:=x[i]+1, x[i]:=x[i]-1, x[i]:=x[i]+x[j], x[i]:=x[i]-x[j], x[i]:=x[x[j]], x[x[j]]:=x[i], if x[i]<=0 then goto p

  28. Példa: RAM gép • Szorzás: x[3]=x[1]*x[2] • Utasítások: • 1. x[3]=x[1] • 2. if x[2]<2 then goto 8 • 3. x[3]=x[3]+x[1] • 4. x[2]=x[2]-1 • 5. if true then goto 2 • 8. END

  29. Példa: RAM gép • Állapítsuk meg, hogy melyik a legnagyobb m szám, amelyre 2m<=a. • Állapítsuk meg, hogy mennyi az a szám n-ik faktoriálisa • Keressünk ciklusban pithagorászi számhármasokat • Keressünk ciklusban számpárokat

  30. Post gépek • Egy S={a,b} ábécé feletti Post gép egy egyváltozós folyamatábra (irányított gráf utasítások felett), ahol x változó {a,b,#} feletti szó a következő utasításokkal: • TEST: • ÉRTÉKADÁS: az abcbármelyik betűjéveljobbról konkatenálunk START ACCEPT REJECT xtail(x) x=e a b # e F T head(x) a b # xtail(x) xtail(x) xtail(x) xxa

  31. START xx# a xtail(x) # b, e a xxa xtail(x) REJECT ACCEPT b #, e REJECT b xxb xtail(x) a, e # xx# REJECT

  32. START a xtail(x) e b ACCEPT a b xxa xtail(x) xxb xtail(x) e a b e REJECT REJECT

  33. Post gépek és Turing gépek egyenértékűsége • Tétel: Ugyanazon ábécé feletti Post és Turing gépek egyenértékűek • Biz (nem precíz): Minden Post gép szimulálható egyállapotú Turing géppel és viszont. • 1. Turing Posttal: Legyen wT=bal.x.jobb, ekkor wP=x.jobb.bal • xyr  x.jobb.baljobb.bal.y • xyl  x.jobb.bal.zz.y.jobb.bal

  34. Post gépet Turinggal: wP=d1d2d3d4#d5d6, akkor wT=„… d1d2d3d4#d5d6, …” • xtail(x)„d1d2d3d4#d5d6” „d1d2d3d4#d5d6” • xxa „d1d2d3d4#d5d6” „d1d2d3d4#d5d6a”

More Related