Mechatronika, Optika és Gépészeti Informatika Tanszék A Számítástudomány alapjai Szemelvények az Elméleti Számítástudomány területéről
Fogalmak: Számítástechnika Realizáció, technológia Elméleti számítástudomány Matematikai elméleti tudományág Kurt Gödel (1906-1978) egy cseh származású (Brünn) amerikai matematikus volt, többek között logikával foglalkozott. Híres "eldönthetetlenségi elmélete" - mely szerint minden szigorúan logikus matematikai rendszerben vannak olyan állítások, amelyeknek az igaz vagy hamis volta nem igazolható a rendszer axiómái alapján. Alonzo Church (1903-1995.) amerikai matematikus és logikus, a számítástudomány (computer science) egyik megalapozója. (lambda-kalkulus, számítási modellek) Alan Mathison Turing (1912-1954) brit matematikus, a modern számítógép-tudomány egyik atyja. (Turing gép, megállási probléma)
Turing koncepciója, a Turing gép megfogalmazása Külső adat és tárolóterület: végtelen szalag, amelynek egymás után cellái vannak, amelyek vagy üresek, vagy jelöltek. A gép egyszerre egy cellával foglalkozik (Az író/olvasó feje egy cellán áll). A szalagon tud jobbra-balra lépni, tud jelet olvasni, törölni és írni. A bevitel, a számítás és a kivitel minden konkrét esetben véges marad, ezen túl a szalag üres.(0) A gép belső állapotait számozzuk meg 0,1,2,... A gép működését megadja egy explicit helyettesítési táblázat. Állapot, bemenet --> Állapot, kimenet, fejmozgás Church - Turing tézis Ha egy algoritmus elég mechanikus és világos, akkor bizonyára található olyan Turing-gép, amely azt végrehajtja. A Turing gép definiálja mindazt, amit matematikailag algoritmikus eljárás alatt értünk. Minden más algoritmikus eljárást végrehajtó rendszer ekvivalens valamely Turing-géppel.
Automata elmélet Pl.: determinisztikus véges állapotú automata (DFA deterministic finite state machine) T: 0 1 S1 S2 S1 S2 S1 S2 A: S1 S2 Igen Nem M automata bemenete: 0,1-ből álló string Feladata, meghatározni, hogy a bemeneti stringben páros számú 0 karakter van-e. M = (S, Σ, T, s, A), ahol Σ = {0, 1}, S = {S 1, S 2 }, s = S 1, A = {S 1 }, és A T átmeneti függvényt a következő állapot átmeneti tábla határozza meg:
Turing gép Minden digitális számítógép őse A C 9 E Író-olvasó fej Belső állapottér (regiszterek) Turing gép megállási problémája: Nem tudjuk, hogy adott programmal megáll-e! Van-e arra bizonyítási módszerünk, hogy egy eljárás biztosan algoritmus-e? NINCS!! Központi vezérlő egység Verem automata, Véges utasításkészlet
Formális nyelvek Nyelvtanok levezetési szabályokkal nyelveket generálnak. A nyelv elemei a mondatok. Formális nyelvtan: G = (N, Σ, P, S), ahol N: grammatikai szimbólumok Σ: ábécé P: levezetési szabályok S: mondatszimbólum L nyelv a Σ* részhalmaza (L Σ ) w jelsorozat mondata az L nyelvnek, ha w L
Formális nyelvek, példa G =({S, B, C}, {a, b, c},p,s) ahol: P= {S asbc, S abc, CB BC, bb bb, bc bc, cc cc} A nyelv egy mondata például: S asbc aabcbc aabbcc aabbcc aabbcc aabbcc sikertelen levezetés, pl: S asbc aabcbc aabcbc? L(G) = {a i b i c i i>0}
Nyelvek és automaták A levezetési szabályok összetettsége alapján különböző nyelvosztályok definiálhatók Minden nyelvosztályhoz egy automata típus tartozik 3. nyelvosztály: reguláris nyelvek; véges automata 2. nyelvosztály: környezetfüggetlen nyelvek; verem automata 1. nyelvosztály: környezetfüggő nyelv; lineárisan korlátos automata 0. nyelvosztály: tetszőleges típusú levezetési szabály; Turing gép
Eljárások, algoritmusok Eleme-e egy adott jelsorozat a nyelvtanával meghatározott nyelvnek, generálható-e a szóban forgó jelsorozat az adott nyelvtannal? Műveletsorozattal, lépések egymásutánjával választ kapunk-e a kérdésre? Algoritmus: a választ véges számú lépés után mindenképpen megkapjuk Eljárás, procedúra: nem garantálhato, hogy véges lépésben, tehát valaha is választ kapjunk kérdésünkre Pl. egész együtthatós egyenlet, polinóm gyökei: sorban behelyettesítjük a racionális számokat. Elsőfokú esetben algoritmus (racionális megoldás), másodfokú esetben eljárás (lehet, hogy sohasem kapunk eredményt) -> algoritmikusan eldönthetetlen A tartalmazás kérdése algoritmikusan eldönthetetlen
Algoritmus Köznyelvben: Egy véges utasítássorozat (pl. telefonfülke, telefonálás tevékenység) Véges utasítássorozat, amely bármely input esetén véges lépésszám után megáll, eredményt ad. (A végrehajtó automata stabil állapotba kerül.) Kiszámíthatóság Eljárás Algoritmus jelölt Szg. Program írható Emberi szóval megfogalmazott feladat??? NEM minden eljárás algoritmus!! Az Algoritmus fogalmára formális definíciónk nincs! Algoritmus Church - tézise Maga a Turing gép matematikai leírása az algoritmus fogalmának formális definíciója. Minden probléma, amelyre eljárás, procedúra szerkeszthető, Turing-géppel megoldható. -> Az ember azokra és csakis azokra a kérdésekre tud választ adni, amelyekre a Turing-gép is képes.
Példa nem algoritmizálható problémára: (Nem kiszámítható feladat) Dominópélda Dominó (egy példány) Dominó típus (megszámlálhatóan végtelen példány) Dominó készlet (definíciója: 3, 2,4,9,5, 1,6,2,7, 4,5,3,1) Kérdés: A definiált dominókészlettel lefedhető-e a teljes sík: Válasz: IGEN vagy NEM?????
Komplexitás (Algoritmusok bonyolultsága) Komplexitás vizsgálata, ha már tudjuk, hogy az adott problémára létezik algoritmus, azaz a probléma kiszámítható. Idő komplexitás Tárkomplexitás Exponenciális bonyolultság Idő komplexitás (lépésszám) Polinomiális bonyolultság Lineáris bonyolultság Konstans bonyolultság Bemenetek bonyolultsága
Bonyolultságelmélet Probléma osztályok P: a polinomidőben megoldható problémák osztályát reprezentálja a gyakorlatban hatékonyan megoldható problémák osztálya NP: a polinomidőben verifikálható problémák osztályát a lehetséges megoldások polinomidőben előállíthatóak nemdeterminisztikus Turing-géppel, majd determinisztikusan polinomidőben ellenőrizhető az, hogy az előállított lehetséges megoldás valóban megoldás-e A számítástudomány híres megoldatlan kérdése: P NP
Utazó ügynök probléma Az utazó ügynök probléma célja a legkisebb költségű út megtalálása városok között, minden várost pontosan egyszer érintve és visszatérve a kiindulási pontba Az irodalomban a városok közötti költség az Euklideszi távolságon alapul, a probléma szimmetrikus, a költségek konstansok NP-nehéz probléma, azaz ha találnánk egy hatékony algoritmust (mely optimális megoldást nyújt polinom számú lépésben), akkor hatékony algoritmust tudnánk találni más bonyulult NP-beli (nemdeterminisztikus polinom idejű) problémákra A szimmetrikus változat esetén (n-1)!/2 lehetséges út van, az aszimmetrikus esetben pedig (n-1)! Kimerítő keresés nem lehetséges nagy n esetén a gyakorlatban Főbb megoldási módszerek: Vegyes-egész programozás Korlátozás és elágazás módszer Heurisztikus keresések (lokális keresés, szimulált lehűtés, neurális hálózat, genetikus algoritmus, stb.)
Utazó ügynök probléma Megoldás a Berlin 52 tesztproblémára
A másik szobában vagy egy lámpa, amelynek 3 lehetséges állapota van: kék, piros, kikapcsolt A mi szobánkban van két kapcsoló, amelyekkel a lámpa állapotát lehet változtatni. Az állapot a következő diagram alapján változik: Ha az 1-es kapcsolót nyomjuk meg, akkor a lámpa az óramutató járásának megfelelő, ábra szerinti következő állapotba kerül Ha a 2-es kapcsolót nyomjuk meg és a lámpa kék vagy piros állapotban van, akkor az állapot nem fog változni Ha a 2-es kapcsolót nyomjuk meg és a lámpa kikapcsolt állapotban van, akkor a kék állapotba fog kerülni Biztosak szeretnénk lenni abban, hogy a lámpa ki van kapcsolva, de mivel a másik szobában van, ezért nem látjuk, hogy milyen állapotban van. Mi az a legrövidebb kapcsolás-sorozat, amellyel garantálhatjuk, hogy a lámpa kikapcsolt állapotba kerül.