abeceda a formální jazyk
DESCRIPTION
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} - PowerPoint PPT PresentationTRANSCRIPT
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.3 je ř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ě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 xPří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}, potomA* = {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} 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}
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.
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* = 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, ….}
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