Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "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"— Előadás másolata:

1 Számításelmélet Számítástudomány alapjai PTE-TTK ősz Kilián Imre H-7683 Gyűrűfű Cseresznyéskert tel:

2 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 –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élet Complexity Theory Hopcroft-Ullman: Introduction to Automata Theory, Language and Computation, AddisonWesley Leiserson-Rivest-Cormen: (Új) Algoritmusok. Műszaki kiadó Budapest. Papadimitru: Számítási bonyolultság, Novodat Lovász-Gács: Computational Complexity (Postscript fájl, 1994.) Bach Iván: Formális nyelvek. Typotex 2001.

4 Alapfogalmak Ábécé:  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ó:  Üres nyelv:  (de!!  ≠{  })  i : a betűiből alkotott, pontosan i hosszú szavak  * = i=1 U  L i Összes szó:  * |w  * | vagyis a || operátor: egy w szó hossza Nyelv: L  * 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: n 2 /2-3n = Θ(n 2 ) Azaz: 0<=c1*n 2 <=n 2 /2-3n<=c2*n 2 | /n 2 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és Aszimptotikus 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és Aszimptotikus 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és Aszimptotikus é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)) akkor f(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)) ≈ ab 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  * (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, , ,q 0, F), ahol… Q az állapotok véges halmaza  A szalagábécé q 0  Q: kitüntetett kiinduló állapot F  Q: elfogadó állapotok halmaza  Q   Q, az automata mozgási szabályai

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

18 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: a i b j c k Megadható-e két  q 1, ill.  q 2 szabály? Nemdeterminisztikus automata… Mi van akkor, ha k=, de nincs  q1 szabály? Nem teljes automata… a abc bc

19 Turing gép és megállási problémája Turing Szalag-író/olvasófej-véges vezérlőmű T=(Q, , , ,q 0,F), ahol –Q: véges állapothalmaz  : kezdő ábécé, véges szimbólumhalmaz  : a szalag ábécéje,   :mozgási szabályok -q 0 :kiindulási állapot -F  Q: elfogadó állapotok halmaza -Mozgási szabályok: Qx   Qx(  -º)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 x 1,…,x n sorozatból előállítja az x 1,…,x n 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 2 m <=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 Egy  á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 abc bármelyik betűjével jobbról konkatenálunk Post gépek STARTACCEPTREJECT x  tail(x)  #ba x=  head(x) x  tail(x) TF ab# x  xa

31 x  x# START x  tail(x) ACCEPTREJECT x  tail(x) x  xa x  xb x  x# REJECT x  tail(x) a,  #,  a a b,  # # b b

32 START x  tail(x) REJECT ACCEPT x  xbx  xa a a ab b b   

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 w T =bal.x.jobb, ekkor w P =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: w P =d 1 d 2 d 3 d 4 #d 5 d 6, akkor w T =„… d 1 d 2 d 3 d 4 #d 5 d 6, …” x  tail(x)  „d 1 d 2 d 3 d 4 #d 5 d 6 ”  „d 1 d 2 d 3 d 4 #d 5 d 6 ” x  xa  „d 1 d 2 d 3 d 4 #d 5 d 6 ”  „d 1 d 2 d 3 d 4 #d 5 d 6 a”


Letölteni ppt "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"

Hasonló előadás


Google Hirdetések