JAG Flashcards
abeceda
Konecna neprazdna mnozina symbolu, znaci se velka Sigma
Slovo nad abecedou
Kazda konecna posloupnost [rvku abecedy
Prazdne slovo
Epsilon (e), je posloupnost, ktera nema zadne slovo/symbol
Delka slova
Je pocet symbolu/znaku, znaci se |w|, kardinalita znaku je pocet danych znaku ve slove
Sigma+ abeceda
Mnozina vsech slov vcetne prazdneho // uplne vsech moznych na vsemi moznymi znaky
u,v jsou slova, pak u*v je…
Retezeni v za u. Tedy vznikne uv.
Je to asociativni (muzu uzavorkovat jak chci), ale neni komutativni (nemuzu prochazet aby vysledek byl furt stejny)
Mocnina slova u^n
Je to uuu… = uuuu…u n-krat
u^0 = prazdne slovo
Podslovo w slova u
Je to vybrana posloupnost znaku slova u tak, ze:
u = xwy
Prefix/sufix
Podslovo x je prefix, p.t.k
xw = w, x je prazdne slovo
Podslovo x je sufix p.t.k
wx = w, x je prazdne slovo
Jazyk nad abecedou
Mnozina vsech slov nad zadanou abecedou Sigma.
Je to jeden vybrany jazyk, tedy je to podmnozina Sigma+
Nejvic basic schema konecneho automatu
Ma ridici jednotku a stavy. Ridici jednotka precte vstup, zmeni svuj stav a posune citac na dalsi vstup, pripadne vrati vysledek. Treba automat na kafe: vstupy - mince, stavy - kolik minci uz ma. Tedy kouka, kolik minci mu prislo, kolik uz ma a podle toho se dostane do predem definovanych stavu - vratit kafe, pripadne vratit penize
Kazdy konecny automat ma…
- Konecnou mnozinu stavu Q
- Konecnou mnozinu vstupu Sigma
- Prechodovou fci delta
- Pocatecni stav q0
- (Pro Mealyho a Mooruv automat) vystupny lambda a beta funkce
Mealyho automat, definice
Prechodova fce je zadana z mnoziny stavu a vstupuun na mnozinu stavu, tedy:
delta: QxSigma -> Q,
tedy znamena to - mam stav Q, prijde vstup Sigma a vyplivne to vystup stav Q novy
Konkretni zapis:
delta:(q,a) = p. kde q je aktualni stav, a je novy vstup, p je vysledny stav
Mooruv automat, definice
beta: Q->Y, kde Y je ano/ne, sviti/nesviti…
DFA automat, definice
Deterministic Finate Automata - deterministicky konecny automat,
ma definovane vsechny prechody (determinismus, kazdy prechod je JEDNOZNACNY), ma konecne stavu, patri do skupiny Moorova automatu
M=(Q, Sigma, delta, q0, F), kde Q je mnozina stavu, Sigma je abeceda, delta je prechodova funkce, q0 je poc. stav, F je mnozina koncovych stavu
beta: Q->Y, Y={0,1}=> F={q|beta(q)=1}, mnozina koncovych stavu
tedy rozhoduje, zda automat prijme nejaky vstup/obashuje podslovo atd… tj konci v koncvoem stavu prechodovou funkci beta ze stavu q do 1.
Prechodova funkce delta, definice obecne a rozsirena
delta(q, a) = p, kde q je aktualni stav, a je novy vstup (na ktery q reaguje), p je vysledek, kam se posle a z q.
Rozsirena prechodova funkce definovana indutkvine:
1. delta(q, epsilon) = q // nic se nezmenilo
2. delta(q, ua) = delta(delta(q,u), a) // odtrhnul jsem posledni znak
3. delta(q, uv) = delta(delta*(q,u), v) // odtrhnul jsem posledni slovo
Tedy slozity pripad, kde novy vstup muze byt az cele slovo, rekurzivne rozbijim na mensi celky tak, ze odtrhavam posledni znak az dojdu na konec, tam provedu zmenu do dalsiho stavu a vracim se o kok zpet…
Priklad:
Pokud mam zadany automat a mam rozhodnout, zda treba prijima slovo 001110, tak zacnu od prvniho znaku, pak druheho, pak rekurzivne se zanoruju az do posledniho znaku a tam na konci mi musi vyjit ano/ne…
Slovo w lezi v mnozine koncovych stavu F automatu M p.t.k.
Jinak receno: slovo lezi v L(M), nebo slovo je prijato automatem…
Rozsirena prechodova funkce aplikovana rekurzivne na w z nejakeho pocatecniho stavu skonci v jednom z koncovych stavu, tedy:
delta*(q0, w) = p, p lezi v F.
Jazyk prijimany automatem M, definice
Je to takova mnozina slov, ktera pro zadany automat skonci v nejakem z koncovych stavu, tedy
L(M) = {w | delta*(q0, w) = p, p lezi v F}
Jazyk L je regularni p.t.k
Existuje DFA automat, ktery ho prijima, tedy:
L(M) = L // jazyk prijimany automatem je muj zadany jazyk L, znaci se reg
Jak zajistim, ze automat prijima slova s poctem nul treba 3k?
Treba ma cyklus delky tri takovy, ze je pruchozi pouze tremi nulami za sebou…
Pumping Lemma
DUKAZ NEREGULARITY JAZYKA
Pokud je L reg, pak existuje n z N s vlastnosti:
ProKazde slovo u z L, ktere je delsi nez n, ho lze rozdelit na 3 casti u=xwy tak, ze:
1. |xw| <= n //y muze byt prazdne slovo
2. w je neprazdne
3. ProKazde i z N plati: xw^iy patri do L // tedy mohu pumpovat w a slovo bude stale patrit do jazyka L.
Pokud vetsinou 3. podminka je porusena -> spor s regularitou jazyka => jayzk NENI regularni
TIM ALE NEMOHU DOKAZAT REGULARITU
Tvrzeni - jazyk L neni regularni, dokaze Pumping Lemmatem
L = {0^m 1^m | m >=0}, tedy je to 00…0011…11
Kdyby L byl reg, pak existuje n takove, ze pro kazde slovo delsi nez n musi platit tri vlastnosti.
Zvolim si tedy slovo provazane s n, aby bylo delsi nez n. Tedy zvolim si treba 0^n1^n = u, Pak |u| = 2n > n OK. Pak musi platit:
u = xwy. Nakreslim si jak by vypadalo slovo:
00..00 n-krat 11…111 n-krat.
- |xw| <= n // tedy xw = 0^L, musi to byt same nuly, aby |xw|<=n
- w != prazdne, tedy w = 0^k, nekolik 0 tam musi byt
- Pak pro kazde i musi platit: xw^iy splnuje jazyk L, tedy byt ve tvaru
xwy = 0^n1^n:
vezmu i=2, pak xw^2y = 0^(n+k)1^n, coz nepatri do L pro K >0.
Tedy pridal jsem tam k-krat 0 navic, coz porusilo L
Obecne nakreslim jak by slovo vypadalo a snazim se pridat do nejake casti pumpingem tolik symbolu, abych porusil L
Nerodova veta
PRO DUKAZ I VYVRACENI REGULARITY, vetsinou pro vyvraceni
Jazyk L je reg p.t.k existuje ekvivalence T takova, ze:
1. L je sjednoceni nekterych trid ekvivalenci T
2. Jestlize pro dve slova plati uTv, pak i pro libovolne w plati: uwTvw
3. T ma pouze konecne mnoho trid ekvivalenci
Dokazte, ze jazyk L = {0^m 1^m | m >=0}, neni regularni Nerodovou vetou
Chci dokazat, ze neexistuje ekvivalence T splnujici 3 podminky regularnich jazyku.
Kdyby L byl reg, pak existuje ekv. T sp[lnujici 3 podminky.
1. Zvolim nekonecnou posloupnost slov nad abecedou L - treba
0, 0^2, 0^3… 0^k. Je to nekonecna posloupnost, ale T ma pouze konecne trid ekvivalence, takze je omezena a nektera ruzna slova se musi nutne vejit do stejne tridy ekvivalence (neco jako krabickovy princip z DMA).
2. Existuje tedy takovy i!=j, ze (0^i)T(0^j).
3. Chci tady dokazat, ze pokud neco pridam napravo, tak jedna strana mi nebude lezet v L, zvolim si tedy jako w=1^i.
4. Pak (0^i1^i) T (0^i1^j), ale 0^i1^j nelezi v L, tudiz L neni sjednoceni nekterych trid ekvivalence T -> spor -> jazyk neni regularni
Tedy obecne najdu nejakou nekonecnou posloupnost a snazim se pridat takovou pravou stranu, aby v jednom pripade nove slovo bylo v L ale druhe ne.