1. előadás Matematikai és nyelvi alapok, Szintaktikai vizsgálat

Hasonló dokumentumok
1. előadás Matematikai és nyelvi alapok, Szintaktikai vizsgálat

1. előadás Matematikai és nyelvi alapok, Szintaktikai vizsgálat

1 2. gyakorlat Matematikai és nyelvi alapfogalmak. dr. Kallós Gábor

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

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

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

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

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

Automaták és formális nyelvek

HALMAZELMÉLET feladatsor 1.

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

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!

1.1 Halmazelméleti fogalmak, jelölések

Dr. Vincze Szilvia;

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

SZÁMÍTÁSTUDOMÁNY ALAPJAI

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

Halmaz: alapfogalom, bizonyos elemek (matematikai objektumok) Egy halmaz akkor adott, ha minden objektumról eldönthető, hogy

1 2. előadás Matematikai és nyelvi alapfogalmak. dr. Kallós Gábor

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

5. előadás Reguláris kifejezések, a reguláris nyelvek jellemzése 1.

Formális nyelvek és automaták

KOVÁCS BÉLA, MATEMATIKA I.

9. előadás Környezetfüggetlen nyelvek

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

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

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

Diszkrét matematika I.

Halmazelméleti alapfogalmak

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

DiMat II Végtelen halmazok

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

2011. szeptember 14. Dr. Vincze Szilvia;

Diszkrét matematika 1. középszint

A valós számok halmaza

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

Klasszikus algebra előadás. Waldhauser Tamás április 28.

Házi feladatok megoldása. Nyelvek használata adatszerkezetek, képek leírására

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I.

Matematikai logika és halmazelmélet

BOOLE ALGEBRA Logika: A konjunkció és diszjunkció tulajdonságai

DISZKRÉT MATEMATIKA: STRUKTÚRÁK Előadáson mutatott példa: Bércesné Novák Ágnes

Diszkrét matematika I.

A relációelmélet alapjai

Gy ur uk aprilis 11.

ELTE IK Esti képzés tavaszi félév. Tartalom

HALMAZOK. A racionális számok halmazát olyan számok alkotják, amelyek felírhatók b. jele:. A racionális számok halmazának végtelen sok eleme van.

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

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

Matematika III. 2. Eseményalgebra Prof. Dr. Závoti, József

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:

Általános algebra. 1. Algebrai struktúra, izomorfizmus. 3. Kongruencia, faktoralgebra március Homomorfizmus, homomorfiatétel

Matematika alapjai; Feladatok

Analízis I. beugró vizsgakérdések

Diszkrét matematika I.

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

1. Algebrai alapok: Melyek műveletek az alábbiak közül?

MM CSOPORTELMÉLET GYAKORLAT ( )

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:

Mikor van egy változó egy kvantor hatáskörében? Milyen tulajdonságokkal rendelkezik a,,részhalmaz fogalom?

Permutációk véges halmazon (el adásvázlat, február 12.)

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

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

Formális Nyelvek - 1.

SE EKK EIFTI Matematikai analízis

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

Diszkrét matematika I.

Diszkrét matematika 2.

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

1.1. Definíció. Azt mondjuk, hogy a oszója b-nek, vagy más szóval, b osztható a-val, ha létezik olyan x Z, hogy b = ax. Ennek jelölése a b.

A matematika nyelvér l bevezetés

Irodalom. (a) A T, B T, (b) A + B, C + D, D C, (c) 3A, (d) AD, DA, B T A, 1 2 B = 1 C = A = 1 0 D = (a) 1 1 3, B T = = ( ) ; A T = 1 0

Diszkrét matematika HALMAZALGEBRA. Halmazalgebra

Chomsky-féle hierarchia

7. előadás Környezetfüggetlen nyelvtanok

Logika es sz am ıt aselm elet I. r esz Logika Harmadik el oad as 1/33


Logika es sz am ıt aselm elet I. r esz Logika Negyedik el oad as 1/26

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

Diszkrét matematika I.

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!

Diszkrét matematika 2.C szakirány

Mérhetőség, σ-algebrák, Lebesgue Stieltjes-integrál, véletlen változók és eloszlásfüggvényeik

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

Diszkrét matematika I. gyakorlat

Számítástudomány matematikai alapjai segédlet táv és levelező

1. tétel - Gráfok alapfogalmai

1. A polinom fogalma. Számolás formális kifejezésekkel. Feladat Oldjuk meg az x2 + x + 1 x + 1. = x egyenletet.

KOVÁCS BÉLA, MATEMATIKA I.

1. Részcsoportok (1) C + R + Q + Z +. (2) C R Q. (3) Q nem részcsoportja C + -nak, mert más a művelet!

VEKTORTEREK I. VEKTORTÉR, ALTÉR, GENERÁTORRENDSZER október 15. Irodalom. További ajánlott feladatok

Diszkrét matematika II., 8. előadás. Vektorterek

A lineáris algebrában központi szerepet betöltı vektortér fogalmát értelmezzük most, s megvizsgáljuk e struktúra legfontosabb egyszerő tulajdonságait.

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

Csima Judit október 24.

6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének

Struktúra nélküli adatszerkezetek

Átírás:

1. előadás Matematikai és nyelvi alapok, Szintaktikai vizsgálat Dr. Kallós Gábor 2014 2015 1 Tartalom Matematikai alapfogalmak Halmazok Relációk Függvények Homomorfizmusok Számosságok, végtelenek Nyelvi alapfogalmak Ábécé, szavak, nyelvek Műveletek szavakkal és nyelvekkel Szintaktikai vizsgálat Kifejezés Köznapi nyelv Programozási nyelv Nyelvek megadásának lehetőségei 2

Matematikai alapfogalmak Halmazelmélet Halmaz és halmazhoz való hozzátartozás: nem definiált alapfogalom Tudjuk: a B és a B közül csak pontosan az egyik teljesül Halmaz megadási módja Kapcsos zárójelben felsoroljuk az elemeit Megadjuk az elemeket jellemző tulajdonságo(ka)t (a módszer alkalmazhatóságát a részhalmaz axióma garantálja) { h a h elem T tulajdonságú } Példa: { x R 0 < x < 1} A halmazelmélet (pontos matematikai) felépítése: axiómák, definíciók, állítások, tételek Meghatározottsági axióma Legyenek A és B halmazok. A akkor és csak akkor egyenlő B-vel, ha minden x A esetén x B, és minden y B esetén y A. Azaz: elemeik azonosak Definíció Legyenek A és B halmazok. A része B-nek, ha minden x A-ra x B is teljesül (jelölés: A B). Tétel (halmazok egyenlősége): A = B, ha A B és B A Üres halmaz axióma Létezik olyan halmaz, amelynek nincs eleme. Ez az üres halmaz, jelölése. Állítás: Pontosan egy ilyen halmaz létezik 3 Matematikai alapfogalmak Halmazelmélet (folyt.) Definíciók (Legyenek A és B halmazok) Unió, metszet, különbséghalmaz értelmezése (tudjuk) Jelölések: A B, A B, A \ B Az unió axiómából Disztributivitási tulajdonság, de Morgan azonosságok, egyéb összefüggések (igazolhatók) A és B diszjunkt, ha nincs közös elemük Komplementer halmaz (H alaphalmazra vonatkozóan) H \ A, Jelölés: A Hatványhalmaz axióma Legyen A halmaz. Létezik olyan halmaz, amely tartalmazza A minden egyes részhalmazát. Ezt a halmazt A hatványhalmazának nevezzük, P(A)-val jelöljük Állítás: P(A) elemszáma 2 A (ez indukcióval igazolható) Definíció: Legyenek A és B halmazok. A és B direkt (vagy Descartes-féle) szorzata az összes olyan rendezett (x, y) számpárból álló halmaz, amelyeknél x A és y B. A direkt szorzat jele:. A B = {(x, y) x A és y B} (Rendezett pár definíció) Általánosítható n darab halmazra Feladat: Soroljuk fel A B elemeit, ahol A = {1, 2} és B = {3, 4, 5} 4

Matematikai alapfogalmak Relációk Definíció: Legyenek M 1, M 2,, M n tetszőleges halmazok. Egy ρ M 1 M 2 M n halmazt relációnak nevezünk (rendezett szám n-es) Megj.: Az üres halmaz is reláció (mert nincs olyan eleme, ami nem rendezett szám n-es) Ha n = 2, akkor ρ-t bináris relációnak nevezzük Elemei rendezett párok, jelölés: a, b vagy (a, b) Itt már beszélhetünk értelmezési tartományról és értékkészletről (M 1, ill. M 2 ) Legyen a A és b B egy ρ A B bináris reláció esetén. Ha ekkor a, b ρ teljesül, akkor azt mondjuk, hogy aρrelációban van b-vel. Jelölések: ρ(a, b), vagy ρ a, b, vagy aρb. Definíció: Legyenek ρ A B 1 és σ B 2 C bináris relációk. Két bináris reláció kompozíciójának (szorzatának) nevezzük azt a ρ σrelációt, ahol ρ σ A C, és ρ σ= { a, c b B 1 B 2 úgy, hogy a, b ρés b, c σ}. A kompozícióképzés nem kommutatív művelet Feladat: Legyen ρ = { n, n + 1 n N} és σ = { n, 3n n N}. Adjuk meg a ρ σés σ ρ relációkat! Egy ρ M M reláció k-adik (k 0) hatványát a következő módon értelmezzük: ρ 0 = { (a, a) a M}; ρ k + 1 = ρ k ρ, ha k 1 Nyilván ρ 1 = ρ 5 Matematikai alapfogalmak Relációk (folyt.) Definíciók + 2 3 k Egy ρ M M reláció tranzitív lezártja ρ = ρ U ρ U ρ U... = U ρ Egy ρ M M reláció reflexív, tranzitív lezártjaρ* = ρ 0 ρ + k= 1 ρ + mindig tranzitív, és ez a legszűkebb olyan reláció, amely tranzitív, és tartalmazza ρ-t ρ* reflexív és tranzitív, és a legszűkebb az ilyen tulajdonságúρ-t tartalmazó relációk közül Definíció: Egy ρ M M (homogén) bináris reláció reflexív, ha minden x M-re fennáll xρx; szimmetrikus, ha minden x, y M-re xρy yρx; antiszimmetrikus, ha minden x, y M-re xρyés yρx x=y; tranzitív, ha minden x, y, z M-re xρyés yρz xρz (Megj.: A homogén reláció meghatározása az, hogy értékkészlete része az értelmezési tartományának, de sokszor úgy használják, hogy a két halmaz megegyezik) Speciális relációk Definíció: A ρ (homogén) bináris reláció ekvivalencia-reláció, ha reflexív, szimm. és tranzitív Ekvivalencia-reláció példák: egyenesek párhuzamossága, szakaszok egybevágósága, számhalmazok egyenlősége Igazolható, hogy minden ekv.-reláció M-et páronként diszjunkt, nem üres részhalmazokra bontja fel (ekvivalencia-osztályok), és a részhalmazokból reprezentáns elem választható (Egy A halmazrendszer az A halmaz osztályfelbontása, ha A elemeinek uniója A-t adja, és tetszőleges két A-beli elemre teljesül, hogy ha nem diszjunktak, akkor megegyeznek) Reprezentáns példák: egyenesek párhuzamossága irány fogalom; szakaszok egybevágósága hosszúság fogalom 6

Matematikai alapfogalmak Speciális relációk (folyt.) Definíció: A ρ (homogén) bináris reláció rendezési reláció, ha reflexív, antiszimmetrikus és tranzitív Ekkor (M, ρ)-t rendezett halmaznak nevezzük olyan (rendezett) pár, amelynek első komponense egy nem üres halmaz, második komponense pedig egy, a halmazon értelmezett rendezési reláció Rendezett halmaz példák: (N, ), és hasonlóan (Z, ), (Q, ), (R, ); (P(H), ) ahol H tetszőleges halmaz, részhalmaz tulajdonsággal; (N, ), (Z, ) itt az oszthatóság De: (N, <) és (Z, <) nem rendezett halmaz, mert < nem reflexív! Definíció: Egy f reláció függvény, ha minden x, y és x, z f esetén y = z Azaz: nincs két olyan eleme, hogy az első komp.ek megegyeznek, a másodikak pedig kül.ők Jelölések függvény esetén: f(a, b) vagy a f b helyett b = f(a) Függvényekkel kapcsolatos fontos fogalmak (itt eml., összefoglaló módon, részl. nélkül) Értelmezési tartomány (D f ), értékkészlet (R f ), leképezés, helyettesítési érték (x-hez hozzárendelt elem) Függvényképző eljárások: függvény leszűkítése, függvények kompozíciója, függvény invertálása (invertálható kell, hogy legyen a függvény) Képhalmaz, X D f halmaz képe, Y R f halmaz ősképe Legyen f: A B. Azt mondjuk, hogy f az A-t B-be leképező injekció, ha f invertálható; f az A-t B-re leképező szuperjekció (szürjekció), ha R f = B; f az A és B közti bijekció, ha injekció és szuperjekció is 7 Matematikai alapfogalmak Definíció: Az (A, F) párt algebrának nevezzük, ahol A nem üres halmaz, F pedig az A-n értelmezett műveletek halmaza Példák algebrákra: (N, +), (N, {+, }) Definíció: Legyen (A, ) és (B, ) két algebra. Egy h: A B leképezést homomorfizmusnak nevezünk, ha injektív (monomorfizmus), azaz az értelmezési tartomány minden eleméhez az értékkészletnek pontosan egy eleme van hozzárendelve; és művelettartó, azaz minden a, b A esetén érvényes, hogy h(a b) = h(a) h(b). Ekkor A-t és h(a)-t homomorf(ak)nak nevezzük. A homomorfizmusok különös jelentősége az, hogy a definíciós halmaz struktúrájának típusát a képhalmazra viszik át (pl. csoportok) Egyes speciális struktúrák közötti homomorfizmusok (az algebrákon túl): csoportok, gyűrűk, vektorterek (köztük lineáris leképezések), rendezett halmazok Ha a h: A B függvény kölcsönösen egyértelmű (bijektív), és inverze is homomorfizmus, akkor izomorfizmusról beszélünk Az izomorf struktúrák algebrai nézőpont szerint megegyeznek Egyéb további speciális homomorfizmusok: Ha a leképezés szürjektív (epimorfizmus), illetve ha a leképzésnél B A (endomorfizmus) (Homomorf és izomorf struktúrákkal részletesen foglalkozunk még a számtud. slide-okon is) Félcsoport, monoid, csoport definíciója (számtud. slide-ok) 8

Matematikai alapfogalmak Példa: az AI B = AU B de Morgan azonosság szemléltetése nyelvi környezetben Alaphalmaz: összes szó valamely ábécé felett, V* (lásd később) Legyen A a páros hosszú szavak halmaza, B a hárommal osztható hosszú szavak halmaza Ábra: A B, ill. A és B komplementerei, majd ezek uniója, 9 Matematikai alapfogalmak Számosságok, végtelenek Definíció: Ha két halmaz között létesíthető bijekció, akkor a két halmazt mennyiségileg egybevágónak (ekvivalensnek) nevezzük Ez a viszony is reflexív, szimmetrikus és tranzitív, jelölés (lehet): x Számosság: Minden halmazhoz egyértelműen hozzárendelünk egy mérőszámot (elemek száma), oly módon, hogy a mennyiségileg egybevágó halmazok számossága ugyanaz, a nem egybevágóaké pedig különböző legyen Az üres halmaz számossága 0 Legyen n = {0, 1, 2,, n 1}. Ekkor n számossága n. Jelölés: n(n) = n vagy #n = n Definíció: Egy H halmaz véges, és számossága n, ha van olyan n N, amelyre n x H Ha n m, akkor n és m mennyiségileg nem egybevágók Ha egy H halmaz mennyiségileg egybevágón-nel, akkor H-t megszámlálhatóan végtelen számosságúnak mondjuk Jelölés: n(n) = a 0 Igazolható, hogy P(N) és R is végtelen halmaz, de mennyiségileg nem egybevágón-nel. Az R-rel mennyiségileg egybevágó halmazok kontinuum (nem megszáml. végtelen) számosságúak. Feladatok Igazoljuk, hogy a természetes számok halmaza és a nemnegatív, páros számok halmaza mennyiségileg egybevágó! Lehet-e egybevágó N és a négyzetszámok halmaza? Igazoljuk, hogy a valós számok [1, ) részhalmaza és a [0, 1) intervallum között létesíthető bijekció! *Mutassuk meg, hogy a [0, 1)-beli valós törtszámok halmaza nem felsorolható (nem megszámlálhatóak)! *El tudunk képzelni n(r)-nél nagyobb számosságot? Hol jöhet ez elő? 10

Nyelvi alapfogalmak Ábécé, szó Definíciók Ábécé: szimbólumok tetszőleges, nem üres, véges halmaza; jelölés: V (vagy Ʃ) A szimbólumokról (külön def. nélkül) feltesszük, hogy megkülönböztethetők és különböznek egymástól (Betűcsoport is választható szimbólumnak) Szó (mondat): V elemeiből képzett sorozat, azaz a 1 a k, ahol k 0, és a 1,, a k V Üresszó (null szó): k = 0 eset, jele λ (néha ε) Összes szó halmaza V felett (benne az üres szó is); jelölés: V* Ha az üresszót nem engedjük meg: V + = V* {λ} (Megj.: Nem üres V halmaz esetén V* megszámlálhatóan végtelen) Szó hossza (V felett): szimbólumok száma benne, jelölés: w (w szóra) Rekurzív definíció is lehetséges Itt λ = 0 Példa Legyen Ʃ = {a, b} Néhány szó Ʃ felett: a, b, ab, bb, baa, aba, abba, baba, Hány szót tudunk felsorolni? Hány véges szót tudunk felsorolni? Szavak hossza Ʃ felett: a = 1, ab = 2, Ʃ* = {λ, a, b, aa, ab, ba, bb, aaa, aab, aba, } Milyen rendezést célszerű itt alkalmazni? Hány darab n hosszú szót tudunk megadni? Feladat: Adjunk meg értelmes szavakat V = {if, then, else, a, b, c} felett 11 Nyelvi alapfogalmak Ábécé, szó (folyt.) Példa: egy ábécé feletti összes szót kiíró program Elemzés Mikor áll le a program? (Mit is jelent a megszámlálhatóan végtelen?) Igaz-e, hogy bármely rögzített hosszú szó (pl. w = 1000) előbb-utóbb kiírásra kerül? Tudunk mondani olyan szót az ábécé felett amelyet nem ír ki a program? Milyen stratégiával lehetne kiíratni az i hosszú szavakat? Feladatok Tervezzünk algoritmust (készítsünk programot), ami kiírja adott ábécé felett az összes páros hosszú szót! az összes hárommal nem osztható hosszú szót! 12

Nyelvi alapfogalmak Ábécé, szó (folyt.) Definíció Szavak egyenlősége: csak ha betűről-betűre megegyeznek, azaz valamely V*-beli p = a 1 a m és q = b 1 b n szavakat pontosan akkor tekintünk egyenlőknek, ha m = n és i = 1,, n-re a i = b i Tréfás példa Legyen V = {1, 2, +}. Ekkor V*-ban (persze nem matematikai értelemben ) fennáll, hogy 1+1 2, mivel az 1+1 szó nem egyezik meg betűről-betűre a 2 szóval. Definíció Szavak konkatenációja (egymás után írás, összefűzés, szorzás ): u és v V*-beli szavakra uv V* Érvényes: uv = u + v u n : az u szó n-szer egymás után írva (hatványozás) Itt is megadható rekurzív definíció u V*-ra u 0 = λ Igaz továbbá: xλ = λx = x De: a konkatenáció általában nem kommutatív! (azaz általában uv vu) Példa Legyen Ʃ = {a, b}. Ekkor az abbaʃ*-beli szó baba szóval való szorzata abbababa, ami nem egyezik meg a babaabba szóval. 13 Nyelvi alapfogalmak Ábécé, szó (folyt.) Igazolható, hogy V* a konkatenáció művelettel egységelemes félcsoportot, monoidot alkot A művelet asszociatív, és az üresszó egység Definíció Legyenek x és w V*-beli szavak. Azt mondjuk, hogy x prefixe (kezdőszelete) w-nek, ha van olyan y V*-beli szó, hogy w = xy. Ha x, y λ, akkor valódi prefixről beszélünk Valódi prefixre: x = k a prefix hossza Hasonlóan értelmezhető egy szó szuffixe (végződése) Definíció Legyenek x és w V*-beli szavak. Azt mondjuk, hogy x részszava w-nek, ha van olyan y, z V*, hogy w = yxz (itt y és z lehet üresszó). Valódi részszó is hasonlóan értelmezhető Használatos az alszó, kezdő alszó, és befejező alszó megnevezés is Feladat: Adjunk meg részszót, prefixet és szuffixet az abbababa szónál! Hány különböző prefix lehetséges? Szó tükörképe is definiálható, jelölés: w 1 Igaz-e, hogy (uv) 1 = v 1 u 1? 14

Nyelvi alapfogalmak Ábécé, szó (folyt.) Definíció Legyen adott két ábécé, V és W. A V*-ot W*-ra képező függvényeket szófüggvényeknek nevezzük. Példák A már ismert w 1 -et előállító tükör függvény, tükör(w) = w 1 A fej függvény, ahol fej(w) = w első betűje (1 hosszú valódi prefix), itt fej(λ) = λ Definíció Legyen f : V* W* szófüggvény. f hossztartó, ha f(w) = w. f kezdőszelettartó, ha f(uv) = f(u)w minden u, v V* esetén, valamilyen w W*-ra. Példák A tükör függvény hossztartó A fej függvény kezdőszelettartó Feladat: Keressünk néhány további szófüggvényt, amelyek hossztartóak, ill. kezdőszelettartóak Elemi szóműveleteknek nevezzük azokat a szófüggvényeket, amelyek a jellegzetes gépelési hibákat korrigálják Egy betű beszúrása egy szóba, adott helyre Egy adott helyen lévő betű törlése egy szóból Egy adott helyen lévő betű másikra cserélése Két szomszédos betű felcserélése 15 Nyelvi alapfogalmak Definíció Nyelv (vagy: V feletti nyelv, formális nyelv): V* tetszőleges L részhalmaza; azaz L V* Adott formális elem adott nyelvbe való tartozása egyértelműen eldönthető Egy nyelv lehet üres, véges vagy végtelen Üres nyelv: L = Csak az üres szót tartalmazó nyelv: L = {λ} (ennek van egy eleme) Egyszerű alapnyelvek: L = {a} típusúak A véges nyelvek elvileg elemeik felsorolásával megadhatók Teljes nyelv: L = V* (minden lehetséges szót tartalmaz) Megjegyzések Egy adott véges, nem üres Ʃ ábécé feletti összes lehetséges nyelvek halmaza a Ʃ* összes részhalmazából alkotott halmaz, vagyis Ʃ* hatványhalmaza. Mivel Ʃ* számossága megszámlálhatóan végtelen, így Ʃ felett kontinuum sok (különböző) nyelv létezik. A hagyományos nyelvek (pl. magyar nyelv) nem tekinthetők tiszta formális nyelvnek: a nyelv halmaza nem pontos, nem véglegesen lezárt, ill. részben szubjektív is; továbbá ugyanazon szónak lehet több jelentése Feladat: Nézzünk meg különféle példákat a Word helyesírás ellenőrzőjében! Vegyük észre, hogy a rendszer egyes, köznapinak tekinthető szavakat nem ismer fel, máskor számunkra teljesen magyartalan, ismeretlen szavakat elfogad. 16

Nyelvi alapfogalmak Példa: nyelvek V = {0, 1,, 9} felett A magyar történelmi évszámok halmaza ekkor egy véges nyelv V felett Lehet persze szubjektív, de biztosan véges A páratlan számok halmaza (tízes számrendszer) egy V feletti végtelen nyelv Példa: néhány nyelv Ʃ = {a, b} felett Véges nyelvek L 1 = {λ, a, aa, aab}, L 2 = {x Ʃ* x 7} Végtelen nyelvek L 3 = {x Ʃ* x páratlan}, L 4 = {x Ʃ* x prím} L 5 = {λ, ab, aabb, aaabbb, } = {a n b n n 0} L 6 = {u {a, b}* n a (u) = n b (u)} Feladat: Adjuk meg halmaz definícióval a következő nyelvet V = {a, b, c} felett: azon szavak, amelyek három vagy több a-val kezdődnek és utána csak 0 vagy több c-t tartalmaznak, illetve még azon szavak, amelyek egy vagy kettő a-val kezdődnek és utána csak 0 vagy több b-t tartalmaznak. Nyelvek megadásának lehetőségei Felsorolással, halmaz definícióval Döntési programmal (tdk. itt is szabályrdsz. van) Szabályokkal, generatív nyelvtannal (ez a legjobb eszköz, így lényegesen bonyolultabb nyelvek is hatékonyan megadhatók, lásd később) 17 Műveletek nyelvekkel A nyelvek halmazok és jelsorozatok is egyben. Így a rajtuk értelmezett műveletek is kétféle típusúak. Boole műveletek (,, \, ) Reguláris műveletek (+,, *) Tetszőleges L 1, L 2 V* nyelvek esetén értelmezhető a nyelvek (mint halmazok) uniója, metszete, különbsége, illetve L 1 -nek a V*-ra vonatkozó komplementere, és ezek szintén V*-beliek A jelölések a megszokottak (,, \, ) Egy formális definíció (a többi hasonlóan) L 1 L 2 = {p p L 1 és p L 2 } A komplementer képzésnél nagyon vigyázni kell az alaphalmaz megadására (!) Példa: Az L = {λ, a, aa, aab} nyelv komplementere teljesen más a Ʃ = {a, b}, illetve a Ʃ' = {a, b, c} felett A konkatenációt is értelmezzük nyelvekre (ez a művelet halmazokra nincs értelmezve, itt a jelsorozat tulajdonság él!) L 1 L 2 = {uv u L 1, v L 2 } Általában L 1 L 2 L 2 L 1 Egy L 1 L 2 -beli szó nem feltétlenül csak egyféle módon bontható fel L 1 -beli és L 2 -beli elemekre A konkatenáció segítségével egy nyelv önmagával vett konkatenáltját (szorzatát) is értelmezhetjük 18

Műveletek nyelvekkel Nyelv i-edik hatványa L k = LL L Itt L 0 = {λ} (megállapodás szerint), L 1 = L Itt is lehetséges rekurzív definíció Ugyanúgy mint szavakra, használatos V k = VV V is (Az ábécé is nyelv, hiszen V V*. Így az ábécére is értelmezett minden nyelvművelet, esetleg triviális eredménnyel.) Kleene-iteráció, a konkatenáció lezárása L* = {λ} L LL LLL (Kleene-csillag), vagy illetve: L + = L LL LLL (Kleene-plusz) =U =0 i Azaz: az L*-beli elemek azok a jelsorozatok, amelyeket fel lehet úgy darabolni, hogy minden darab a nyelv mondata legyen (a darabok számára nincs megkötés) Itt L + = L* is előfordulhat, pontosan akkor, ha λ L Hasonlóan: i V* = {λ} V VV VVV, vagy V V (Kérdés: Konzekvens ez az előző definícióval?) =U =0 i Természetes kérdés: zártak-e különböző nyelvosztályok ezekre a műveletekre? Az L nyelvosztály zárt a műveletre, ha tetszőleges L 1, L 2 L-re mindig L 1 L 2 Lis teljesül (hasonlóan lehet egyváltozós műveletre is, Hf.) Később az ilyen típusú vizsgálatok fontosak lesznek Egyéb érdekes művelet: nyelv megfordítása, L 1 = {w 1 w L } L i L 19 Műveletek nyelvekkel Legyen V egy rögzített ábécé. Ekkor tetszőleges L, L 1, L 2, L 3 V* esetén érvényesek a következő összefüggések (D. P.): L 1 L 2 = L 2 L 1 (az unió kommutatív) (L 1 L 2 ) L 3 = L 1 (L 2 L 3 ) (az unió asszociatív) L L = L (az unió idempotens) L = L = L (az unióra nézve létezik egységelem, a üres nyelv) L 1 L 2 = L 2 L 1 (a metszet kommutatív) (L 1 L 2 ) L 3 = L 1 (L 2 L 3 ) (a metszet asszociatív) L L= L (a metszet idempotens) L V* = V* L= L (a metszetre nézve létezik egységelem, a V* univerzális nyelv) (L 1 L 2 )L 3 = L 1 (L 2 L 3 ) (a konkatenáció asszociatív) L{λ} = {λ}l = L (a konkatenációra nézve létezik egységelem, és ez {λ}) L = L = (a konkatenációra nézve létezik nullelem, és ez ; nem lehet szópárokat készíteni) L + = LL* = L*L L* = L + {λ} (L*)* = L* (az iteráció idempotens) (L + ) + = L + (a + művelet idempotens) 20

Műveletek nyelvekkel Nyelvekre vonatkozó összefüggések (folyt.) (L*) + = (L + )* = L* L (a komplementerképzés involúciós tulajdonságú) 1 = L 1 Szemléltessük ezeket az összefüggéseket konkrét nyelv példákkal (fontosabb esetek)! Megjegyzések A műveletek asszociativitása miatt általában nem is szoktuk zárójelekkel jelezni a(z elméleti) sorrendjüket További zárójelek hagyhatók el az egyértelmű precedencia következtében, sorrend: az egyargumentumú műveletek (komplementer, Kleene-csillag és Kleene-plusz) precedenciája nagyobb, mint a kétargumentumúaké; a konkatenációé nagyobb, mint az unióé és metszeté Disztributivitási tulajdonságok is megfogalmazhatók Feladat: hagyjuk el a felesleges zárójeleket a következő kifejezésekből, ill. hozzuk egyszerűbb alakra a kifejezéseket (L 1 *) L 2, ((L 1 L 2 ) L 3 ), (L*L), (L L) ( L L), L V* Egyszerű nyelvműveleti példák {ab} {cd} = {ab, cd} {a, bx}{c, d} = {ac, ad, bxc, bxd}, {c, d}{a, bx} = {ca, da, cbx, dbx} {a, b} 3 = {aaa, aab, aba, abb, baa, bab, bba, bbb} {ab} + = {ab, abab, ababab, }, {ab}* = {λ, ab, abab, ababab, } Írjuk fel {a, bb}*-ot! 21 Műveletek nyelvekkel Nyelvműveletek feladatok (Főként D. P. 9 10.) Legyen V = {a, b, c}, L 1 = {a, c, bb, aba}, L 2 = {a, aba, abba, baba, abbaba, babaabba}. Adjuk meg az L 1 L 2, L 1 L 2, L 1 L 2, L 1 L 1 halmazokat. Legyen T = {a, b}, L 1 = {a n b n n 0}, L 2 = {a 2n+1 b n 0} L 3 = {a 2n n 0}. Adjuk meg az L 1 L 2, L 1 L 2, L 1 L 2, L 2 L 3, L 1 L 3, (L 2 )* halmazokat. Adjunk példát olyan V ábécé feletti L 1 és L 2 nyelvekre, amelyekre L 1 L 2 = L 2 L 1. (Próbáljunk nem triviális megoldást is megadni.) Adottak L 1 és L 2 véges nyelvek V ábécé felett úgy, hogy L 1 = n és L 2 = m. Mennyi lehet a számossága az L 1 L 2, L 1 L 2 és L 1 L 2 nyelveknek? Adjunk meg alsó és felső korlátot, továbbá példákat is. Igazoljuk vagy cáfoljuk, hogy (L 1 L 2 )* = (L 1 )* (L 2 )* Segítség: az állítás hamis, például L 1 = {a}, L 2 = {b}-re látható Mivel egyenlő L 2, ha L = {a n b n n > 0} 22

Nyelvek megadása döntési programmal Döntési program (nyelvhez tartozóan): válaszol arra a kérdésre, hogy egy adott szó eleme-e a nyelvnek A döntési program a fordító része Illusztrációs példa a V = {a, b} feletti L p = {a i b j i 3, j 0} {a i 1 i 2} nyelvhez (A. P.) Cél (később): a döntési program könnyen generálható legyen (automaták segítségével) 23 Szintaktikai vizsgálat Példa: Egy aritmetikai kifejezés szintaxisának megadása (bevezető a generatív nyelvtanhoz) (Minden programozási nyelvben előfordul) Adott egy rögzített elemekből felépített kifejezés. Feladatunk eldönteni, hogy szintaktikusan helyes-e (nem ránézésre vagy megérzéssel, hanem algoritmussal). Ehhez formalizálni kell a rendszert! Milyen szimbólumok, számok, műveleti jelek szerepelhetnek a kifejezésben? Rögzítünk egy megfelelő halmazt (ebben az egyszerű példában): változók (A, B, C), konstansok (0, 1), műveleti jelek (+, ) és zárójelek Példa kifejezések: A + B C, AB ++ (C ) Milyen szabályok alapján épülhet fel a kifejezés a már rögzített szimbólumokból? Rekurzív definíció: a kifejezés állhat egy tagból, vagy lehet több tag összege; azaz a kifejezés lehet egy kifejezés és egy tag összege Nyilván definiálni kell majd a tagot is (és a többi részegységet is) Tömör és egyértelmű megfogalmazás kell! Formális leírás elemei kifejezés = kif., tag = tag, vagy művelet =, lehet = (vagy: ::=, Backus Naur jelölés) Kifejezés definíciója Így tehát kif. tag kif. + tag 24

Szintaktikai vizsgálat Példa: Egy aritmetikai kifejezés szintaxisának megadása (folyt.) Tag definíciója Lehet egy tényezőből álló szorzat (faktor), vagy több tényező szorzata (szintén rekurzív definícióval) tag fakt. fakt. fakt. Faktor definíciója Lehet egy zárójelbe tett kifejezés, vagy változó, vagy konstans fakt. ( kif. ) vált. konst. A kifejezésből kaphatunk majd újra tagot Itt teljes zárójelezést használunk, ami esetleg egyébként elhagyható lenne, de ezt nem tudjuk könnyen formalizálni a prioritás kezelésére: lengyel-forma vagy valami hasonló eszköz kellene Változók és konstansok (ebben a példában) vált. A B C konst. 0 1 Azaz: aritmetikai kifejezésnek az A, B, és C változó jelekből, a 0 és 1 konstans jelekből, a + és műveleti jelekből a ( és ) csoportosító jelekből a kif. tag kif. + tag tag fakt. fakt. fakt. fakt. ( kif. ) vált. konst. vált. A B C konst. 0 1 szabályok alkalmazásával felépíthető jelsorozatokat (szavakat/mondatokat) nevezzük 25 Szintaktikai vizsgálat Példa: Egy aritmetikai kifejezés szintaxisának megadása (folyt.) Hogyan építhető fel egy szó a fenti szabályok alkalmazásával? kif. -ből indulunk Egy jelsorozat (szó) esetén helyettesítsük a részegységek megnevezésére szolgáló szimbólumot az őt definiáló szintaktikai szabály jobb oldalának valamely lehetséges változatával (alternatíva) Helyettesítés (jelölés): A (B + 1) levezetése kif. tag fakt. fakt. fakt. ( kif. ) fakt. ( kif. + tag ) fakt. ( tag + tag ) fakt. ( fakt. + fakt. ) vált. ( fakt. + fakt. ) vált. ( vált. + konst. ) A ( vált. + konst. ) A (B + 1) Szintaktikailag hibás kifejezést nem tudunk így levezetni, például: + (B + 1), )B + 1( Ilyen következtetési mód: levezetés Persze a gyakorlatban bonyolultabb aritmetikai kifejezések jönnek elő (ez a példa nagyon egyszerű), de azok is ugyanilyen módon kezelhetők Szintaxis ezen megadási módja: generatív nyelvtannal való szintaxis megadás (Ez a leggyakoribb) 26

Szintaktikai vizsgálat és generatív nyelvtanok (Eddigi tapasztalataink alapján ) Mit kell tartalmaznia egy generatív nyelvtan definíciójának? Azon szimbólumok (betűk) megadását, amelyekből a nyelvtannal definiálandó nyelv szavai állhatnak (terminális szimbólumok, nyelvi szimbólumok) Azon további szimbólumok megadását, amelyek nem szerepelnek (!) a nyelv szavaiban (mondataiban), de szükség van rájuk a szintaktikai szabályok megfogalmazásához (nemterminális szimbólumok, grammatikai szimbólumok) A szintaktikai (levezetési) szabályokat Azt a nemterminális szimbólumot (kezdő szimbólum), amelyből levezetés alkalmazásával a definiálandó nyelv valamennyi szavát megkapjuk A levezetés pontos definícióját A levezetés során lesznek Tiszta terminális szavak (tiszta nyelvi szavak, mondatok ) Vegyes, terminális és nemterminális jeleket tartalmazó szavak ( mondatformák ) Szokásos jelölés szimbólum = terminális szimbólum (nem mindig dőlten írva) szimbólum = nemterminális szimbólum A nyelv szavait mind le kell tudni vezetnünk, de csak pontosan azokat (!) 27 Szintaktikai vizsgálat Példa: Köznapi nyelv (leszűkített részhalmaz, minimagyar ; B. I.) Szabályok mondat ::= alanyi rész állítmányi rész alanyi rész ::= főnévi rész határozó állítmányi rész ::= tárgyi rész igei rész főnévi rész ::= névelő jelzők főnév jelzők ::= jelző jelző jelzők tárgyi rész ::= főnévi rész t névelő ::= λ a az egy jelző ::= λ hideg meleg fehér fekete nagy kis főnév ::= kutya macska hús egér sajt tej víz határozó ::= λ nappal éjjel reggel este igei rész ::= eszik iszik Megjegyzések A szavak itt terminális szimbólumok (de most nem dőlten írtuk őket) A mondat végére írhatnánk pontot (de ekkor is gond lenne abból, hogy a nagybetűs kezdést nem tudnánk egyszerűen biztosítani Látható már most is, hogy nem tudunk minden valós nyelvtani szabályt alkalmazni (tárgyi rész: sajt, sajtot, víz, vizet, tej, tejet) 28

Szintaktikai vizsgálat Példa: Minimagyar (folyt.) Levezetés példa mondat alanyi rész állítmányi rész főnévi rész határozó állítmányi rész névelő jelzők főnév határozó állítmányi rész a jelzők főnév határozó állítmányi rész a jelző jelzők főnév határozó állítmányi rész a nagy fehér főnév határozó állítmányi rész a nagy fehér kutya határozó állítmányi rész a nagy fehér kutya reggel állítmányi rész a nagy fehér kutya reggel tárgyi rész igei rész a nagy fehér kutya reggel főnévi rész t igei rész a nagy fehér kutya reggel névelő jelzők főnév t igei rész a nagy fehér kutya reggel jelző főnév t igei rész a nagy fehér kutya reggel meleg húst igei rész a nagy fehér kutya reggel meleg húst eszik Ez normális magyar mondat, de persze sok a mi szintaktikánk szerint helyes normális magyarul mégis szintaktikailag hibás mondatot is le tudunk így vezetni az fehér egér hideg sajtt eszik az kis fekete macska meleg tejt iszik Hasonlóan levezethető több, normális magyarul szemantikailag is támadható mondat a fehér tej macskat iszik És persze léteznek minimagyarul is szintaktikailag helytelen (levezethetetlen) mondatok hús kutya reggel fekete eszik víz az 29 Szintaktikai vizsgálat Példa: Egy programozási nyelv szintaxisának megadása (F. Z.) Szándékosan egyszerű programozási nyelvet választunk (PÉLDA) Kezdőszimbólum: program Szabályok program ut. lista. ut. lista ut. ut. ; ut. lista ut. ért. adó if ut. while ut. blokk ért. adó vált := kif. if ut. if reláció then ut. else ut. while ut. while reláció do ut. blokk begin ut. lista end reláció kif. relációjel kif. relációjel < > = kif. tag kif. + tag tag fakt. fakt. fakt. fakt. ( kif. ) vált. konst. vált. A B C konst. 0 1 Egy jelsorozat akkor és csak akkor szintaktikusan helyes PÉLDA nyelvű program, ha levezethető a program nemterminális szimbólumból a fenti szabályok alkalmazásával Feladat: Adjunk meg szintaktikusan helyes és helytelen PÉLDA nyelvű programot! 30

Szintaktikai vizsgálat Egyszerű programok esetében (viszonylag) könnyű eldönteni, hogy szintaktikusan helyesek-e [A szintaktikusan helyesnek bizonyult kódokat utána még természetesen szemantikusan is elemezni kell! (Ezzel egyelőre nem foglalkozunk.) Időnként beépítenek bizonyos szemantikai ellenőrzést a szintaktikába, pl. szám és szám típusú szöveg összeadása, Excelben megengedett, C-ben/Java-ban nem Beadható feladat: Készítsünk szintaktikailag helyes, de szemantikailag helytelen kódot C- ben, Java-ban Ugyanakkor még a szemantikai helyesség sem garantálja feltétlenül az értelmes/céljainknak megfelelő működést] Probléma hosszú programoknál A levezetés során sok konfliktus adódik (több lehetőség a helyettesítésre, melyik a jó/melyiket válasszuk?) Intuitív módon: Az a cél, hogy közelebb kerüljünk a kívánt végeredményhez Algoritmikusan: Valami módon sorba rakjuk a szabályokat, ebben a sorrendben alkalmazzuk őket a helyettesítésnél Lehet, hogy rossz szabályt választottunk! (Backtrack technikákat is be kell vetni, ez viszont magával vonja a rekurzív működést és az exponenciális típusú kimenetelt ) Mennyi sikertelen levezetési kísérlet után lehet kimondani, hogy a program szintaktikusan helytelen? Ezekre a (nehéz) kérdésekre választ adnak az elemzési algoritmusok A jó elemzési algoritmus legfeljebb az input hosszának konstansszorosa számú lépést hajt végre, és utána megadja a választ 31 Nyelvek megadása egyéb szabályrendszerrel Szintaxis gráf/diagram Cél: Annak bemutatása, hogy hogyan kell szintaktikusan helyes programot írni egy adott nyelven Minden programozási nyelv mögött áll egy ilyen struktúra Sokan nem nézik meg (ill. nem is tudnak róla) Gyakorlott programozók számára is hasznos lehet (ritkán használt elemek) A szintaktikailag helyes Pascal-nyelvű program felső szintű megadása: Értelmezzük a gráfot (rekurzív struktúra)! Ezen belül az azonosító megadása: Feladat Tekintsük a következő programrészletet: program szamol(be, ki, file); Hogyan feleltethetőek meg az egyes elemek a szintaxis gráf elemeinek? Ha a betű és a számjegy nem lenne terminális, akkor hogyan tudnánk definiálni? *Próbáljuk meg kifejteni a blokkot! (ld. 30. slide) Megj. (tudjuk): a szintaktikai szabályrendszer még nem mondja meg azt, hogy hogyan kell szemantikailag helyes programot írni 32

Nyelvek megadása egyéb szabályrendszerrel Backus Naur jelölés Metanyelv, szintén egy adott nyelv szintaxisát írja le (alternatíva a gráf mellett) Eredetileg az ALGOL 60 nyelvhez készítették el, népszerűvé vált és elterjedt A Pascal nyelvet teljesen így definiálták (1975) Elemei a szintaxis gráf elemeinek egyértelműen megfeleltethetők Terminális (ellipszis, kör vs. sima szöveg) Nemterminális v. fogalom (téglalap vs. közötti megadás) Felbontás, kifejtés (kifejtés vs. ::=) Konkatenáció (nyíl vs. egymás mellé írás) Alternatíva (elágazás vs. ) Iteráció (visszanyíl vs. { }) Opció fakultatív megjelenés (fordított iterációval vs. [ ]) BNF (Extended BNF, az iteráció miatt) megadás az előző programra: Milyen terminális elemeket találunk a példában? 33 Nyelvek megadása egyéb szabályrendszerrel Példa a Backus Naur jelölés alkalmazására (azonosító leírása) Szabályok azonosító ::= betű azonosító ::= betű azonosítóvég azonosítóvég ::= betű azonosítóvég ::= számjegy azonosítóvég ::= betű azonosítóvég azonosítóvég ::= számjegy azonosítóvég betű ::= a betű ::= z számjegy ::= 0 számjegy ::= 9 Ugyanez alternatívákkal, iterációval azonosító ::= betű betű azonosítóvég azonosító ::= betű { azonosítóvég } azonosítóvég ::= betű számjegy betű azonosítóvég számjegy azonosítóvég azonosítóvég ::= { betű számjegy } { azonosítóvég } betű ::= a b z számjegy ::= 0 1 9 Feladatok Vezessük le a szabályok alkalmazásával az a12 és az alma azonosítókat! Módosítsuk a szabályokat úgy, hogy egyéb karakterek is alkalmazhatók legyenek (pl. _) Építsünk fel szabályrendszert az egész számok és a valós számok leírására! Külön köszönet: a hivatkozott jegyzetek szerzőinek 34

Ajánlott irodalom Fülöp Zoltán: és szintaktikus elemzésük, Polygon, Szeged, 2001 Dömösi Pál és társai: és automaták, Elektronikus jegyzet, 2011 Bach Iván:, Typotex kiadó, Budapest, 2002 Alan P. Parkes: A Concise Introduction to Languages and Machines, Springer, London, 2008 Katona Gyula, Recski András, Szabó Csaba: A számítástudomány alapjai, Typotex Kiadó, Budapest, 2003 Tichler Károly: Oktatási segédanyagok (gyakorlatok) a formális nyelvek tárgyhoz, ELTE, Budapest, 2008 Várterész Magda: Oktatási segédanyagok (előadások) a formális nyelvek és automaták tárgyhoz, DE, Debrecen, 2006 35