Konečnostavové akceptory – determinizácia. Pumpovacia lema.

Ciele

  1. Definovať princíp determinizácie NKA (konštrukcia ekvivalentného DKA na základe zadaného NKA).
  2. Definovať pumpovaciu lemu pre regulárne jazyky.
  3. Prezentovať postup dôkazu neregularity jazyka na základe pumpovacej lémy.

Úvod

Postup

Krok 1

V rámci predchádzajúceho cvičenia sme uviedli, že NKA a DKA predstavujú expresívne ekvivalentné modely. Je teda zrejmé, že ku každému NKA musí existovať DKA akceptujúci rovnaký jazyk. V tomto kroku sa preto pozrieme bližšie na princíp konštrukcie ekvivalentného DKA zo zadaného NKA, teda na proces zvaný determinizácia NKA vyjadrený nasledujúcim algoritmom.


Algoritmus 1. konštrukcie ekvivalentného DKA k NKA.
Vstup: NKA $M=(Q,T,\delta,q_0,F)$
Výstup: Množina stavov $\acute{Q}$ a prechodová funkcia $\acute{\delta}$ ekvivalentného DKA


  1. $\acute{Q}\leftarrow\acute{Q}\cup\{\mathit{CLOSURE}_\varepsilon(\{q_0\})\}$ a označ tento stav za nespracovaný;
  2. pokiaľ v $\acute{Q}$ existujú nespracované stavy vykonaj
  3.   vyber z $\acute{Q}$ ľubovoľný nespracovaný stav $q$ a označ ho za spracovaný;
  4. pre všetky $a\in T$ vykonaj
  5.    $p\leftarrow\mathit{CLOSURE}_\varepsilon(\cup_{q_i\in q}\delta(q_i,a))$;
  6.    ak $p \notin \acute{Q}$ potom
  7.     $\acute{Q}\leftarrow\acute{Q}\cup\{p\}$ a označ $p$ ako nespracovaný;
  8.    koniec ak
  9.    $\acute{\delta}\leftarrow\acute{\delta}\cup\{(q,a)\mapsto p\}$;
  10. koniec pre
  11. koniec pokiaľ


Všimnime si, že Algoritmus 1. využíva operáciu $\mathit{CLOSURE_\varepsilon}$ epsilonového uzáveru množiny stavov, ktorej výpočet je definovaný nasledujúcim Algoritmom 2. Všimnime si, že táto operácia poskytuje množinu dosiahnuteľných stavov zo stavov zo vstupnej množiny, a to výlučne cez $\varepsilon$-prechody.


Algoritmus 2. určenia výsledku operácie $\mathit{CLOSURE_\varepsilon}$.
Vstup: Prechodová funkcia $\delta$ NKA $M$, množinu stavov $S\subseteq Q$
Výstup: Množina stavov $S$ uzavretá vzhľadom na kroky na $\varepsilon$


  1. funkcia $\mathit{CLOSURE_\varepsilon}(S)$
  2. opakuj
  3.    $\acute{S}\leftarrow S$;
  4.    $S\leftarrow S\cup_{q\in\acute{S}}\delta(q,\varepsilon)$;
  5. pokiaľ $S\neq\acute{S}$
  6. vráť S;
  7. koniec funkcia

Príklad

Formálne definujte a následne determinizujte NKA s nasledujúcim diagramom.

Diagram NKA
Obr. 1: Diagram NKA

Riešenie

$$M=(\{q_0,q_1,q_2,q_3,q_4,q_5,q_6,q_7,q_8,q_9,q_{10}\},\{0,1\},\delta,q_0,\{q_2,q_5,q_8,q_{10}\})$$ Prechodovú funkciu $\delta$ definujeme pomocou prechodovej tabuľky, a to nasledovne:

stav $0$ $1$ $\boldsymbol\varepsilon$
$q_0$ $\emptyset$ $\emptyset$ $\{q_1,q_3\}$
$q_1$ $\{q_2\}$ $\emptyset$ $\emptyset$
$q_2$ $\emptyset$ $\emptyset$ $\emptyset$
$q_3$ $\emptyset$ $\{q_4\}$ $\emptyset$
$q_4$ $\emptyset$ $\emptyset$ $\{q_5\}$
$q_5$ $\emptyset$ $\emptyset$ $\{q_6\}$
$q_6$ $\emptyset$ $\emptyset$ $\{q_7,q_9\}$
$q_7$ $\{q_8\}$ $\emptyset$ $\emptyset$
$q_8$ $\emptyset$ $\emptyset$ $\{q_6\}$
$q_9$ $\emptyset$ $\{q_{10}\}$ $\emptyset$
$q_{10}$ $\emptyset$ $\emptyset$ $\{q_6\}$


Teraz možno pristúpiť k determinizácii NKA $M$ na základe Algoritmu 1.
Najprv potrebujeme inicializovať množinu nových stavov $\acute{Q}$ výsledkom operácie $\mathit{CLOSURE}_\varepsilon$ aplikovanej na $\{q_0\}$, postupný výpočet ktorej prezentuje nasledujúca tabuľka.

Iterácia logického cyklu Množina $S$ Množina $\acute{S}$ Podmienka cyklu $S\neq\acute{S}$
1. $\{q_0,q_1,q_3\}$ $\{q_0\}$ $\mathit{true}$
2. $\underline{\{q_0,q_1,q_3\}}$ $\{q_0,q_1,q_3\}$ $\mathit{false}$
$\phantom{1.}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\mathit{false}}$


$\acute{Q}$ sa teda inicializuje zloženým stavom $\{q_0,q_1,q_3\}_N$. Hodnoty premenných na konci jednotlivých iteráciácií nasledujúcich cyklov sú prehľadne prezentované v tejto tabuľke.

Iterácia vonkajšieho cyklu Zložený stav $q$ Iterácia vnútorneho cyklu Symbol $a$ Zložený stav $p$ Množina $\acute{Q}$ Prechodová funkcia $\acute{\delta}$
1. $\{q_0,q_1,q_3\}$ 1. $0$ $\{q_2\}$ $\{\{q_0,q_1,q_3\},\{q_2\}_N\}$ $\{(\{q_0,q_1,q_3\},0)\mapsto\{q_2\}\}$
1. $\{q_0,q_1,q_3\}$ 2. $1$ $\{q_4,q_5,q_6,q_7,q_9\}$ $\{\{q_0,q_1,q_3\},\{q_2\}_N,\{q_4,q_5,q_6,q_7,q_9\}_N\}$ $\{(\{q_0,q_1,q_3\},0)\mapsto\{q_2\},(\{q_0,q_1,q_3\},1)\mapsto\{q_4,q_5,q_6,q_7,q_9\}\}$
2. $\{q_2\}$ 1. $0$ $\emptyset$ $\{\{q_0,q_1,q_3\},\{q_2\},\{q_4,q_5,q_6,q_7,q_9\}_N,\emptyset_N\}$ $\{(\{q_0,q_1,q_3\},0)\mapsto\{q_2\},(\{q_0,q_1,q_3\},1)\mapsto\{q_4,q_5,q_6,q_7,q_9\},(\{q_2\},0)\mapsto\emptyset\}$
2. $\{q_2\}$ 2. $1$ $\emptyset$ $\{\{q_0,q_1,q_3\},\{q_2\},\{q_4,q_5,q_6,q_7,q_9\}_N,\emptyset_N\}$ $\{(\{q_0,q_1,q_3\},0)\mapsto\{q_2\},(\{q_0,q_1,q_3\},1)\mapsto\{q_4,q_5,q_6,q_7,q_9\},(\{q_2\},0)\mapsto\emptyset,(\{q_2\},1)\mapsto\emptyset\}$
3. $\{q_4,q_5,q_6,q_7,q_9\}$ 1. $0$ $\{q_6,q_7,q_8,q_9\}$ $\{\{q_0,q_1,q_3\},\{q_2\},\{q_4,q_5,q_6,q_7,q_9\},\emptyset_N,\{q_6,q_7,q_8,q_9\}_N\}$ $\{(\{q_0,q_1,q_3\},0)\mapsto\{q_2\},(\{q_0,q_1,q_3\},1)\mapsto\{q_4,q_5,q_6,q_7,q_9\},(\{q_2\},0)\mapsto\emptyset,(\{q_2\},1)\mapsto\emptyset,(\{q_4,q_5,q_6,q_7,q_9\},0)\mapsto\{q_6,q_7,q_8,q_9\}\}$
3. $\{q_4,q_5,q_6,q_7,q_9\}$ 2. $1$ $\{q_6,q_7,q_9,q_{10}\}$ $\{\{q_0,q_1,q_3\},\{q_2\},\{q_4,q_5,q_6,q_7,q_9\},\emptyset_N,\{q_6,q_7,q_8,q_9\}_N,\{q_6,q_7,q_9,q_{10}\}_N\}$ $\{(\{q_0,q_1,q_3\},0)\mapsto\{q_2\},(\{q_0,q_1,q_3\},1)\mapsto\{q_4,q_5,q_6,q_7,q_9\},(\{q_2\},0)\mapsto\emptyset,(\{q_2\},1)\mapsto\emptyset,(\{q_4,q_5,q_6,q_7,q_9\},0)\mapsto\{q_6,q_7,q_8,q_9\},(\{q_4,q_5,q_6,q_7,q_9\},1)\mapsto\{q_6,q_7,q_9,q_{10}\}\}$
4. $\emptyset$ 1. $0$ $\emptyset$ $\{\{q_0,q_1,q_3\},\{q_2\},\{q_4,q_5,q_6,q_7,q_9\},\emptyset,\{q_6,q_7,q_8,q_9\}_N,\{q_6,q_7,q_9,q_{10}\}_N\}$ $\{(\{q_0,q_1,q_3\},0)\mapsto\{q_2\},(\{q_0,q_1,q_3\},1)\mapsto\{q_4,q_5,q_6,q_7,q_9\},(\{q_2\},0)\mapsto\emptyset,(\{q_2\},1)\mapsto\emptyset,(\{q_4,q_5,q_6,q_7,q_9\},0)\mapsto\{q_6,q_7,q_8,q_9\},(\{q_4,q_5,q_6,q_7,q_9\},1)\mapsto\{q_6,q_7,q_9,q_{10}\},(\emptyset,0)\mapsto\emptyset\}$
4. $\emptyset$ 2. $1$ $\emptyset$ $\{\{q_0,q_1,q_3\},\{q_2\},\{q_4,q_5,q_6,q_7,q_9\},\emptyset,\{q_6,q_7,q_8,q_9\}_N,\{q_6,q_7,q_9,q_{10}\}_N\}$ $\{(\{q_0,q_1,q_3\},0)\mapsto\{q_2\},(\{q_0,q_1,q_3\},1)\mapsto\{q_4,q_5,q_6,q_7,q_9\},(\{q_2\},0)\mapsto\emptyset,(\{q_2\},1)\mapsto\emptyset,(\{q_4,q_5,q_6,q_7,q_9\},0)\mapsto\{q_6,q_7,q_8,q_9\},(\{q_4,q_5,q_6,q_7,q_9\},1)\mapsto\{q_6,q_7,q_9,q_{10}\},(\emptyset,0)\mapsto\emptyset,(\emptyset,1)\mapsto\emptyset\}$
4. $\{q_6,q_7,q_8,q_9\}$ 1. $0$ $\{q_6,q_7,q_8,q_9\}$ $\{\{q_0,q_1,q_3\},\{q_2\},\{q_4,q_5,q_6,q_7,q_9\},\emptyset,\{q_6,q_7,q_8,q_9\},\{q_6,q_7,q_9,q_{10}\}_N\}$ $\{(\{q_0,q_1,q_3\},0)\mapsto\{q_2\},(\{q_0,q_1,q_3\},1)\mapsto\{q_4,q_5,q_6,q_7,q_9\},(\{q_2\},0)\mapsto\emptyset,(\{q_2\},1)\mapsto\emptyset,(\{q_4,q_5,q_6,q_7,q_9\},0)\mapsto\{q_6,q_7,q_8,q_9\},(\{q_4,q_5,q_6,q_7,q_9\},1)\mapsto\{q_6,q_7,q_9,q_{10}\},(\emptyset,0)\mapsto\emptyset,(\emptyset,1)\mapsto\emptyset,(\{q_6,q_7,q_8,q_9\},0)\mapsto\{q_6,q_7,q_8,q_9\}\}$
4. $\{q_6,q_7,q_8,q_9\}$ 2. $1$ $\{q_6,q_7,q_9,q_{10}\}$ $\{\{q_0,q_1,q_3\},\{q_2\},\{q_4,q_5,q_6,q_7,q_9\},\emptyset,\{q_6,q_7,q_8,q_9\},\{q_6,q_7,q_9,q_{10}\}_N\}$ $\{(\{q_0,q_1,q_3\},0)\mapsto\{q_2\},(\{q_0,q_1,q_3\},1)\mapsto\{q_4,q_5,q_6,q_7,q_9\},(\{q_2\},0)\mapsto\emptyset,(\{q_2\},1)\mapsto\emptyset,(\{q_4,q_5,q_6,q_7,q_9\},0)\mapsto\{q_6,q_7,q_8,q_9\},(\{q_4,q_5,q_6,q_7,q_9\},1)\mapsto\{q_6,q_7,q_9,q_{10}\},(\emptyset,0)\mapsto\emptyset,(\emptyset,1)\mapsto\emptyset,(\{q_6,q_7,q_8,q_9\},0)\mapsto\{q_6,q_7,q_8,q_9\},(\{q_6,q_7,q_8,q_9\},1)\mapsto\{q_6,q_7,q_9,q_{10}\}\}$
5. $\{q_6,q_7,q_9,q_{10}\}$ 1. $0$ $\{q_6,q_7,q_8,q_9\}$ $\{\{q_0,q_1,q_3\},\{q_2\},\{q_4,q_5,q_6,q_7,q_9\},\emptyset,\{q_6,q_7,q_8,q_9\},\{q_6,q_7,q_9,q_{10}\}\}$ $\{(\{q_0,q_1,q_3\},0)\mapsto\{q_2\},(\{q_0,q_1,q_3\},1)\mapsto\{q_4,q_5,q_6,q_7,q_9\},(\{q_2\},0)\mapsto\emptyset,(\{q_2\},1)\mapsto\emptyset,(\{q_4,q_5,q_6,q_7,q_9\},0)\mapsto\{q_6,q_7,q_8,q_9\},(\{q_4,q_5,q_6,q_7,q_9\},1)\mapsto\{q_6,q_7,q_9,q_{10}\},(\emptyset,0)\mapsto\emptyset,(\emptyset,1)\mapsto\emptyset,(\{q_6,q_7,q_8,q_9\},0)\mapsto\{q_6,q_7,q_8,q_9\},(\{q_6,q_7,q_8,q_9\},1)\mapsto\{q_6,q_7,q_9,q_{10}\},(\{q_6,q_7,q_9,q_{10}\},0)\mapsto\{q_6,q_7,q_8,q_9\}\}$
5. $\{q_6,q_7,q_9,q_{10}\}$ 2. $1$ $\{q_6,q_7,q_9,q_{10}\}$ $\{\underbrace{\{q_0,q_1,q_3\}}_{A},\underbrace{\{q_2\}}_{B},\underbrace{\{q_4,q_5,q_6,q_7,q_9\}}_{C},\emptyset,\underbrace{\{q_6,q_7,q_8,q_9\}}_{D},\underbrace{\{q_6,q_7,q_9,q_{10}\}}_{E}\}$ $\{(\underbrace{\{q_0,q_1,q_3\}}_{A},0)\mapsto\underbrace{\{q_2\}}_{B},(\underbrace{\{q_0,q_1,q_3\}}_{A},1)\mapsto\underbrace{\{q_4,q_5,q_6,q_7,q_9\}}_{C},(\underbrace{\{q_2\}}_{B},0)\mapsto\emptyset,(\underbrace{\{q_2\}}_{B},1)\mapsto\emptyset,(\underbrace{\{q_4,q_5,q_6,q_7,q_9\}}_{C},0)\mapsto\underbrace{\{q_6,q_7,q_8,q_9\}}_{D},(\underbrace{\{q_4,q_5,q_6,q_7,q_9\}}_{C},1)\mapsto\underbrace{\{q_6,q_7,q_9,q_{10}\}}_{E},(\emptyset,0)\mapsto\emptyset,(\emptyset,1)\mapsto\emptyset,(\underbrace{\{q_6,q_7,q_8,q_9\}}_{D},0)\mapsto\underbrace{\{q_6,q_7,q_8,q_9\}}_{D},(\underbrace{\{q_6,q_7,q_8,q_9\}}_{D},1)\mapsto\underbrace{\{q_6,q_7,q_9,q_{10}\}}_{E},(\underbrace{\{q_6,q_7,q_9,q_{10}\}}_{E},0)\mapsto\underbrace{\{q_6,q_7,q_8,q_9\}}_{D},(\underbrace{\{q_6,q_7,q_9,q_{10}\}}_{E},1)\mapsto\underbrace{\{q_6,q_7,q_9,q_{10}\}}_{E}\}$


Výpočet $\mathit{CLOSURE}_\varepsilon(\{q_2\})$

Iterácia logického cyklu Množina $S$ Množina $\acute{S}$ Podmienka cyklu $S\neq\acute{S}$
1. $\underline{\{q_2\}}$ $\{q_2\}$ $\mathit{false}$
$\phantom{1.}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\mathit{false}}$

Výpočet $\mathit{CLOSURE}_\varepsilon(\{q_4\})$

Iterácia logického cyklu Množina $S$ Množina $\acute{S}$ Podmienka cyklu $S\neq\acute{S}$
1. $\{q_4,q_5\}$ $\{q_4\}$ $\mathit{true}$
2. $\{q_4,q_5,q_6\}$ $\{q_4,q_5\}$ $\mathit{true}$
3. $\{q_4,q_5,q_6,q_7,q_9\}$ $\{q_4,q_5,q_6\}$ $\mathit{true}$
4. $\underline{\{q_4,q_5,q_6,q_7,q_9\}}$ $\{q_4,q_5,q_6,q_7,q_9\}$ $\mathit{false}$
$\phantom{1.}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\mathit{false}}$

Výpočet $\mathit{CLOSURE}_\varepsilon(\emptyset)$

Iterácia logického cyklu Množina $S$ Množina $\acute{S}$ Podmienka cyklu $S\neq\acute{S}$
1. $\underline{\emptyset}$ $\emptyset$ $\mathit{false}$
$\phantom{1.}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\mathit{false}}$

Výpočet $\mathit{CLOSURE}_\varepsilon(\{q_8\})$

Iterácia logického cyklu Množina $S$ Množina $\acute{S}$ Podmienka cyklu $S\neq\acute{S}$
1. $\{q_8,q_6\}$ $\{q_8\}$ $\mathit{true}$
2. $\{q_8,q_6,q_7,q_9\}$ $\{q_8,q_6\}$ $\mathit{true}$
3. $\underline{\{q_8,q_6,q_7,q_9\}}$ $\{q_8,q_6,q_7,q_9\}$ $\mathit{false}$
$\phantom{1.}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\mathit{false}}$

Výpočet $\mathit{CLOSURE}_\varepsilon(\{q_{10}\})$

Iterácia logického cyklu Množina $S$ Množina $\acute{S}$ Podmienka cyklu $S\neq\acute{S}$
1. $\{q_{10},q_6\}$ $\{q_{10}\}$ $\mathit{true}$
2. $\{q_{10},q_6,q_7,q_9\}$ $\{q_{10},q_6\}$ $\mathit{true}$
3. $\underline{\{q_{10},q_6,q_7,q_9\}}$ $\{q_{10},q_6,q_7,q_9\}$ $\mathit{false}$
$\phantom{1.}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\{q_4,q_5,q_6,q_7,q_9\}}$ $\phantom{\mathit{false}}$

Diagram výsledného DKA
Obr. 2: Diagram výsledného DKA

Krok 2

Pumpovacia lema (z angl. pumping lemma) (PL) sa týka štruktúry regulárnych jazykov. Platnosť tohto tvrdenia vyplýva z obmedzených možností konečných automatov pamätať si doterajšiu históriu výpočtu (ich pamäť je reprezentovaná len konečnou množinou stavov, navyše vstupné slovo môžu prečítať iba raz).

Poznámka

Lemma (z gr. lemma = predpoklad) je pomocný predpoklad, používaný pri dôkaze teorém – matematických viet, teda tvrdení.

Nech $L$ je regulárny jazyk. Potom existuje prirodzené číslo $p$ (tzv. pumpovacia dĺžka) také, že všetky slová $w \in L$, ktorých dĺžka $|w| \geq p$, možno vyjadriť v tvare $w = xyz$, pričom:

  1. $|xy| \leq p$,
  2. $|y| > 0$,
  3. $\forall i\in \mathbb{N}_0$: $xy^iz \in L$.

Teraz sa pozrieme na intuíciu za pumpovacou lemou. Keďže konečný automat má len konečný počet stavov a pri každom prechode možno spravovať naviac jeden symbol slova je zrejmé, že v prípade, ak automat spracováva dlhé slovo $w=xyz$ (ktorého dĺžka $|w|$ je väčšia ako počet stavov $q$ automatu rozpozávajúceho tento regulárny jazyk), musí sa aspoň jeden stav v akceptujúcom výpočte zopakovať (Dirichletov princíp). $$(q_0,xyz)\vdash^*\boxed{(q,yz)\vdash^*(q,z)}\vdash^*(q_f,\varepsilon)$$

Inými slovami v diagrame tohto automatu musí existovať slučka resp. cyklus, ktorý toto opakovanie stavu zabezpečia (pozri Obr 1.). Z tohto zároveň vyplýva, že touto slučkou resp. cyklom možno prejsť ľubovoľný početkrát čo zabezpečí taktiež akceptovanie slov tvaru $xy^iz$, pre ľubovoľné $i\in \mathbb{N}_0$ (pozri 3. bod PL). Každé dostatočne dlhé slovo v regulárnom jazyku teda obsahuje časť, ktorú môžeme "napumpovať" ($y^i$) a stále zostaneme v jazyku.

KSA s pumpovacou slučkou resp. cyklom
Obr. 1: KSA s pumpovacou slučkou resp. cyklom

Úloha 2.1

Zamyslite sa nad tým v čom sa líši pumpovanie slov pomocou pumpovacej slučky a netriviálneho cyklu (teda cyklu, ktorý nie je slučkou).

Krok 3

V tejto časti sa pozrieme na praktické využitie pumpovacej lémy pri dôkaze neregularity jazyka. Pri tomto konkrétnom type dôkazu postupujeme metódou dôkazu sporom (z lat. reductio ad absurdum), kedy dokazované tvrdenie negujeme, predpokladáme platnosť tejto negácie a snažíme sa odvodiť spor. V prípade odvodenia sporu je negované tvrdenie neplatné a pôvodné tvrdenie možno prehlásiť za pravdivé.

Príklad

Dokážte, že jazyk $L=\{a^nb^n|n\in\mathbb{N}\}$ nie je regulárny.

Riešenie

  1. Prvým krokom dôkazu neregularity jazyka $L$ je predpoklad, že tento jazyk je regulárny a platí preň pumpovacia lema.

  2. Predpokladáme, že existuje také číslo $p$ (pumpovacia dĺžka alebo pumpovacia konštanta), že slová s dĺžkou aspoň $p$ možno rozdeliť na základe vyššie prezentovaného princípu na 3 časti $x,y,z$.

Poznámka

V prípade ak by bolo $p=1$ mohli by sme uvažovať slová $ab, aabb, aaabbb\ldots$ Ak by bolo $p=3$ $aabb, aaabbb, aaaabbbb\ldots$ Musíme si však uvedomiť, že nepracujeme s konkrétnym číslom, ale s premnnou (nezmánou) $p$. Ak by sme totiž pracovali s konkrétnym číslom (napríklad $3$) a dokázali, by sme neplatnosť PL, nedokázali by sme neregularitu jazyka, keďže stále može existovať iné číslo, pre ktoré by PL platilo. Potrebujeme preto postupovať vo všeobecnosti, aby sme jednoznačne vyvrátili existenciu takéhoto čísla.

  1. Určime slovo $w$, pre ktoré platí $|w|\geq p.$ Takýmto slovom je napíklad slovo $a^pb^p$, keďže $$|w|=|a^pb^p|=|a^p|+|b^p|=p+p=\underline{\underline{2p\geq p}}.$$

  2. Teraz sa pozrieme na všetký možné dekompozície tohto slova.
    Na základe prvého bodu PL platí $|xy|\leq p$. Vieme že $xp$ je podľa definície predponou našho slova $w$, keďže dĺžka tejto predpony je menšia rovná $p$ a vieme, že na začiatku slova $w$ sa nachádza $p$ symbolov $a$, je zrejmé, že predpona $xy$ môže pozostávať len zo symbolov $a$. Z toho teda vyplýva: $$ \begin{align*} &x=a^\alpha, \alpha\geq 0 \text{ a}\\ &y=a^\beta, \beta> 0 \text{ (na základe 2. bodu PL.)} \end{align*} $$ Taktiež platí: $$ \begin{align*} |xy|&\leq p\quad \text{(1. bod PL)}\\ |a^\alpha a^\beta|&\leq p\\ |a^\alpha|+|a^\beta|&\leq p\\ \alpha+\beta&\leq p\\ \end{align*} $$ Príponu tohto slova $z$, potom možno vyjadriť ako zvyšný počet symbolov $a$ (v prípade ak $\alpha+\beta< p$) nasledovaný $p$ symbolmi $b$, teda $$z=a^{p-\alpha-\beta}b^p.$$ V prípade, ak $\alpha+\beta=p$ počet symbolov $a$ v prípone $z$ bude rovný $0$. Dané slovo $w$ budete teda po dekompozí vyzerať nasledovne: $$w=\underbrace{a^\alpha}_{x}\underbrace{a^\beta}_{y}\underbrace{a^{p-\alpha-\beta}b^p}_{z}.$$

  3. V poslednom kroku ukážeme spor s platnosťou 3. bodu PL, a teda $$\forall i\in\mathbb{N}_0: xy^iz\in L.$$ Zapíšme teda slovo $xy^iz$ pomocou symbolov abecedy tohto jazyka: $$w=\underbrace{a^\alpha\phantom{)}}_{x}\underbrace{(a^\beta)^i}_{y^i}\underbrace{\phantom{(}a^{p-\alpha-\beta}b^p}_{z}=a^\alpha a^{\beta i}a^{p-\alpha-\beta}b^p.$$ Slovo, takéhoto tvaru može patriť jazyku $L$ len v prípade, ak má rovnaký počet sybolov $a$ a symbolov $b$. Preto musí platiť: $$ \begin{align*} \alpha + \beta i + p-\alpha-\beta &= p\\ \beta i + p-\beta &= p\quad /-p\\ \beta i -\beta &= 0\\ \beta (i-1) &= 0\quad/\frac{1}{\beta} \text{(ekvivalentná úpravu, keďže }\beta>0\text{)}\\ i-1 &= 0\quad /+1\\ i &=1 \end{align*} $$ Platí, teda že slovo $xy^iz$ bude mať rovnaký počet symbolov $a$ a $b$ len v jednom jedinom prípade, a to ak $i=1$, čo popiera platnosť 3. bodu PL a predstavuje SPOR s predpokladom, že jazyk $L$ je regulárny. Pre názornosť zvoľme $i\neq 1$, napíklad 2 a ukážme, že slovo $xy^{2}z$ nebude patriť jazyku $L$ $$xy^{2}z=a^{\alpha}(a^{\beta})^2a^{p-\alpha-\beta}b^p=a^{\alpha}a^{2\beta}a^{p-\alpha-\beta}b^p.$$ Toto slovo môže patriť jazyku $L$ len v prípade, ak bude platiť: $$ \begin{align*} \alpha+2\beta+p-\alpha-\beta &=p\\ p+\beta &=p\\ \end{align*} $$ Z predpokladu však vieme, že $\beta>0$, takéto slovo by teda nemohlo mať rovnaký počet symbolov $a$ a $b$, $p+\beta \neq p$. Našli sme kontrapríklad 3. bodu PL.

Záver: Jazyk $L$ nie je regulárny Q.E.D.

Poznámka

Skratka Q.E.D. (z lat. quod erat demonstrandum) predstavuje formálne ukončenie dôkazu korešpodujúce využitiu slovenskej skratky ČBTD (čo bolo treba dokázať) resp. využitiu symbolu $\square$.

Úloha 3.1

Dokážte, že jazyk $L=\{w|w\in \{0,1\}^* \land w$ má rovnaký počet symbolov $0$ a $1\}$ nie je regulárny.

Úloha 3.2

Dokážte, že jazyk $L=\{0^{n}10^{n}|n\in \mathbb{N}_0\}$ nie je regulárny.

Úloha 3.3

Dokážte, že jazyk $L=\{0^{2n}1^{n}|n\in \mathbb{N}_0\}$ nie je regulárny.

Dotazník na ohodnotenie učiva

Vážení študenti,
poprosili by som Vás o vyplnenie tohto dotazníka .

Tento dotazník slúži na ohodnotenie vašich skúseností s pripravenými materiálmi zo štvrtého cvičenia. Na vylepšovaní učiva sa aktívne pracuje a Vaše odpovede nám pomôžu zlepšiť kvalitu výučby.

Ďakujem

Doplňujúce materiály

Pumpovacia lema dokazy neregulárnosti jazykov link.