Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Abeceda a formální jazyk
U přirozeného jazyka je nutné znát nejprve písmena, z nichž se tvoří slova a potom věty Stejně je tomu i u formálních jazyků DEF: Abeceda je konečná množina prvků, které nazýváme symboly. Příklad: A = {a,b,c, …,x,y,z} B = {0,1} C = {0,1,2,…,9} D = {.,0,1,2,…,9}
2
Řetězce nad danou abecedou
DEF: Řetězec nad abecedou A je libovolná konečná posloupnost symbolů z abecedy A. x = a1a2…..ak-1ak je řetězec nad A {ai A | i=1,..,k} Příklad: je řetězec nad abecedou A = {0,1} je řetězec nad abecedou B = {.,0,1,2,…,9} 0.A není řetězec nad abecedou B = {.,0,1,2,…,9} DEF: Délka řetězce je rovna počtu symbolů v řetězci. x = a1a2…..ak-1ak & ai A pro i=1,..,k, potom |x| = k
3
Řetězce nad danou abecedou
DEF: Řetězec s nulovou délkou se nazývá prázdný řetězec a značí se e. DEF Obrácený řetězec. Jestliže x = a1a2…..ak-1ak je řetězec nad abecedou A potom xR= akak-1…..a2a1 je obrácený řetězec k řetězci x Příklad: x = abcde xR= edcba Tvrzení: (xR) R= x
4
Operace zřetězení DEF: Jestliže x = a1a2…ak-1ak a y = b1b2…bl-1bl ,
potom řetězec xy = a1a2…akb1b2…bl-1bl nazýváme zřetězením řetězců x a y (značíme x•y) Tvrzení: Množina všech řetězců nad danou abecedou je uzavřená vzhledem k operaci zřetězení. Důkaz: Nechť x = a1a2…ak-1ak {ai A, i=1,..,k} y = b1b2…bl-1bl , {bi A, i=1,..,l} potom xy = a1a2…akb1b2…bl-1bl = c1…ckck+1…ck+l a současně {ci A, i=1,..,k+l}
5
Prefix, postfix a podřetězec
DEF: Jestliže x = a1a2…ai…aj ….am, potom libovolný řetězec u = a1a2…ai nazýváme prefixem řetězce x v = ai+1…aj nazýváme podřetězcem řetězce x w = aj+1…am nazýváme postfixem řetězce x Napíšeme-li řetězec ve tvaru x=uvw, potom u je prefix, v je podřetězec a w je postfix
6
Prefix, postfix a podřetězec
Příklad: Nechť x = 0101 potom prefixy: e, 0, 01, 010, 0101 podřetězce: e, 0, 1, 01, 10, 010, 101, 0101 postfixy: e, 1, 01, 101, 0101 (prefixem není 1, 10 atd.; podřetězcem není 11, 00 atd.) (e je prefixem, postfixem i podřetězcem lib. řetězce) Úloha: x = hradec ??? prefixy, podřetězce, postfixy
7
Množina řetězců nad abecedou
DEF: Nechť A je libovolná abeceda. Množina všech řetězců nad abecedou A se označuje A*. DEF: Množina všech neprázdných řetězců nad abecedou A se označuje A+. Platí A+ = A* – {e} Příklad: Nechť A = {0,1}, potom A* = {e, 0, 1, 00, 01, 10, 11, 000, 001, 010, …} A+ = {0, 1, 00, 01, 10, 11, 000, 001, 010, …}
8
Formální jazyky DEF: Nechť A je daná abeceda. Potom libovolná podmnožina L A* je formální jazyk nad abecedou A. Je-li L konečná (respektive nekonečná), je příslušný jazyk konečný (respektive nekonečný) Jazyk může být i prázdný. Příklad: Nechť L je český jazyk, potom: x L: Ahoj , čau, dobré, ráno, dobrý, den, dobrou, noc, … x L: Axoj, čaw, dibré, morning, bnon, jour, ….
9
Formální jazyky Jazyk je množina a z toho plyne, že jej umíme popsat:
- vyjmenováním všech prvků - definováním vlastnosti, kterou musí všechny prvky množiny splňovat Příklad: A = {a}, potom L1= {e, a, aa, aaa} = {ai| i = 0, 1, 2, 3} …konečný L2= {a, aa, aaa, …} = {ai| i > 0} = A …nekonečný L3= Ø …prázdný L4= {e} L3 = Ø …neprázdný jazyk obsahující jediné slovo
10
Formální jazyky Jazyk je množina a z toho plyne, že lze používat i běžné množinové operace: DEF: Nechť A a B jsou abecedy, L1 a L2 jazyky takové, že L1 A* a L2 B*. Potom platí A B = {x| xA xB} L1 L2 = {y| y L1 y L2} A B = {x| xA xB} L1 L2 = {y| y L1 y L2} A \ B = {x| xA xB} L1 \ L2 = {y| y L1 y L2}
11
Formální jazyky DEF: Operace zřetězení jazyků:
L =L1•L2 = {xy| x L1 y L2} Příklad: Nechť L1 ={a,b,.., z} a L2 = {a,b,..,z,0,1,..,9}*. Potom L= L1•L2 je množina všech řetězců nad abecedou {a,b,..,z,0,1,..,9} takových, že x = a1a2…an, kde a1 L1 & a2…an L2 L = ? L je množina všech běžně používaných identifikátorů, jelikož každý řetězec z L začíná písmenem.
12
Formální jazyky DEF: Nechť L je jazyk, potom n-tou moncninu jazyka definujeme takto: L0 = {e} Ln = LLn-1 pro n1 Příklad: L = {ab, ba} Napište první čtyři mocniny jazyka L. Popište slovy n-tou mocninu jazyka L.
13
Formální jazyky DEF: Nechť L je jazyk, potom iterací jazyka rozumíme množinu L* = L0 L1 L2 L3 L4 … a pozitivní iterací množinu L+ = L1 L2 L3 … Platí: L* = L+ {e} , L+ = LL* = L*L Příklad: L = {ab} L+ = {ab, abab, ababab, abababab, ….} L* = {e, ab, abab, ababab, abababab, ….}
14
Formální jazyky - úkoly
Příklad: L = {0,1,..,9}* Jazyk nezáporných celých čísel s vedoucími nulami. Úlohy: Nadefinujte jazyk, který obsahuje nezáporná celá čísla (bez vedoucích nul). Nadefinujte jazyk, který obsahuje všechna celá čísla. Nadefinujte jazyk, který obsahuje reálná čísla. Nadefinujte jazyk, který obsahuje množinu všech komentářů v programovacím jazyce C. Nadefinujte jazyk nad abecedou {a,b,…,z}, který obsahuje všechny slova obsahující podřetězec zuzana.
15
Formální jazyky - úkoly
Úlohy: Lze množinu přirozených čísel považovat za abecedu? Lze množinu přirozených čísel považovat za jazyk? Která slova jsou zároveň prefixem i sufixem slova 101? Jaká slova vzniknou zřetězením jazyků {11,00} a {11,0}? Jaký jazyk vznikne iterací jazyka {00,01,1}? Obsahuje tento jazyk všechna slova nad abecedou {0,1}? Pro L1 ={w{a,b}|w obsahuje sudý počet symbolů a} a L2 ={w{a,b}|w začíná a končí stejným symbolem} napište několik prvních slov z L1 L2, L1 L2, L1 \ L2, \L1.
16
Formální jazyky - úkoly
Úlohy: Popište slovně jazyk nad abecedou {0,1} vzniklý iterací jazyka {00,111}*? Jak lze schematicky popsat všechny posloupnosti stisků přepínačů A a B, které zajistí, že žárovka poté znovu svítí? A B
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.