Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Számítástudomány alapjai
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égMennyisé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 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é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)) ≈ 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´SQ, 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ő állapota w: a bemenő szalag tartalma… kikj 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
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… a b c
19
Turing gép és megállási problémája
Turing 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: QxGQx(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
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 abc bármelyik betűjével jobbról konkatenálunk START ACCEPT REJECT xtail(x) x=e a b # e F T head(x) a b # xtail(x) xtail(x) xtail(x) xxa
31
START xx# a xtail(x) # b, e a xxa xtail(x) REJECT ACCEPT b #, e REJECT b xxb xtail(x) a, e # xx# REJECT
32
START a xtail(x) e b ACCEPT a b xxa xtail(x) xxb xtail(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 xyr x.jobb.baljobb.bal.y xyl x.jobb.bal.zz.y.jobb.bal
34
Post gépet Turinggal: wP=d1d2d3d4#d5d6, akkor wT=„… d1d2d3d4#d5d6, …”
xtail(x)„d1d2d3d4#d5d6” „d1d2d3d4#d5d6” xxa „d1d2d3d4#d5d6” „d1d2d3d4#d5d6a”
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.