Számítástudomány alapjai

Slides:



Advertisements
Hasonló előadás
Deduktív adatbázisok.
Advertisements

Készítette: Kosztyán Zsolt Tibor
Kiszámíthatóság, rekurzív függvények
Függvények A diasorozat az Analízis 1. (Mozaik Kiadó 2005.) c. könyvhöz készült. Készítette: Dr. Ábrahám István.
Quo vadis matematikaoktatás egy számtantanár skrupulusai
Informatikai alapfogalmak
Halmazok.
Matematika a mindennapokban
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
A digitális számítás elmélete Előadás:kedd 10:10-11:40, 0/13. terem előadó: Dr. Ruszinkó Miklós Gyakorlat: Kedd 14:15-16:00,
Halmazok, műveletek halmazokkal
Műveletek logaritmussal
Kötelező alapkérdések
2012. November 21. Szemidefinit programozás és extremális gráfelmélet Lovász László Eötvös Loránd Tudományegyetem, Budapest 1.
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Bevezetés a gépi tanulásba február 16.. Mesterséges Intelligencia „A számítógépes tudományok egy ága, amely az intelligens viselkedés automatizálásával.
Halmazok, relációk, függvények
MATEMATIKA e-tananyag 9. osztály
TRIGONOMETRIA Érettségi feladatok
Algoritmizálás Göncziné Kapros Katalin humaninformatika.ektf.hu.
Rendszer és modell szeptember-december Előadó: Bornemisza Imre egyetemi adjunktus.
A digitális számítás elmélete
A digitális számítás elmélete
A digitális számítás elmélete
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
Fuzzy rendszerek mérnöki megközelítésben I
Differenciál számítás
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
1.3 Relációk Def. (rendezett pár) (a1 , a2 ) := {{a1} , {a1 , a2 }} .
Leszámoló rendezés Készítette: Várkonyi Tibor Zoltán VATNABI.ELTE
Készülj az érettségire
A számfogalom bővítése
A digitális számítás elmélete
Halmazok Összefoglalás.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
A kvantummechanika alapegyenlete, a Schrödinger-féle egyenlet és a hullámfüggvény Born-féle értelmezése Előzmények Az általános hullámegyenlet Megoldás.
1 Matematikai Analízis elemei dr. Szalkai István Pannon Egyetem, Veszprém nov. 08.
Matematikai Analízis elemei
*** HALMAZOK *** A HALMAZ ÉS MEGADÁSA A HALMAZ FOGALMA
Másodfokú függvények.
TARTALOM: Általánosságok Algoritmusok ábrázolása:
Kötvényárazási hibák intelligens javítóalgoritmusának tervezése és fejlesztése GELLÉN ÁGNES IUFQ58.
A Dijkstra algoritmus.
Függvények jellemzése
A függvény deriváltja Digitális tananyag.
1. MATEMATIKA ELŐADÁS Halmazok, Függvények.
A függvény grafikonjának aszimptotái
előadások, konzultációk
A folytonosság Digitális tananyag.
2005. Információelmélet Nagy Szilvia 2. A forráskódolás elmélete.
Hibajavító kódok.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
előadások, konzultációk
Halmazok Érettségi követelmények:
Függvények aszimptotikus viselkedése: A Θ jelölés
A racionális számokra jellemző tételek
Algoritmusok és adatszerkezetek
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
2. gyakorlat INCK401 Előadó: Dr. Mihálydeák Tamás Sándor Gyakorlatvezető: Kovács Zita 2015/2016. I. félév AZ INFORMATIKA LOGIKAI ALAPJAI.
Számításelmélet 2. Algoritmus-fogalom Turing-gép Alan M. Turing – 1937 II. világháború, Enigma MI, Turing-teszt Kleene – Rekurzív függvények (1936) Church.
Számításelmélet Számítástudomány alapjai JPTE ősz Kilián Imre H-7683 Gyűrűfű Cseresznyéskert tel: ( ritkán használható)
A Dijkstra algoritmus.
Számítástudomány alapjai
27. óra Kódolás, Dekódolás.
Függvények jellemzése
II. konzultáció Analízis Sorozatok Egyváltozós valós függvények I.
Számításelmélet Tárgykód: NGM_IN006_1 és LGM_IN006_1
P és NP teljes problémák
Absztrakt problémák Q  I  S, az absztrakt probléma kétváltozós reláció az esetek (I) és a megoldások (S) halmazán Példa: legrövidebb út Eset: gráf és.
Előadás másolata:

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 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

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.

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

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ó)

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

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

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

Ω 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)

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

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

ω 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) = ∞

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))

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….

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

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

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… 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

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

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

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

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)?

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.

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

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

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

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…

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

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

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

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 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

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

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

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

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