160 likes | 332 Views
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}
E N D
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}
Ř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: • 0101011 je řetězec nad abecedou A= {0,1} • 4.573.3je řetězec nad abecedou B = {.,0,1,2,…,9} • 0.A567 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
Řetězce nad danou abecedou • DEF: Řetězecs 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
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}
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
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
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, …}
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, ….
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
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} L1L2 = {y| y L1 y L2} • A B = {x| xA xB} L1L2 = {y| y L1 y L2} • A \ B = {x| xA xB} L1\L2 = {y| y L1 y L2}
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}*. PotomL= L1•L2je 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.
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.
Formální jazyky • DEF: Nechť L je jazyk, potom iterací jazyka rozumíme množinu L* = L0L1L2L3L4 … a pozitivní iterací množinu L+ = L1L2L3 … Platí: L* = L+ {e} , L+= LL*= L*L • Příklad: L = {ab} L+ = {ab, abab, ababab, abababab, ….} L* = {e, ab, abab, ababab, abababab, ….}
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.
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.
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