Bevezetés az informatikába

Hasonló dokumentumok
Bevezetés az informatikába

Bevezetés az informatikába

Bevezetés az informatikába

Informatika 1 2. el adás: Absztrakt számítógépek

Deníciók és tételek a beugró vizsgára

A Számítástudomány alapjai

A számítógépes nyelvészet elmélete és gyakorlata. Automaták

Történeti áttekintés

4. Programozási nyelvek osztályozása. Amatőr és professzionális

Bevezetés. Dr. Iványi Péter

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Számításelmélet. Második előadás

Turing-gép május 31. Turing-gép 1. 1

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

NP-teljesség röviden

Programozás alapjai (ANSI C)

Programozási nyelvek 6. előadás

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

Kriptográfia 0. A biztonság alapja. Számítás-komplexitási kérdések

A félév során előkerülő témakörök

Számításelmélet. Will június 13. A kiszámíthatóság fogalma és a Church-Turing tézis

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Algoritmuselmélet 12. előadás

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Programok értelmezése

Számítógép és programozás 2

Bonyolultságelmélet. Monday 26 th September, 2016, 18:28

definiálunk. Legyen egy konfiguráció, ahol és. A következő három esetet különböztetjük meg. 1. Ha, akkor 2. Ha, akkor, ahol, ha, és egyébként.

2018, Funkcionális programozás

Turing-gépek. Számításelmélet (7. gyakorlat) Turing-gépek 2009/10 II. félév 1 / 1

Bevezetés. Dr. Iványi Péter

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Logika és számításelmélet. 7. előadás

Algoritmuselmélet 2. előadás

Rekurzív algoritmusok

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Miért van szükség fordítóprogramokra? Fordítóprogramok célja és szerkezete. Miért van szükség fordítóprogramokra?

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

2015, Diszkrét matematika

Államvizsga kérdések a matematikus szakon, 2001.

Automaták mint elfogadók (akceptorok)

Fordítóprogramok. Aszalós László szeptember 7.

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

Programzás I gyakorlat

A programozás alapjai 1 Rekurzió

Bonyolultságelmélet. Monday 26 th September, 2016, 18:27. Bonyolultságelmélet

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Kiterjesztések sek szemantikája

Számítógép és programozás 2

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Programozási technológia 1.

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Dr. Schuster György február / 32

2016, Diszkrét matematika

Adatstruktúrák Algoritmusok Objektumok

Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Logika és számításelmélet. 7. előadás

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Bevezetés az informatikába

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Komputeralgebra Rendszerek

1. AZ MI FOGALMA. I. Bevezetés. Tulajdonságok. Kezdet ELIZA. Első szakasz (60-as évek)

A Számítógépek felépítése, mőködési módjai. A Számítógépek hardverelemei

A programozás alapjai

IK Algoritmusok és Alkalmazásaik Tsz, TTK Operációkutatás Tsz. A LEMON C++ gráf optimalizálási könyvtár használata

A digitális számítás elmélete

Shor kvantum-algoritmusa diszkrét logaritmusra

illetve a n 3 illetve a 2n 5

2016, Diszkrét matematika

IK Algoritmusok és Alkalmazásaik Tsz, TTK Operációkutatás Tsz. A LEMON C++ gráf optimalizálási könyvtár használata

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Véges automaták, reguláris nyelvek

2018, Diszkrét matematika

Dicsőségtabló Beadós programozási feladatok

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Bevezetés a Programozásba II 1. előadás. Szoftverfejlesztés, programozási paradigmák

Logika és számításelmélet. 10. előadás

A szoftverfejlesztés eszközei

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Széchenyi István Szakképző Iskola

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Bevezetés az informatikába 1.

GROVER-algoritmus. Sinkovicz Péter. ELTE, MSc II dec.15.

Programozási módszertan

Fejlett programozási nyelvek C++

2. Visszalépéses stratégia

2017, Diszkrét matematika

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

Logika és informatikai alkalmazásai

2018, Diszkre t matematika. 10. elo ada s

Adatszerkezetek 7a. Dr. IványiPéter

Átírás:

Bevezetés az informatikába 8. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 1 / 37

1 Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási nyelvtípusok Algoritmusok megadása, csoportosítása 2 Turing gép A Turing gép meghatározása Turing gép működés Turing gép példa 3 Algoritmus példák Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 2 / 37

Tartalom Paradigmák, nyelvek, algoritmusok 1 Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási nyelvtípusok Algoritmusok megadása, csoportosítása 2 Turing gép A Turing gép meghatározása Turing gép működés Turing gép példa 3 Algoritmus példák Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 3 / 37

Tartalom Paradigmák, nyelvek, algoritmusok Programozási paradigmák 1 Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási nyelvtípusok Algoritmusok megadása, csoportosítása 2 Turing gép A Turing gép meghatározása Turing gép működés Turing gép példa 3 Algoritmus példák Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 4 / 37

Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási paradigmák feladat - algoritmus - programozási paradigma - programozási nyelv programozási paradigmák deklaratív (logika, vezérlés leírása nélkül, "mit és nem hogyan") vs. imperatív funkcionális (pld. Lisp, Scheme, Haskell) logikai (pld. Prolog) imperatív (állapot átmenetek, utasítások sorozata) vs. deklaratív objektum orienált procedurális iteratív vs. rekurzív metaprogramming ("program generálás") párhuzamos nem determinisztikus (backtrack)... Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 5 / 37

Tartalom Paradigmák, nyelvek, algoritmusok Programozási nyelvtípusok 1 Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási nyelvtípusok Algoritmusok megadása, csoportosítása 2 Turing gép A Turing gép meghatározása Turing gép működés Turing gép példa 3 Algoritmus példák Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 6 / 37

Paradigmák, nyelvek, algoritmusok Programozási nyelvtípusok Programozási nyelvtípusok Programozási nyelvek "végrehajtásuk", "értelmezésük" szempontjából: gépi kód assembly fordított nyelvek interpretált nyelvek bájtkód alapú interpretált nyelvek Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 7 / 37

Gépi kód Paradigmák, nyelvek, algoritmusok Programozási nyelvtípusok a processzor számára közvetlenül értelmezhető "adatsor" ("bitsorozat"), tárgykód Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 8 / 37

Assembly Paradigmák, nyelvek, algoritmusok Programozási nyelvtípusok a gépi kódnak megfelelő, assembly utasítások, "mnemonik"-ok assembler fordító rövid, gyors kód, nehéz használat, processzor függő Z80 mikroprocesszor assembly példa: ld de, 40000 ; a de regiszterpárba a forráscím ld hl, 16384 ; a hl regiszterpárba a célcím ld bc, 6912 ; a bc regiszterpárba a blokk hossza loop ld a, (de) ; az a regiszterbe a forrás értéke ld (hl), a ; az a regiszterből a célba inc hl ; célcím növelése eggyel inc de ; forráscím növelése eggyel dec bc ; a hátralévő hossz csökkentése ld a, b ; bc regiszterpár=0 vizsgálat or c ; jr nz, loop ; ha nem, ugrás vissza "loop"-ra ret ; visszatérés Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 9 / 37

Fordított nyelvek Paradigmák, nyelvek, algoritmusok Programozási nyelvtípusok Az adott fordított nyelvből, egy fordító program (compiler) állít elő gépi kódú programot. Példa C programozási nyelv "hello, world" program http://en.wikibooks.org/wiki/computer_programming/hello_world: main() { printf("hello, world\n"); } fordító program: lexikai ellenőrzés ("felbontás") szintaktikai ellenőrzés ("forrás nyelv") szemantikai ellenőrzés ("típusellenőrzés") közbenső kód generálás optimalizálás kódgenerálás Példák: ALGOL, C, C++, Clipper, Cobol, Fortran, Pascal, PL/1 Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 10 / 37

Paradigmák, nyelvek, algoritmusok Interpretált nyelvek Programozási nyelvtípusok Az adott interpretált nyelvet, egy értelmező (interpreter), hajtja végre, a kód utasításonkénti értelmezésével. A kód futtatásához egy futtató környzete szükséges PHP példa program: <html> <head><title>a hét napjától függő háttérszín</title></head> <? $today = date("w"); $bgcolor = array("#fef0c5","#ffffff","#fbffc4","#ffe0dd","#e6edff"?> <body bgcolor="<?print("$bgcolor[$today]");?>"> <br>ma ilyen színű... </body></html> Példák: Awk, BASIC, JavaScript, Logo, PHP Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 11 / 37

Paradigmák, nyelvek, algoritmusok Bájtkód alapú interpretált nyelvek Programozási nyelvtípusok A fordító program először egy átmeneti kódot (ez a "bájtkód") állít elő Az interpretált nyelvekhez képest hatékonyabb szintaktikai ellenőrzés, kisebb kódméret, nagyobb sebesség Perl példa faktoriális számításra: #!/usr/bin/perl sub fac { my ($n) = @_; if ($n < 2) {return $n;} else {return $n * fac($n-1);} } print fac(6), "\n"; Példák: Perl, Python, Ruby Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 12 / 37

Leíró nyelvek Paradigmák, nyelvek, algoritmusok Programozási nyelvtípusok Szöveg és a szövegre vonatkozó extra információk ("leírás", szerkezet, megjelenés, értelmezés) L A T E Xpélda: \begin{frame}[containsverbatim] \frametitle{leíró nyelvek} \begin{block}{} Szöveg és a szövegre vonatkozó extra információk\\ ("leírás", szerkezet, megjelenés, értelmezés) \end{block} {\footnotesize \LaTeX példa: \begin{verbatim}... Példák: L A T E X, HTML, XML Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 13 / 37

Tartalom Paradigmák, nyelvek, algoritmusok Algoritmusok megadása, csoportosítása 1 Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási nyelvtípusok Algoritmusok megadása, csoportosítása 2 Turing gép A Turing gép meghatározása Turing gép működés Turing gép példa 3 Algoritmus példák Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 14 / 37

Paradigmák, nyelvek, algoritmusok Folyamatábra, formális specifikáció Algoritmusok megadása, csoportosítása OPERATIONS x <-- op_max2(a,b) = PRE a:nat & b:nat THEN ANY c WHERE c:nat & ( (c=a & a>=b) or (c=b & b>=a) ) THEN x:=c END END END Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 15 / 37

Paradigmák, nyelvek, algoritmusok Algoritmusok csoportosítása Algoritmusok megadása, csoportosítása rekurzív / iteratív : visszautalás önmagára, funkcionális programozás, hanoi tornyai logikai : logikai következtetés (+ vezérlés) soros / párhuzamos : egy vagy több processzor determinisztikus / nem determinisztikus : heurisztika pontos / közelítő : "nehéz" problémák Algoritmusok értékelési szempontjai komplexitás (futási idő) tárigény Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 16 / 37

Paradigmák, nyelvek, algoritmusok Algoritmusok megadása, csoportosítása jelölés név példa O(1) konstans páros, páratlan eldöntés O(logn) logaritmikus keresés rendezett listában O(n) lineáris keresés rendezettlen listában O(n logn) loglineáris rendezés (pld. verem, összefésüléses) O(n 2 ) négyzetes rendezés (pld. beszúrásos, buborék) O(n c ) polinomiális O(c n ) exponenciális utazó ügynök probléma O(n!) faktoriális logikai kifejezés megegyezősége P = NP? (1.000.000$) algoritmusok P : determinisztikus gépen polimomiális idő alatt megoldható NP : determinisztikus gépen polimomiális idő alatt ellenőrizhető, vagy nem determinisztikus gépen kiszámítható Példa : van-e a {-2, -3, 15, 14, 7, -10}-nak olyan részhalmaza, aminek az összege 0? Nehezen számolható O(2 n ), de könnyen ellenőrizhető O(n). Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 17 / 37

Paradigmák, nyelvek, algoritmusok Megállási probléma Algoritmusok megadása, csoportosítása Be fog fejeződni? Igen, nem, "talán" (eldönthetetlen)... k, s := m 1, 0 k n s := s + f (k + 1) k := k + 1 i := 1 i 0 i := i + 1 t := 2 x, y : prim(x) prim(y) x + y = t t := t + 2 Goldbach sejtés (1742) : minden 2-nél nagyobb páros szám előáll két prímszám összegeként Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 18 / 37

Tartalom Turing gép 1 Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási nyelvtípusok Algoritmusok megadása, csoportosítása 2 Turing gép A Turing gép meghatározása Turing gép működés Turing gép példa 3 Algoritmus példák Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 19 / 37

Tartalom Turing gép A Turing gép meghatározása 1 Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási nyelvtípusok Algoritmusok megadása, csoportosítása 2 Turing gép A Turing gép meghatározása Turing gép működés Turing gép példa 3 Algoritmus példák Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 20 / 37

Turing gép Turing gép A Turing gép meghatározása Turing gép (1936 Alan Turing) : absztrakt automata, számítógép modell, szimbólum manipuláló eszköz, matematikai számítások, algoritmusok precíz leírására Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 21 / 37

Turing gép A Turing gép meghatározása Turing gép - klasszikus, informatikai modell memória : cellákra osztott, "végtelen", szalag. Minden cellában egy véges ABC egy jele. vezérlőegység : gép "programját" tartalmazza. Különféle belső állapotokban lehet. író-olvasó fej : jeleket ír vagy olvas a szalag celláira. A szalagon balra vagy jobbra mozdulhat átmenettábla : állapot - olvasott jel - jel írás - új állapot - mozgás Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 22 / 37

Turing gép Turing gép - matematikai modell A Turing gép meghatározása Matematikai modell : (Λ, Σ, A,, σ, δ, Φ) ahol : Λ : szalag ABC Σ : belső állapotok halmaza A : "mozgás", A = {,, } : üres jel a szalagon σ : kezdőállapot σ Σ δ : parciális fúggvény δ : (Λ i Σ) (Λ o Σ A) Φ : elfogadható végállapotok Φ Σ Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 23 / 37

Tartalom Turing gép Turing gép működés 1 Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási nyelvtípusok Algoritmusok megadása, csoportosítása 2 Turing gép A Turing gép meghatározása Turing gép működés Turing gép példa 3 Algoritmus példák Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 24 / 37

Turing gép - működés Turing gép Turing gép működés 1 jel beolvasás 2 állapottábla (olvasott jel és belső állapot) alapján: új jel írása új belső állapot mozgás a szalagon 3 ha nem végállapot akkor újrakezdi Leállás : vagy szabályosan leáll ("STOP állapot") vagy sose áll le (sose kerül "STOP állapotba"), végtelen ciklus... Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 25 / 37

Tartalom Turing gép Turing gép példa 1 Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási nyelvtípusok Algoritmusok megadása, csoportosítása 2 Turing gép A Turing gép meghatározása Turing gép működés Turing gép példa 3 Algoritmus példák Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 26 / 37

Turing gép Turing gép példa Turing gép - összeadás az egyes számrendszerben 3 10 = 111 1 1 : "a" jel : elválasztó : üres kiindulás : 1 1 1 1 1 1 eredmény : 1 1 1 1 1 1 áll. olvas ír vált. mozog leírás α ω nincs több szám : ω α 1 1 α jobbra amíg 1 α β ha, átvált β-ra β γ visszaért az elejére, γ β 1 1 β balra amíg 1 β 1 β ha, 1-t ír γ 1 α legelejére 1 írás, újra ω STOP leállás Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 27 / 37

Turing gép Turing gép példa Turing gép - összeadás az egyes számrendszerben 3 10 = 111 1 1 : "a" jel : elválasztó : üres kiindulás : 1 1 1 1 1 1 eredmény : 1 1 1 1 1 1 áll. olvas ír vált. mozog leírás α ω nincs több szám : ω α 1 1 α jobbra amíg 1 α β ha, átvált β-ra β γ visszaért az elejére, γ β 1 1 β balra amíg 1 β 1 β ha, 1-t ír γ 1 α legelejére 1 írás, újra ω STOP leállás Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 27 / 37

Turing gép Turing gép példa Turing gép - összeadás az egyes számrendszerben 3 10 = 111 1 1 : "a" jel : elválasztó : üres kiindulás : 1 1 1 1 1 1 eredmény : 1 1 1 1 1 1 áll. olvas ír vált. mozog leírás α ω nincs több szám : ω α 1 1 α jobbra amíg 1 α β ha, átvált β-ra β γ visszaért az elejére, γ β 1 1 β balra amíg 1 β 1 β ha, 1-t ír γ 1 α legelejére 1 írás, újra ω STOP leállás Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 27 / 37

Turing gép Turing gép példa Turing gép - összeadás az egyes számrendszerben 3 10 = 111 1 1 : "a" jel : elválasztó : üres kiindulás : 1 1 1 1 1 1 eredmény : 1 1 1 1 1 1 áll. olvas ír vált. mozog leírás α ω nincs több szám : ω α 1 1 α jobbra amíg 1 α β ha, átvált β-ra β γ visszaért az elejére, γ β 1 1 β balra amíg 1 β 1 β ha, 1-t ír γ 1 α legelejére 1 írás, újra ω STOP leállás Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 27 / 37

Church-Turing tézis Turing gép Turing gép példa Church-Turing tézis : Minden algoritmikusan megoldható probléma megoldható Turing-géppel is. De nem minden probléma oldható meg Turing géppel. Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 28 / 37

Church-Turing tézis Turing gép Turing gép példa Church-Turing tézis : Minden algoritmikusan megoldható probléma megoldható Turing-géppel is. De nem minden probléma oldható meg Turing géppel. Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 28 / 37

Tartalom Algoritmus példák 1 Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási nyelvtípusok Algoritmusok megadása, csoportosítása 2 Turing gép A Turing gép meghatározása Turing gép működés Turing gép példa 3 Algoritmus példák Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 29 / 37

Tartalom Algoritmus példák 1 Paradigmák, nyelvek, algoritmusok Programozási paradigmák Programozási nyelvtípusok Algoritmusok megadása, csoportosítása 2 Turing gép A Turing gép meghatározása Turing gép működés Turing gép példa 3 Algoritmus példák Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 30 / 37

Algoritmus példák Hanoi tornyai probléma Hanoi tornyai probléma Három rúd (A,B,C), az egyik rúdon (A), adott számú (n darab), eltérő méretű korongok, a legkisebb (#1) legfelül, a legnagyobb (#n) legalul. A korongokat át kell mozgatni egy másik rúdra (C): egyszerre csak egy korongot lehet mozgatni egy korongot nem lehet kisebb korongra rakni Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 31 / 37

Algoritmus példák Hanoi tornyai rekurzív algoritmus 1 n-1 korong átmozgtása A-ról C-re (a #n korong egyedül marad az A-n) 1 2 4 3 A B C 2 a #n korong átmozgatása A-ról B-re 1 2 3 4 A B C 3 n-1 korong átmozgatása C-ről B-re (a korongok az #n-ra kerülnek) 1 2 3 4 A B C Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 32 / 37

Algoritmus példák Hanoi tornyai rekurzív algoritmus 1 2 3 4 A B C Cél: 123: A-B, túl bonyolult... 1 12 : A-C 2 3 : A-B 3 12 : C-B 4 1 2 3 A B C 12 : A-C 1 : A-B 2 : A-C 1 : B-C 3 : A-B 12 : C-B 1 : C-A 2 : C-B 1 : A-B Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 33 / 37

Algoritmus példák Hanoi tornyai : megoldás Lisp nyelven (defun dohanoi(n to from u) (cond ( (> n 0) (dohanoi (- n 1) u from to) (format t "move ~D --> ~D~&" from to) (dohanoi (- n 1) to u from) ) ) ) (defun hanoi(n) (dohanoi n 3 1 2) ) Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 34 / 37

Hanoi... Algoritmus példák 1 2 3 4 A B C Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 35 / 37

Hanoi... Algoritmus példák 2 3 4 1 A B C Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 35 / 37

Hanoi... Algoritmus példák 3 4 1 2 A B C Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 35 / 37

Hanoi... Algoritmus példák 3 1 4 2 A B C Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 35 / 37

Hanoi... Algoritmus példák 1 4 3 2 A B C Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 35 / 37

Hanoi... Algoritmus példák 1 4 3 2 A B C Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 35 / 37

Hanoi... Algoritmus példák 1 2 4 3 A B C Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 35 / 37

Hanoi... Algoritmus példák 1 2 4 3 A B C Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 35 / 37

Hanoi... Algoritmus példák 1 2 3 4 A B C Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 35 / 37

Hanoi... Algoritmus példák 1 2 3 4 A B C Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 35 / 37

Algoritmus példák Hanoi tornyai - lépésszám n korongra lépésszám : T n = 2 T n 1 + 1 2 n 1 64 korongra lépésszám : 2 64 1 = 18, 446, 744, 073, 709, 551, 615 lépés 1 lépés/sec : 583 milliárd év (az univerzum 13.7 milliárd éves...) Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 36 / 37

Algoritmus példák Hanoi tornyai - lépésszám n korongra lépésszám : T n = 2 T n 1 + 1 2 n 1 64 korongra lépésszám : 2 64 1 = 18, 446, 744, 073, 709, 551, 615 lépés 1 lépés/sec : 583 milliárd év (az univerzum 13.7 milliárd éves...) Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 36 / 37

Összefoglalás Algoritmus példák... Dr. Istenes Zoltán (ELTE-IK-PSZT) Bevezetés az informatikába 2008 37 / 37