2009/2010/II. félév, Prof. Dr. Galántai Aurél Óbudai Egyetem NIK IMRI Budapest

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "2009/2010/II. félév, Prof. Dr. Galántai Aurél Óbudai Egyetem NIK IMRI Budapest"

Átírás

1 SZÁMÍTÁSTUDOMÁNY 2009/2010/II. félév, (el½oadás vázlat) Prof. Dr. Galántai Aurél Óbudai Egyetem NIK IMRI Budapest

2 2

3 Tartalomjegyzék 1. Bevezetés 5 2. Matematikai alapfogalmak Jelölések Relációk és függvények Függvények aszimptotikus jellemzése Gráfok Halmazok számossága Nyelvek és szavak Algoritmusok, kiszámítható függvények és döntési problémák Formális nyelvek és automaták Formális nyelvek Generatív nyelvtanok osztályozása Automaták Véges determinisztikus automaták Véges nem determinisztikus automaták Verem automaták Számítási modellek Turing gépek Turing gépek programozása A Turing gép kiterjesztései Regiszter gépek és a RAM modell Boole-függvények és logikai hálózatok Számítási modellek ekvivalenciája Univerzális Turing gépek Algoritmikus eldönthet½oség és kiszámíthatóság Nyelvek felismerése és eldöntése Turing gépekkel Eldönthetetlen problémák Néhány további eldönthetetlen probléma Turing kiszámítható függvények Primitív rekurzív függvények Parciális rekurzív függvények TARTALOMJEGYZÉK 3

4 7. Algoritmusok analízise Bevezetés Elméleti eredmények és fogalmak Az oszd meg és uralkodj elv A mester tétel Keresési, rendezési és kiválasztási feladatok Keresési feladatok Rendezési feladatok Alsó becslés a rendezések bonyolultságára Kiválasztási feladatok Aritmetikai algoritmusok Szorzás Osztás Mátrixalgoritmusok Mátrixok és vektorok szorzása Winograd mátrix szorzó algoritmusa Strassen mátrix szorzó algoritmusa Megjegyzések a gyors mátrix szorzásokról A gyors Fourier-transzformáció Párhuzamos algoritmusok Párhuzamos számítások modelljei Hatékonysági mutatók Esettanulmányok Párhuzamos bonyolultsági osztályok Számítási bonyolultság Az NP osztály és NP-teljesség Nem-determinisztikus Turing-gépek és az NP osztály NP-teljesség Függelék A programozás alapfogalmainak egy nemdeterminisztikus, relációelméleti leírása Irodalom TARTALOMJEGYZÉK

5 1. fejezet Bevezetés "Amit hallok, elfelejtem. Amit látok, emlékezem. Amit csinálok, megértem." Konfuciusz Mi a számítástudomány? Ennek a kérdésnek a pontos megválaszolása - más tudomány területekhez hasonlóan - nehéz feladat, már csak az informatika rohamos mérték½u fejl½odése miatt is. Ide soroljuk az algoritmusok és problémák bonyolultság elméletét, a matematikai logikát, a formális nyelvek elméletét, a programozáselméletet és még sok más területet (lásd pl. ACM Computing Classi cations System, Wikipédia). Az el½oadás f½oként számítási modellekkel, algoritmusok elemzésével (algoritmusok analízisével) és bonyolultságelmélettel foglalkozik. A bonyolultságelmélet számítógép korszak (von Neumann) el½otti el½ozményeit a matematikai logika fejl½odésében kereshetjük, nevezetesen a "bizonyítás" és a "kiszámítható függvény" fogalmának formalizálásával kapcsolatos kutatásokban. Gödel 1930-ban igazolta, hogy egy (aritmetikai, vagy aritmetizálható) logikai rendszeren belül megfogalmazhatók olyan állítások, amelyek igaz, vagy hamis volta (a rendszeren belül) nem igazolható (Gödel, K.: Über formal unentscheidbare Sätze der Principa Mathematica und verwandtere Systeme I ( On formally undecidable propositions of Principia Mathematica and related systems I ), Monatshefte für Mathematik und Physik, 38, 1931, ). Ebben a munkájában Gödel de niálta a (primitív) rekurzív függvény fogalmát is, amely alapvet½o a kiszámítható függvény fogalmának vizsgálatában. Turing 1936-ban bevezette a Turing gép fogalmát, amely mind a kiszámíthatóság-, mind pedig az algoritmuselméletben alapvet½o fontosságú eszköznek bizonyult. (Turing, A.M.: On computable numbers with an application to the Entscheidungsproblem, Proc. London Math. Soc., ser. 2, 42, , ). BEVEZETÉS 5

6 Kurt Gödel ( ) Alan Turing ( ) Az 1936-os évben két másik fontos fogalmat is bevezettek. Alonzo Church de niálta a - kalkulust 1 (A. Church: An unsolvable problem in elementary number theory, American Journal of Mathematics, 58, 1936, ). Church híres tézise azt a sejtést mondja ki, hogy minden számítás az általa megadott rendszerben formalizálható. Ugyancsak 1936-ban S.C Kleene bevezette a -rekurzív függvényeket (S.C. Kleene: General recursive functions of natural numbers, Mathematische Annalen, 112, 1936, ). Alonzo Church ( ) S. C. Kleene ( ) Érdemes megjegyezni, hogy a LISP nyelvet a -kalkulusból fejlesztették ki. Az imperatív programnyelvek (pl. Pascal, C) pedig a -rekurzív függvények implementációinak tekinthet½ok. A rekurzív függvények elméletéhez Péter Rózsa (1936, k-szoros rekurzív függvények) és Kalmár László (1943, elemi függvények) is jelent½osen hozzájárult. A Neumann-elv½u számítógépek elterjedésével kezd½odött a számítástudomány kialakulása is. A bonyolultság elmélet kifejl½odésének f½obb kezdeti lépései S.A. Cook szerint (ACM Turing Award, 1982): 1 A -kalkulusban a függvények jelölése: x 1 ; : : : ; x n [: : :] azt a függvényt jelöli, amelynek változói rendre x 1, x 2,..., x n és értéke [: : :]. 6 BEVEZETÉS

7 - Turing (1936): Turing gép, az e ektíven (algoritmikusan) kiszámítható függvény fogalma, kielégithet½oségi probléma, (Church-)Turing hipotézis: Bármely függvény, amely egy jól de niált eljárással kiszámítható, kiszámítható egy Turing géppel is. - Rabin (1959, 1960): Mit jelent az, hogy f-et nehezebb kiszámítani mint g-t? - Hartmanis, Stearns (1965): bonyolultság mértéke, hierarchia tételek. - Cobham (1965): függvények bels½o számítási nehézsége, gépfüggetlen elmélet. - Karp (1972): P osztály (tractability vagy feasibility). - Aho, Ullman, Hopcroft (1974): RAM gép. A bonyolultságelmélet témakörét M. Rabin az 1976-os ACM Turing díj átvételekor tartott el½oadásában a következ½okben foglalta össze. Legyenek adottak a következ½ok: - P probléma osztály, - I 2 P egyedi probléma, - jij a probléma mérete, - AL a P problémát (problémaosztályt) megoldó algoritmus. Az I 2 P problémát megoldva az AL algoritmus egy S I sorozatot hoz létre. Az S I sorozathoz hozzárendelünk bizonyos mértékeket (költséget). A legfontosabb mértékek: (1) Az S I hossza (számítási id½o) (2) Az S I mélysége (a párhuzamosítás mértéke, párhuzamosítás számítási ideje) (3) A memória igény (4) S I teljes "lépésszáma" helyett bizonyos kitüntetett aritmetikai m½uveletek, összehasonlítások, memóriam½uveletek, stb. száma) (5) Az algoritmus hardver implementálásához szükséges áramkör (Boole áramkör) bonyolultsága (kombinatorikus bonyolultság). Tegyük fel, hogy van egy mértékünk az S I számításokhoz. Fontosabb bonyolultsági mértékek: Legrosszabb eset bonyolultság: F AL (n) = max f (S I ) j I 2 P; jij = ng : Átlagos bonyolultság: adott egy p valószín½uség eloszlás minden egyes P n = fi j I 2 P; jij = ng feladat halmazon. Ekkor a mérték: M AL (n) = X I2P n p (I) (S I ) : Algoritmusok analízise alatt azt értjük, hogy adott jij méretfüggvény és (S I ) mérték esetén meghatározzuk a P -t megoldó AL algoritmus F AL (n) legrosszabb eset és M AL (n) átlagos bonyolultságát. Rabin szerint a bonyolultságelmélet legfontosabb kérdései (1976-ban) a következ½ok: 1. Hatékony algoritmusok keresése P megoldására. 2. A P feladatosztály bels½o bonyolultságára alsó becslések keresése. 3. P egzakt megoldásának keresése (már ha van). 4. Közelít½o algoritmusok fejlesztése. 5. A legrosszabb bels½o bonyolultság vizsgálata. BEVEZETÉS 7

8 6. A P átlagos bonyolultságának vizsgálata. 7. Szekvenciális algoritmusok fejlesztése P megoldására. 8. Párhuzamos algoritmusok fejlesztése P megoldására. 9. Szoftver algoritmusok fejlesztése. 10. Hardveren implementált algoritmusok. 11. Megoldás valószín½uségi (véletlen) algoritmusokkal. A bonyolultságelmélet mára a számítástudomány központi fontosságú területévé vált. A Rabin által felvázolt kérdések ma is intenzív vizsgálatok tárgyát képezik. Az el½oadás egy bevezetés az alapvet½o fogalmakba és eredményekbe. 8 BEVEZETÉS

9 2. fejezet Matematikai alapfogalmak 2.1. Jelölések A halmazok (naív) fogalmát és a velük végezhet½o m½uveleteket ismertnek tételezzük fel. A következ½o jelöléseket használjuk: N - természetes számok halmaza N 0 - nemnegatív egész számok halmaza (N 0 = N [ f0g) Z - egész számok halmaza n p Q - racionális számok halmaza (Q = o) j p; q 2 Z, q 6= 0 q R - valós számok halmaza C - komplex számok halmaza (C = fa + bi j a; b 2 Rg, i = p 1 ) ; - üres halmaz - valódi részhalmaz - részhalmaz jaj - az A halmaz számossága (elemeinek száma) De níció: Egy A 6= ; halmaz hatványhalmazán a 2 A = fx j X Ag halmazrendszert értjük. Értelemszer½uen ;; A 2 2 A. Szokás 2 A helyett a P (A) (power set of A) jelölést is használni. Állítás: Ha jaj = n, akkor 2 A = 2 n. Bizonyítás: Az n elem½u halmaz k elem½u különböz½o részhalmazainak száma k n P és n n k=0 k = 2 n. De níció: A 1 ; A 2 ; : : : ; A n tetsz½oleges halmazok direkt, vagy Descartes féle szorzatán az A 1 A 2 : : : A n = f(a 1 ; : : : ; a n ) j a i 2 A i, i = 1; : : : ; ng halmazt értjük. A direkt szorzat elemei rendezett elem n-esek. A direkt szorzat rövid jelölése: n i=1a i. Ha A 1 = A 2 = = A n = A, akkor használjuk az A n := n i=1a jelölést is. Ílymódon például R n és C n jelöli a valós, illetve komplex elem½u n dimenziós vektorok halmazát. MATEMATIKAI ALAPFOGALMAK 9

10 2.2. Relációk és függvények De níció: Legyenek A és B tetsz½oleges halmazok. Tetsz½oleges S AB részhalmazt (bináris) relációnak nevezünk. Az a 2 A és b 2 B elemek S relációban állnak egymással (jelölés asb) akkor és csak akkor, ha (a; b) 2 S. A de níciót rövidebben is megadhatjuk: asb () (a; b) 2 S. De níció: Az S A B reláció értelmezési tartománya: D S = fa 2 A j 9b 2 B : (a; b) 2 Sg : De níció: Az S A B reláció értékkészlete: R S = fb 2 B j 9a 2 A : (a; b) 2 Sg : De níció: Az S A B reláció értéke (metszete) egy adott a 2 D S helyen: S (a) = fb 2 B j (a; b) 2 Sg : De níció: Az S A B relációt függvénynek nevezzük, ha js (a)j = 1 (8a 2 D S ): A függvényeket S : A! B formában is megadhatjuk. De níció: Egy S függvényrelációt (teljes) függvénynek nevezünk, ha D S = A és parciális függvénynek, ha D S A és D S 6= A. Két egyszer½u példa relációra: S 1 = f(0; 0) ; (1; 1) ; (2; 4) ; (3; 9) ; (4; 16)g és S 2 = f(small,short) ; (medium,middle) ; (medium,average) ; (large,tall)g: A de níció alapján D S1 = f0; 1; 2; 3; 4g, R S1 = f0; 1; 4; 9; 16g és S 1 (i) = fi 2 g (i 2 D S1 ). Az S 1 reláció függvény. Az S 2 reláció esetén D S2 = fsmall,medium,largeg ; R S2 = fshort,middle,average,tallg: Minthogy S 2 (medium) = fmiddle,averageg, az S 2 reláció nem függvény. Függvényreláció esetén S (a) vagy üres, vagy egyelem½u halmaz. Például az S 1 = x; x 2 j x 2 R R R reláció (teljes) függvény, mert D S1 = R. De az S 2 = x; p x j x 2 R; x 0 R R reláció csak parciális függvény, mert S 2 (x) = ; minden x < 0 számra. Tetsz½oleges S A B relációt felfoghatunk egy S : A! 2 B halmazfüggvénynek is, ugyanis minden a 2 D S esetén S (a) B, azaz S (a) 2 2 B. 10 MATEMATIKAI ALAPFOGALMAK

11 Az f : A! B fügvényt véges függvénynek nevezzük, ha A és B véges halmaz. Az f : f0; 1g n! f0; 1g m tipusú véges függvényeket bináris függvényeknek nevezzük. De níció: Az f : f0; 1g n! f0; 1g függvényt Boole függvénynek nevezzük. A de níció másképpen fogalmazva azt jelenti, hogy f (x 1 ; x 2 ; : : : ; x n ) 2 f0; 1g (x i 2 f0; 1g ; i = 1; : : : ; n): Az alábbi igazság táblázatok megadnak négy alapvet½o Boole függvényt: x y x ^ y x y x _ y x y x y x x Ha a 0 értékhez a hamis, az 1 értékhez pedig az igaz logikai értékeket rendeljük, akkor a fenti táblázatok rendre a logikai és (AND, x^y), vagy (OR, x_y), kizáró vagy (XOR, xy) és negáció (NOT, x) függvényeket adják meg. A negáció függvényt szokás még a :x módon is jelölni. Legyen x; y 2 f0; 1g két logikai változó (vagy állítás)! Ekkor x = 1 x; x ^ y = 1, ha x = y = 1 0, egyébként x _ y = 0, ha x = y = 0 1, egyébként ; x y = 1, ha x + y = 1 0, egyébként : Az XOR felírható még az x y x + y (mod 2) formában is. De níció: A logikai változók :, ^, _ jelekkel felírt kifejezéseit Boole-polinomoknak nevezzük. Állítás: Minden Boole-függvény kifejezhet½o Boole-polinomokkal Függvények aszimptotikus jellemzése A következ½okben aszimptotikus nagyságrendi relációkat de niálunk. De níció: f (n) = O (g (n)) ( f (n) 2 O (g (n))), ha létezik c; n 0 > 0 konstans, hogy jf (n)j c jg (n)j teljesül minden n n 0 számra. FÜGGVÉNYEK ASZIMPTOTIKUS JELLEMZÉSE 11

12 y x f(x)=o(g(x)) aszimptotika Példa: Megmutatjuk, hogy log n = O (n). Teljes indukcióval igazoljuk: n 1 ) log n n. n = 1 esetén: log 1 = 0 1. Tegyük fel, hogy n 1-re igaz az állítás: log n n. Ekkor log (n + 1) log (2n) = log 2 + log n 1 + n. Példa: Megmutatjuk, hogy 2 n+1 = O (3 n =n). Teljes indukcióval igazoljuk: n 7 ) 2 n+1 3 n =n. n = 7 esetén: 2 8 = =7 312:428. Tegyük fel, hogy n 7 és 2 n+1 3 n =n. Ekkor f(x) c*g(x) 2 n+2 = 2 2 n+1 2 3n n = 2 (n + 1) 3n 3 n+1 n + 1 3n+1 n + 1 ; mert 2(n+1) 3n < 1. Az O (nagy ordó) relációval a következ½o m½uveleteket végezhetjük. Állítás: Ha f 1 (n) 2 O (g 1 (n)) és f 2 2 O (g 2 (n)), akkor f 1 (n)+f 2 (n) = O (jg 1 (n)j + jg 2 (n)j), illetve f 1 (n) + f 2 (n) = O (max fjg 1 (n)j ; jg 2 (n)jg). Bizonyítás: Tegyük fel, hogy n n 0 esetén jf 1 (n)j c 1 jg 1 (n)j és jf 2 (n)j c 2 jg 2 (n)j. Ekkor jf 1 (n) + f 2 (n)j jf 1 (n)j + jf 2 (n)j max fc 1 ; c 2 g max fjg 1 (n)j ; jg 2 (n)jg : Állítás: Ha f 1 (n) 2 O (g 1 (n)) és f 2 2 O (g 2 (n)), akkor f 1 (n) f 2 (n) = O (g 1 (n) g 2 (n)). Állítás: Ha f (n) 2 O (g (n)), akkor cf (n) 2 O (g (n)). További példák: f (x) = x 4 3x 3 + 5x 1973 = O (x 4 ). (n + 1) 2 = n 2 + O (n). f (n) = 4 log n 3 (log n) 2 + n 2 = O (n 2 ) : 12 MATEMATIKAI ALAPFOGALMAK

13 y y Az f (n) = O (1) azt jelöli, hogy f (n) felülr½ol korlátos. De níció: f (n) = (g (n)) ( f (n) 2 (g (n))), ha létezik c; n 0 > 0 konstans, hogy jf (n)j c jg (n)j teljesül minden n n 0 számra x f(x)=(g(x)) aszimptotika f(x) c*g(x) Példa: (1=2) n 2 5n = (n 2 ), mert 1 2 n2 5n =n 2 = n 4 ; n 20. De níció: f (n) = (g (n)) ( f (n) 2 (g (n))), ha létezik c 1 ; c 2 ; n 0 > 0 konstans, hogy c 1 jg (n)j jf (n)j c 2 jg (n)j teljesül minden n n 0 számra. Alternatív de níció: f (n) = (g (n)), f (n) = O (g (n)) ^ g (n) = O (f (n)) f(x) c1*g(x) c2*g(x) x f(x)=(g(x)) aszimptotika FÜGGVÉNYEK ASZIMPTOTIKUS JELLEMZÉSE 13

14 y Példa: 2n 2 + 3n log n log n + 3 = (n 2 ), mert 1 2n2 + 3n log n log n + 3 n 2 ha n elég nagy. Állítás: p (n) = P d i=0 a in i = n d, ha a d 6= 0. = log n n log n n n 2 3; I(g) g nél gyorsabban növõ függvények B(g) O(g). g g vel azonosan növõ függvények g nél lassabban növõ függvények A O (g), (g) és (g) halmazok megjelenítése De níció: f (n) = o (g (n)) ( f (n) 2 o (g (n))), ha g (n) csak véges sok helyen nulla és f (n) lim n!1 g (n) = 0: sqrt(x) log(x) log(x)/sqrt(x) f(x)=o(g(x)) aszimptotika x Példák: 14 MATEMATIKAI ALAPFOGALMAK

15 log n = o (n), n log n = o (n 2 ), de n log n = O (n 2 ) és n log n = O (n 3 ). Melyik becslés jobb? 2n 2 = O (n 2 ), de 2n 2 6= o (n 2 ) Megjegyzés: Ha f = o (g), akkor egyúttal f = O (g) is teljesül. De níció: f (n) g (n), ha f (n) lim n!1 g (n) = 1: Példa: p n + log n p n Gráfok De níció: A gráf pontokból és a pontokat összeköt½o vonalakból álló alakzat. A gráf pontjait szögpontoknak, vagy csúcsoknak nevezzük. A gráf két szögpontját összeköt½o olyan vonalat, amely nem megy át más szögponton, élnek nevezzük. A szögpontok halmazát V (vertex), az élek halmazát E (edge) jelöli. A G gráfot a G = (V; E) pár adja meg. Egy e 2 E élt a rendezetlen [u; v] pár ad meg, ahol u; v 2 V. Az u és v csúcsok az e él végpontjai. Az [u; u] 2 E élt huroknak nevezzük. Az e; e 0 2 E éleket többszörös éleknek nevezzük, ha ugyanazt a két pontot kötik össze, azaz e = [u; v] és e 0 = [u; v]. A hurkot és többszös éleket nem tartalmazó gráfokat egyszer½u gráfoknak nevezzük egyébként pedig multigráfnak. De níció: Az u 2 V csúcs (u) fokán az u csúcsot tartalmazó élek számát érjük. Ha (u) = 0, akkor az u csúcsot izoláltnak nevezzük. De níció: A G gráf üres, ha E = ;. Teljes a gráf, ha minden szögpontpár éllel van összekötve. De níció: Az u; v 2 V csúcsokat összeköt½o n hosszúságú vonalnak nevezzük az egymáshoz csatlakozó f[v i 1 ; v i ]g n i=1 élek sorozatát, ha v 0 = u és v n = v. A vonal zárt, ha v 0 = v n. A vonalat útnak nevezzük, ha a v 0 ; v 1 ; : : : ; v n csúcsok a v 0 = v n lehet½oség kivételével egymástól különböznek. A zárt utat körnek nevezzük. De níció: A gráf összefügg½o, ha bármely két szögpontját út köti össze. Következmény: Ha egy gráf nem összefügg½o, akkor van legalább egy olyan szögpontja, amelyb½ol nem vezet út az összes többi szögpontba. De níció: Azok a szögpontok, amelyek egy adott szögpontból úttal elérhet½ok, a hozzájuk illeszked½o élekkel együtt a gráf egy összefügg½o komponensét alkotják. De níció: Az olyan összefügg½o gráfot, amelyben nincsen kör, fának nevezzük. Ha a fának n csúcsa van, akkor pontosan n 1 éle van. De níció: A G gráfot cimkézettnek nevezzük, ha az éleihez adatokat rendelünk. Ha minden e éléhez egy w (e) 0 számot rendelünk, akkor súlyozott gráfról beszélünk. De níció: A G gráfot végesnek nevezzük, ha V és E véges halmazok. GRÁFOK 15

16 De níció: A G s = (V s ; E s ) gráf a G = (V; E) gráf részgráfja, ha V s V és E s E. A A E D B C D B C A B C B 3 4 A E 3 D E F C 6 D Irányítatlan gráfok De níció: A G = (V; E) gráfot irányítottnak vagy digráfnak (directed graph) nevezzük, ha minden élét irányítjuk. Ekkor E rendezett párok halmaza. Az e = [u; v] 2 E élnek u a kezd½opontja és v a végpontja. Egy u 2 V csúcspont be (u) bemen½o foka, vagy be-foka az u szögpontban végz½od½o élek száma. Az u csúcspont ki (u) kimen½o foka, vagy ki-foka az u pontból induló élek száma. Az u 2 V csúcspontot forrásnak nevezzük, ha ki (u) > 0, de be (u) = 0. csúcspont nyel½o, ha ki (u) = 0, de be (u) > 0. Az u 2 V Az irányított vonal, út és kör de níciója hasonló az eredeti defínícióhoz azzal az eltéréssel, hogy az út (és a kör) esetén az élek irányítása meg kell, hogy egyezzen a vonal irányításával. Az v csúcs elérhet½o az u csúcsból, ha létezik u-ból induló és v-ben végz½od½o irányított út. De níció: A G = (V; E) irányított gráf összefügg½o, ha az irányítások elhagyásával kapott gráf összefügg½o. De níció: A G = (V; E) irányított gráf er½osen összefügg½o, ha bármely u; v 2 V csúcsot irányított él köt össze. De níció: A G = (V; E) irányított gráf aciklikus, ha irányított kört nem tartalmaz. 16 MATEMATIKAI ALAPFOGALMAK

17 A D B C Irányított gráf A gráfok és relációk szoros kapcsolatban állnak egymással: 1. Legyen G = (V; E) irányított gráf. Ez megfeleltethet½o egy R V V relációnak: R = f(u; v) j e = [u; v] 2 Eg : 2. Legyen R A B reláció. Ez megfeleltethet½o egy (V; E) gráfnak: V = A [ B; E = fe = [u; v] j (u; v) 2 Rg : A logikai áramkörök aciklikus irányított gráfoknak feleltethet½ok meg. Az alábbi két ábra ilyen logikai áramköröket mutat be. 2 v 8 1 v 5 1 v o 6 v 7 2 v 3 v 4 o v 4 1 v 5 v 1 v 2 v 1 v 2 v Halmazok számossága Egy A halmaz számosságán a halmaz elemeinek jaj-val jelölt "számát" értjük. Ha A elemeinek száma véges, akkor jaj egy meghatározott egész számot, az elemek tényleges számát jelenti. HALMAZOK SZÁMOSSÁGA 17

18 Ha azonban A elemeinek száma végtelen, akkor jaj jelentését egy osztályozás segítségével jellemezzük. De níció: Két A és B halmazt azonos, vagy egyenl½o számosságúnak nevezünk ( jaj = jbj), ha elemeik között kölcsönösen egyértelm½u megfeleltetés létesíthet½o. Az jaj = jbj egyenl½o számosság összefüggés egy ekvivalencia reláció, amely a halmazok egy természetes osztályozását indukálja. Az azonos számosságú halmazokat azonos osztályba soroljuk. Ezek jellemz½oje hogy az azonos osztályhoz tartozó halmazok elemszáma azonos, míg a különböz½o osztályokhoz tartozó halmazok elemszáma különböz½o. A halmaz számossága ebben az értelemben annak az osztálynak a megjelölése, amelyhez tartozik. Jegyezzük meg, hogy a most bevezetett számosság fogalom nincs ellentmondásban azzal, hogy véges elemszámú halmazok számossága elemeik száma. Az egyenl½o számosság reláció ugyanis a véges halmazokat az n = 0; 1; 2; : : : elem½u halmazok osztályaiba sorolja és ezeket az osztályokat az elemek tényleges véges számával tudjuk azonosítani. De níció: jaj jbj, ha van olyan C B részhalmaz, amelyre jaj = jcj. Könnyen belátható, hogy A B esetén jaj jbj. Fennállnak a következ½o relációk: a) jaj jbj ^ jbj jcj ) jaj jcj; b) jaj jbj ^ jbj jaj ) jaj = jbj. Cantor igazolta, hogy bármely két halmaz számossága nagyságrendi viszonyba állítható. A legkisebb végtelen számosság a természetes számok N 0 -al (@=alef) jelölt számossága. De níció: Egy A halmazt megszámlálható számosságúnak nevezünk, ha számossága a természetes számok N halmazának számosságával egyenl½o. Véges sok véges vagy megszámlálható halmaz uniója is megszámlálható. Megszámlálható halmazok végtelen részhalmazai is megszámlálhatók. Ennek megfelel½oen a természetes számok összes végtelen részhalmazának számossága megegyezik N számosságával. Pl. az összes páros természetes számok halmaza felírható az fn = 2k j k = 1; 2; : : :g alakban, ahol a k! 2k leképezés kölcsönösen egyértelm½u megfeleltetést hoz létre a két halmaz között. Könnyen igazolható, hogy az N N 0 Z Q valódi tartalmazás ellenére ezen halmazok számossága azonos: jnj = jn 0 j = jzj = jqj 0. A ( 1; 1) R részhalmaz számossága ugyancsak megegyezik R számosságával: az x! x 1 jxj leképezés kölcsönösen egyértelm½u megfeleltetést létesít a két halmaz között. A fenti példák azt mutatják, hogy végtelen halmazok valódi végtelen részhalmazainak megegyezhet a számossága a tartalmazó halmaz számosságával. Ez a tulajdonság a végtelen halmazok egyik jellemz½o sajátossága, amely nem igaz véges halmazok esetére. De níció: jaj < jbj, ha jaj jbj és jaj 6= jbj. A valós számok R halmazát kontinuum számosságúnak nevezzük, amelyre fennáll, hogy jrj 0. A valós számok halmazának számossága nem megszámlálhatóan végtelen. Tétel (Cantor): jxj < 2 X. Bizonyítás: Véges halmazokra az állítást korábban igazoltuk. Tegyük fel, hogy X 6= ;. A 2 X hatványhalmaz tartalmazza X összes egy elem½u részhalmazát, ezért jxj 2 X. Most már csak azt 18 MATEMATIKAI ALAPFOGALMAK

19 kell igazolnunk, hogy jxj 6= 2 X, ha X 6= ;. Tegyük fel ennek az ellenkez½ojét. Ekkor léteznie kell egy kölcsönösen egyértelm½u f : X! 2 X megfeleltetésnek (pont-halmaz leképezésnek) a két halmaz között. Vizsgáljuk az A = fx 2 X j x =2 f (x)g halmazt, amely azon X-beli x elemek halmaza, amelyek nincsenek benne az x-hez rendelt f (x) 2 2 X halmazban. Minthogy A 2 2 X, létezik egy a 2 X, hogy f (a) = A. Az a elemre nem teljesülhet a 2 A = f (a), mert A pontosan azon y elemek halmaza, amelyekre y =2 f (y). Másrészt az a =2 A = f (a) reláció sem lehetséges, mert akkor a 2 A lenne, ami megint ellentmond A de níciójának. Tehát az azonos számosság feltevésével ellentmondásra jutottunk, vagyis jxj 6= 2 X. Az N összes véges részhalmazának 2 N hatványhalmazára tehát fennáll, hogy 2 N > jnj. A 2 N halmaz 1 -el jelöljük. A Cantortól származó kontinuum hipotézis azt mondja ki, hogy nincs olyan nem megszámlálhatóan végtelen A halmaz, amelynek 0 és jrj között van. A hipotézist az jrj = 2 N alakban is meg lehet adni. Gödel 1938-ban igazolta, hogy a kontinuum hipotézist a Zermelo-Fraenkel féle (ZF) axiómarendszerben nem lehet megcáfolni. Paul Cohen (1934-) ban azt bizonyította, hogy a kontinuum hipotézist igazolni sem lehet a ZF axiómarendszerben. Ennek következtében a probléma eldönthetetlen a ZF axiómarendszerben. A megszámlálható (felsorolható) halmaz fogalmának különösen fontos szerepe van az algoritmuselméleti vizsgálatokban. A következ½okben ennek egy fontos vonatkozását próbáljuk kiemelni. Egy halmazt felsorolhatónak (megszámlálhatónak) nevezzük, ha a tagjai felsorolhatók a következ½o értelemben: elhelyezhet½ok egy listában, amelynek van els½o, második, stb. tagja és a halmaz minden eleme el½obb vagy utóbb felt½unik a listán. A nulla elemmel rendelkez½o ; üres halmazt ebben az értelemben felsorolhatónak tekintjük. A halmaz elemeit felsoroló lista véges vagy végtelen. Egy végtelen halmazt, amelynek elemei felsorolhatók felsorolhatóan (vagy megszámlálhatóan) végtelennek nevezzük. A természetes számok N halmaza felsorolható. Egy lehetséges felsorolása: 1; 2; 3; : : : ; n; n + 1; : : :. Nem fogadható el felsorolásként például az 1; 3; 5; 7; : : : ; 2; 4; 6; : : : lista, amely els½obb felsorolja a páratlan, majd a páros számokat. A megkövetelt felsorolásban ugyanis a halmaz minden elemének fel kell t½unnie valamilyen n-edik elemként, ahol n véges. Példa: Az N 2 = N N halmaz felsorolható. A halmaz (i; j) alakú számpárokból (i; n 2 N) áll. A halmaz elemeinek egy lehetséges felsorolása a következ½o: (1; 1) ; (1; 2) ; (2; 1) ; (1; 3) ; (2; 2) ; (3; 1) ; (1; 4) ; (2; 3) ; (3; 2) ; (4; 1) ; : : : Itt a felsorolás (rendezés) elve az, hogy (i; j) párokat egy mindkét irányban végtelen mátrixba rendezzük (i=sorindex, j=oszlopindex), majd a ferde átlók mentén felsoroljuk az ábrán jelzett módon: HALMAZOK SZÁMOSSÁGA 19

20 (1,1) (1,2) (1,3) (1,4) (1,5)... (2,1) (2,2) (2,3) (2,4) (2,5)... (3,1) (3,2) (3,3) (3,4) (3,5)... (4,1) (4,2) (4,3) (4,4) (4,5)... (5,1) (5,2) (5,3) (5,4) (5,5) Az (i; j) párok felsorolása Vegyük észre, hogy a ferde átlókban szerepl½o elempárok összege konstans: 2 az els½o átlóban, 3 a második átlóban, 4 a harmadik átlóban, és így tovább. A felépítésb½ol világos, hogy bármely kiválasztott (m; n) pár a felsorolásban szerepelni fog j (m; n)-edik tagként. Az i-edik ferde átló elemeinek összege i + 1, elemeinek száma pedig i. Az (m; n) pár elemeinek összege m + n, ami az elemet az (m + n 1)-edik átlóba sorolja. Az els½o m + n 2 átló elemeinek száma: (m + n 2) (m + n 1) (m + n 2) = : 2 Az (m; n) pár a saját átlójában az m-edik elem lesz. Tehát az (m; n) pár sorszáma a fenti felsorolásban: (m + n 2) (m + n 1) j (m; n) = + m = m2 + 2mn + n 2 m 3n + 2 : 2 2 Állítás: Ha az A és B halmazok felsorolhatók (megszámlálhatók), akkor A B is felsorolható (megszámlálható). Bizonyítás: A példa alapján eljárva az A és B halmaz elemeit el½oször külön-külön felsoroljuk: a 1 ; a 2 ; : : : ; a m ; : : :, illetve b 1 ; b 2 ; : : : ; b n ; : : : Ezután az (a i ; b j ) elempárokat az (i; j) indexek alapján sorbarendezzük az el½obb látott módon. Az állítás alapján könnyen beláthatjuk, hogy N k is felsorolható (megszámlálható) Nyelvek és szavak De níció: Tetsz½oleges véges 6= ; halmazt ábécének nevezünk. A ábécé elemeit a bet½uinek (szimbólumainak) nevezzük. 20 MATEMATIKAI ALAPFOGALMAK

21 Példák: bool = f0; 1g, a Boole ábécé, lat = fa; b; c; : : : ; zg, a latin ábécé, keyboard = lat [ fa; B; : : : ; Z; t; >; <; (; ); : : : ;!g, klaviatúra nyelve, t a szóköz jel, m = f0; 1; 2; : : : ; m 1g, m 1 egész, az m alapú számrendszer ábécéje, logic = f0; 1; x; (; ); ^; _; :g, Boole formulák ábécéje. De níció: A ábécé jeleinek tetsz½oleges véges sorozatát feletti szónak nevezzük. A w szó jwj hossza a w-ben lév½o jelek száma. A w = x 1 x 2 : : : x n szót felfoghatjuk a n halmaz egy (x 1 ; x 2 ; : : : ; x n ) elemének is, amelyb½ol a zárójeleket és az elválasztójeleket elhagyjuk. A w = x 1 x 2 : : : x n szó hossza: jwj = n. A "szavakkal" különböz½o objektumokat reprezentálhatunk: számokat, képleteket, gráfokat és programokat. Például az x = x 1 x 2 : : : x n ; x i 2 bool (i = 1; 2; : : : ; n) szót az N (x) = P n i=1 2n i x i nemnegatív szám bináris el½oállításának tekinthetjük. De níció: Jelöljön G = (V; E) egy irányított gráfot, amelyben V a csúcsok és E f(v i ; v j ) j v i ; v j 2 V; v i 6= v j g az élek halmaza. Legyen jv j = n a csúcsok száma. A gráf M G = [a ij ] n i;j=1 szomszédsági) mátrixát az 1; ha (vi ; v a ij = j ) 2 E 0; ha (v i ; v j ) =2 E el½oírással adjuk meg. Tekintsük az alábbi gráfot! adjacencia (v. v 1 v 2 v 3 v 4 NYELVEK ÉS SZAVAK 21

22 A gráf adjacencia mátrixa A mátrix f0; 1; #g ábécé feletti lehetséges szó reprezentációja pedig : 0011#0011#0101#0000#: De níció: Az x = x 1 x 2 : : : x k 2 k és y = y 1 y k : : : y l 2 l szavak konkatenációján (egymás után írásán) az xy = x 1 x 2 : : : x k y 1 y k : : : y l 2 k+l szót értjük. Példa: x = 0aa1bb, y = 111b, = f0; 1; a; bg. xy = 0aa1bb111b A konkatenáció asszociatív: x (yz) = (xy) z: (2.1) A Fibonacci számok sorozatát az F 0 = 1; F 1 = 1; el½oírással defniáljuk. Igazolható, hogy F n = F n 1 + F n 2 (n 2) F n = p p! n p p! n+1 5 : (2.2) A Fibonacci szavak sorozatát a = fa; bg ábécé felett az f 0 = b; f 1 = a; f n = f n 1 f n 2 (n 2) el½oírással de niáljuk. Az els½o tíz Fibonacci szám és szó: n F n f n 0 1 b 1 1 a 2 2 ab 3 3 aba 4 5 abaab 5 8 abaababa 6 13 abaababaabaab 7 21 abaababaabaababaababa 8 34 abaababaabaababaababaabaababaabaab 9 55 abaababaabaababaababaabaababaabaababaababaabaababaababa 22 MATEMATIKAI ALAPFOGALMAK

23 Az üres szót "-al jelöljük. Ennek hossza j"j = 0 és tetsz½oleges x szóval konkatenálva visszaadja az x szót: x" = "x = x: De níció: A felett értelmezett összes szavak halmazát, beleértve az " üres szót is, jelöli. De níció: Legyen egy ábécé. Minden x 2 és i 1 egész számra legyen x 0 = " és x i = xx i 1. Példa: aabbaaaaaa = a 2 b 2 a 6 = a 2 b 2 (aa) 3. De níció: Legyen = fs 1 ; s 2 ; : : : ; s n g egy ábécé, n 1 és tegyük fel, hogy elemei (lineárisan) rendezettek, azaz s 1 < s 2 < < s n. A -on értelmezett lexikogra kus (kanonikus) rendezést a következ½o el½oírással de niáljuk: u < v, (juj < jvj) _ (juj = jvj ^ u = xs i u 0 ^ v = xs j v 0 ^ i < j) ; ahol x; u 0 ; v 0 2. A lexikogra kus rendezés segítségével megmutathatjuk, hogy megszámlálható (felsorolható). A felsorolás a következ½oképpen néz ki: s 1 ; s 2 ; : : : ; s n ; s 1 s 1 ; s 1 s 2 ; : : : ; s 1 s n ; : : : ; s n s 1 ; : : : ; s n s n ; Elve pedig az, hogy el½oször vesszük az 1 jel hosszúságú szavakat (az ábécé bet½uit), majd a 2 jel hosszúságú szavakat a lexikogra kus rendezés szerint, a 3 jel hosszúságú szavakat a lexikogra kus rendezés szerint és így tovább. Az összes k hosszúságú szó száma n elem½u ábécé esetén n k. Így egy x 2 szó, amelynek hossza ` a P` 1 k=1 nk + 1 és P` k=1 nk sorszámok között kerül sorra a fenti felsorolásban. Tehát felsorolható (megszámlálható). De níció: A tetsz½oleges L részhalmaza nyelv. Az L C = n L halmazt az L nyelv komplementumának nevezzük. L ; = ; az üres nyelv. L " = f"g az egyetlen üres szóból álló nyelv. De níció: Legyenek L 1 és L 2 nyelvek felett. Ekkor a két nyelv konkatenációja L 1 L 2 = fvw j v 2 L 1 és w 2 L 2 g : De níció: Legyen L nyelv, L 0 = L ", L i+1 = L i L ( i 1). Az L halmaz Kleene-féle lezárása L = [ i2n0 L i, pozitív lezárása pedig L + = [ i2n L i : Az L + nem tartalmazza az üres szót. Vegyük még észre, hogy a ábécé Kleene-féle lezárása. NYELVEK ÉS SZAVAK 23

24 24 MATEMATIKAI ALAPFOGALMAK

25 3. fejezet Algoritmusok, kiszámítható függvények és döntési problémák Az algoritmus, a kiszámíthatóság és eldönthet½oség alapvet½o, egymással összefügg½o fogalmak. Mi ezeket a fogalmakat részletesen a formális nyelvek, a leképezések (relációk) és a Turing gépek segítségével fogjuk tárgyalni. Muhammad ibn Musa al-khwarizmi, IX. század eleje Az algoritmus szó a híres középkori "arab" matematikus Muhammad ibn Musa al-khwarizmi nevéb½ol ered, aki 800. el½ott született Horezm területén (az Amu-Darja mentén, kb. a mai Türkmenisztán és Üzbegisztán), és legalább 847-ig élt. A Bagdadi "Bölcsesség Háza" egyetemen tanított és 825 körül írta a f½o munkáját, amelynek címe "Al-jabr wa l muqabala" (az algebra szó innen ered) és egy könyvet az 1,2,34,5,6,7,8,9 és 0 jeleken alapuló hindu-arab számokról, Az utóbbi könyv eredeti arab kézirata elveszett, de ennek latin fordítása "Algoritmi de numero Indorum" (Al-Khwarizmi a Hindu számítási m½uvészetr½ol) fennmaradt és bevezette az arab számokat Európába. A 0 szám els½o el½ofordulása is valószín½uleg neki köszönhet½o. A könyvben számítási szabályok vannak leírva, amelyeket utána neveztek el (Algoritmi dicit.../al-khwarizmi ezt mondja...). Igen sokáig algoritmus alatt a ma már "egyszer½u" aritmetikai számolási szabályokat értették. Mi algoritmus alatt számítási modelleket értünk és a kiszámíthatóság és eldönthet½oség fogalmait ezekre alapozzuk. Más tárgyalásokban az algoritmus fogalmát tekintik adottnak, amely ALGORITMUSOK, KISZÁMíTHATÓ FÜGGVÉNYEK ÉS DÖNTÉSI PROBLÉMÁK 25

26 lehet½ové teszi néhány alapfogalom és összefüggéseik "egyszer½u" tárgyalását. Tegyük most fel egy rövid id½ore, hogy az algoritmus fogalmát valahogy de niáltuk. De níció: Egy f : N 0! N 0 (parciális) függvényt ekkor kiszámíthatónak nevezünk, ha van olyan A algoritmus, amely kiszámítja f-et úgy, hogy: 1. Ha f (n) értelmezve van (de niált), akkor A megáll és kinyomtatja f (n) értékét. 2. Ha f (n) nincs értelmezve (nem de niált), akkor A nem áll meg az n "inputon". Vegyük észre, hogy a de níció szerint a sehol sem de niált üres függvény is kiszámítható. De níció: Az X N 0 halmaz eldönthet½o, ha van olyan algoritmus, amely eldönti, hogy egy n 2 N 0 szám az X halmazhoz tartozik-e? De níció: A B halmaz karakterisztikus függvénye: 1; B (x) = ha x 2 B 0; ha x =2 B Egy X halmaz eldönthet½o, ha a X karakterisztikus függvény kiszámítható. Állítás: Ha X és Y eldönthet½o, akkor X [ Y, X \ Y, XnY és Y nx is az. De níció: Egy X N 0 halmazt felsorolhatónak (megszámlálhatónak) nevezzük, ha van olyan algoritmus, amely (tetsz½oleges sorrendben és késésekkel) kinyomtatja az X elemeit és csakis azokat. Ekvivalens megfogalmazások a következ½ok: 1. Egy X halmaz felsorolható, ha X = D f, ahol f kiszámítható. 2. Egy X halmaz felsorolható, ha X = R f, ahol f kiszámítható. Állítás: Ha X és Y felsorolható, akkor X [ Y és X \ Y is az. Tétel (Emil Post): Ha X N 0 eldönthet½o, akkor felsorolható is. Ha egy X halmaz és komplementere N 0 nx is felsorolható, akkor X eldönthet½o. Tétel: Egy f : N 0! N 0 (parciális) függvény akkor és csak akkor kiszámítható, ha a gráfja felsorolható. F = f(x; y) j f (x) értelmezett és f (x) = yg Most a részletek pontos speci kálása nélkül feltesszük, hogy az algoritmus egy leképezés a következ½o tulajdonságokal. De níció: Az A algoritmus (program) egy A : 1! 2 leképezés a 1 és 2 ábécék felett a következ½o tulajdonságokkal: (i) Az inputok 1 feletti szavak, (ii) Az outputok 2 feletti szavak, (iii) A minden inputhoz egyértelm½uen rendel hozzá egy outputot. Jelölje az A algoritmus inputját x 2 1, az outputját pedig A (x) 2 2. De níció: Az A; B : 1! 2 algoritmusokat (programokat) ekvivalensnek nevezzük, ha A (x) = B (x) minden x 2 1 esetén. De níció: Legyen 1 és 2 két ábécé. Az A algoritmus kiszámítja az f : 1! 2 függvényt, ha minden x 2 1 esetén A (x) = f (x). 26 ALGORITMUSOK, KISZÁMíTHATÓ FÜGGVÉNYEK ÉS DÖNTÉSI PROBLÉMÁK

27 De níció: Egy adott ábécéhez és L nyelvhez tartozó (; L) döntési probléma alatt azt értjük, hogy minden x 2 P esetén el kell dönteni, hogy x 2 L vagy x =2 L. Az A algoritmus a (; L) döntési problémát megoldja vagy felismeri, ha minden x 2 esetén: 1, ha x 2 L; A (x) = 0, ha x =2 L. A döntési probléma tehát egy speciális függvény kiszámítási probléma, ahol az algoritmus az L nyelv un. karakterisztikus függvényét számítja ki. Példa: Prímtesztelés: ( bool ; fx 2 ( bool ) j N (x) prímszámg) ; ahol N (x) az x szóhoz rendelt bináris szám. Példa: Hamilton kör probléma (; HC), ahol = f0; 1; #g és HC = fx 2 j x Hamilton kört tartalmazg : Példa: Kielégíthet½oségi probléma ( logic ; SAT ) : SAT = fx 2 ( logic ) j x egy kielégíthet½o Boole formulag : De níció: Ha egy L nyelvhez létezik egy algoritmus, amely L-et felismeri, akkor az L nyelvet rekurzívnak nevezzük. A fenti de níciók alapján gondolhatjuk, hogy függvények kiszámítása a legáltalánosabb számítási probléma. Ez azonban nem így van. De níció: Legyen és két ábécé és legyen R egy reláció. Az A algoritmus kiszámítja R-et, ha minden x 2 esetén (x; A (x)) 2 R. Példa: Input: x 2 ( bool ), Output: y 2 ( bool ), ahol y értékét a következ½oképpen határozzuk meg. Ha N (x) prímszám, akkor y = 1. Ha N (x) összetett szám, akkor y az N (x) egynél nagyobb akármelyik osztója lehet. A megfelel½o reláció: R = f(x; y) j y = 1, ha N (x) prím, y > 1 ^ (y j N (x))g : Az el½oz½o de nícióban szerepl½o relációval nemdeterminisztikus számítási feladatokat írunk le. Az (x; A (x)) 2 R feltétel azt jelenti, hogy A (x) 2 R (x). Ha R valódi reláció, azaz jr (x)j > 1 legalább egy x 2 D R elemre, akkor az adott x esetén az algoritmus eredménye tetsz½oleges A (x) 2 R (x) elem lehet. Azaz ugyanarra az inputra más és más eredményeket kaphatuk. A determinisztikus esetben ez nem lehetséges, mert ugyanarra az inputra mindig ugyanazt a kimenetet kapjuk. Tekintve, hogy a nemdeterminisztikus számítási modellek fontos szerepet játszanak a bonyolultságelméletben, a függelékben röviden ismertetjük a programozás alapfogalmainak egy nemdeterminisztikus, relációelméleti leírását is. ALGORITMUSOK, KISZÁMíTHATÓ FÜGGVÉNYEK ÉS DÖNTÉSI PROBLÉMÁK 27

28 28 ALGORITMUSOK, KISZÁMíTHATÓ FÜGGVÉNYEK ÉS DÖNTÉSI PROBLÉMÁK

29 4. fejezet Formális nyelvek és automaták 4.1. Formális nyelvek A formális nyelvek elmélete az 1950-es évek végén, az 1960-as évek elején alakult ki a programozási nyelvek megalapozására és vizsgálatára. Az automaták elméletét ugyanekkor fejlesztették ki. Fontos szerepük van a nyelvek (formális nyelvek, programnyelvek) felismerésében és elemzésében. Nyelv alatt egy véges ábécé feletti szavak halmazát értjük. Most bevezetjük a generatív nyelvtan fogalmát, amely a T terminális és az N nemterminális jelek diszjunkt ábécéjéb½ol, egy kitüntetett nemterminális kezd½oszimbólumból és szavak átírási szabályainak R halmazából áll. A fejezetben négy nyelvtípust de niálunk a generatív nyelvtan fogalmának segítségével. A formális nyelvek elméletét programozási nyelvek interpretálására (elemzésére, felismerésére) használjuk. A programnyelvet (általában) több lépésben fordítjuk és értelmezzük. Ennek els½o lépése a lexikális analízis, amelyben a jeleket lexikális egységekbe (tokenekbe) gy½ujtjük. Ezt a lépést tipikusan automatákkal (véges állapotú gépekkel) végzik. A fordítás második lépése a szintaktikai elemzés (parsing), amelyben a lexikális egységekhez (tokenekhez) a nyelvtan szabályainak egy sorozatát (derivációkat) rendelünk. De níció: A G = (N ; T ; s; R) rendszert generatív nyelvtannak nevezzük, ahol 1) N 6= ; véges halmaz, a nemterminális szimbólumok (változók) halmaza, 2) T 6= ; véges halmaz, a terminális szimbólumok halmaza, 3) N \ T = ;, 4) s 2 N a kezd½oszimbólum, 5) R olyan u! v ( u; v 2 (N [ T ) ) alakú átírási (helyettesítési) szabályok véges halmaza, ahol u tartalmaz legalább egy elemet N -b½ol. Az átírási szabályok R halmazát felfoghatjuk a + véges részhalmazaként, ahol = N [ T a teljes ábécé. Tehát az u! v átírási szabályt az (u; v) 2 R elempárral azonosítjuk. Példa: Legyen N = fsg, ahol s egyben a kezd½oszimbólum is, T = fa; bg a terminális jelek halmaza, R pedig a s! asb, s! ab alakú átírási szabályok halmaza. Az s kezd½ojelb½ol kiindulva a két átírási szabály ismételt alkalmazásával a k b k (k 1) alakú szavakat tudunk FORMÁLIS NYELVEK ÉS AUTOMATÁK 29

30 el½oállítani: s! asb! a (asb) b!! a k sb k! a k (ab) b k = a k+1 b k+1 : De níció: Legyen G = (N ; T ; s; R) generatív nyelvtan. Ha w 1 2 (N [ T ) +, w 1 = p 1 up 2 és R tartalmazza az u! v átírási szabályt, akkor w 1 -et helyettesíthetjük a w 2 = p 1 vp 2 szóval. Ebben az esetben azt mondjuk, hogy w 2 közvetlenül levezethet½o w 1 -b½ol G-ben (jelben w 1 ) G w 2 ). A v 2 (N [ T ) levezethet½o az u 2 (N [ T ) + szóból (jelben u ) G v), ha van olyan k egész szám és u 0 ; u 1 ; : : : ; u k 2 (N [ T ) szavak, hogy u = u 0 ) G u 1 ) G : : : ) G u k = v: Ezt a levezetés láncot k-hosszúságú derivációnak is nevezzük. Például s ) A ) aab ) aaabb ) aaabbb egy 4-hosszúságú deriválás. De níció: Legyen G = (N ; T ; s; R) generatív nyelvtan. A G nyelvtan által generált nyelven az L (G) = fw 2 T j s ) G wg nyelvet értjük. Az L (G) nyelv az összes olyan T -beli szóból áll, amely megkapható a kezd½oállapotból G-beli derivációval. Példa: G = (fsg ; fa; bg ; s; fs! asb; s! abg) esetén L (G) = fa n b n j n 1g : Példa: Legyen G 1 = (N 1 ; T 1 ; s; R 1 ), ahol N 1 = fs,b,cg, T 1 = fa,b,cg és R 1 a következ½o szabályokból áll: a) s! asbc d) ab! ab g) cc! cc b) s! abc e) bb! bb c) CB! BC f) bc! bc Tekintsük a következ½o levezetés láncokat: s! a(s)bc ) aab(cb)c ) a(ab)bcc ) aa(bb)cc ) aab(bc)c ) aabb(cc) ) aabbcc; illetve s! a(s)bc ) aa(s)bcbc ) aaab (CB) CBC ) aaabbc(cb)c ) aaabb(cb)cc ) ) aa(ab)bbccc ) aaa(bb)bccc ) aaab(bb)ccc ) aaabb(bc)cc ) ) aaabbb(cc)c ) aaabbbc(cc) ) aaabbbccc: Feladat: Igazoljuk, hogy L (G 1 ) = fa n b n c n j n 1g. A generatív nyelvtan fogalmának segítségével meg tudjuk fogalmazni függények kiszámítását a formális nyelvek keretén belül. 30 FORMÁLIS NYELVEK ÉS AUTOMATÁK

31 De níció: Legyen adott egy G = (N ; T ; s; R) generatív nyelvtan és az f :! függvény ( = N [ T ). A G nyelvtan "kiszámítja" f-et, ha minden w; v 2 esetén a következ½o állítás igaz: sws ) G v akkor és csak akkor, ha v = f (w) : Egy! függvényt nyelvtanilag kiszámíthatónak nevezünk, ha létezik egy G nyelvtan, amely kiszámítja. A most megfogalmazott függvénykiszámítás koncepció nem határozza meg a helyettesítési szabályok sorrendjét. Markov rendszerben ez egyértelm½uvé tehet½o, de a kiszámítható függvények köre ugyanaz marad Generatív nyelvtanok osztályozása A generatív nyelvtanok következ½o osztályozását N. Chomsky vezette be és ezek egymáshoz való viszonyát Chomsky-féle hierarchiának nevezzük. De níció: A G = (N ; T ; s; R) generatív nyelvtan kifejezés struktúra, vagy 0-típusú, ha átírási szabályainak R halmazára nincs megszorítás. A 0-típusú nyelvtanok által generált nyelvek osztályát L 0 -al jelöljük De níció: A G = (N ; T ; s; R) generatív nyelvtan környezetfügg½o, vagy 1-típusú, ha minden (u; v) 2 R átírási szabályára teljesül, hogy v nem tartalmaz kevesebb karaktert mint u, azaz juj jvj. A környezetfügg½o (1-típusú) nyelvtanok által generált nyelvek osztályát L 1 -el jelöljük és ezeket környezetfügg½o nyelveknek nevezzük. Feladat: Igazoljuk, hogy L (G 1 ) környezetfügg½o. De níció: A G = (N ; T ; s; R) generatív nyelvtan környezetfüggetlen, vagy 2-típusú, ha minden (u; v) 2 R átírási szabályára teljesül, hogy u 2 N. A környezetfüggetlen (2-típusú) nyelvtanok által generált nyelvek osztályát L 2 -vel jelöljük és környezetfüggetlen nyelveknek nevezzük. Példa: A G = (fs,ag ; fa,bg ; s; fs! asb; s! "g) nyelvtan környezetfüggetlen és az L (G) = fa n b n j n 0g nyelvet generálja. Példa: Tekintsük a G 3 nyelvtant, amelyet az alábbi terminális és nemterminális jelek és átírási szabályok de niálnak: a) s! cmcnc d) N! bnb b) M! ama e) N! c c) M! c Könnyen igazolható, hogy G 3 környezetfüggetlen és L (G 3 ) = fca n ca n cb m cb m c j n; m 0g. A környezetfüggetlen nyelvek számos programozási nyelv fontos tulajdonságait emelik ki. De níció: A G = (N ; T ; s; R) generatív nyelvtan reguláris, vagy 3-típusú, ha minden (u; v) 2 R átírási szabálya a! w vagy a! wb alakú, ahol a; b 2 N és w 2 T. FORMÁLIS NYELVEK 31

32 Ez azt jelenti, hogy az átírási szabályok jobb oldala vagy terminális elem, vagy egy terminális elem amelyet egy nem terminális elem követ. A reguláris (3-típusú) nyelvtanok által generált nyelveket reguláris nyelveknek nevezzük és ezek osztályát L 3 -al jelöljük. Példa: Legyen G 4 = (N 4 ; T 4 ; s; R 4 ), ahol N 4 = fs; A; Bg, T 4 = f0; 1g és R 4 -et az alábbi átírási szabályok de niálják: a) s! 0A d) B! 0A b) s! 0 e) B! 0 c) A! 1B Ez a nyelvtan reguláris. Az átírási szabályokat alkalmazva a következ½o derivációkat kaphatjuk: s! 0, s! 0A! 01B! 010, s! 0A! 01B! 010A! 0101B! 01010, stb. Eszerint a generált nyelv (01) k 0 alakú szavakból áll, hol k n 0. o Feladat: Igazoljuk formálisan is, hogy L (G 4 ) = (01) k 0 j k 0. Feladat: Legyen G = (fs; a; bg ; f1g ; s; R), ahol R = fs ) 1a; a ) 1b; b ) 1a; a ) 1; s ) "g. Igazoljuk, hogy G reguláris és L (G) = f1 2n j n 0g! Feladat: Legyen G = (fsg ; fa; bg ; s; R), ahol R elemei: s ) asb, s ) ss, s ) ". Mi az L (G)? Azonosítsuk a-t a balzárójellel, b-t pedig a jobb zárójellel! A programozási nyelvek nagy része környezetfüggetlen. A reguláris nyelveknek fontos szerepe van a lexikális analízisnél. A Chomsky-féle hierarchia azt jelenti, hogy a most de niált négy generatív nyelvosztályra fennáll az L 0 L 1 L 2 L 3 tartalmazási reláció. Gra kusan ábrázolva: kifejezés struktúra (L 0 ) nyelvek környezetfüggő (L 1 ) nyelvek környezetfüggetlen (L 2 ) nyelvek reguláris (L 3 ) nyelvek Generatív nyelvek Chomsky-féle osztályozása A négy nyelvosztályba tartozó nyelveket különböz½o tulajdonságú (erej½u) gépekkel (automatákkal, Turing gépekkel, stb.) lehet felismerni. Ezeket a következ½okben tárgyaljuk. 32 FORMÁLIS NYELVEK ÉS AUTOMATÁK

33 4.2. Automaták Az automaták (véges állapotú gép) fogalmát mint egyfajta számítógép modelleket az es évek elején Hu man (1955), Mealy (1955) és Moore (1956) vezették be. Az automaták véges sok bels½o állapottal rendelkez½o speciális gépek, amelyek adott input jel és bels½o állapot esetén meghatározott bels½o állapotba mennek át és egy adott jelsorozatot (szót) szekvenciálisan (lineárisan) dolgoznak fel. Az automatáknak számos típusát de niálták: - Mealy és Moore gépek, - Véges determinisztikus automata, - Véges nemdeterminisztikus automata, - Véletlen automata, - Verem automata, - Lineárisan korlátos automata (szalag korlátos Turing gép). Ezek közül három automata típust ismertetünk Véges determinisztikus automaták De níció: Egy véges determinisztikus automatán az M = (Q; ; ; q 0 ; F ) rendezett elem ötöst értjük, ahol (i) Q 6=? az állapotok véges halmaza, (ii) véges input ábécé, (iii) : Q! Q az állapotátmeneti (következ½o állapot) függvény, (iv) q 0 a kiinduló állapot ( q 0 2 Q), (v) F Q az elfogadó állapotok halmaza. A (q; a) = p egyenl½oség azt jelenti, hogy M a q 2 Q állapotból az a 2 input hatására átvált a p 2 Q állapotba. Tegyük fel, hogy x = x 1 x 2 : : : x n 2 (n = jxj). Az M automata az x szót (inputot) a következ½oképpen dolgozza fel: M a q 0 kezdeti állapotban beolvassa x 1 -et, majd a q 1 = (q 0 ; x 1 ) állapotba kerül. M a q 1 állapotban beolvassa x 2 -½ot, majd a q 2 = (q 1 ; x 2 ) 2 Q állapotba kerül. M a q i állapotban beolvassa x i+1 -et, majd a q i+1 = (q i ; x i+1 ) 2 Q állapotba kerül. M a q n 1 állapotban beolvassa x n -et, majd a q n = (q n 1 ; x n ) 2 Q állapotba kerül. A jelsorozat feldolgozása az n-ik lépésben befejez½odik. Ekkor az automata a q n = (q n 1 ; x n ) végs½o állapotba kerül. Az automata m½uködésének szemléltetéséhez tegyük fel, hogy az x 2 szót egy input szalagon helyezzük el, amelyhez egy, az automatával összekötött olvasófej csatlakozik. Az AUTOMATÁK 33

34 olvasófej beolvas egy karaktert, az automata felveszi a jelt½ol függ½o új állapotát és az olvasó fej eggyel jobbra lép. x i+1 x i+1 x i+2 q i q i+1 De níció: Az M automata elfogadja az x (input)szót, ha a végs½o állapotra q n 2 F teljesül. M elutasítja x-et, ha q n =2 F (azaz q n 2 Q n F ). De níció: Az M automatát teljesnek nevezzük, ha minden (q; a) 2 Q párhoz van olyan p 2 Q állapot, amelybe átválthat. Egy automata m½uködését un. állapot táblázattal, illetve állapot diagrammal is szemléltethetjük. Példa: M = (Q; ; ; q 0 ; F ), ahol Q = fq 0 ; q 1 ; q 2 ; q 3 g, = f0; 1g, F = fq 0 ; q 3 g és (q 0 ; 0) = q 2 ; (q 0 ; 1) = q 1 ; (q 1 ; 0) = q 3 ; (q 1 ; 1) = q 0 ; (q 2 ; 0) = q 0 ; (q 2 ; 1) = q 3 ; (q 3 ; 0) = q 1 ; (q 3 ; 1) = q 2 : A megfelel½o állapot táblázat: Jel Állapot 0 1 q 0 q 2 q 1 q 1 q 3 q 0 q 2 q 0 q 3 q 3 q 1 q 2 A megfelel½o állapotdiagram: 34 FORMÁLIS NYELVEK ÉS AUTOMATÁK

35 1 q 0 q q 2 q 3 1 Az elfogadó állapotokat dupla kör jelöli. Példa: paritásellen½orz½o gép: 0-kat és 1-eket olvas be egy szalagról. Bels½o állapota q 0, ha az addig beolvasott 1-ek száma páros és q 1, ha ezek száma páratlan. Jel Állapot 0 1 q 0 q 0 q 1 q 1 q 1 q q 0 q De níció: Az M automata által elfogadott (felismert) nyelv az L (M) = fw 2 j M elfogadja w-tg halmaz. Az automata által felismert nyelv pontosan azokból a szavakból áll, amelyekre M a kezd½oállapotból valamely elfogadó végállapotba megy át. De níció: Egy L nyelvet felismerhet½onek nevezünk, ha van olyan M véges determinisztikus automata, amelyre L (M) = L. AUTOMATÁK 35

36 Tétel: Ha L 1 és L 2 nyelvek felismerhet½ok egy véges nem determinisztikus automatával, akkor L 1 L 2 is felismerhet½o. Tétel (Kleene): A véges (determinisztikus) automatákkal felismerhet½o nyelvek osztálya megegyezik az L 3 (reguláris) nyelvosztállyal Véges nem determinisztikus automaták De níció: Egy véges nem determinisztikus automatán az M = (Q; ; ; q 0 ; F ) rendezett elem ötöst értjük, ahol (i) Q 6=? az állapotok véges halmaza, (ii) véges input ábécé, (iii) : Q! 2 Q az állapotátmeneti "függvény", (iv) q 0 a kiinduló állapot ( q 0 2 Q), (v) F Q az elfogadó állapotok halmaza. Ha M a p 2 Q állapotban van és az y 2 jelet olvassa be, akkor M állapotátmeneti "függvénye" egy véges (p; y) Q részhalmazt de niál. Az M következ½o állapota ennek tetsz½oleges q 2 (p; Y ) eleme lehet (amelynek nincs rögzített kiválasztási szabálya). Egy egyszer½u példát mutat erre a következ½o állapot diagrammal megadott nem determinisztikus automata: b q 0 a q 1 b a a q 2 b q 3 a,b a Az automata azért nem determinisztikus, mert a q 0 állapotban az a input jel hatására az automata felveheti a q 1, illetve q 3 állapotot is. Vizsgáljuk most a fenti automata számítási fáját a 3 karakter hosszúságú sorozatokon! 36 FORMÁLIS NYELVEK ÉS AUTOMATÁK

37 q 0 a a b q 1 q 3 q 2 a b a b a,b q 3 q 0 q 3 q 2 q 2 a b a a b a b a,b a,b q 3 q 2 q 1 q 3 q 2 q 3 q 2 q 2 q 2 Az abb szó esetén az automata végs½o állapota q 2, amelyhez két úton juthat el: q 0! q 1! q 0! q 2 ; q 0! q 3! q 2! q 2 : Az aba szó esetén több végs½o állapotot is elérhet: q 0! q 1! q 0! q 1 ; q 0! q 1! q 0! q 3 ; q 0! q 3! q 2! q 2 : De níció: Az M = (Q; ; ; q 0 ; F ) véges nem determinisztikus automata az x = x 1 : : : x n 2 inputot elfogadja, ha van az állapotoknak egy olyan véges q k1 ; q k2 ; : : : ; q kn+1 sorozata, amelyre teljesül, hogy: a) minden i n esetén q ki+1 2 (q ki ; x i ) (q k1 = q 0 ), b) q kn+1 2 F. Tétel: A véges nem determinisztikus automaták által elfogadott (felismert) nyelvek megegyeznek a reguláris ( L 3 ) nyelvekkel Verem automaták De níció: Egy véges determinisztikus verem automatán az M = (Q; ; elem hatost értjük, ahol (i) Q 6=? az állapotok véges halmaza, (ii) véges input ábécé, amely tartalmazza a üres jelet, ; ; q 0 ; F ) rendezett AUTOMATÁK 37

38 (iii) véges verem ábécé, amely tartalmazza a # üres jelet, (iv) : Q ( [ f"g) ( [ f"g)! ( [ f"g) (Q [ f"g) az állapotátmeneti függvény, (v) q 0 a kiinduló állapot ( q 0 2 Q), Adott állapotban lév½o veremautomata beolvas egy jelet az input szalagról és a verem tetejér½ol. Meghatározza az új állapotát és a verem memórián végzend½o m½uveletet (pl. verem tetejének törlése, vagy új elem beírása a verem tetejére). Sematikusan: a beolvasandó input olvasófej író/olvasó fej M a verem automata # Formálisan: Tegyük fel, hogy a p 2 Q állapotban beolvasott szalag szimbólum x, a verem tetejér½ol beolvasott szimbólum pedig y. Az állapotátmeneti függvény értéke pedig legyen (p; x; y) = (q; z). Ekkor M az y-t leemeli (törli) a verem tetejér½ol, a q állapotba vált és z-t beírja a verem tetejére. Ha azonban x = ", y = " vagy z = ", akkor ennek megfelel½oen M nem olvassa a szalagot, nem törli a verem tetejét, illetve nem ír a verem tetejére. A szalag olvasófeje mozdulatlan marad, ha x = " és egy hellyel jobbra mozdul, ha x 6= ". A veremautomata m½uködése üres szalag, vagy verem esetén: Ha (p; x; ") = (q; z) (üres verem), akkor a q állapotba kerül és z-t beírja a verem tetejére. Ha (p; x; y) = (q; "), akkor M a q állapotba kerül és y-t leveszi a verem tetejér½ol (nem ír a verembe). Ha (p; "; y) = (q; z) (üres szalag), akkor nem olvas a szalagról, y-t a verem tetejér½ol leemeli, z-t a verem tetejére beírja. Ha (p; "; ") = (q; ") (üres szalag, üres verem), akkor M a q állapotba kerül, nem olvas be a szalagról és nem végez író, vagy olvasó m½uveletet a veremen. De níció: Az M verem automata az x jelsorozatot elfogadja, ha a q 0 kiinduló állapotból és üres veremb½ol kiindulva az x input szó feldolgozásának a végén elfogadó állapotba kerül. Az M veremautomata által elfogadott L (M) nyelv az M által elfogadott szavak halmaza. Vegyük észre, hogy a (p; x; ") = (q; ") esetben a veremautomata a vermet gyelmen kív½ul hagyja és a véges nemdeterminisztikus automatát szimulálja. Ebb½ol azonnal következik az alábbi eredmény. 38 FORMÁLIS NYELVEK ÉS AUTOMATÁK

39 Állítás: A verem automaták elfogadják (felismerik) a reguláris ( L 3 ) nyelveket. A verem automaták ennél azonban jóval többet tudnak, azaz er½osebbek mint az "egyszer½u" automaták. Igaz ugyanis a következ½o Tétel: A veremautomaták által elfogadott (felismert) nyelvek a környezetfüggetlen ( L 2 ) nyelvek. A generatív nyelvek Chomsky hierarchiájára vonatkozó ábránkat a következ½oképpen egészíthetjük ki: kifejezés struktúra (L 0 ) nyelvek környezetfüggő (L 1 ) nyelvek környezetfüggetlen (L 2 ) nyelvek veremautomata reguláris (L 3 ) nyelvek véges determinisztikus automata véges nemdeterminisztikus automata veremautomata Automaták által felismert generatív nyelvek Példa: Legyen M = (Q; ; ; ; s; F ), ahol Q = fs; p; r; fg, = fa; b; c; g, = fa; b; #g, F = ffg. A állapotátmeneti függvényt az alábbi állapotábra adja meg, ahol a p és q állapotok közti él a; b; c cimkéje a (p; a; b) = (q; c) "m½uveletnek" felel meg. AUTOMATÁK 39

40 a,a;ε b,b;ε p a,b;a a,a;a a,ε;a c,ε;ε a,b;ε b,a;ε ß,b;ε ß,a;ε a,#;ε b,#;ε c,ε;ε ß,#;ε Start s ß,ε,ε r b,ε;b b,a;b b,b;b ε,ε;ε ε,ε;ε f Az f az elfogadó állapotot, r pedig az elutasító állapotot jelöli. A (p; x; y) = (q; z) összefüggés helyett alkalmazott (p; x; y; q; z) jelöléssel az állapotábrának megfelel½o állapotátmeneti táblázat a következ½o: állapotátmenet megjegyzés (a) (s; a; "; s; a) verembe írja a-t (s; a; a; s; a) " (s; a; b; s; a) " (b) (s; b; "; s; b) verembe írja b-t (s; b; a; s; b) " (s; b; b; s; b) " (c) (s; c; "; p; ") elfogad? (d) (s; ; "; r; ") elutasít (e) (p; a; a; p; ") elfogad? (f) (p; b; b; p; ") elfogad? állapotátmenet megjegyzés (g) (p; ; #; f; ") elfogad (h) (p; a; b; r; ") elutasít (i) (p; b; a; r; ") elutasít (j) (p; ; a; r; ") elutasít (k) (p; ; b; r; ") elutasít (l) (p; a; #; r; ") elutasít (m) (p; b; #; r; ") elutasít (n) (p; c; "; r; ") elutasít (o) (r; "; "; r; ") elutasító állapoban marad (p) (f; "; "; f; ") elfogadó állapotban marad Megmutatjuk, hogy a veremautomata wcw R alakú palindrom kifejezéseket fogad el, ahol w R a w 2 fa; bg szó fordítottja! A veremautomata mindaddig az s kezd½oállapotban marad, amíg a és b jeleket olvas be. Ezeket a verembe írja az input szalaghoz képest "fordított sorrendben" ((a) és (b) szabály). Ha az s állapotban a c bet½u megjelenik, akkor a veremautomata átmegy a p lehetséges elfogadó állapotba ((c) szabály). Ha a szalagon a üres jel jelenik meg, akkor átmegy az r elutasító állapotba ((d) szabály). Az automata a p állapotban marad mindaddig, amíg a szalagról és a veremb½ol kiolvasott jel megegyezik ((e),(f) szabály). Ha a p állapotban a szalagról és veremb½ol beolvasott jelek különböz½ok, vagy a c (újra) el½okerül, akkor az elutasító r állapotba kerül ((h)- (n) szabályok). Az automata sem ez elfogadó, sem pedig az elutasító állapotból nem lép ki ((o)-(p) szabályok). 40 FORMÁLIS NYELVEK ÉS AUTOMATÁK

41 Példa: Legyen M = (Q; ; ; ; s; F ), ahol Q = fs; p; r; fg, = fa; b; g, = fa; b; #g, F = ff g. A állapotátmeneti függvényt a következ½o állapotábra, b,a;ε p b,#;ε a,ε;a a,a;a b,a;ε ß,a;ε ß,#;ε a,ε;ε Start s b,#,ε r ß,ε;ε ε,ε;ε ε,ε;ε f illetve állapotátmeneti táblázat adja meg: állapotátmenet megjegyzés (a) (s; ; "; f; ") elfogad (b) (s; a; "; s; a) verembe írja a-t (s; a; a; s; a) " (c) (s; b; #; r; ") elutasít (d) (s; b; a; p; ") törli a-t a veremb½ol (e) (p; b; a; p; ") törli a-t a veremb½ol (f) (p; b; #; r; ") elutasít állapotátmenet megjegyzés (g) (p; ; a; f; ") elfogad (h) (p; ; #; f; ") elfogad (i) (p; a; "; r; ") elutasít (j) (f; "; "; f; ") elfogadó állapoban marad (k) (r; "; "; r; ") elutasító állapoban marad Megmutatjuk, hogy a veremautomata az L = fa n b m j n m 0g nyelvet fogadja el! M a kiinduló s állapotban az üres szalag és verem állapotot elfogadja és átmegy az f elfogadó állapotba ((a) szabály). Az a jel hatására az s állapotban marad és a verem tetejére beírja a-t ((b) szabály). A b jel hatására üres verem esetén az s állapotból átmegy az r elutasító állapotba ((c) szabály). Ha a verem nem üres, akkor a-t törli a verem tetejér½ol és átmegy a p állapotba ((d) szabály). Ha a p állapotban b-t olvas be az input szalagról és a van a verem tetején, akkor a p állapotban marad, mert lehetséges, hogy az input kevesebb b-t tartalmaz, mint a-t ((e) szabály). Ha azonban a b beolvasásakor a verem üres, akkor M az elutasító állapotba kerül ((f) szabály). Ha a p állapotban M észreveszi, hogy több a van mint b, akkor elfogadó állapotba megy át ((g),(h) szabály). Ha a p állapotban (tehát egy b jel után) beolvasásra kerül egy a jel, akkor M az inputot elutasítja és az r állapotba megy át. Az automata az elfogadó, vagy elutasító állapot elérése után ezekben az állapotokban marad ((j),(k) szabályok). AUTOMATÁK 41

42 42 FORMÁLIS NYELVEK ÉS AUTOMATÁK

43 5. fejezet Számítási modellek Az algoritmus fogalmának pontos meghatározására igen sokféle matematikai modellt dolgoztak ki. Ezek közül a fontosabbak a következ½ok: - rekurzív függvények (Gödel, 1934) - Turing gépek (Turing, 1936 és részben Post, 1936) - rekurzív függvények (Church, 1936) - parciális rekurzív függvények (Kleene, 1936) - -kalkulus (Church, 1936) - általánosított Turing gépek (Turing, 1939, Leeuw, Moore, Shannon, Shapiro, 1956, Chandra, Stockmeyer, 1976, Kozen, 1976, Burgin, 1992) - neurális hálók (McCulloch, Pitts, 1943) - von Neumann automata (sejtautomata) (John von Neumann, 1949) - Kolmogorov algoritmusok (1953) - véges automata (McCulloch, Pitts, 1943, Mealy, 1953, Kleene, 1956, Moore, 1956, Rabin, Scott, 1959, stb.) - Minsky gépek (Minsky, 1967) - memória-módosító gépek (Schönhage gépek, Schönhage, 1980) - RAM (Sheperdson, Sturgis, 1963), RASP (Elgot-Robinson, 1964), PRAM - Petri hálók (Petri, 1962) - vektor gépek (Pratt, Rabin, Stockmeyer, 1974) - Post szorzatok (Post, 1943) - normális Markov algoritmusok (Markov, 1954) - formális nyelvek (Chomsky, 1956, Backus, 1959, Naur, 1960) - stb. A sokféle számítási modell közül a következ½oket vizsgáljuk: - Turing gépek, - RAM gép, - logikai hálózatok (Boole áramkörök). Ezeket tekintjük ma alapvet½o modelleknek. SZÁMíTÁSI MODELLEK 43

44 5.1. Turing gépek A Turing gép (T ) olyan véges sok bels½o állapotú gép, amelynek két f½o komponense van: - egy végtelen, egy elem½u cellákra osztott input/output szalag mindkét irányban (L=bal, R=jobb, N=nem mozdul) mozgó író/olvasó fejjel, - véges állapotú vezérl½o egység. A végtelen szalag egy végtelen memória modellnek felel meg. A Turing gép egy elemi m½uvelete a gép bels½o állapotától és az iró/olvasó fej aktuális helyzetéhez tartozó cella jelét½ol függ. Az elemi m½uvelet összetev½oi: - T állapotot vált, - jelet ír az aktuális cellába, - elmozdítja a fejet egy cellával jobbra (R), vagy balra (L), vagy helyben hagyja (N). A Turing gép m½uködését az alábbi ábrával szemléltethetjük: i n s x 1 x 2... x i 1 x i x i+1... x n # #... végtelen szalag író/olvasó fej vezérlő egység (program) Az s jel a szalag baloldali végjele (tkp. kezd½ojel), a fej nem léphet az s jelt½ol balra. A # szimbólum az üres helyet jelöli. A szalag jobbra végtelen (mindkét irányban végtelen szalagú T gépet is szokás de niálni). A Turing gép formális de níciója a következ½o. De níció: Egy determinisztikus Turing gépen ( T ) az T = (Q; ; #; s; ; q 0 ; q A ) rendezett elem hetest értjük, ahol (i) Q 6= ; az állapotok halmaza, (ii) az input (szalag) ábécé, (iii) # =2 az üres jel, (iv) s =2 az input szalag baloldali végjele, (v) : Q ( [ f#; sg)! Q ( [ f#; sg) fl; R; Ng állapotátmeneti függvény, amelyre teljesül, hogy (p; s) 2 Q fsg fr; Ng (8p 2 Q n fq A g) ; (5.1) (vi) q 0 2 Q a kiinduló állapot, (vii) q A 2 Q elfogadó állapot. 44 SZÁMíTÁSI MODELLEK

45 Ha T a p 2 Q állapotban van és az Y 2 jelet olvassa be, akkor T elemi m½uvelete: (p; Y ) = (q; X; Z) (q 2 Q; X 2 ; Z 2 fl; R; Ng) ; (5.2) ahol a T gép - a q állapotba vált, - az Y jelet felülírja az X jellel, - az iró/olvasó fej Z irányba mozdul. A (5.1) tulajdonság fejezi ki, hogy a T gép az s balvégjelet nem írhatja felül és attól balra nem léphet. Ekkor ugyanis csak (p; s) = (q; s; R) vagy (p; s) = (q; s; N) lehetséges, ahol q 2 Q. Megjegyzés: A Turing gépet szokás úgy is de niálni, hogy az iró/olvasó fej mindig jobbra, vagy balra lép. A mindkét irányban végtelen szalaggal de niált Turing gépeknél a szalagon van egy kitüntetett 0-val jelölt kezd½ocella. Egyik megkötés sem jelent azonban érdemi megszorítást. Megjegyzés: A Turing gép egy érdekes változata E.L. Post gépe (1947), amely abban különbözik Turing gépét½ol, hogy nem lehet egyszerre írni és lépni ugyanabban az elemi m½uveletben. Adott x 2 input feldolgozását T a q 0 induló állapotban az els½o cellánál kezdi. Ha az input feldolgozása során T a q A elfogadó állapotba kerül, akkor megáll és az inputot az iró/olvasó fej helyzetét½ol függetlenül elfogadja. Ha T -nek van olyan q 6= q A állapota, hogy T megáll (azaz a q állapotból nem tud kijutni), akkor T elutasítja az inputot. El½ofordulhat az is, hogy adott input szóra T nem áll meg. De níció: A T Turing gép az x inputot (szót) elfogadja, ha véges sok lépésben a q A elfogadó állapotban megáll. T az x inputot elutasítja, ha nem áll meg, vagy nem a q A állapotban áll meg. De níció: A T Turing gép által elfogadott nyelv azon szavak halmaza, amelyeket T elfogad (felismer), azaz L (T ) = fw 2 j T elfogadja w-tg : A T Turing gép által kiszámított függvényt (a T "programfüggvénye") úgy de niáljuk, hogy adott x input szó esetén a függvény értéke az a w szó, amely megállás után a szalagon van az s és az els½o üres jel között. A Turing gép által kiszámított függvény parciális, ha T nem áll meg legalább egy input szón (a függvény itt nincs értelmezve), egyébként pedig teljes. De níció: A T Turing gép az F :! függvényt kiszámítja, ha minden x 2 esetén T (véges sok lépés után) a q A állapotban áll meg úgy, hogy a szalagon az s balvégjel után F (x) áll. Az F :! függvényt kiszámíthatónak (rekurzívnak) nevezzük, ha létezik egy T Turing gép amely az F függvényt a most de niált értelemben kiszámítja. Vegyük észre, hogy a Turing gép "programfüggvénye" nem feltétlenül kiszámítható a de nícióbeli értelemben. Példa (paritásellen½orz½o gép): Konstruáljunk olyan két állapotú Turing gépet, amely 1-esek véges sorozatait olvassa be, a q 0 állapotban áll meg, ha az egyesek száma páros és a q 1 állapotban áll meg, ha az egyesek száma páratlan. Ekkor = f1g, Q = fq 0 ; q 1 g. Kiinduláskor az egyesek száma 0 és a gép induló állapota q 0. Ha a gép beolvas egy 1 jelet, akkor az egyesek száma páratlanra változik és a gép átmegy a TURING GÉPEK 45

46 q 1 állapotba. Ha a q 1 állapotban beolvasásra kerül egy 1 jel, akkor az egyesek száma párosra változik és a gép átmegy a q 0 állapotba. A keresett Turing gép állapot(átmeneti) táblázata: jel állapot 1 # q 0 (q 1 ; 1; R) (q 0 ; #; N) q 1 (q 0 ; 1; R) (q 1 ; #; N) A Turing gépeket állapotdiagrammal a következ½oképpen szemléltethetjük ( (p; Y ) = (q; X; Z)): p (Y,X,Z) q A példa Turing gépének állapot diagramja: (1,1,R) (#,#,N) (#,#,N) q 0 q 1 (1,1,R) Példa (paritásellen½orz½o gép): Konstruáljunk olyan Turing gépet, amely 0; 1 sorozatokat olvas be, kimenete E, ha az 1-esek száma páros és D ha páratlan. A 0; 1 sorozatok el½ott s, utána pedig # áll. Esetünkben = f0; 1g, Q = fq 0 ; q 1 ; q 2 g. A konstrukció azon alapul, hogy egy input jel beolvasásakor T a q 1 állapotba vált, ha az 1-esek számának párossága nem változik (kiinduláskor ezek száma 0 és a 0 páros szám). T a q 2 állapotba vált, ha az 1-esek számának párossága változik. A keresett Turing gép állapot(átmeneti) táblázata: jel állapot s 0 1 # q 0 (q 0 ; s; R) (q 1 ; 0; R) (q 2 ; 1; R) q 1 (q 1 ; 0; R) (q 2 ; 1; R) (q 1 ; E; N) q 2 (q 2 ; 0; R) (q 1 ; 1; R) (q 2 ; D; N) A most de niált T gép állapot diagramja: 46 SZÁMíTÁSI MODELLEK

47 (#,E,N) q 1 (0,0,R) (0,0,R) (s,s,r) q 0 (1,1,R) (1,1,R) (1,1,R) q 2 (0,0,R) (#,D,N) Állítás : A Turing gép többet tud mint az automata. Minden M = hq; ; ; q 0 ; F i automatához tudunk olyan T gépet konstruálni, amely az automatát szimulálja. A T állapotátmeneti függvénye legyen e (p; Y ) = ( (p; Y ) ; Y; R), : : : x 1... x n x 1... x n # M T Végül de niáljuk a Turing gép id½o- és tárigényét. De níció: Egy T Turing gép id½oigénye az a time T (n) függvény, amely a gép lépésszámának maximumát adja meg n hosszúságú bemenetek esetén. De níció: Egy T Turing gép tárigénye az a space T (n) függvény, amely n hosszúságú bemenetekre a gép szalagjaira kiírt különböz½o mez½ok maximális száma. Fel szokás tenni, hogy time T (n) n és space T (n) Turing gépek programozása A Turing gép programozása a szalagábécé és a véges sok állapotból álló vezérl½o egység (állapot táblázat és/vagy diagram) megtervezését jelenti. A következ½o egyszer½u példák némi betekintést adnak a Turing gépek "programozásába" TURING GÉPEK 47

48 Az els½o példa f0; 1g ábécé feletti Turing gépe addig mozgatja a fejet jobbra, amíg egy # üres jelet nem talál és megáll. A gép állapottáblázata: A gép állapot diagramja: jel állapot s 0 1 # q 0 (q 0 ; s; R) (q 0 ; 0; R) (q 0 ; 1; R) (q 0 ; #; N) (1,1,R) (0,0,R) q 0 (#,#,N) A második példánkban ezt a gépet úgy módosítjuk, hogy a # jel megtalálásakor a fej egyet visszalépjen, ezt a (# el½otti utolsó) jelet helyettesítse egy # üres jellel és álljon meg. A feladatnak legalább 1 hosszúságú szó esetén van értelme. Azt a tényt, hogy legalább egy hosszúságú a beolvasott szó, külön állapottal jelöljük. A szó utolsó karakterének # jellel történ½o felülírásához és az utána történ½o megálláshoz egy harmadik állapotot használunk. A Turing gép állapot táblája és állapot diagramja a következ½o: jel állapot s 0 1 # q 0 (q 0 ; s; R) (q 1 ; 0; R) (q 1 ; 1; R) (q 0 ; #; N) q 1 (q 1 ; 0; R) (q 1 ; 1; R) (q 2 ; #; L) q 2 (q 2 ; #; N) (q 2 ; #; N) (1,1,R) (#,#,N) (0,0,R) q 1 (0,0,R) q 0 (1,1,R) (#,#,L) (0,#,N) q 2 (1,#,N) Mindkét Turing gép F : f0; 1g! f0; 1g típusú karakter függvényeket számít ki. Az els½o esetben F (x) = x. A második esetben F (x) = y, ha x = y alakú, ahol 2 f0; 1g. Az y rész hosszára jyj 0 teljesül. 48 SZÁMíTÁSI MODELLEK

49 Feladat: Hogyan módosul a fenti két Turing gép, ha a szalag input ábécéje csak egy jelb½ol (pl. 1) áll? És hogyan módosulnak akkor, ha a Turing gép csak jobbra, vagy balra léphet, kivéve egy megállító állapotot. Hasonlítsuk össze a megfelel½o állapot diagramokat is! Harmadik példánk szalagábécéje legyen fa; bg és tegyük fel, hogy legalább egy hosszúságú szavakat dolgozunk fel. A tervezend½o Turing gép minden x 2 fa; bg (jxj 1) input szóhoz számítsa ki a #x outputot, azaz valósítsa meg az F (x) = #x (jxj 1) parciális függvényt. Tételezzünk fel négy állapotot: q 0 ; q 1 ; q 2 ; q 3. A q 0 állapotban a gép beolvassa x els½o karakterét. Ha ez a, akkor írjon ki egy # jelet, lépjen jobbra és váltson a q 1 állapotba. Ha az els½o karakter b, akkor is írja ki a # jelet, lépjen jobbra és váltson a q 2 állapotba. A továbbiakban a q 1 állapot jelentse azt hogy a fej aktuális pozíciója el½otti karakter a volt. A q 2 állapot pedig azt, hogy a fej aktuális pozíciója el½otti karakter b volt. Mármost, ha a gép a q 1 állapotban a jelet olvas be, akkor írjon ki a-t (az egy cellával korábbi jelet), lépjen jobbra és maradjon a q 1 állapotban (mert az aktuális pozícióban a van). Ha a q 1 állapotban b jelet olvas be, akkor írjon ki a-t (az egy cellával korábbi jelet), lépjen jobbra és váltson a q 2 állapotba (mert az aktuális pozícióban b van). Hasonló okoskodással kapjuk, hogy ha a q 2 állapotban beolvasott jel a, akkor a gép írjon ki egy b jelet (az egy cellával korábbi jelet), lépjen jobbra és váltson a q 1 állapotba. Ha a q 2 állapotban beolvasott jel b, akkor a gép írjon ki egy b jelet (az egy cellával korábbi jelet), lépjen jobbra és maradjon a q 2 állapotban. Ha a q 1 és q 2 állapotok bármelyikében beolvasott jel a # üres jel, akkor az állapotnak megfelel½o a vagy b jellel írja felül a # jelet, lépjen jobbra és váltson a q 3 állapotba. A most leírt Turing gép állapot diagramja a következ½o: (a,a,r) (a,#,r) q 1 (#,a,r) q 0 (a,b,r) (b,a,r) q 3 (b,#,r) q 2 (#,b,r) (b,b,r) A bemutatott példák azt is illusztrálják, hogy nem könny½u a Turing gépek programozása (ill. adott feladathoz Turing gép tervezése). Több olyan sémát is kidolgoztak, amely a Turing gép programozását segíti el½o, akár "szubrutinok" felhasználásával is. Ilyen sémák találhatók például Trahtenbrot, vagy Aho, Motwani és Ullman könyveiben. Schönhage és munkatársai az un. TPAL nyelvet fejlesztették ki Turing gépek számítógépes implementálására és programozására. Kisebb Turing gépeket a neten elérhet½o demo programokkal lehet létrehozni és vizsgálni. TURING GÉPEK 49

50 Feladat: Legyen Q = fq 0 ; q 1 ; q 2 g, = f0; 1; 2; 3; 4; 5; 6; 7; 8; 9g, q A = q 0. A gép állapot diagramja a következ½o: (1,1,R) (4,4,R) (7,7,R) (2,2,R) (5,5,R) (8,8,R) q 1 (0,0,R) (3,3,R) (6,6,R) (9,9,R) (0,0,R) (3,3,R) (6,6,R) (9,9,R) q 0 (1,1,R) (4,4,R) (7,7,R) (2,2,R) (5,5,R) (8,8,R) (1,1,R) (4,4,R) (7,7,R) (2,2,R) (5,5,R) (8,8,R) q 2 (0,0,R) (3,3,R) (6,6,R) (9,9,R) Mit csinál ez a Turing gép? Mit tesz a 2718 és szavakkal? Feladat: Tervezzünk olyan Turing gépet, amelyik összead két unáris kóddal megadott pozitív egész számot és az eredményt unárisan írja ki! 5.2. A Turing gép kiterjesztései A Turing gépnek számos általánosítása van: k-szalagos (k 1) T gép (Hartmanis, Stearns), Turing gépek mindkét irányban végtelen szalagokkal, Turing gépek 2D szalagokkal, Turing gépek több iró/olvasó fejjel minden egyes szalagon (párhuzamos T gép), nem determinisztikus Turing gépek, véletlen elérés½u Turing gépek, orákulum Turing gépek, alternáló többszalagos Turing gépek, stb. A k-szalagos Turing gép sémája: 50 SZÁMíTÁSI MODELLEK

51 s t t szalag s t t szalag program s t t szalag... s t t... k ik szalag Az összes író/olvasó fej az alapmodellnél látott módon m½uködik. A programvezérl½o egység a szalagokat szimultán kezeli. Az orákulum Turing gép (Turing, 1939) egy többszalagos Turing gép, amelynek van egy speciális orákulum szalagja és egy hozzárendelt h : B! B orákulum függvénye, amely az orákulum válaszait adja meg. input szalag... Vezérlő egység... munka szalag... orákulum szalag output szalag... Ha az orákulum szalagra egy z szót írunk, akkor a Turing gép jelez az orákulumnak, hogy helyettesítse a z szót a h (z) szóval. Egy input feldolgozása alatt akárhányszor az orákulumhoz lehet fordulni. Az orákulum T gép id½ofüggvényében egy orákulummal való konzultáció egy lépésnek számít. A tárigény számításánál az orákulum szalagot nem vesszük gyelembe. De níció: Az A és B Turing gépeket ekvivalensnek nevezzük, ha minden x 2 input esetén fennállnak a következ½ok: (i) A akkor és csak akkor fogadja x-et, ha B is elfogadja, (ii) A akkor és csak akkor utasítja el x-et, ha B is elutasítja, A TURING GÉP KITERJESZTÉSEI 51

52 (iii) A számítása akkor és csak akkor végtelen x-en, ha B számítása is végtelen x-en. Tétel: A többszalagos és az egy szalagos Turing gépek ekvivalensek. Ezt az ekvivalenciát a kés½obbiekben kissé pontosítjuk. Megjegyezzük azonban, hogy az egyszalagos Turing gép ekvivalenciája más Turing gép modellekkel is fennáll. Ezeket azonban itt nem tárgyaljuk Regiszter gépek és a RAM modell A regiszter gépek olyan számítási modellek, amelyek véges, vagy végtelen sok memória regiszterb½ol és véges sok utasításból állnak. A regiszter gépeket különféle formákban els½oként Shepherdson és Sturgis, Elgot és Robinson, valamint Minsky javasolta. Minsky regiszter vagy program gépe véges sok memória regiszterb½ol áll, amelyen egy vezérl½o egység m½uveleteket (utasításokat) végez. A memória regiszterek tartalma tetsz½oleges nagy egész szám lehet. A gép sematikus ábrája a következ½o: Vezérlő egység R 0 R 1 R 2 R 3 író/olvasó fej... regiszterek (véges sok, tetszőlegesen hosszú egész számokat tárolnak) R N A regisztereket és tartalmukat is ugyanazzal a jellel (pl. R i az i-edik regiszter) azonosítjuk. A gép programja utasítások sorszámozott sorozata. Egy utasítás összetev½oi: (1) a m½uvelet neve; (2) a regiszter neve; (3) egy vagy két utasítás sorszáma. A Minsky gép vezérl½o egységének utasításai: Jelölés Név Példa Jelentés 0 "zero" a 0 az a regisztert kinullázza 0 "successor" a 0 1-t ad az a regiszter tartalmához "decrement or jump" a (n) Ha a 6= 0, akkor a := a 1. Ha a = 0, akkor GOTO n H "Halt" H Megállás Általában egy utasítás végrehajtása után a program kontroll a következ½o utasításra megy át. Az a (n) utasításnál az n-edik sorra ugrik a vezérlés, ha a tartalma zérus. 52 SZÁMíTÁSI MODELLEK

53 Feladat: Tegyük fel, hogy gépünknek három regisztere (a; b; w) van és vizsgáljuk a következ½o programot: Utasítás sorszáma Utasítás 1 b 0 2 a (7) 3 b 0 4 b 0 5 w 0 6 w (2) 7 H Mi lesz a regiszterek tartalma megálláskor, ha induláskor a = 2, b = 3 és w = 5? A Minsky-féle regiszter gépet ma már egy modernebb jelölésrendszerrel programnyelvi formában szokás megadni. A Minsky, majd Davis és Weyuker által de niált L nyelvnek 3 utasítása van: x =: x + 1, x := x 1, és if x 6= 0 goto A. Az L nyelvet szokás a regisztergépek redukált programnyelvének is nevezni. Ennek ekvivalens változata a SMALL nyelv, amelyben: - a változók latin kisbet½uk, - az utasítások cimkézettek, - a megengedett utasítások: - x := x + 1, - x := x 1, - if x = 0 then goto cimke, - halt (x). Itt x tetsz½oleges változót jelöl, a halt (x) utasítás megállítja programot x értékével mint outputtal. Az alábbi SMALL program összead két számot. program add(x,y); 1: z := 0; 2: if y = 0 then goto 6; 3: x := x + 1; 4: y := y 1; 5: if z = 0 then goto 2; 6: halt (x) Megjegyezzük, hogy Shepherdson és Sturgis regiszter gépekhez kifejlesztett hasonló "egyszer½u nyelvében" (simple language) az utasítások (X := 0, X := succ (Y ), X := pred (Y )) nem cimzettek, azokat a ";" jel választja el és a goto utasítás helyett while ciklus van. A RAM (Random Access Machine) gépek a regisztergépek osztályába tartoznak és számos változatuk van (lásd például Aho-Hopcroft-Ullman könyvét). Itt és most Cook és Reckhow (1973) RAM gépét ismertetjük. A RAM gép olyan véges program, amely végtelen sok memória regiszteren végez m½uveleteket. A regiszterek tartalma tetsz½oleges egész szám (pozitív, negatív, zérus) lehet. A regiszterek tartalmát az R 0 ; R 1 ; R 2 ; : : : sorozat jelöli. Adott még az dlog jnje + 1; ha jnj 2; ` (n) = 1; ha jnj < 2: REGISZTER GÉPEK ÉS A RAM MODELL 53

54 függvény, amely az n szám tárolásának idejét mutatja közelít½oleg. ` (n) tulajdonképpen az n szám kettes számrendszerbeli hossza. Itt feltételezzük, hogy az utasítás végrehajtásának id½o költsége az utasítás operandusának kettes számrendszerbeli hosszával arányos. A RAM gép lehetséges utasításait és végrehajtási idejüket az alábbi táblázat tartalmazza: Utasítás Végrehajtási id½o R i C, C tetsz½oleges egész 1 R i R j + R k ` (R j ) + ` (R k ) R i R j R k ` (R j ) + ` (R k ) R i R Rj ` R Rj + ` (Rj ) R Ri R j ` (R i ) + ` (R j ) GOTO m if R j > 0 ` (R j ) Read X i ` (input) Print R i ` (R i ) Normálisan a program kontroll egy utasítás sorról a következ½ore megy át. A GOTO utasítás a kontrollt az m-edik sorra adja át, ha R j > 0. A Read R j utasítás a soron következ½o input számot beírja az R j regiszterbe. Print R j az R j tartalmát kiírja egy kimeneti szalagra. Az R i R Rj indirekt utasítás az R j -ik regiszter tartalmát beírja R i -be, ha R j 0. Az R Ri R j utasítás értelmezése hasonló. Az indirekt utasításokra azért van szükség, hogy egy rögzített program korlátlan számú regisztert elérhessen. A RAM program az els½o utasítástól indul, amikor is az összes regiszter tartalma zérus. Akkor áll meg, ha a vezérlés átkerül egy olyan sorra, melyben nincs utasítás, illetve, ha egy negatív indirekt címet érzékel. Input szalag x 1 x 2 x 3... x n olvasófej Vezérlő egység R 0 R 1 R 2 R 3 író/olvasó fej... memória regiszterek (végtelen sok, tetszőlegesen hosszú egész számokat tárolnak) output szalag írófej y 1 y 2 y 3 Legyen = fx 1 ; x 2 ; : : : ; x p g egy véges ábécé és A adott halmaz (nyelv). Azt vizsgáljuk, hogy mennyi id½o kell a RAM programnak az A halmaz felismerésére. Egy x = x i1 x i2 : : : x in (x ij 2 ) szót a gépnek az i 1 ; i 2 ; : : : ; i n ; 0 egészek sorozataként adjuk meg, ahol a 0 a jelsorozat végét jelzi. A gépnek n + 1 Read utasítást kell végrehajtania a jelsorozat beolvasásához. A 54 SZÁMíTÁSI MODELLEK

55 gép elfogadja x-et, ha az 1-et kinyomtatja és megáll. Elutasítja x-et, ha a 2-t nyomtatja ki és megáll. A számítási id½o a számítás összes lépésének a fenti táblázat szerint számolt együttes ideje. De níció: Az M RAM gép az A halmazt T (n) id½o alatt felismeri, akkor és csak akkor, ha minden x 2 szó esetén M megáll az x inputon T (jxj) ( jxj = n) id½o alatt és elfogadja x-et, ha x 2 A, vagy elveti x-et, ha x =2 A Boole-függvények és logikai hálózatok A logikai kapu egy olyan zikai eszköz, amely egy Boole függvényt valósít meg. Azokat az áramköröket, amelyekben a m½uveletek logikaiak, logikai áramkörnek nevezzük. A logikai áramkör (hálózat) egy olyan irányított aciklikus gráfnak felel meg, amelyben a szögpontok az input szögpontok kivételével logikai kapuk. Logikai kaput sokféle technológiával lehet el½oállítani. A következ½o ábrán AND és OR kapuk megvalósítása látható egyszer½u eszközök (elem, izzólámpa, kapcsolók) segítségével. x + x y x 1 y + y x 2 y A változók értéke 1, ha a jelölt kapcsoló zárva van és 0, ha nyitva. A valamivel bonyolultabb (x _ y) ^ z függvényt megvalósító áramkör a következ½o: 1 x y z z 2 + x y Az ábrákon jelezzük az áramköröknek megfelel½o logikai szimbólumukat is. A logikai áramkörök un. straight-line (lineáris) programokat hajtanak végre, azaz olyan programokat, amelyek csak értékadó utasításokat (input, output, számítás) tartalmaznak, de nem tartalmaznak ciklust és elágazást. Az áramkör csúcsaihoz rendeljük a program lépéseket, az élek pedig a programlépések közti kapcsolatokat. BOOLE-FÜGGVÉNYEK ÉS LOGIKAI HÁLÓZATOK 55

56 A logikai áramköröket a méretükkel (csúcsok száma) és mélységükkel (az élekben kifejezett leghosszabb út hossza) jelemezzük. A Boole-függvények, ill. logikai áramkörök (hálózatok) ötlete Claude Shannon-tól származik: Claude Shannon ( ) De níció: A Boole-hálózat (logikai áramkör) egy aciklikus (irányított kört nem tartalmazó) irányított gráf, amelyre igazak a következ½ok: - minden pontjának be-foka legfeljebb 2, ki-foka tetsz½oleges, - a 0 be-fokú pontokhoz vagy egy változó, vagy a 0 konstans, vagy az 1 konstans van hozzárendelve, a változónévvel ellátott pontot bemeneti pontnak nevezzük, - minden 0-nál nagyobb be-fokú pontot kapunak nevezzük - az 1 be-fokú pontokhoz (kapukhoz) a NOT címkét rendeljük, - a 2 be-fokú pontokhoz (kapukhoz) az AND vagy OR címkéket rendeljük, - a 0 ki-fokú pontokat kimen½o pontoknak nevezzük. Egy n bemenettel és m kimenettel rendelkez½o Boole áramkör sematikusan ábrázolva: x 1 x 2 x 3 x 4... x n z 1 z 2... z m 56 SZÁMíTÁSI MODELLEK

57 Egy Boole áramkör, amelynek n input és m output pontja van, valamilyen f : f0; 1g n! f0; 1g m függvényt valósít meg. De níció: Az áramkör mérete: az ^ és _ kapuk száma. De níció: Az áramkör mélysége: egy bemenet csúcstól egy kimenet csúcsig vezet½o utak maximális hossza. De níció: Az f : f0; 1g n! f0; 1g leképezést megvalósító áramkör elfogadja az x 1 : : : x n 2 f0; 1g n szót, ha a kimeneten teljesül, hogy f (x 1 ; : : : ; x n ) = 1. Példa: f (x 1 ; x 2 ; x 3 ; x 4 ) = x 1 x 2 x 3 x 4 (egy lehetséges) megvalósítása: x 1 x 2 x 3 x o XOR áramkörök o A Boole-hálózatok alapvet½oek a gyakorlatban, ugyanakkor hátrányuk, hogy az input és a Boole hálózat mérete kötött (az alkalmazásokra nézve lásd pl. Savage könyvét). A Boole-hálózatok nagyon bonyolultak lehetnek. Tegyük fel, hogy egy Boole-áramkör az f : f0; 1g n! f0; 1g fügvényt számolja ki s mérettel és d mélységgel. Ekkor elég nagy n-re fennáll, hogy s 2n n, d n + dlog 2 ne + 1: (5.3) 5.5. Számítási modellek ekvivalenciája A fejezetben bemutatott számítási modellek erejüket, a kiszámítható függvények (eldönthet½o feladatok) osztályát tekintve ekvivalensek a klasszikus egyszalagos Turing géppel és így egymással is. Az egy- és többszalagos Turing gépek ekvivalenciáját korábban már kimondtuk. Ezt az ekvivalenciát pontosítjuk néhány eredmény idézésével. SZÁMíTÁSI MODELLEK EKVIVALENCIÁJA 57

58 Tétel: Legyen T egy k-szalagos Turing gép. Van olyan egyszalagos T 0 Turing gép, amelyre L (T ) = L (T 0 ), továbbá time T 0 (n) 2time 2 T (n), space T 0 (n) space T (n) + n. Ha egy helyett két szalagot engedünk meg, akkor a szimuláció gyorsabb lesz. Tétel: A T k-szalagos Turing géphez megadható olyan 2-szalagos T 0 Turing gép, amelyre L (T ) = L (T 0 ), továbbá time T 0 (n) = O (time T (n) log time T (n)) és space T 0 (n) space T (n) + n. Megmutatható, hogy a Turing gép ekvivalens a Minsky-féle regiszter géppel is (lásd pl. Minsky könyvét). A többszalagos Turing gép és a RAM gép ekvivalensek a következ½o értelemben. Tétel: a) Ha egy A halmazt a P RAM gép T (n) > n id½o alatt felismeri, akkor van olyan többszalagos Turing gép, amely A-t felismeri (T (n)) 2 id½on belül. b) Fordítva, ha egy Turing gép az A halmazt felismeri T (n) n id½o alatt, akkor van olyan RAM gép, amely A-t felismeri O (T (n) ` (T (n))) id½o alatt. A Boole-hálózatok és Turing gépek viszonyát a következ½o eredménnyel jellemezzük. Tétel: Minden (mindkét irányban végtelen) többszalagos T Turing géphez és minden n; N 1 számpárhoz van olyan n bemenet½u, O (N 2 ) méret½u, O (N) mélység½u, legfeljebb 2 be-fokú Boolehálózat, mely egy (x 1 ; x 2 ; : : : ; x n ) 2 f0; 1g n bemenetre akkor és csak akkor számol ki 1-et, ha az x 1 x 2 : : : x n bemenetre a T Turing gép N lépése után az els½o szalag nulladik cellájában 1 áll. A most kimondott tételeknél élesebb eredmények is ismertek. A bemutatott eredmények azonban jelzik a klasszikus Turing modell fogalmi erejét és központi szerepét a nagyszámú számítási modell között Univerzális Turing gépek Eddig azt láttuk, hogy különböz½o algoritmusokhoz (programokhoz) különböz½o Turing gépeket kellett terveznünk. Turingtól származik az univerzális Turing gép ötlete, amely szimulálja az összes többi Turing gépet. Az univerzális "T ; x" Turing gép két részb½ol áll: - az interpretálandó program (a T gép leírása), - az interpretálandó gép tetsz½oleges x 2 bemenete. Az univerzális gép az T leírását (kódját) értelmezve lépésr½ol lépésre utánozza T m½uködését az x bemeneten. Turing igazolta, hogy van ilyen univerzális Turing gép. Ebb½ol az is következik, hogy minden Turing gépek által megoldható feladatot egy univerzális Turing géppel is megoldhatunk. Az univerzális gép konstruálásához az els½o teend½onk a T gépb½ol véges adatot csinálni. Az alábbiakban megadjuk a Turing gépek egy lehetséges kódolását. Legyen T = (Q; ; #; s; ; q 0 ; q A ) egy tetsz½oleges Turing gép, ahol Q = fq 0 ; q 1 ; : : : ; q m ; q A g ; [ f#; sg = fa 1 ; A 2 ; : : : ; A r g : 58 SZÁMíTÁSI MODELLEK

59 Az egyes jelek f0; 1g -beli kódjai legyenek a következ½ok: kod (q i ) = 10 i+1 1 (i = 0; 1; : : : ; m) ; kod (q A ) = 10 m+2 1; kod (A j ) = 110 j 11 (j = 1; : : : ; r) ; kod (N) = ; kod (R) = ; kod (L) = : Vegyük észre, hogy itt 0 j a j hosszúságú 00 : : : 0 sorozatot jelenti! A (p; A l ) = (q; A j ; ) állapotátmenetek kódját a kod ( (p; A l )) = #kod (p) kod (A l ) kod (q) kod (A j ) kod () # el½oírással képezzük az összes szóbajöv½o p 2 Q, l; j 2 f1; : : : ; rg és 2 fl; R; Ng értékre. Ezután T gép kódját a következ½o módon de niáljuk: az állapotok jqj száma, a munka ábécé szimbólumainak j j száma, az összes állapotátmenet felsorolása. Tehát kod (T ) = #0 m+2 #0 r ##kod (állapotátmenet 1 ) #kod (állapotátmenet 2 ) # : : : : Így minden T gépet egy w 2 szóval írunk le. Tetsz½oleges w 2 szóhoz legfeljebb egy T gép tartozhat: T w, amelynek kódja w. A w kód ismeretében az T w gép jellemz½oi algoritmussal megkaphatók. A következ½o gyengébb tételt igazoljuk. Tétel: Van olyan 3-szalagos U univerzális Turing gép, amelyre teljesül a következ½o: ha w; x 2, és T w létezik, akkor az U gép a w#x bemenetet pontosan akkor fogadja el (utasítja el, kerül vele végtelen ciklusba), ha T w az x bemenetet elfogadja (elutasítja, végtelen ciklusba kerül vele). Bizonyítás (vázlat): Az egyszer½uség kedvéért egy (p; a)! (q; b; Z) állapotátmenetet a fenti kód helyett jelöljünk a (p; a; q; b; Z) elemötössel. A T w gép kódja tulajdonképpen a (p; a; q; b; Z) elemötösök sorozata. A háromszalagos U univerzális gépet (interpretert) a következ½oképpen de niáljuk: - U els½o szalagja (S 1 ) T w bemenetét, az x szót tartalmazza. - U második szalagja (S 2 ) T w leírását tartalmazza, azaz az összes (p; a; q; b; Z) elemötös sorozatát. - U harmadik szalagja (S 3 ) a T w aktuális állapotát és az els½o szalagról az aktuális állapotban beolvasott jelet tartalmazza (p; a) pár formájában. UNIVERZÁLIS TURING GÉPEK 59

60 x S 1 S... 1 x... T w U S 2... w S 3... (p,a) Kiinduláskor a harmadik szalag csak a (q 0 ; s) párt tartalmazza. A (p; a) párban a elvileg felesleges, mert az els½o szalag tartalmazza. Azonban a (p; a; q; b; Z) elemötös azonosítását megkönnyíti. Az U univerzális Turing gép (interpreter) "programjának" f½o ciklusa a következ½o: while p 6= q A do begin 1) Keressük meg az aktuális (p; a) párnak megfelel½o (p; a; q; b; Z) elemötöst a második (S 2 ) szalagon! 2. Irjunk b-t az els½o (S 1 ) szalagra, hajtsuk végre a Z m½uveletet az S 1 iró/olvasó fején, olvassuk be a következ½o a 0 jelet S 1 -r½ol! 3. Irjuk a (q; a 0 ) párt a harmadik (S 3 ) szalagra! end A megállási feltétel T w de níciójától függ. Az U univerzális Turing gép csupán másolási és mintaillesztési m½uveleteket végez. Turing eredetileg egyszalagos univerzális Turing gép létezését igazolta. Tétel (Shannon, 1956): Létezik 2 (bels½o) állapotot és 2 jelet ( f0; 1g) használó egyszalagos univerzális Turing gép. Shannon bizonyítása konstruktív. Shannon igazolta azt is, hogy nem létezik 1 bels½o állapotú univerzális Turing gép. Minsky 1962-ben egy 7 állapotú 4 jelet használó univerzális Turing gépet konstruált. Azóta számos "kis" univerzális Turing gépet konstruáltak és verseny is volt (van) a legkisebb univerzális Turing gép megkeresésére (Lásd pl. Wikipédia, WolframMathWorld). A Turing gép speciális eseteként említettük a Post gépet. Aanderaa és Fischer megmutatták, hogy nincs 2 állapotú univerzális Post-gép. Ez az eredmény azt jelzi, hogy a számítási modell és az univerzalitási tulajdonság között összefüggés van. 60 SZÁMíTÁSI MODELLEK

61 6. fejezet Algoritmikus eldönthet½oség és kiszámíthatóság A Turing gépet a legáltalánosabb számítási modellnek tartjuk (Church-Turing hipotézis). Ezt támasztja alá az a tény, hogy nem ismert olyan (mai számítógépeken is realizálható) gép- vagy algoritmus modell, amely olyan számításokat is el tudna végezni, amelyet a Turing gép nem 1. Ez azonban nem jelenti azt, hogy más modellek (pl. a RAM gép) nem lehetnek (számítási id½oben vagy tárigényben) hatékonyabbak mint a Turing gép. A Turing géppel való megoldhatóság egy feladat megoldhatóságát általában jellemzi. Ha egy feladat Turing géppel megoldható, akkor azt megoldhatónak tekintjük. Ha nem, akkor megoldhatatlannak. Látni fogjuk, hogy számos jól de niált feladat nem oldható meg Turing géppel Nyelvek felismerése és eldöntése Turing gépekkel Adott nyelv és egy adott Turing gép vonatkozásában két kérdés vethet½o fel. Felismeri-e az adott Turing gép az adott nyelvet (azaz a nyelv rekurzívan felsorolható-e), illetve el tudja-e dönteni az adott nyelvet (azaz a nyelv rekurzív-e). Az utóbbi tulajdonságú Turing gépet az algoritmus modelljének tekintjük. Fontos ismételten megjegyezni, hogy nyelvekkel a szokásos számítási feladatokat le tudjuk írni és ezért a Turing-féle algoritmus modell általános jelleg½u. A fejezetet néhány fogalom ismétlésével kezdjük. De níció: Egy determinisztikus Turing gépen ( T ) az T = (Q; ; #; s; ; q 0 ; q A ) rendezett elem hetest értjük, ahol (i) Q 6= ; az állapotok halmaza, (ii) az input (szalag) ábécé, (iii) # =2 az üres jel, (iv) s =2 az input szalag baloldali végjele, 1 Léteznek olyan hipotetikus szuper rekurzív algoritmus koncepciók, amelyek olyan számításokat is el tudnak végezni, amelyeket a rekurzív algoritmusok nem. ALGORITMIKUS ELDÖNTHET ½OSÉG ÉS KISZÁMíTHATÓSÁG 61

62 (v) : Q ( [ f#; sg)! Q ( [ f#; sg) fl; R; Ng állapotátmeneti függvény, amelyre teljesül, hogy (p; s) 2 Q fsg fr; Ng (8p 2 Q n fq A g) ; (vi) q 0 2 Q a kiinduló állapot, (vii) q A 2 Q elfogadó állapot. De níció: A T Turing gép az x inputot (szót) elfogadja, ha véges sok lépésben a q A elfogadó állapotban megáll. T az x inputot elutasítja, ha nem áll meg, vagy nem a q A állapotban áll meg. De níció: A T Turing gép által elfogadott nyelv azon szavak halmaza, amelyeket T elfogad (felismer), azaz L (T ) = fw 2 j T elfogadja w-tg : De níció: Az L nyelvet rekurzívan felsorolhatónak (Turing felismerhet½onek) nevezzük, ha van olyan T Turing gép, amelyre L = L (T ). Az L RE = fl (T ) j T Turing gépg halmazt a rekurzívan felsorolható nyelvek osztályának nevezzük. Egy adott L nyelvre vonatkozó döntési problémán azt értjük, hogy tetsz½oleges x 2 szó esetén el tudjuk dönteni, hogy x 2 L vagy x =2 L. Az L 2 L RE nyelvet felismer½o T Turing gép csak egy fél algoritmust jelent az L eldöntésére, mert megeshet, hogy egy w 2 L C szóra T nem áll meg. "Igen" ha xel x T felismeri L et De níció: Az L nyelvet (a (; L) döntési problémát) rekurzívnak (Turing eldönthet½onek) nevezzük, ha van olyan T Turing gép, amelyre L = L (T ) és T minden x 2 szóra véges sok lépésben megáll, úgy, hogy: (i) ha x 2 L, akkor T a q A állapotban áll meg (ii) ha x =2 L, akkor T elutasító állapotban áll meg. Az (i)-(ii) feltételek fennállása esetén azt mondjuk, hogy T minden inputon megáll (T mindig megáll). Az ilyen T gép az algoritmus formális modellje. "Igen" ha xel x T eldönti L et "Nem" ha xel C 62 ALGORITMIKUS ELDÖNTHET ½OSÉG ÉS KISZÁMíTHATÓSÁG

63 Egy nyelv eldöntése tehát er½osebb követelmény mint a felismerése (elfogadása). De níció: Az L R = fl (T ) j T mindig megálló Turing gépg halmazt a rekurzív (algoritmikusan eldönthet½o) nyelvek osztályának nevezzük. A de níció alapján nyílvánvaló a következ½o két eredmény. Állítás: Ha egy L nyelv rekurzív (eldönthet½o), akkor rekurzíve felsorolható is: L R L RE : Állítás: Ha egy L nyelv rekurzív (eldönthet½o), akkor L C is az. De níció: A T Turing gép az F :! függvényt kiszámítja, ha minden x 2 esetén T (véges sok lépés után) a q A állapotban áll meg úgy, hogy a szalagon az s balvégjel után F (x) áll. Az F :! függvényt kiszámíthatónak (rekurzívnak) nevezzük, ha létezik egy T Turing gép amely az F függvényt a most de niált értelemben kiszámítja. Döntési probléma esetén az algoritmus az L nyelv karakterisztikus függvényét számítja ki. A Turing felismerhet½oség és a Turing eldönthet½oség közötti lényeges különbséget az alábbi egyszer½u példával mutatjuk meg. Példa: Legyen L = fa 2n j n 0g a páros hosszúságú aa : : : a szavak (sorozatok) nyelve. Készítsünk olyan 2 állapotú Turing gépet, amely felismeri az L nyelvet! A gép az s kezd½ojelt½ol elindulva addig mozog jobbra, amíg # üres jelet talál. Közben a q 0 (páros) és q 1 (páratlan) állapotok között kapcsolgat. Az egyetlen elfogadó állapot q 0. A megfelel½o állapot tábla és állapotdiagram illetve jel állapot s a # q 0 (q 0 ; s; R) (q 1 ; a; R) (q 0 ; #; N) q 1 (q 0 ; a; R) (q 1 ; #; N) (a,a,r) (s,s,r) q 0 q 1 (#,#,N) (#,#,N) (a,a,r) Ez a gép mindig megáll. Módosítsuk most ezt a Turing gépet a következ½ok szerint: - a # jelre álljon meg, ha az addig beolvasott a jelek száma páros, - ha nem, akkor folytassa a mozgást jobbra. NYELVEK FELISMERÉSE ÉS ELDÖNTÉSE TURING GÉPEKKEL 63

64 Az új követelményeknek megfelel½o Turing gép állapot táblája és állapotdiagramja illetve jel állapot s a # q 0 (q 0 ; s; R) (q 1 ; a; R) (q 0 ; #; N) q 1 (q 0 ; a; R) (q 1 ; #; R) (a,a,r) (s,s,r) q 0 q 1 (#,#,N) (#,#,R) (a,a,r) Feladat: Módosítsunk az el½obbi Turing gép állapot tábláján a következ½ok szerint: jel állapot s a # q 0 (q 0 ; s; R) (q 1 ; a; R) (q 0 ; #; N) q 1 (q 0 ; a; R) (q 1 ; #; L) Mit csinál ez a gép? Felismeri-e az L = fa 2n j n 0g nyelvet? És eldönti-e? Feladat: Módosítsunk az el½obbi Turing gép állapot tábláján a következ½ok szerint: jel állapot s a # q 0 (q 0 ; s; R) (q 1 ; a; R) (q 0 ; #; N) q 1 (q 0 ; a; R) (q 0 ; #; L) Mit csinál ez a gép? Felismeri-e az L = fa 2n j n 0g nyelvet? És eldönti-e? A rekurzívan felsorolható és rekurzív nyelvek osztályai a formális nyelvek egy, a Chomskyfélét½ol eltér½o osztályozását adják és a Turing-féle algoritmus koncepciót is jellemzik. A rekurzívan felsorolható nyelvek azok, amelyekhez létezik a nyelvet felismer½o eljárás (gép), amely véges sok lépésben felismeri a nyelv szavait. A rekurzív nyelvek pedig azok, amelyekhez létezik olyan algoritmus (gép), amely véges lépésben nemcsak a nyelv szavai ismeri fel, hanem minden szóról el tudja dönteni, hogy benne van-e az adott nyelvben. Látni fogjuk, hogy léteznek rekurzívan fel nem sorolható nyelvek, és azt is, hogy a rekurzív nyelvek a rekurzívan felsorolható nyelvek valódi részhalmazát alkotják. Lineáris korlátos automatának nevezik azt az egyszalagos Turing gépet, amelynél az író/olvasó fej sohasem hagyja el az input szó által elfoglalt cellákat. Már ez a korlátozott Turing gép is b½ovebb nyelvosztályt ismer fel mint az automaták. Igazak a következ½o eredmények. 64 ALGORITMIKUS ELDÖNTHET ½OSÉG ÉS KISZÁMíTHATÓSÁG

65 Tétel: Ha L egy környezetfügg½o nyelv, akkor létezik egy olyan lineáris korlátos automata, amely L-et elfogadja. Tétel: Ha az L nyelvet egy lineáris korlátos automata elfogadja, akkor L környezetfügg½o. A két eredmény együttesen azt jelenti, hogy egy L nyelv akkor és csak akkor környezetfügg½o, ha egy lineáris korlátos automata elfogadja. Az is következik, hogy a környezetfügg½o nyelvek rekurzívan felsorolhatók. Ennél azonban több is igaz, amit az alábbi két eredmény mutat. Tétel: Minden rekurzívan felsorolható nyelv kifejezés struktúra típusú nyelv. Tétel: Minden kifejezés struktúra nyelv rekurzívan felsorolható. A kifejezés struktúra vagy rekurzívan felsorolható nyelveket szokás egyszer½uen nyelvtanok által generált nyelvekként is említeni. Tétel: Egy f :! függvény akkor és csak akkor kiszámítható (rekurzív), ha nyelvtanilag kiszámítható. Az eredményekb½ol az következik, hogy a kifejezés struktúra (vagy 0) típusú nyelvek azonosak a rekurzívan felsorolható nyelvekkel. Következésképpen a Chomsky-féle nyelvosztályok mind rekurzívan felsorolhatók és ezeket a nyelveket a Turing gépek felismerik. Turing gép kifejezés struktúra (L 0 ) nyelvek környezetfüggő (L 1 ) nyelvek lineáris korlátos automata környezetfüggetlen (L 2 ) nyelvek veremautomata reguláris (L 3 ) nyelvek véges determinisztikus automata véges nemdeterminisztikus automata veremautomata Automaták és Turing gépek által felismert generatív nyelvek A következ½o eredmény azt igazolja, hogy a rekurzívan felsorolható nyelvek az összes nyelvek valódi részhalmazát alkotják. Tétel: Van olyan L 1 nyelv, amely nem rekurzívan felsorolható. Bizonyítás: Egy T gép véges jelsorozattal leírható. Ezért az összes T gép számossága megszámlálható, azaz felsorolható természetes számokkal sorszámozva: M 1 ; M 2 ; : : :. A gépek által felismert nyelvek (amelyek a rekurzívan felsorolható nyelvek) legyenek: L (M 1 ) ; L (M 2 ) ; : : :. Ezek szintén megszámlálhatók. szintén megszámlálható, de az összes nyelvek halmaza 2 = fx j X g NYELVEK FELISMERÉSE ÉS ELDÖNTÉSE TURING GÉPEKKEL 65

66 az ismert jnj < 2 N számossági egyenl½otlenség miatt már nem az. Tehát van nem rekurzívan felsorolható nyelv. Az átlós módszert használjuk az L 1 nyelv konstrukciójához. megszámlálható (felsorolható) a következ½ok szerint: szavait soroljuk fel hosszúságuk szerint növekv½oen, az azonos hosszúságú szavakat pedig a lexikogra kus rendezés szerint: w 1 ; w 2 ; : : :. De niáljuk az alábbi táblázatot (mátrixot) a következ½oképpen: w i jelöli a táblázat i-edik sorát, L (M j ) pedig a táblázat j-edik oszlopát. Az i-edik sor és j-edik oszlop keresztez½odésében (a táblázat (i; j) index½u eleme) azt jelöljük, hogy egy w i szó eleme, vagy nem eleme az L (M j ) nyelvnek (2; =2). Az L 1 nyelvet a következ½oképpen de niáljuk: w i 2 L 1, w i =2 L (M i ) (i = 1; 2; : : : ): Az alábbi táblázat szimbolikusan mutatja L 1 konstrukcióját. L (M 1 ) L (M 2 ) L (M i ) L (M i+1 ) L 1 w 1 =2 2 =2 2 2 w 2 =2 2 2 =2 = w i =2 =2 2 =2 =2 w i+1 =2 =2 =2 = Az L 1 nyelv nem lehet rekurzívan felsorolható, azaz nem egyezhet meg egyetlen rekurzív nyelvvel sem, mert egy w i szó vagy az L (M i ), vagy L 1 eleme. Tehát L 1 rekurzívan fel nem sorolható. Az utolsó három tétel alapján egy ábécé feletti generatív nyelveket a következ½oképpen osztályozhatjuk:... összes nyelv Σ felett rekurzívan fel nem sorolható nyelvek rekurzívan felsorolható/kifejezés struktúra (L 0 ) nyelvek 66 ALGORITMIKUS ELDÖNTHET ½OSÉG ÉS KISZÁMíTHATÓSÁG

67 A következ½okben a rekurzív (eldönthet½o) nyelveket vizsgáljuk. Tétel: Egy L nyelv akkor és csak akkor rekurzív (eldönthet½o), ha L és L C rekurzívan felsorolható. Bizonyítás (vázlat): Ha L rekurzív, akkor L C is az. Tegyük fel, hogy L és L C rekurzíve felsorolható. Ekkor van T 1 és T 2, hogy L = L (T 1 ) és L C = L (T 2 ). Legyen T 3 olyan gép, amelyik azt gyeli, hogy melyik gép adja ki az x szót. i i x T 1 n n i n T 2 n i T 3 Ekkor tudjuk, hogy x melyik nyelvben van. A három gépb½ol egyet csinálunk. Vegyük észre, hogy a most bizonyított tétel nem más mint a 3. fejezetben látott Post tétel. Az eggyel korábbi tételben de niáltuk az L 1 nyelvet, amely nem rekurzívan felsorolható. De niáljuk ennek komplementer nyelvét, azaz az L 2 = fw i j w i 2 L (M i )g (6.1) nyelvet. Tétel: Az L 2 nyelv rekurzívan felsorolható, de nem rekurzív (eldönthet½o). Bizonyítás: Van olyan Turing gép, amelyik elfogadja az L 2 nyelvet. Tehát L 2 rekurzívan felsorolható. Mivel azonban komplementere L 1 nem rekurzívan felsorolható, ezért L 2 nem lehet rekurzív. Tétel: Minden környezetfüggetlen nyelv rekurzív (Turing eldönthet½o). Igazolható, hogy vannak olyan rekurzív nyelvek, amelyek nem környezetfüggetlenek. Ennek alapján a nyelvek alábbi osztályozására jutunk. NYELVEK FELISMERÉSE ÉS ELDÖNTÉSE TURING GÉPEKKEL 67

68 rekurzív (eldönthető) nyelvek Összes nyelv Σ felett rekurzivan fel nem sorolható nyelvek rekurzívan felsorolható nyelvek reguláris nyelvek környezetfüggetlen nyelvek 6.2. Eldönthetetlen problémák A szakaszban néhány olyan döntési problémát vizsgálunk, amelyek Turing géppel nem eldönthet½ok, azaz a problémát leíró nyelv nem rekurzív. Ha egy döntési probléma nem eldönthet½o, akkor a problémát leíró nyelv karakterisztikus függvénye sem kiszámítható (rekurzív). Els½oként vizsgáljuk az elfogadási problémát: Adott egy T Turing gép és az x 2 szó. Döntsük el, hogy T elfogadja-e x-et! A kézenfekv½o alapötlet az, hogy futtassuk T -t az x szón. Ez mindaddig rendben is van, ha T elfogadja x-et "reális" id½on belül, azaz x 2 L (T ). Ha nem ez történik, akkor nem tudjuk, hogy az algoritmus futása csak sokáig tart, vagy végtelen ideig. Vegyük észre a probléma és a Turing eldönthet½oség rokon jellegét! A feladat megoldásához kellene egy "szuperalgoritmus". De látni fogjuk, hogy ilyen nincs. De niáljuk az univerzális nyelvet: L u = fw#x 2 j az T w gép létezik és x 2 L (T w )g : (6.2) Az L u nyelv az univerzális Turing gépek nyelve, ezeket a szavakat fogadja el egy U gép. Bármely U univerzális gépre teljesül, hogy L u = L (U). Ebb½ol következik, hogy L u rekurzívan felsorolható, azaz L u 2 L RE. Igaz a következ½o alapvet½o eredmény. Tétel (Turing, 1936): L u rekurzívan felsorolható, de nem rekurzív (eldönthet½o). Második problémánk az el½oz½ohöz nagyon hasonló, úgynevezett megállási probléma. A probléma a számítások végességével kapcsolatos. Tegyük fel, hogy valamilyen program nyelven van egy csoda programunk, amely a következ½oket tudja: 68 ALGORITMIKUS ELDÖNTHET ½OSÉG ÉS KISZÁMíTHATÓSÁG

69 (i) inputja bármely az adott nyelven megírt P program és annak X inputja; (ii) a csoda program korrekt módon eldönti, hogy a P program az X inputon megáll-e (Igen), vagy fut örökké (Nem). Legyen a csoda program neve halts (P; X) és de niáljuk a következ½o programot: diagonal (X) a: if halts (X; X) then goto a else halt A diagonal (X) program a következ½oképpen m½uködik: Ha a halts program eldönti, hogy az X program saját magával mint inputtal megáll, akkor a diagonal program örök ciklusba kerül, egyébként pedig megáll. Ezután a következ½o kérdésünk az, hogy megáll-e diagonal (diagonal)? Nos, akkor és csak akkor áll meg, ha a halts (diagonal; diagonal) hívás "Nem" választ ad. Ez más szóval azt jelenti, hogy akkor és csak akkor áll meg, ha nem áll meg. Ez ellentmondás éspedig a kiinduló feltevés miatt. Tehát nincs ilyen csoda program, amely megmondaná, hogy egy tetsz½oleges program megáll, vagy ciklizál. A megállási probléma Turing gépekre pontosan megfogalmazva a következ½oképpen néz ki: Egy kódjával adott T gép adott bemenettel megáll-e? Az elfogadási problémához képest az a különbség, hogy ott az x =2 L (T w ) esetben nem feltétlenül áll meg a Turing gép. A megállási problémához tartozó nyelv: L h = fw#x 2 j 9T w és az x bemenetre véges sok lépésben megáll.g (6.3) Tétel: Az L h nyelv rekurzívan felsorolható, de nem rekurzív (eldönthet½o), azaz L h 2 L RE nl R. A tétel tulajdonképpen azt mondja ki, hogy nincs olyan algoritmus (garantáltan megálló Turing gép), amely tetsz½oleges Turing gép és tetsz½oleges input esetén meghatározná, hogy az adott inputon az adott Turing gép megáll-e. Az edddigiek alapján a nyelveket eldönthetlen és eldönthet½o nyelvekre oszthatjuk a következ½oképpen: rekurzív (algoritmikusan eldönthető) nyelvek Összes nyelv Σ felett eldönthetetlen nyelvek L h L 2 L u rekurzívan felsorolható nyelvek ELDÖNTHETETLEN PROBLÉMÁK 69

70 Megjegyzés: Aanderaa és Fischer igazolták (1967), hogy a két állapotú Post gépekre a megállási probléma megoldható. A megállási probléma és az univerzalitás összefüggenek. A számos Turing eldönthetetlen probléma közül a következ½oket idézzük. Tétel: Algoritmikusan eldönthetetlen, hogy egy (leírásával adott) 1-szalagos T Turing gépre az L (T ) nyelv üres-e. Nyelvek egy tulajdonságát triviálisnak nevezzük, ha minden nyelvnek megvan ez a tulajdonsága, vagy egyiknek sem. A nemtriviális tulajdonság azt jelenti tehát, hogy egyes nyelveknek megvan ez a tulajdonsága, míg másoknak nincs meg ez a tulajdonsága. Rice tétele: Bármely nem triviális nyelv tulajdonságra algoritmikusan eldönthetetlen, hogy egy leírásával adott T Turing gépre az L (T ) nyelvnek megvan-e ez a tulajdonsága Néhány további eldönthetetlen probléma A szakaszban néhány olyan érdekes eldönthetetlen feladatot ismertetünk, amelyek azt jelzik, hogy az eldönthetetlen feladatok köre milyen széles és szerteágazó. Post megfeleltetési problémája (A PCP( n) probléma): Adott egy véges ábécé és az (u 1 ; v 1 ), (u 2 ; v 2 ),...,(u n ; v n ) -beli szópárok sorozata. A kérdés: Van-e olyan fi j g (1 i j n) véges sorozat, hogy u i1 : : : u ik = v i1 : : : v ik? A probléma n = 1; 2-re eldönthet½o. Nagy n-re azonban eldönthetetlen. Post k-tag rendszerek (1921): Legyen adott a véges ábécé, a k 1 egész szám, a P :! leképezés és az! 0 2 kezd½oszó. A T = (; k; P;! 0 ) négyest Post k-tag rendszernek (gépnek) nevezzük. A rendszer az! 0 kezd½oszóból kiindulva az f! i g szósorozatot képezi a következ½oképpen:! i+1 = up () ; ha! i = vu, ahol 2 ; v 2 k 1 : A k 1 halmaz a k 1 hosszúságú feletti szavak halmazát jelenti. A sorozat képzése addig tart, amíg a kapott szó hossza kisebb nem lesz mint k, vagy a kapott szó els½o bet½uje azonos nem lesz egy un. megállító (halting) bet½uvel. Ha ez nem történik meg, akkor a rendszer vagy periodikus lesz, vagy korlátlan (szóhossz) növekedést mutat. Példa: Legyen T 0 = (f0; 1g ; 3; f0! 00; 1! 1101g ;! 0 ) és! 0 = Ekkor kapjuk, hogy Tehát visszakapjuk a kezd½oszót, a sorozat ciklizál. Példa: Legyen T 0 = (f0; 1g ; 3; f0! 00; 1! 1101g ;! 0 ) és! 0 = Ekkor a sorozat: ALGORITMIKUS ELDÖNTHET ½OSÉG ÉS KISZÁMíTHATÓSÁG 0 0

71 f(x) Tehát ez a sorozat megáll. Cocke és Minsky igazolta, hogy 2-tag rendszerekkel minden Turing gép szimulálható. A Post-féle k-tag rendszerek megállási problémája annak az eldöntése, hogy adott T k-tag rendszer egy adott! 0 kezd½oszó esetén T megáll-e? Wang igazolta, hogy a megállási probléma k = 1 esetén eldönthet½o, k = 2 esetén pedig vannak olyan rendszerek, amelyekre a megállási probléma nem eldönthet½o. Collatz 3x + 1 problémája (1930 körül): Legyen x 2 N és x=2; ha x páros f (x) = 3x + 1; ha x páratlan. A függvény képe: 60 Collatz function x Kérdés: Igaz-e, hogy tetsz½oleges x 0 2 N számból indulva az x n+1 = f (x n ) ( n 0) iteráció mindig az 1! 4! 2! 1 ciklusban végz½odik? A kérdés "enyhébb" változata: Igaz-e, hogy tetsz½oleges x 0 2 N számból indulva az x n+1 = f (x n ) ( n 0) iteráció mindig eléri-e az 1-et, azaz valamely t értékre x t = 1? Ez utóbbi kérdés ekvivalens megfogalmazásban: A következ½o program megáll minden m 2 N egész számra: n := m while n > 1 do if (n páros) then n := n=2 else n := 3n + 1 endif endwhile A sejtés az, hogy igen, de nincs igazolva. A probléma általánosítása (Conway, Kurtz, Simon): Legyenek adottak m 2 N, az a r, b r racionális számok (r 2 f0; 1; : : : ; m 1g) úgy, hogy valahányszor x r (mod m), akkor f (x) = a r x + b r egész szám. A kérdés az, hogy bármely pozitív egész számból indulva az x n+1 = f (x n ) (n 0) iteráció eléri-e az 1-et, azaz valamely t értékre x t = 1? ELDÖNTHETETLEN PROBLÉMÁK 71

72 Conway (1972) egy speciális esetben, Kurtz és Simon (2007) pedig az általános formában igazolta, hogy ez a probléma eldönthetetlen. Hilbert 10. problémája (Diophantoszi egyenletek): Adott egy egész együtthatós n változós p (x 1 ; x 2 ; : : : ; x n ) polinom (n 2). Hilbert 1900-ban azt a kérdést vetette fel, hogy van-e "általános módszer" a p (x 1 ; x 2 ; : : : ; x n ) = 0 egyenlet egész megoldásainak meghatározására. Másképpen fogalmazva: döntsük el, véges számú lépésben (m½uvelettel), hogy van-e a p (x 1 ; x 2 ; : : : ; x n ) = 0 egyenletnek egész számokból álló megoldása. Például az x x = 0 egyenletnek nincs egész megoldása, de az x 1 x 2 + x 1 x 2 1 = 0 egyenletnek végtelen sok van (pl. x 1 = 1, x 2 2 Z tetsz½oleges). Matijaszevics 1970-ben igazolta, hogy a probléma algoritmikusan eldönthetetlen. Az egyváltozós, egész együtthatós p(z) = a 0 + a 1 z + a 2 z 2 + ::: + a n 1 z n 1 + a n z n = 0 polinomok esetén a fenti kérdés eldönthet½o, ugyanis Cauchy tétele alapján a polinom összes gyöke a jzj 1 + max 0in ja i j 1 ja nj komplex körben (körlemezben) van. Végigpróbálva az 1 + max 0in 1 ja i j ;1 + max ja n j 0in 1 ja i j ja n j intervallumba es½o összes egész számot, a kérdést véges sok m½uvelettel eldönthetjük Turing kiszámítható függvények A Turing gép mint algoritmus koncepció egyik alternatívája a rekurzív függvény fogalma. A rekurzív függvényeket nemnegatív egész számokon vizsgáljuk, azaz f : N 0! N 0 tipusúak. Megjegyezzük azonban, hogy az egészek és egy formális nyelv szavai között könnyen konvertálhatunk oda és vissza. Így a szavak formájában kódolt információk és algoritmusok egész számok formájában is kódolhatók. Gödel éppen ezt használta ki nevezetes vizsgálataiban. Megjegyezzük még, hogy egy halmaz (nyelv) akkor (primitív, parciális) rekurzív, ha karakterisztikus függvénye (primitív, parciális) rekurzív Primitív rekurzív függvények A primitív rekurzív függvényeket néhány nyilvánvalóan kiszámítható alapfüggvényb½ol rögzített m½uveleti szabályok (ismételt) alkalmazásával állítjuk el½o. Els½oként a következ½o alapfüggvényeket de niáljuk: (i) azonosan 0 függvény: zero (x) = 0 (x 2 N 0 ), (ii) a "rákövetkezés" függvény succ(x) = x + 1 (x 2 N 0 ), 72 ALGORITMIKUS ELDÖNTHET ½OSÉG ÉS KISZÁMíTHATÓSÁG

73 (iii) projekciós függvények: i k (n 1 ; : : : ; n k ) = n i (1 i k) : (6.4) A következ½o két m½uvelettel állíthatunk el½o újabb függvényeket a már meglév½okb½ol. A kompozíció (helyettesítés) m½uvelete: A g és a h 1 ; : : : ; h k függvények kompozíciója a következ½o n-változós függvény: f (x) = g (h 1 (x) ; : : : ; h k (x)) : (6.5) Az x változó bármely számú változóval helyettesíthet½o. Például vehetjük az f (x; y) = g (h 1 (x; y) ; : : : ; h k (x; y)) : kompozíciót is, stb. A (primitív) rekurzió m½uvelete (Dedekind, 1888): Az f függvény a g és h függvényekb½ol rekurzióval el½oállítható, ha f (x; 0) = g (x) ; (6.6) f (x; succ (y)) = h (x; y; f (x; y)) : (6.7) Ha az f függvénynek több mint két független változója van, akkor x-et helyettesíthetjük extra változókkal. Ha az f-nek csak egy független változója van, akkor az x változót elhagyjuk és a rekurzió alakja a következ½o lesz: f (0) = g (g 2 N 0 rögzített konstans), (6.8) f (succ (y)) = h (y; f (y)) : (6.9) De níció: Egy függvény primitív rekurzív, ha az alapfüggvényekb½ol helyettesítéssel és rekurzióval megkapható. Példa (összeadás): Az (x; y)!sum(x; y) = x + y függvényt az alábbi rekurzióval kapjuk: sum (x; 0) = 1 1 (x) = x; sum (x; succ (y)) = succ (sum (x; y)) : Ez m½uködik, amint azt a = 4 esetben is láthatjuk: sum (2; 2) = succ (sum (2; 1)) = succ (succ (sum (2; 0))) = succ (succ (2)) = succ (3) = 4: Példa (szorzás): az (x; y)!prod(x; y) = xy függvényt az alábbi rekurzióval kapjuk: prod (x; 0) = 0; prod (x; succ (y)) = sum(x; prod (x; y)): TURING KISZÁMíTHATÓ FÜGGVÉNYEK 73

74 Példa: Az (x; y)! exp (x; y) = x y függvény rekurzív el½oállítása: exp (x; 0) = succ (zero (m)) ; exp (x; succ (y)) = prod (x; exp (x; y)) : Példa (a megel½oz½o függvény): A "megel½oz½o" függvény egy adott egész számot megel½oz½o szám, amelynek rekurzív de níciója a következ½o: pred (0) = 0; (6.10) pred (succ (y)) = y: (6.11) Példa (el½ojel függvény): Értéke 0, ha a változó értéke 0, egyébként pedig 1. De níciója: sign (0) = 0; (6.12) sign (succ (x)) = 1: (6.13) Példa (iszero függvény): Értéke 1, ha a változó értéke 0, egyébként pedig 0. De níciója: Példa (kivonás) A kivonási (un. monus) m½uveletet az x x y; ha x y y = 0 egyébként iszero (0) = 1; (6.14) iszero (succ (x)) = 0: (6.15) el½oírással adjuk meg. de niálhatjuk: A megfelel½o monus függvényt primitív rekurzióval a következ½oképpen monus (x; 0) = x; (6.16) monus (x; succ (y)) = pred (monus (x; y)) : (6.17) Tekintsük most monus (2; 1) és monus (1; 2) kiszámítását rekurzívan: monus (2; 1) = pred (monus (2; 0)) = pred (2) = 1 és monus (1; 2) = pred (monus (1; 1)) = pred (pred (monus (1; 0))) = pred (pred (1)) = pred (0) = 0: 74 ALGORITMIKUS ELDÖNTHET ½OSÉG ÉS KISZÁMíTHATÓSÁG

75 Példa (minimum): A min (x 1 ; x 2 ) = x 1 x 1 x 2 összefüggés miatt min (x 1 ; x 2 ) = monus (x 1 ; monus (x 1 ; x 2 )) : (6.18) Példa ( p x függvény egészrésze): Fennáll a következ½o összef½uggés: h pn + 1 i Ezért a megfelel½o primitív rekurzió az alábbi: = [p n] ; ha n + 1 6= ([ p n] + 1) 2 ; [ p n] + 1; ha n + 1 = ([ p n] + 1) 2 : hp i 0 = 0; h pn i + 1 = p n n + iszero + 1 p n : (6.19) A kompozíció és a primitív rekurzió mellett más m½uveletekkel is el½o lehet állítani primitív függvényekb½ol primitív függvényeket. Ilyen m½uvelet az iteráció is. Informálisan a h függvény iterációján az f (x; n) = h (n) (x) = h (h (: : : h (x) : : :)) {z } n függvényt értjük. Formálisan a de níció a következ½o: h (0) (x) = x; h (n+1) (x) = h h (n) (x) : Az f függvény a h iterációja, ha f (x; 0) = x és f (x; n + 1) = h (n+1) (x) = h ( 3 3 (x; n; f (x; n))). Robinson igazolta, hogy a primitív rekurzív függvények osztálya felépíthet½o a primitív rekurzió helyett az iteráció segítségével is. Az alapfüggvények (zero, succ, projekció) Turing kiszámíthatók. A kompozíció és a primitív rekurzió meg½orzik a Turing kiszámíthatóságot. Ezért a primitív rekurzív függvények Turing kiszámíthatók. Igazolható az is, hogy a primitív rekurzív függvények osztálya felsorolható (megszámlálható). Tétel: Nem minden Turing kiszámítható függvény primitív rekurzív. Bizonyítás: Az átlós módszert használjuk. Minden egyes primitív rekurzív függvényt egy véges "szó" ad meg. Ezeket megszámozhatjuk (felsorolhatjuk) az f 1 ; f 2 ; : : : formában. De niáljuk a g (x) = f x (x) + 1 függvényt, amely egy "tökéletes" Turing kiszámítható függvény. De nem lehet primitív rekurzív, mert mindegyikt½ol különbözik. A primitív rekurzív függvények olyan függvényeknek felelnek meg, amelyek rögzített hosszúságú ciklusokkal kiszámíthatók. TURING KISZÁMíTHATÓ FÜGGVÉNYEK 75

76 Parciális rekurzív függvények A primitív rekurzív függvények teljes függvények, amelyek az egész N 0 halmazon vannak értelmezve. Ha olyan függvényeket akarunk konstruálni, amelyek csak parciálisak (tehát nem az egész N 0 - on vannak értelmezve), akkor egy új képzési szabályt kell bevezetni. Ez lesz a minimalizálás m½uvelete. A minimalizálás m½uvelete: Az f függvényt minimalizálással a következ½o módon de niáljuk: f (x) = min y fg (x; y) = 0g : (6.20) Azt mondjuk, hogy f (x) az a minimális y 2 N 0, amelyre g (x; y) = 0. Ha nincs ilyen érték, akkor f (x) de niálatlan. A minimalizálási m½uvelet szokásos jelölése: f (x) = y (g (x; y) = 0) : (6.21) ahol a minimalizálást, y a minimalizálás változóját, a () zárójelben lev½o kifejezés pedig a minimalizálás feltételét jelenti. Példa: Legyen f (x) = min y fx + y = 2g. Ekkor f (0) = 2, f (1) = 1 és f (2) = 0. Az x 3 értékekre f (x) de niálatlan. Példa: Legyen h (x; y) = min z fx = y + zg. Ekkor pl. h (5; 2) = 3, de h (2; 5) de niálatlan. Könny½u látni, hogy h (x; y) = x y, ha x y, egyébként pedig h de niálatlan. Példa: A négyzetgyök függvény egész részét a minimalizálással a következ½oképpen adhatjuk meg: p x = t (monus (x; (t + 1) (t + 1)) = 0) : (6.22) Példa: A cp x függvény egész részét hasonlóképpen adhatjuk meg: c p x = t (monus (x; (t + 1) c ) = 0) : (6.23) Példa: A logaritmus függvény egész része [log c x] = t monus x; c t+1 = 0 : (6.24) De níció: Egy függvényt parciális rekurzívnak nevezünk, ha az alapfüggvényekb½ol helyettesítéssel, rekurzióval és minimalizálással megkapható. Igaz a következ½o eredmény. Tétel (Kleene): A Turing kiszámítható függvények osztálya azonos a parciális rekurzív függvények osztályával. A parciális rekurzív függvények osztályának vannak olyan tagjai, amelyek teljesek, de nem primitív rekurzívak. Híres példa erre az alábbi rekurzióval megadott Ackermann (Ackermann- Péter Rózsa) függvény: A (0; n) = n + 1 (n 0) ; (6.25) A (m; 0) = A (m 1; 1) (m > 0) ; (6.26) A (m; n) = A (m 1; A (m; n 1)) (m > 0; n > 0) : (6.27) 76 ALGORITMIKUS ELDÖNTHET ½OSÉG ÉS KISZÁMíTHATÓSÁG

77 Az Ackermann függvény gyorsabban n½o mint bármelyik primitív rekurzív függvény. Írjuk át a függvényt a T m (n) = A (m; n) alakba. Ekkor a fenti rekurzió alakja: T 0 (n) = n + 1 (n 0) ; T m+1 (0) = T m (1) (m > 0) ; T m+1 (n + 1) = T m (T m+1 (n)) (m > 0; n > 0) : Vizsgáljuk meg a függvény néhány értékét! T 1 (n) = T 0 (T 1 (n 1)) = T 1 (n 1) + 1 = T 1 (n i) + i = T 1 (0) + n = T 0 (1) + n = n + 2; T 2 (n) = T 1 (T 2 (n 1)) = T 2 (n 1) + 2 = T 2 (n i) + 2i = T 2 (0) + 2n = T 1 (1) + 2n = 2n + 3; T 3 (n) = T 2 (T 3 (n 1)) = 2T 3 (n 1) + 3 = 2 i T 3 (n i) i 1 = 2 n T 3 (0) n 3 = 2 n T 2 (1) n 3 = 2 n+3 3; T 4 (n) = T 3 (T 4 (n 1)) = 2 T 4(n 1)+3 : : 2 T 4 (0)+3 = 2 22: {z } n emelet : : 2 3 = 2 22: {z } n+3 emelet 3 = 2 2T 4 (n 2)+3 3 3: Az Ackermann függvény nagyon er½osen n½o. Például 2 T 4 (1) = = 65533; T 4 (2) = ; T 4 (3) = : A T 4 (2) = A (2; 4) értékének leírásához már több mint jegy kell a tizes számrendszerben. Összehasonlításképpen megjegyezzük, hogy az univerzum atomjainak a számát kevesebb mint ra becsülik. A szakaszban tárgyalt függvénytípusok egymáshoz való viszonyát az alábbi ábrával jellemezhetjük: TURING KISZÁMíTHATÓ FÜGGVÉNYEK 77

78 egész számokon értelmezett függvények parciális rekurzív (Turing kiszámítható) függvények teljes parciális rekurzív függvények primitív rekurzív függvények Feladat: Konstruáljunk Turing gépet, amely a zero függvényt számítja ki! Feladat: Konstruáljunk Turing gépet, amely a succ függvényt számítja ki! Feladat: Konstruáljunk Turing gépet, amely a projekciós függvényeket számítja ki! 78 ALGORITMIKUS ELDÖNTHET ½OSÉG ÉS KISZÁMíTHATÓSÁG

79 7. fejezet Algoritmusok analízise Turing értelemben algoritmikusan megoldható feladatokkal és megoldó algoritmusaik elemzésével foglalkozunk. A felvet½od½o kérdések: - Adott feladat nehézségének (bonyolultságának) jellemzése. - Több módszer (algoritmus) esetén a jobbik (legjobb) kiválasztása. A feladatok nehézségét a megoldási költséggel és a szükséges er½oforrások mennyiségének vizsgálatával jellemezzük. Az alapvet½o jellemz½ok: - számítási id½o (általában aritmetikai vagy logikai m½uveletek számában), - tárigény. Egy feladat nehézségét sok esetben a megoldás "költségére" adott fels½o, illetve alsó korláttal tudjuk jellemezni. A fels½o korlátok jobb, gyorsabb algoritmusok keresését inspirálják, míg az alsó korlátok (amiknél nincs gyorsabb algoritmus) a feladat nehézségét jellemzik. A feladatok bonyolultsága és az ½oket megoldó algoritmusok hatékonysága általában összefüggést mutat. Adott feladatot megoldó algoritmusok között a hatékonyabbat csak az algoritmusok elemzésével tudjuk kiválasztani. Konkrét algoritmusok elemzésénél a cél az adott algoritmusok hatékonyságának (költségének és er½oforrásigényének) vizsgálata. Megjegyezzük, hogy egy algoritmus hatékonyságára vonatkozó információ egyúttal a megoldandó feladat nehézségét is jellemzi, vagy jellemezheti Bevezetés Elméleti eredmények és fogalmak A bonyolultságelméletben számos meglep½o eredmény van. Els½oként említjük meg, hogy vannak olyan feladatok, amelyekre nincs optimális algoritmus. Ha például az L nyelv id½oben hatékony felismerése a feladat, akkor olyan T algoritmust keresünk, amelyre a time T (n) elég lassan n½o, s½ot esetleg a legjobb. Ilyen azonban nincs mindig, amit a következ½o eredmény is mutat. ALGORITMUSOK ANALíZISE 79

80 y Gyorsítási tétel: Van olyan L nyelv, amelyre igazak az alábbiak: (i) Az L felismerhet½o egy olyan T Turing géppel, amelyre time T (n) véges minden n-re. (ii) Tetsz½oleges, az L nyelvet felismer½o T Turing géphez van olyan T 0 Turing gép, amelyre L = L (T 0 ) és time T 0 (n) = O (log time T (n)) : Ez az eremény (elvileg) tovább is fokozható: Ha L = L (T ) és time T (n) cn ( c konstans), akkor 8" > 0-ra 9T 0 Turing gép, hogy L = L (T 0 ) és time T 0 (n) n (1 + ") ( n n 0 (")). Tehát erre a feladatra nincs legjobb algoritmus. A következ½okben bemutatjuk, hogy a Turing megoldható feladatok körében tetsz½oleges bonyolultságú feladatok léteznek. Tekintsük a következ½o egész számokon értelmezett Ackermannszer½u függvényt: (1) = 2; (n + 1) = 2 (n) ; n 1: : : 2 Világos, hogy (n) = 2 22:, ahol n 1 emelet van. Ez 2 n -nél (exponenciális függvénynél), n!-nál és n n -nél is gyorsabban n½o: fi(n) 2 n n! n n n Matlabban kapott számítási eredmények: n (n) inf 2 n n! n n Ha a függvényértéket és a helyettesítési értéket az 1"-es számrendszerben felírjuk, akkor bármelyik, a (n)-et kiszámító Turing gépre time T (n) legalább (n) lesz (már csak a szám vonásokkal 80 ALGORITMUSOK ANALíZISE

81 történ½o ábrázolásához/beolvasásához is kell ennyi lépés). Ez a helyzet akkor is ha valamilyen nagyobb számrendszerben ábrázoljuk a -t. A konkrét példán túlmen½oen igazak az alábbi általános eredmények. Cejtin tétele: Tetsz½oleges f :! ( = f0; 1g) kiszámítható függvényhez van beli szavaknak olyan tulajdonsága, amerre a következ½ok teljesülnek: a) a tulajdonság e ektíve felismerhet½o, azaz van olyan T Turing gép, amelyik tetsz½oleges p 2 szóról eldönti, hogy tulajdonságú, vagy sem; b) tetsz½oleges, a tulajdonságot felismer½o T Turing gép id½o bonyolultságára fennáll, hogy time T (jpj) > f (p) (7.1) végtelen sok p szóra. Rabin tétele: Tetsz½oleges f :! ( = f0; 1g) kiszámítható függvényhez van beli szavaknak olyan tulajdonsága, amerre a következ½ok teljesülnek: a) a tulajdonság e ektíve felismerhet½o, azaz van olyan T Turing gép, amelyik tetsz½oleges p 2 szóról eldönti, hogy tulajdonságú, vagy sem; b) tetsz½oleges, a tulajdonságot felismer½o T Turing gépre véges sok kivétellel az összes p 2 szóra fennáll, hogy time T (jpj) > f (p) : (7.2) A két tétel alapján indokolt az algoritmusokat id½o- és tárigényük nagyságrendje (bonyolultsága) alapján osztályozni. A következ½okben néhány bonyolultsági osztályt de niálunk. De níció: Egy L nyelv id½obonyolultsága legfeljebb f (n), ha van egy Turing gép, amely az L nyelvet eldönti és minden w 2 ( jwj = n) szóra legfeljebb f (n) lépésben megáll. A legfeljebb f (n) id½obonyolultságú nyelvek osztályát DT IM E (f (n))-el jelöljük. De níció: Egy L nyelv tárbonyolultsága legfeljebb f (n), ha van egy Turing gép, amely az L nyelvet eldönti és minden w 2 (jwj = n) szóra a Turing gép tárigénye legfeljebb f (n). A legfeljebb f (n) tárbonyolultságú nyelvek osztályát DSP ACE (f (n))-el jelöljük. A nyelv (feladat) bonyolultsága helyett a nyelvet eldönt½o Turing gépre (algoritmusra) is mondjuk, hogy legfeljebb f (n) id½o-, ill tárigény½u. Els½o közelítésben két fontos algoritmus osztályt különböztetünk meg. De níció: A T gép (algoritmus) polinomiális futási idej½u (id½obonyolultságú), ha id½oigénye legfeljebb p (n), ahol p polinom. A de níció alternatív változata: a p (n) polinom helyett az O n k függényt használják. De níció: A T gép (algoritmus) exponenciális, ha id½oigénye O 2 nc, valamilyen c > 0 konstansra. De níció: Mindazon nyelvek osztályát, amelyek polinomiális idej½u Turing géppel eldönthet½ok P T IM E-mal, vagy egyszer½uen P -vel jelöljük. Másképpen P = [ k0 DT IME n k : (7.3) De níció: Mindazon nyelvek osztályát, amelyek polinomiális tárigény½u Turing géppel eldönthet½ok P SP ACE-el jelöljük. Másképpen P SP ACE = [ k0 DSP ACE n k : (7.4) BEVEZETÉS 81

82 De níció: Mindazon nyelvek osztályát, amelyek exponenciális idej½u Turing géppel eldönthet½ok EXP T IM E-mal jelöljük. Másképpen EXP T IME = [ k0 DT IME 2 nk : (7.5) Elvileg a polinomiális algoritmusok a jó algoritmusok, a "kezelhet½o" (tractable) algoritmusok, vagy "könny½u" problémák. Az exponenciális algoritmusok ezzel szemben a rossz algoritmusok, a "nehéz" (intractable) problémák. Nagyon sok gyakorlatban használt algoritmus polinomiális. Példák polinomiális algoritmusokra: - Kombinatorika: gráfok összefügg½oség tesztje, legrövidebb út, magyar módszer. - Aritmetikai algoritmusok: alapvet½o aritmetikai m½uveletek, legnagyobb közös osztó meghatározása az euklideszi algoritmussal. - Lineáris algebrai algoritmusok: determináns, inverz és lineáris egyenletrendszer megoldása Gauss-módszerrel. Exponenciális algoritmusokra, illetve problémákra példa az Ackermann típusú függvények kiszámítása (ez tkp. szuperexponenciális), az összes permutáció el½oállítása, a determináns eredeti de níció alapján történ½o kiszámítása, számos gráfelméleti probléma (pl. az utazó ügynök probléma egyes variánsai), vagy a lineáris programozás szimplex algoritmusa. A fenti osztályozás nem minden esetben függ össze a gyakorlati megvalósíthatósággal. Például a szimplex algoritmus a gyakorlatban jól bevált gyors algoritmus. Ugyanakkor vannak polinomiális idej½u algoritmusok, amelyekkel nagyméret½u feladatok esetén szinte lehetetlen eredményt kapni. Problémák szokásos osztályozása (els½o közelítésben): rekurzív (algoritmikusan eldönthető) nyelvek Összes nyelv S felett eldönthetetlen nyelvek nehéz problémák könnyű problémák Feladat: A következ½o program az n k binomiális együtthatót (jelölése C (n; k)) számítja ki iteratívan. for i := 0 to m do {C[i; 0] := 1; C[i; i] := 1}; 82 ALGORITMUSOK ANALíZISE

83 for n := 2 to m do for k := 1 to n 1 do C[n; k] := C[n 1; k] + C[n 1; k 1]; Elemezze az eljárást! Mi az eljárás költsége általában? Adjon alsó becslést a C (n; n=2) költségére, ha n páros szám! Az oszd meg és uralkodj elv A oszd meg és uralkodj elv egy egyszer½u és hatékony módszer problémák megoldására. Az elv alapötlete: - Szétosztjuk a problémát kisebb rész problémákra. - Megoldjuk a kisebb részproblémákat. - A kisebb részproblémák megoldásaiból összerakjuk az eredeti probléma megoldását. Tekintsük az elvet leíró alábbi általános algoritmust! DivideAndConquer(data,N,solution) data a set of input values N the number of values in the set solution the solution to this problem if (N SizeLimit) then DirectSolution( data, N, solution ) else DivideInput( data, N, smallersets, smallersizes, numbersmaller ) for i = 1 to numbersmaller do DivideAndConquer(smallerSets[i], smallersizes[i], smallsolution[i]) end for CombineSolutions(smallSolution, numbersmaller, solution) end if Az algoritmus el½oször azt nézi meg, hogy a probléma méret elég kicsi-e ahhoz, hogy egy direkt algoritmussal (DirectSolution) oldjuk meg. Ha probléma túl nagy, akkor el½oször az inputot felosztó rutint (DivideInput) hívja meg, hogy az input adatokat (feladatot) kisebb részekre bontsa. Ezek méretei lehetnek egyenl½ok, vagy eltér½oek is. Az algoritmus ezután rekurzívan meghívásra kerül a kisebb input adathalmazokon és ezen hívások eredményeit f½uzi össze a CombineSolutions rutin. A fenti oszd meg és uralkodj algoritmus hatékonyságát (bonyolultságát) a következ½oképpen írhatjuk le: DIR(N), ha N SizeLimit DAC(N)= DIV(N)+ P numbersmaller i=1 DAC(smallerSizes[i])+COM(N), ha N > SizeLimit ahol DAC a DivideAnd Conquer algoritmus bonyolultsága, BEVEZETÉS 83

84 DIR a DirectSolution bonyolultsága, DIV a DivideInput bonyolultsága, COM a CombineSolutions bonyolultsága. A rekurzíó megoldásához szükségünk van a következ½o szakaszban található mester tételre A mester tétel A mester tétel segítségével meghatározhatjuk az oszd meg és uralkodj algoritmus bonyolultságát abban az esetben, amikor az input adatokat egyenl½o részre osztjuk. Tétel: Ha n a b szám hatványa, a; b; c; d konstansok, a 1, b > 1, akkor a d; ha n = 1 T (n) = (7.6) at (n=b) + cn; ha n > 1 rekurzió megoldása 8 < O (n) ; ha a < b T (n) = O (n log n) ; ha a = b : O n log a b, ha a > b. Bizonyítás: Könnyen látható, hogy n T (n) = at + cn b n = a at + c n + cn b 2 b n = a 2 T + acn + cn b 2 b n = a at 2 + c n + acn + cn b 3 b 2 b n = a 3 T + a2 cn + acn + cn b 3 b 2 b Minthogy azért. n Xi 1 a j = a i T + cn b i b = a log b n T (1) + cn j=0 log b n 1 X j=0 a b j : a log b n = b log b a log b n = b log b n log b a = n log b a ; T (n) = dn log b a + cn log b n 1 X 84 ALGORITMUSOK ANALíZISE j=0 a b j : (7.7)

85 Ha a < b, akkor a=b < 1, Ezért T (n) < dn log b a + cbn= (b Ha a > b, akkor log b n 1 X j=0 a j X 1 a j < = b b j=0 b b a : a) = O (n). (a < b ) log b a < 1!). Ha a = b, akkor log b n X T (n) = dn + cn 1 j = dn + cn (1 + log b n) = O (n log n) : log b n 1 X j=0 a b j=0 j = (a=b) log b n 1 (a=b) 1 = nlog b a 1 1 (a=b) 1 = O nlog b a 1 : Tehát ekkor T (n) = dn + cno n log b a Példák: 1 = O n log b a. Ha T (n) = 2T (n=3) + cn, akkor a = 2 < b = 3 miatt T (n) = O (n). Ha T (n) = 2T (n=2) + cn, akkor a = b = 2 miatt T (n) = O (n log n). Ha T (n) = 4T (n=2) + cn, akkor a = 4 > b = 2 miatt T (n) = O n log 2 4 = O (n 2 ). A most igazolt mester tételnél általánosabb eredmények is vannak. Ilyen található például Cormen, Leiserson, Rivest és Stein könyvében. Az alábbi táblázat a n T (n) = at + f (n) (7.8) b rekurzió megoldásának nagyságrendjét tartalmazza az f (n) = n c log d n vagy f (n) = 0 esetben: d T (n) log a < c tetsz½oleges (f (n)) log b log a = c > 1 (f (n) log n) log b (7.9) log a = c < 1 n log a log b log b log a > c tetsz½oleges n log a log b log b Példák: Ha T (n) = 9T n 3 + n 4, akkor log a= log b = 2 < c = 4 és d = 0 miatt T (n) = (n 4 ). Ha T (n) = 9T n 3 + n 2, akkor log a= log b = c = 2 és d = 0 > 1 miatt T (n) = (n 2 log n). BEVEZETÉS 85

86 Ha T (n) = 9T n 3 (n 2 ). + n 2 log 2 n, akkor log a= log b = c = 2 és d = 2 < 1 miatt T (n) = Ha T (n) = 9T n 3, akkor log a= log b = 2 > c = 0 és d = 0 miatt T (n) = (n 2 ). Feladat: Adjuk meg a következ½o rekurziók megoldását a mester tétellel, vagy a fenti táblázattal, illetve jelezzük, ha ezek nem alkalmazhatók: a) T (n) = 2T (n=2) + n 2 ; b) T (n) = 4T (n=2) + n 2 ; c) T (n) = T (n=2) + 2 n ; d) T (n) = 2 n T (n=2) + n n ; e) T (n) = 16T (n=4) + n; f) T (n) = 2T (n=2) + n log n; g) T (n) = 2T (n=2) + n= log n; h) T (n) = 2T (n=4) + n 0:51 ; i) T (n) = 0:5T (n=2) + 1=n Keresési, rendezési és kiválasztási feladatok A mindennapi gyakorlatban is fontos keresési, kiválasztási és rendezési feladatokkal foglalkozunk néhány alapvet½o esetben Keresési feladatok A keresési feladaton azt értjük, hogy egy listában (vagy tömbben) egy adott érték½u elemet (target) keresünk. A lista (tömb) lehet rendezetlen, vagy rendezett. A szekvenciális és a bináris keresés algoritmusát elemezzük. Ha a lista elemei rendezetlenek, akkor a lista elemeit szekvenciálisan összehasonlítjuk az adott érték½u elemmel. A szekvenciális keresés algoritmusa: SequentialSearch(list,target,N) list the elements to be searched target the value being searched for N the number of elements in the list for i = 1 to N do if (target = list[i]) 86 ALGORITMUSOK ANALíZISE

87 return i end if end for return 0 A legjobb eset, ha a keresett elem (target) az els½o elem, a legrosszabb pedig az, ha az utolsó N-edik elem. Tehát az összehasonlítások száma (esetünkben a számítási költség) 1 és N közé esik. Ha feltesszük, hogy az adott tulajdonságú elem azonos 1=N valószín½uséggel lehet a lista bármelyik helyén, akkor a keresés átlagos költsége a következ½oképpen határozható meg. Ha a keresett elem az i-edik helyen van, akkor i összehasonlítások költsége. Az átlagos költség a költségek várható értéke: A (N) = NX i=1 i N = 1 N NX i = 1 N i=1 N (N + 1) 2 = N + 1 : 2 Ha feltesszük, hogy a keresett elem nincs a listán, akkor N + 1 lehet½oségünk van. Feltéve, hogy minden eset egyenl½oen valószín½u, akkor ezek valószín½usége 1= (N + 1) és az átlagos költség a következ½o lesz:! NX i A (N) = + N N + 1 N + 1 = 1 N (N + 1) + N N i=1 = N 2 + N N + 1 = N N (N + 1) : Látható, hogy az újabb feltevésünk módosította (növelte) az átlagos költséget. Ha N! 1, N 1 akkor! 1 és ezért 2(N+1) 2 A (N) N : Nagy N-re ez nem jelent½os növekedés. A következ½okben tegyük fel, hogy a listánk rendezett és vizsgáljuk a bináris keresés algoritmusát, amelynek alapötlete, hogy felezzük a listát, a középs½o elemmel összehasonlítjuk a keresett elemet, majd aszerint, hogy milyen viszonyban állnak (<, =, >) választjuk a lista els½o felét, a kilépést, vagy a lista második felét. Ezt ismételjük a kapott részlistán, amíg az el nem fogy. Egy lehetséges program a következ½o BinarySearch(list,target,N) list the elements to be searched target the value being searched for N the number of elements in the list start = 1 end = N while start end do middle = d(start + end)=2e KERESÉSI, RENDEZÉSI ÉS KIVÁLASZTÁSI FELADATOK 87

88 select (Compare(list[middle], target)) from case 1: start = middle+1 case 0: return middle case 1: end = middle 1 end select end while return 0 ahol a Compare(x,y) függvény de níciója: 8 < Compare (x; y) = : 1; ha x < y 0; ha x = y 1; ha x > y Az eljárás döntési fája 7 elem½u lista esetén: list[4] list[2] list[6] list[1] list[3] list[5] list[7] A döntési fa csomópontjaiban lév½o elemeket hasonlítja össze az algoritmus a target értékével az egyes iterációkban. Ha a target értéke kisebb mint a csomóponti elem, akkor a számítás a baloldali részfán folyik tovább, ha pedig nagyobb, akkor a jobboldali részfán. A legrosszabb eset bonyolultságot vizsgáljuk. Az algoritmus felezési jellege miatt tegyük fel, hogy N = 2 k 1 valamilyen k 1 értékre. Az els½o felezésben a középs½o elem indexe k 1 =2 = 2 k 1. Ezért az els½o iterációban keletkez½o részlista hossza 2 k 1 1. Hasonló okfejtéssel a második iterációban keletkez½o részlista hossza 2 k 2 1, és igy tovább. A j-edik iteráció részlistájának hossza 2 k j 1. Az iterációs ciklus legkés½obb a k-adik iterációban fejez½odik be. Ez k öszehasonlítást jelent, ahol k = log 2 (N + 1) s log 2 N. Az átlagos bonyolultságot vizsgáljuk az N = 2 k 1 elemszámra azon feltevés mellett, hogy a target a listában van és ott egyenl½o 1=N valószín½uséggel fordulhat el½o bárhol. A döntési fa i-edik szintjén lev½o elemek száma 2 i 1 és a szintek száma k. Ha a keresett elem az i-edik szinten van, akkor i összehasonlítást végzünk a megtalálásához. Ezért az átlagos számítási költség: A (N) = 0 1 kx X2 i i 1 A = 1 N N i=1 j=1 kx i2 i 1 : 88 ALGORITMUSOK ANALíZISE i=1

89 Vegyük észre, hogy x 6= 1 esetén 1 + 2x + + kx k 1 = 1 + x + x x k 0 x k = x 1 = (k + 1) xk (x 1) x k+1 1 (x 1) 2 Az x = 2 értéket ebbe behelyettesítve kapjuk, hogy = kxk+1 (k + 1) x k + 1 (x 1) 2 : kx i2 i 1 = k2 k+1 (k + 1) 2 k + 1 = (k 1) 2 k + 1: i=1 Tehát az átlagos számítási költség átírható az A (N) = 1 (k 1) 2 k + 1 = (log 2 (N + 1) 1) (N + 1) + 1 N N = log 2 (N + 1) 1 + log 2 (N + 1) N alakba. Minthogy log 2 (N + 1) =N! 0, az átlagos számítási költségre fennáll, hogy A (N) log 2 (N + 1) 1; ami 1-el kevesebb mint a legrosszabb eset log 2 (N + 1) költsége. Feladat: Mi a bináris keresés átlagos bonyolultsága, ha megengedjük, hogy a keresett elem ne legyen a listában és minden eset (elhelyezkedés) valószín½usége azonosan 1= (N + 1)? Feladat: Mi a bináris keresés legrosszabb eset bonyolultsága, ha N 6= 2 k 1? Feladat: Mi a bináris keresés átlagos bonyolultsága, ha a keresett elem a listában van, minden eset (elhelyezkedés) valószín½usége azonosan 1=N és N 6= 2 k 1? Feladat: Mi a bináris keresés átlagos bonyolultsága, ha a keresett elem esetleg nincs a listában, minden eset (elhelyezkedés) valószín½usége azonosan 1= (N + 1) és N 6= 2 k 1? Rendezési feladatok Két fontos rendezési algoritmust elemzünk, amelyek az oszd meg és uralkodj elv tipikus alkalmazásai. KERESÉSI, RENDEZÉSI ÉS KIVÁLASZTÁSI FELADATOK 89

90 Összefésül½o rendezés Az algoritmus alapja az összefésülés (merge). Tegyük fel, hogy adottak az A [1 : k] és B [1 : l] növekv½oen rendezett tömbök és tartalmukat a C [1 : k + l] tömbben kívánjuk tárolni, rendezetten. A két rendezett tömb összefésülési algoritmusa a következ½o: 1. C [1]-be az A [1] és B [1] közül a kisebbiket rakjuk, 2. Ha az A [1 : i] és B [1 : j] résztömböket már feldolgoztuk, akkor a következ½o elem: C [i + j + 1] = min fa [i + 1] ; B [j + 1]g : Az összefésülés maximális költsége k + l 1 összehasonlítás és k + l mozgatás. A legkisebb költség: min fk; lg összehasonlítás (Miért?). Legyen az A [1 : n] tömb rendezetlen. Az összefésül½o rendezés (msort) alapelve: rendezzük a tömb els½o és második felét külön külön, majd ezek tartalmát fésüljük össze és használjunk rekurziót! function msort (x; y) comment sorts A [x::y] if y x 1 then return(a) else return(merge(msort x; x+y 2 ; msort x+y 2 + 1; y ) Legyen T (n) az összefésül½o rendezés költsége (összehasonlítások száma) n hosszúságú tömb esetén és tegyük fel, hogy n = 2 k alakú. Az n=2 hosszúságú rendezett tömbök összefésülése n 1 összehasonlítás. Ezért az algoritmus költségére fennáll, hogy 1; ha n 1 T (n) = 2T (n=2) + n 1; egyébként A mester tétel alapján T (n) = O (n log n) összehasonlítás az összefésül½o rendezés költsége. A pontosabb eredmény: n n T (n) = 2T + n 1 = 2 2 T n n = 2 3 T n = 2 i T + 2 i = 2 k T (1) + ix j=1 kx j=1 n n n 2 j n 1 2 j n n 1 n 2 j 1 + n 1 = 2n + kn 1 = 2n + kn 1 2 k 1 = n log 2 n + n: Tehát az összefésül½o rendezés legrosszabb eset bonyolultsága n hosszúságú tömb esetén O (n log n) összehasonlítás. 90 ALGORITMUSOK ANALíZISE kx j=1 2 j 1

91 Gyorsrendezés A gyorsrendezés vagy quicksort algoritmust C.A.R. Hoare publikálta 1962-ben és egyike a 20. század tíz legfontosabbnak tartott algoritmusának (lásd B. A. Cipra: The Best of the 20th Century: Editors Name Top 10 Algorithms, SIAM News, Volume 33, Number 4). Sir Tony Hoare Az algoritmusnak három eleme van: - felosztás, - uralkodás, - összevonás. A felosztásban az algoritmus kiválaszt egy A (q) elemet (pivot elemet vagy ½orszemet) és felosztja az fa (p) ; : : : ; A (r)g (p r) tömböt két összefügg½o (esetleg üres) fa (p) ; : : : ; A (q 1)g ; fa (q + 1) ; : : : ; A (r)g résztömbre úgy, hogy a baloldali résztömb elemei kisebbek, vagy kisebb-egyenl½ok A (q)-nál, a jobboldali résztömb elemei pedig nagyobbak A (q)-nál. A két résztömb elemei nem rendezettek. Az q index (½orszem, pivot elem) számítása a felosztó eljárás része. Az uralkodás fázisában az fa (p) ; : : : ; A (q 1)g és fa (q + 1) ; : : : ; A (r)g résztömböket a felosztás (gyorsrendezés) rekurzív hívásával rendezzük. Az összevonás fázisa: Mivel rekurzív hivások az egyelem½u résztömböknél állnak le és résztömböket helyben rendeztük, az eredményül kapott egész fa (p) ; : : : ; A (r)g tömb rendezett lesz. Az algoritmus leírása: gyorsrendezés (A; p; r) if p < r then q =feloszt(a; p; r) gyorsrendezés(a; p; q 1) KERESÉSI, RENDEZÉSI ÉS KIVÁLASZTÁSI FELADATOK 91

ALGORITMUS ELMÉLET 2016/2017 I. félév,

ALGORITMUS ELMÉLET 2016/2017 I. félév, ALGORITMUS ELMÉLET 2016/2017 I. félév, (el½oadás vázlat) Prof. Dr. Galántai Aurél Óbudai Egyetem NIK Alkalmazott Informatikai Intézet Budapest 2016-09-10 2 Tartalomjegyzék 1. Bevezetés 5 2. Matematikai

Részletesebben

2009/2010/I. félév, Prof. Dr. Galántai Aurél BMF NIK IMRI Budapest. 2009. november 25.

2009/2010/I. félév, Prof. Dr. Galántai Aurél BMF NIK IMRI Budapest. 2009. november 25. SZÁMÍTÁSTUDOMÁNY 2009/2010/I. félév, (el½oadás vázlat) Prof. Dr. Galántai Aurél BMF NIK IMRI Budapest 2009. november 25. Tartalomjegyzék TARTALOMJEGYZÉK 3 1. Bevezetés 5 2. Matematikai alapfogalmak 9 2.1.

Részletesebben

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:

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: 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: 1. Öt kis kérdés megválaszolása egyenként 6 pontért, melyet minimum 12

Részletesebben

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:

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: 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: 1. Öt rövid kérdés megválaszolása egyenként 6 pontért, melyet minimum

Részletesebben

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

Deníciók és tételek a beugró vizsgára Deníciók és tételek a beugró vizsgára (a szóbeli viszgázás jogáért) Utolsó módosítás: 2008. december 2. 2 Bevezetés Számítási problémának nevezünk egy olyan, a matematika nyelvén megfogalmazott kérdést,

Részletesebben

dr. Szalkai István Pannon Egyetem, Veszprém, Matematika Tanszék november 3.

dr. Szalkai István Pannon Egyetem, Veszprém, Matematika Tanszék november 3. Számosságok dr. Szalkai István Pannon Egyetem, Veszprém, Matematika Tanszék 2008. november 3. ### Szamoss1www.tex, 2008.09.28. Ebben a rövid jegyzetben els½osorban a végtelen halmazok méretét, elemeinek

Részletesebben

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 8. előadás ápr. 16. Turing gépek és nyelvtanok A nyelvosztályok áttekintése Turing gépek és a természetes számokon értelmezett függvények Áttekintés Dominó Bizonyítások: L

Részletesebben

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. HA 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) HA 2 Halmazok HA 3 Megjegyzések A halmaz, az elem és az eleme fogalmakat nem definiáljuk, hanem alapfogalmaknak

Részletesebben

A Számítástudomány alapjai

A Számítástudomány alapjai 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

Részletesebben

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1 Halmazok 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 2 A fejezet legfontosabb elemei Halmaz megadási módjai Halmazok közti műveletek (metszet,

Részletesebben

Automaták mint elfogadók (akceptorok)

Automaták mint elfogadók (akceptorok) Automaták mint elfogadók (akceptorok) Ha egy iniciális Moore-automatában a kimenőjelek halmaza csupán kételemű: {elfogadom, nem fogadom el}, és az utolsó kimenőjel dönti el azt a kérdést, hogy elfogadható-e

Részletesebben

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.

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. Számításelmélet Kiszámítási problémának nevezünk egy olyan, a matematika nyelvén megfogalmazott kérdést, amire számítógéppel szeretnénk megadni a választ. (A matematika nyelvén precízen megfogalmazott

Részletesebben

Chomsky-féle hierarchia

Chomsky-féle hierarchia http://www.cs.ubbcluj.ro/~kasa/formalis.html Chomsky-féle hierarchia G = (N, T, P, S) nyelvtan: 0-s típusú (általános vagy mondatszerkezet ), ha semmilyen megkötést nem teszünk a helyettesítési szabályaira.

Részletesebben

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

Turing-gép május 31. Turing-gép 1. 1 Turing-gép 2007. május 31. Turing-gép 1. 1 Témavázlat Turing-gép Determinisztikus, 1-szalagos Turing-gép A gép leírása, példák k-szalagos Turing-gép Univerzális Turing-gép Egyéb Turing-gépek Nemdeterminisztikus

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 4 IV. FÜGGVÉNYEk 1. LEkÉPEZÉSEk, függvények Definíció Legyen és két halmaz. Egy függvény -ből -ba egy olyan szabály, amely minden elemhez pontosan egy elemet rendel hozzá. Az

Részletesebben

Halmazelméleti alapfogalmak

Halmazelméleti alapfogalmak Halmazelméleti alapfogalmak halmaz (sokaság) jól meghatározott, megkülönböztetett dolgok (tárgyak, fogalmak, stb.) összessége. - halmaz alapfogalom. z azt jelenti, hogy csak példákon keresztül magyarázzuk,

Részletesebben

A számítógépes nyelvészet elmélete és gyakorlata. Formális nyelvek elmélete

A számítógépes nyelvészet elmélete és gyakorlata. Formális nyelvek elmélete A számítógépes nyelvészet elmélete és gyakorlata Formális nyelvek elmélete Nyelv Nyelvnek tekintem a mondatok valamely (véges vagy végtelen) halmazát; minden egyes mondat véges hosszúságú, és elemek véges

Részletesebben

Algoritmuselmélet 12. előadás

Algoritmuselmélet 12. előadás Algoritmuselmélet 12. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Április 9. ALGORITMUSELMÉLET 12. ELŐADÁS 1 Turing-gépek

Részletesebben

ZH feladatok megoldásai

ZH feladatok megoldásai ZH feladatok megoldásai A CSOPORT 5. Írja le, hogy milyen szabályokat tartalmazhatnak az egyes Chomskynyelvosztályok (03 típusú nyelvek)! (4 pont) 3. típusú, vagy reguláris nyelvek szabályai A ab, A a

Részletesebben

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma Készítette: Laczik Sándor János Gráfelmélet I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma Definíció: a G=(V,E) párt egyszerű gráfnak nevezzük, (V elemeit a gráf csúcsainak/pontjainak,e elemeit

Részletesebben

dr. Szalkai István Pannon Egyetem, Veszprém, Matematika Tanszék augusztus 12.

dr. Szalkai István Pannon Egyetem, Veszprém, Matematika Tanszék augusztus 12. Számosságok dr. Szalkai István Pannon Egyetem, Veszprém, Matematika Tanszék 2012. augusztus 12. nszamossagnszamoss2www.tex, 2012.08.12., 02:50 1. Bevezetés Ebben a rövid jegyzetben els½osorban a végtelen

Részletesebben

Matematikai logika és halmazelmélet

Matematikai logika és halmazelmélet Matematikai logika és halmazelmélet Wettl Ferenc előadása alapján 2015-09-07 Wettl Ferenc előadása alapján Matematikai logika és halmazelmélet 2015-09-07 1 / 21 Tartalom 1 Matematikai kijelentések szerkezete

Részletesebben

Leképezések. Leképezések tulajdonságai. Számosságok.

Leképezések. Leképezések tulajdonságai. Számosságok. Leképezések Leképezések tulajdonságai. Számosságok. 1. Leképezések tulajdonságai A továbbiakban legyen A és B két tetszőleges halmaz. Idézzünk fel néhány definíciót. 1. Definíció (Emlékeztető). Relációknak

Részletesebben

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

A számítógépes nyelvészet elmélete és gyakorlata. Automaták A számítógépes nyelvészet elmélete és gyakorlata Automaták Nyelvek és automaták A nyelvek automatákkal is jellemezhetőek Automaták hierarchiája Chomsky-féle hierarchia Automata: új eszköz a nyelvek komplexitásának

Részletesebben

DiMat II Végtelen halmazok

DiMat II Végtelen halmazok DiMat II Végtelen halmazok Czirbusz Sándor 2014. február 16. 1. fejezet A kiválasztási axióma. Ismétlés. 1. Deníció (Kiválasztási függvény) Legyen {X i, i I} nemüres halmazok egy indexelt családja. Egy

Részletesebben

A matematika nyelvér l bevezetés

A matematika nyelvér l bevezetés A matematika nyelvér l bevezetés Wettl Ferenc 2012-09-06 Wettl Ferenc () A matematika nyelvér l bevezetés 2012-09-06 1 / 19 Tartalom 1 Matematika Matematikai kijelentések 2 Logikai m veletek Állítások

Részletesebben

Diszkrét matematika I.

Diszkrét matematika I. Diszkrét matematika I. középszint 2014. ősz 1. Diszkrét matematika I. középszint 3. előadás Mérai László diái alapján Komputeralgebra Tanszék 2014. ősz Relációk Diszkrét matematika I. középszint 2014.

Részletesebben

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

Bonyolultságelmélet. Monday 26 th September, 2016, 18:28 Bonyolultságelmélet Monday 26 th September, 2016, 18:28 A kurzus teljesítési követelményei 2 Gyakorlat Három kisdolgozat 6 6 pontért kb. a 4., 7. és 10. gyakorlaton Egy nagydolgozat 28 pontért utolsó héten

Részletesebben

Atomataelmélet: A Rabin Scott-automata

Atomataelmélet: A Rabin Scott-automata A 19. óra vázlata: Atomataelmélet: A Rabin Scott-automata Az eddigieken a formális nyelveket generatív szempontból vizsgáltuk, vagyis a nyelvtan (generatív grammatika) szemszögéből. A generatív grammatika

Részletesebben

Chomsky-féle hierarchia

Chomsky-féle hierarchia http://www.ms.sapientia.ro/ kasa/formalis.htm Chomsky-féle hierarchia G = (N, T, P, S) nyelvtan: 0-s típusú (általános vagy mondatszerkezetű), ha semmilyen megkötést nem teszünk a helyettesítési szabályaira.

Részletesebben

HALMAZELMÉLET feladatsor 1.

HALMAZELMÉLET feladatsor 1. HALMAZELMÉLET feladatsor 1. Egy (H,, ) algebrai struktúra háló, ha (H, ) és (H, ) kommutatív félcsoport, és teljesül az ún. elnyelési tulajdonság: A, B H: A (A B) = A, A (A B) = A. A (H,, ) háló korlátos,

Részletesebben

2014. szeptember 24. és 26. Dr. Vincze Szilvia

2014. szeptember 24. és 26. Dr. Vincze Szilvia 2014. szeptember 24. és 26. Dr. Vincze Szilvia Mind a hétköznapi, mind a tudományos életben gyakran előfordul, hogy bizonyos halmazok elemei között kapcsolat figyelhető meg. A kapcsolat fogalmának matematikai

Részletesebben

Itt és a továbbiakban a számhalmazokra az alábbi jelöléseket használjuk:

Itt és a továbbiakban a számhalmazokra az alábbi jelöléseket használjuk: 1. Halmazok, relációk, függvények 1.A. Halmazok A halmaz bizonyos jól meghatározott dolgok (tárgyak, fogalmak), a halmaz elemeinek az összessége. Azt, hogy az a elem hozzátartozik az A halmazhoz így jelöljük:

Részletesebben

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

Számításelmélet. Második előadás Számításelmélet Második előadás Többszalagos Turing-gép Turing-gép k (konstans) számú szalaggal A szalagok mindegyike rendelkezik egy független író / olvasó fejjel A bemenet az első szalagra kerül, a többi

Részletesebben

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

Számításelmélet. Will június 13. A kiszámíthatóság fogalma és a Church-Turing tézis Számításelmélet Will 2010. június 13. A kiszámíthatóság fogalma és a Church-Turing tézis. A Turing gép, mint algoritmus modell. A rekurzív és a rekurzívan felsorolható nyelvek. Algoritmikusan eldönthet

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2015. tavasz 1. Diszkrét matematika 2.C szakirány 1. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu Komputeralgebra Tanszék 2015. tavasz Gráfelmélet Diszkrét

Részletesebben

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

Bonyolultságelmélet. Monday 26 th September, 2016, 18:27. Bonyolultságelmélet Monday 26 th September, 2016, 18:27 A kurzus teljesítési követelményei Gyakorlat Három kisdolgozat 6 6 pontért kb. a 4., 7. és 10. gyakorlaton Egy nagydolgozat 28 pontért utolsó héten előadáson Pontszám:

Részletesebben

Diszkrét matematika 1. estis képzés

Diszkrét matematika 1. estis képzés Diszkrét matematika 1. estis képzés 2019. tavasz 1. Diszkrét matematika 1. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján

Részletesebben

1. tétel - Gráfok alapfogalmai

1. tétel - Gráfok alapfogalmai 1. tétel - Gráfok alapfogalmai 1. irányítatlan gráf fogalma A G (irányítatlan) gráf egy (Φ, E, V) hátmas, ahol E az élek halmaza, V a csúcsok (pontok) halmaza, Φ: E {V-beli rendezetlen párok} illeszkedési

Részletesebben

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat Formális nyelvek a gyakorlatban Formális nyelvek, 1 gyakorlat Segédanyagok Célja: A programozási nyelvek szintaxisának leírására használatos eszközök, módszerek bemutatása Fogalmak: BNF, szabály, levezethető,

Részletesebben

Algoritmuselmélet 18. előadás

Algoritmuselmélet 18. előadás Algoritmuselmélet 18. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Május 7. ALGORITMUSELMÉLET 18. ELŐADÁS 1 Közelítő algoritmusok

Részletesebben

Házi feladatok megoldása. Nyelvek felismerése. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 5. gyakorlat

Házi feladatok megoldása. Nyelvek felismerése. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 5. gyakorlat Házi feladatok megoldása Nyelvek felismerése Formális nyelvek, 5. gyakorlat 1. feladat Adjunk a következő nyelvet generáló 3. típusú nyelvtant! Azon M-áris számrendszerbeli számok, melyek d-vel osztva

Részletesebben

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

Logika és számításelmélet. 10. előadás Logika és számításelmélet 10. előadás Rice tétel Rekurzíve felsorolható nyelvek tulajdonságai Tetszőleges P RE halmazt a rekurzívan felsorolható nyelvek egy tulajdonságának nevezzük. P triviális, ha P

Részletesebben

NP-teljesség röviden

NP-teljesség röviden NP-teljesség röviden Bucsay Balázs earthquake[at]rycon[dot]hu http://rycon.hu 1 Turing gépek 1/3 Mi a turing gép? 1. Definíció. [Turing gép] Egy Turing-gép formálisan egy M = (K, Σ, δ, s) rendezett négyessel

Részletesebben

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva 6. FÜGGVÉNYEK HATÁRÉRTÉKE ÉS FOLYTONOSSÁGA 6.1 Függvény határértéke Egy D R halmaz torlódási pontjainak halmazát D -vel fogjuk jelölni. Definíció. Legyen f : D R R és legyen x 0 D (a D halmaz torlódási

Részletesebben

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel! függvények RE 1 Relációk Függvények függvények RE 2 Definíció Ha A, B és ρ A B, akkor azt mondjuk, hogy ρ reláció A és B között, vagy azt, hogy ρ leképezés A-ból B-be. Ha speciálisan A=B, azaz ρ A A, akkor

Részletesebben

Formális nyelvek - 9.

Formális nyelvek - 9. Formális nyelvek - 9. Csuhaj Varjú Erzsébet Algoritmusok és Alkalmazásaik Tanszék Informatikai Kar Eötvös Loránd Tudományegyetem H-1117 Budapest Pázmány Péter sétány 1/c E-mail: csuhaj@inf.elte.hu 1 Véges

Részletesebben

Automaták és formális nyelvek

Automaták és formális nyelvek Automaták és formális nyelvek Bevezetés a számítástudomány alapjaiba 1. Formális nyelvek 2006.11.13. 1 Automaták és formális nyelvek - bevezetés Automaták elmélete: információs gépek általános absztrakt

Részletesebben

Diszkrét matematika 2.

Diszkrét matematika 2. Diszkrét matematika 2. Mérai László előadása alapján Készítette: Nagy Krisztián 1. előadás Gráfok halmaza, gráf, ahol a csúcsok halmaza, az élek illesztkedés reláció: illesztkedik az élre, ha ( -él illesztkedik

Részletesebben

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1 Halmazelmélet 1. előadás Farkas István DE ATC Gazdaságelemzési és Statisztikai Tanszék Halmazelmélet p. 1/1 A halmaz fogalma, jelölések A halmaz fogalmát a matematikában nem definiáljuk, tulajdonságaival

Részletesebben

4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI 4. Fuzzy relációk Gépi intelligencia I. Fodor János BMF NIK IMRI NIMGI1MIEM Tartalomjegyzék I 1 Klasszikus relációk Halmazok Descartes-szorzata Relációk 2 Fuzzy relációk Fuzzy relációk véges alaphalmazok

Részletesebben

1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata.

1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata. 1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata. HLMZOK halmaz axiomatikus fogalom, nincs definíciója. benne van valami a halmazban szintén axiomatikus fogalom,

Részletesebben

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

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50 Bonyolultságelmélet Monday 26 th September, 2016, 18:50 A kiszámítás modelljei 2 De milyen architektúrán polinom? A kiszámításnak számos (matematikai) modellje létezik: Általános rekurzív függvények λ-kalkulus

Részletesebben

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

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y. Algoritmuselmélet Bonyolultságelmélet Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 12. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

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

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése Dr. Kallós Gábor 2014 2015 1 Az Ordó jelölés Azt mondjuk, hogy az f(n) függvény eleme az Ordó(g(n)) halmaznak, ha van olyan c konstans (c

Részletesebben

SZÁMÍTÁSTUDOMÁNY ALAPJAI

SZÁMÍTÁSTUDOMÁNY ALAPJAI SZÁMÍTÁSTUDOMÁNY ALAPJAI INBGM0101-17 Előadó: Dr. Mihálydeák Tamás Sándor Gyakorlatvezető: Kovács Zita 2017/2018. I. félév 2. gyakorlat Az alábbi összefüggések közül melyek érvényesek minden A, B halmaz

Részletesebben

Nagy Gábor compalg.inf.elte.hu/ nagy

Nagy Gábor  compalg.inf.elte.hu/ nagy Diszkrét matematika 3. estis képzés 2016. ősz 1. Diszkrét matematika 3. estis képzés 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

RE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

RE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel! RE 1 Relációk Függvények RE 2 Definíció: Ha A, B és ρ A B, akkor azt mondjuk, hogy ρ reláció A és B között, vagy azt, hogy ρ leképezés A-ból B-be. Ha speciálisan A=B, azaz ρ A A, akkor azt mondjuk, hogy

Részletesebben

Alap fatranszformátorok II

Alap fatranszformátorok II Alap fatranszformátorok II Vágvölgyi Sándor Fülöp Zoltán és Vágvölgyi Sándor [2, 3] közös eredményeit ismertetjük. Fogalmak, jelölések A Σ feletti alaptermek TA = (T Σ, Σ) Σ algebráját tekintjük. Minden

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 3 III. MEGFELELTETÉSEk, RELÁCIÓk 1. BEVEZETÉS Emlékeztetünk arra, hogy az rendezett párok halmazát az és halmazok Descartes-féle szorzatának nevezzük. Más szóval az és halmazok

Részletesebben

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit. 2. A VALÓS SZÁMOK 2.1 A valós számok aximómarendszere Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit. 1.Testaxiómák R-ben két művelet van értelmezve, az

Részletesebben

Nagyordó, Omega, Theta, Kisordó

Nagyordó, Omega, Theta, Kisordó A növekedés nagyságrendje, számosság Logika és számításelmélet, 6. gyakorlat 2009/10 II. félév Számításelmélet (6. gyakorlat) A növekedés nagyságrendje, számosság 2009/10 II. félév 1 / 1 Nagyordó, Omega,

Részletesebben

A valós számok halmaza

A valós számok halmaza VA 1 A valós számok halmaza VA 2 A valós számok halmazának axiómarendszere és alapvető tulajdonságai Definíció Az R halmazt a valós számok halmazának nevezzük, ha teljesíti a következő axiómarendszerben

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 7. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

1. előadás: Halmazelmélet, számfogalom, teljes

1. előadás: Halmazelmélet, számfogalom, teljes 1. előadás: Halmazelmélet, számfogalom, teljes indukció Szabó Szilárd Halmazok Halmaz: alapfogalom, bizonyos elemek (matematikai objektumok) összessége. Egy halmaz akkor adott, ha minden objektumról eldönthető,

Részletesebben

Diszkrét matematika 1. középszint

Diszkrét matematika 1. középszint Diszkrét matematika 1. középszint 2017. sz 1. Diszkrét matematika 1. középszint 3. el adás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján Komputeralgebra

Részletesebben

Kibernetika korábbi vizsga zárthelyi dolgozatokból válogatott tesztkérdések Figyelem! Az alábbi tesztek csak mintául szolgálnak a tesztkérdések megoldásához, azaz a bemagolásuk nem jelenti a tananyag elsajátítását

Részletesebben

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

Államvizsga kérdések a matematikus szakon, 2001. Államvizsga '01, 12. tétel: Algoritmusok bonyolultsága... 1 Államvizsga kérdések a matematikus szakon, 2001. 10. tétel : Algoritmusok bonyolultsága (Számítási modellek, véges automaták, Turinggépek, eldönthet

Részletesebben

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13. Algoritmuselmélet NP-teljes problémák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 13. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

Az optimális megoldást adó algoritmusok

Az optimális megoldást adó algoritmusok Az optimális megoldást adó algoritmusok shop ütemezés esetén Ebben a fejezetben olyan modellekkel foglalkozunk, amelyekben a munkák több műveletből állnak. Speciálisan shop ütemezési problémákat vizsgálunk.

Részletesebben

Ítéletkalkulus. 1. Bevezet. 2. Ítéletkalkulus

Ítéletkalkulus. 1. Bevezet. 2. Ítéletkalkulus Ítéletkalkulus Logikai alapfogalmak, m veletek, formalizálás, logikai ekvivalencia, teljes diszjunktív normálforma, tautológia. 1. Bevezet A matematikai logikában az állításoknak nem a tényleges jelentésével,

Részletesebben

Függvények növekedési korlátainak jellemzése

Függvények növekedési korlátainak jellemzése 17 Függvények növekedési korlátainak jellemzése A jellemzés jól bevált eszközei az Ω, O, Θ, o és ω jelölések. Mivel az igények általában nemnegatívak, ezért az alábbi meghatározásokban mindenütt feltesszük,

Részletesebben

HHF0CX. k darab halmaz sorbarendezésének a lehetősége k! Így adódik az alábbi képlet:

HHF0CX. k darab halmaz sorbarendezésének a lehetősége k! Így adódik az alábbi képlet: Gábor Miklós HHF0CX 5.7-16. Vegyük úgy, hogy a feleségek akkor vannak a helyükön, ha a saját férjeikkel táncolnak. Ekkor már látszik, hogy azon esetek száma, amikor senki sem táncol a saját férjével, megegyezik

Részletesebben

A relációelmélet alapjai

A relációelmélet alapjai A relációelmélet alapjai A reláció latin eredet szó, jelentése kapcsolat. A reláció, két vagy több nem feltétlenül különböz halmaz elemei közötti viszonyt, kapcsolatot fejez ki. A reláció értelmezése gráffal

Részletesebben

Feladatok, amelyek gráfokkal oldhatók meg 1) A königsbergi hidak problémája (Euler-féle probléma) a

Feladatok, amelyek gráfokkal oldhatók meg 1) A königsbergi hidak problémája (Euler-féle probléma) a Feladatok, amelyek gráfokkal oldhatók meg ) A königsbergi hidak problémája (Euler-féle probléma) a b d c A megfelelő gráf: d a b c ) Egy szórakoztató feladat (Hamilton-féle probléma) Helyezzük el az,,,...,

Részletesebben

Formális nyelvek és automaták vizsgához statisztikailag igazolt várható vizsgakérdések

Formális nyelvek és automaták vizsgához statisztikailag igazolt várható vizsgakérdések 1. Feladat Az első feladatban szereplő - kérdések 1 Minden környezet független nyelv felismerhető veremautomatával. Minden környezet független nyelv felismerhető 1 veremmel. Minden 3. típusú nyelv felismerhető

Részletesebben

Matematika alapjai; Feladatok

Matematika alapjai; Feladatok Matematika alapjai; Feladatok 1. Hét 1. Tekintsük a,, \ műveleteket. Melyek lesznek a.) kommutativok b.) asszociativak c.) disztributívak-e a, műveletek? Melyik melyikre? 2. Fejezzük ki a műveletet a \

Részletesebben

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Nagy Gábor  compalg.inf.elte.hu/ nagy ősz Diszkrét matematika 1. középszint 2017. ősz 1. Diszkrét matematika 1. középszint 8. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján Komputeralgebra

Részletesebben

Diszkrét matematika 2.

Diszkrét matematika 2. Diszkrét matematika 2. 2018. november 23. 1. Diszkrét matematika 2. 9. előadás Fancsali Szabolcs Levente nudniq@cs.elte.hu www.cs.elte.hu/ nudniq Komputeralgebra Tanszék 2018. november 23. Diszkrét matematika

Részletesebben

Formális Nyelvek - 1. Előadás

Formális Nyelvek - 1. Előadás Formális Nyelvek - 1. Előadás Csuhaj Varjú Erzsébet Algoritmusok és Alkalmazásaik Tanszék Informatikai Kar Eötvös Loránd Tudományegyetem H-1117 Budapest Pázmány Péter sétány 1/c E-mail: csuhaj@inf.elte.hu

Részletesebben

n =

n = 15. PÉLDÁK FÉLCSOPORTOKRA ÉS CSOPORTOKRA 1. Az R 3 tér vektorai a derékszög½u koordinátarendszerben az a = (a 1 ; a 2 ; a 3 ) alakban adottak az a 1 ; a 2 ; a 3 2 R valós számokkal. A vektoriális szorzás

Részletesebben

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Logika es sz am ıt aselm elet I. r esz Logika 1/36 1/36 Logika és számításelmélet I. rész Logika 2/36 Elérhetőségek Tejfel Máté Déli épület, 2.606 matej@inf.elte.hu http://matej.web.elte.hu Tankönyv 3/36 Tartalom 4/36 Bevezető fogalmak Ítéletlogika Ítéletlogika

Részletesebben

Az informatika elméleti alapjai 2 elővizsga december 19.

Az informatika elméleti alapjai 2 elővizsga december 19. Név (aláírás): Az informatika elméleti alapjai 2 elővizsga 2017. december 19. A vizsgadolgozat 1. feladatára helyes válaszonként 1-1 pont kapható, a 2-3. feladatok megoldásáért 6-6 pont, a 4. feladatra

Részletesebben

Véges automaták, reguláris nyelvek

Véges automaták, reguláris nyelvek Véges automaták, reguláris nyelvek Kiegészítő anyag az lgoritmuselmélet tárgyhoz (a Rónyai Ivanyos Szabó: lgoritmusok könyv mellé) Friedl Katalin BME SZIT friedl@cs.bme.hu 27. augusztus 3. véges automata

Részletesebben

Feladatok. 6. A CYK algoritmus segítségével döntsük el, hogy aabbcc eleme-e a G = {a, b, c}, {S, A, B, C}, P, S nyelvtan által generált nyelvnek!

Feladatok. 6. A CYK algoritmus segítségével döntsük el, hogy aabbcc eleme-e a G = {a, b, c}, {S, A, B, C}, P, S nyelvtan által generált nyelvnek! Feladatok 1. A CYK algoritmus segítségével döntsük el, hogy cabcab eleme-e a G = {a, b, c}, {S, A, B, C, D, E}, P, S nyelvtan által generált nyelvnek! P: S AD EB SS A AB a B DD b C CB c D EC a E AD b 2.

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. ősz 1. Diszkrét matematika 2.C szakirány 2. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák.

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. Predikátumkalkulus Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. 1. Bevezet Nézzük meg a következ két kijelentést: Minden almához tartozik egy fa, amir l leesett. Bármely

Részletesebben

13.1.Állítás. Legyen " 2 C primitív n-edik egységgyök és K C olyan számtest, amelyre " =2 K, ekkor K(") az x n 1 2 K[x] polinomnak a felbontási teste

13.1.Állítás. Legyen  2 C primitív n-edik egységgyök és K C olyan számtest, amelyre  =2 K, ekkor K() az x n 1 2 K[x] polinomnak a felbontási teste 13. GYÖKB½OVÍTÉS GALOIS CSOPORTJA, POLINOMOK GYÖKEINEK ELÉRHET½OSÉGE 13.1.Állítás. Legyen " 2 C primitív n-edik egységgyök és K C olyan számtest, amelyre " =2 K, ekkor K(") az x n 1 2 K[x] polinomnak a

Részletesebben

Bevezetés. 1. fejezet. Algebrai feladatok. Feladatok

Bevezetés. 1. fejezet. Algebrai feladatok. Feladatok . fejezet Bevezetés Algebrai feladatok J. A számok gyakran használt halmazaira a következ jelöléseket vezetjük be: N a nemnegatív egész számok, N + a pozitív egész számok, Z az egész számok, Q a racionális

Részletesebben

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex A sorozat fogalma Definíció. A természetes számok N halmazán értelmezett függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet a valós számok halmaza, valós számsorozatról beszélünk, mígha az

Részletesebben

Relációk. 1. Descartes-szorzat. 2. Relációk

Relációk. 1. Descartes-szorzat. 2. Relációk Relációk Descartes-szorzat. Relációk szorzata, inverze. Relációk tulajdonságai. Ekvivalenciareláció, osztályozás. Részbenrendezés, Hasse-diagram. 1. Descartes-szorzat 1. Deníció. Tetsz leges két a, b objektum

Részletesebben

A 2015/2016. tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló MATEMATIKA III. KATEGÓRIA (a speciális tanterv szerint haladó gimnazisták)

A 2015/2016. tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló MATEMATIKA III. KATEGÓRIA (a speciális tanterv szerint haladó gimnazisták) A 205/206. tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló MATEMATIKA III. KATEGÓRIA a speciális tanterv szerint haladó gimnazisták Javítási-értékelési útmutató. feladat Az {,2,...,n} halmaz

Részletesebben

A Matematika I. előadás részletes tematikája

A Matematika I. előadás részletes tematikája A Matematika I. előadás részletes tematikája 2005/6, I. félév 1. Halmazok és relációk 1.1 Műveletek halmazokkal Definíciók, fogalmak: halmaz, elem, üres halmaz, halmazok egyenlősége, részhalmaz, halmazok

Részletesebben

2012. október 2 és 4. Dr. Vincze Szilvia

2012. október 2 és 4. Dr. Vincze Szilvia 2012. október 2 és 4. Dr. Vincze Szilvia Tartalomjegyzék 1.) Az egyváltozós valós függvény fogalma, műveletek 2.) Zérushely, polinomok zérushelye 3.) Korlátosság 4.) Monotonitás 5.) Szélsőérték 6.) Konvex

Részletesebben

Struktúra nélküli adatszerkezetek

Struktúra nélküli adatszerkezetek Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A

Részletesebben

22. GRÁFOK ÁBRÁZOLÁSA

22. GRÁFOK ÁBRÁZOLÁSA 22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is

Részletesebben

A = fx j P (x) igazg ; A = fx j 1 x 7; x prímszámg : A [ B = fx j x 2 A, vagy x 2 Bg ; [a::b] := [a; b] \ Z

A = fx j P (x) igazg ; A = fx j 1 x 7; x prímszámg : A [ B = fx j x 2 A, vagy x 2 Bg ; [a::b] := [a; b] \ Z 1 Alapfogalmak Halmaz: Azonos tulajdonságú elemek összessége. Halmaz jelölése: Latin ABC nagybet½ui (általában). Halmaz elemeinek jelölése: Latin kisbet½uk (általában). Halmaz megadása: a) elemeinek felsorolásával,

Részletesebben

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum. Programozási tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi

Részletesebben

Logika és informatikai alkalmazásai

Logika és informatikai alkalmazásai Logika és informatikai alkalmazásai 4. gyakorlat Németh L. Zoltán http://www.inf.u-szeged.hu/~zlnemeth SZTE, Informatikai Tanszékcsoport 2011 tavasz Irodalom Szükséges elmélet a mai gyakorlathoz Előadás

Részletesebben

1. Mondjon legalább három példát predikátumra. 4. Mikor van egy változó egy kvantor hatáskörében?

1. Mondjon legalább három példát predikátumra. 4. Mikor van egy változó egy kvantor hatáskörében? Definíciók, tételkimondások 1. Mondjon legalább három példát predikátumra. 2. Sorolja fel a logikai jeleket. 3. Milyen kvantorokat ismer? Mi a jelük? 4. Mikor van egy változó egy kvantor hatáskörében?

Részletesebben