# JFiZO $\newcommand{\N}{\mathbb{N}}$ [TOC] # Automaty skończone ## Deterministyczne automaty skończone ### Definicje Deterministyczny automat skończony (ang. Deterministic Finite-state Automaton, DFA) to piątka uporządkowana $<\Sigma, Q, q_0, \delta, F>$, gdzie - $\Sigma$ jest skończonym alfabetem - $Q$ jest skończonym zbiorem stanów - $q_0 \in Q$ jest stanem początkowym - $F \subseteq Q$ jest zbiorem stanów akceptowanych - $\delta: \Sigma \times Q \to Q$ jest funkcją przejścia Intuicyjnie definiujemy $\hat\delta$: $$ \hat\delta: \Sigma^* \times Q \to Q $$ Ogólnie mamy na to dwa sposoby: 1) $\hat\delta(aw, q) = \hat\delta(w, \delta(a,q))$ 2) $\hat\delta(wa, q) = \delta(a, \hat\delta(w,q))$ zawsze $\hat\delta(\varepsilon,q) = q$ $\hat\delta(w,q)$ to stan w którym jesteśmy po wczytaniu słowa $w$. Dla automatu $A = <\Sigma, Q, q_0, \delta, F>$ przez $L_A$ oznaczamy język $\{w \in \Sigma^*: \hat\delta(w,q_0) \in F \}$ Język $L$ jest regularny w.t.w gdy istnieje DFA A taki że $L$ = $L_A$. ### Lemat o pompowaniu Dla każdego języka regularnego $L$ istnieje $k \in \mathbb{N}$ (zwane **stałą z lematu o pompowaniu**), taka że dla każdego $w \in L$, t. że $|w| \geq k$ istnieją słowa $x,y,z \in \Sigma*$, takie że $xyz = w, y \neq \varepsilon$, $|xy| \leq k$ i dla każdego $m \in \mathbb{N}$ zachodzi $$ xy^mz \in L $$ :::spoiler Szkic dowodu Weźmy $k > |Q|$, weźmy dowolne słowo które ma długość większą niż $k$, wtedy z szufladkowej zasady Dirichleta w ciągu stanów przejścia po kolejnych literkach któryś stan się musi powtórzyć. ::: ## Niedeterministyczne automaty skończone ### Definicje Niedeterministyczny automat skończony (ang. Non-deterministic Finite-state Automaton, NFA) to piątka uporządkowana $<\Sigma, Q, q_0, \delta, F>$, gdzie - $\Sigma$ jest skończonym alfabetem - $Q$ jest skończonym zbiorem stanów - $q_0 \in Q$ jest stanem początkowym - $F \subseteq Q$ jest zbiorem stanów akceptowanych :::danger - $\delta \subseteq Q \times \Sigma \times Q$ jest relacją przejścia (chcemy o niej myśleć jak o binarnej relacji) ::: Podobnie jak dla automatów deterministycznych definiujemy $\hat\delta$. $$ \hat\delta \subseteq Q \times \Sigma^* \times Q $$ $$ <q, \varepsilon, q'> \in \hat\delta \Leftrightarrow q = q' $$ $$ <q, wa, q'> \in \hat\delta \Leftrightarrow \exists q'' <q,w,q''> \in \hat\delta \land <q'',a,q'> \in \delta $$ Dla NFA A, $$ L_A = \{w\in \Sigma^* | \exists q \in F<q_0,w,q> \in \hat\delta\} $$ ### Automaty niedeterministyczne z epsilon-przejściami To też piątka uporządkowana. Jedynie zmienia się definicja $\delta$. :::warning $\delta \subseteq Q\times (\Sigma \cup \{\varepsilon\}) \times Q$ ::: Za pomocą $\varepsilon$ przejść można zarządać dowolną liczbę stanów początkowych oraz dokładnie 1 końcowy. Jest to bardziej 'ładne' niż jakoś potrzebne. #### Relacje między DFA i NFA ##### Twierdzenie Dla każdego NFA $A$ istnieje DFA $A'$, taki że $L_A = L_A'$. :::spoiler szkic dowodu Stan DFA odpowiada podzbiorowi stanów NFA w których aktualnie się 'znajdujemy'. ::: #### AS na obiektach niebędacych skończonymi słowami ##### Automaty na drzewach (skończonych) ###### Bottom-up Żuczki są w liściach. Idą do góry, dwa żuczki łączą się w liściu, patrzymy czy żuczek w korzeniu jest zadowolony czy nie. Czy niedeterminizm coś w tym modelu zmienia? :::spoiler Nie :disappointed: (można pokazać, jako ćwiczenia na spacer) ::: ###### Top-down Żuczek zaczyna w korzeniu, będąc w jakimś wierzchołku robi dwie kopie i każda z nich idzie do dzieci wierzchołka. Żuczek akceptuje gdy wszystkie żuczki w liściach zaakceptują. Czy niedeterminizm coś w tym modelu zmienia? :::spoiler $BottomUpD = BottomUpN = TopDownN \neq TopDownD$ Zbiór drzew nad $\{a,b\}$ w którym jest dokładnie jedno $a$. Żuczki nie wiedzą co się dzieje na innych poddrzewach. ::: ##### Automaty na słowach nieskończonych input: $\Sigma ^ \N$ Automat akceptuje słowo $w$ jeśli wczytując $w$ nieskończenie wiele razy znajdzie się w stanie ze zbioru $F$. #### Zagadka Czy automaty deterministyczne na słowach nieskończonych rozstrzygają te same języki co automaty niedeterministyczne? :::spoiler Rozwiązanie Niech $L$ to język w którym każde słowo ma skończenie wiele jedynek. Dla takiego języka nie istnieje DFA. :::spoiler szkic dowodu Obserwacja: Dla każdego $q\in Q$ osiągalnego ze stanu początkowego istnieje liczba $z(q)$ taka, że $\hat\delta(q, O^{z(q)}) \in F$. Jak słowo ma jakiś prefiks który dochodzi do $q$, a następnie ma same $0$ to powinno zostać zaakceptowane (musi tak być, ponieważ nieskończenie wiele razy musi być w stanie akceptującym, żeby zaakceptować słowo). Wystarczy skontruować słowo: $q_0 | z(q_0) *0 | 1 | q_i | z(q_i)* 0 | \ldots$ Nieskończenie wiele razy pojawi się 1 oraz nieskończenie wiele razy będziemy w stanie akceptującym (sprzeczność). ::: ##### Podzagadka Czy poprzedni dowód, że DFA umie zrobić to samo co NFA przenosi się na przypadek słów nieskończonych? ## Automaty dwukierunkowe ### Definicje Ogólnie wszystko tak samo jak DFA tylko $\delta$ to funkcja $$ \delta: Q \times \Sigma \to Q \times \{L,R\} $$ Intuicyjnie: przejście z stan, literka do stan, kierunek ### Twierdzenie Każdy dwukierunkowy automat skończony daje się symulować przez DFA. :::spoiler Patrzymy na połączenie dwóch ciągów stanów (czy jest możliwe). Z grubsza jak jest to istnieje ścieżka, więc jest git. Wszelkie wątpliwości nie są możliwe do skonstruowania. ::: # Wyrażenia regularne - $\emptyset$ jest wyrażeniem regularnym i $L_\emptyset = \emptyset$ - $\varepsilon$ jest wyrażeniem regularnym i $L_\varepsilon = \{\varepsilon\}$ - jeśli $a\in \Sigma$ to $a$ jest wyrażeniem regularnym i $L_a = \{a\}$ - jesli $\varphi, \psi$ są wyrażeniami regularnymi to: - $\varphi+\psi$ jest wyrażeniem regularny i $L_{\varphi+\psi} = L_\varphi \cup L_\psi$ - $\varphi\psi$ jest wyrażeniem regularny i - $L_{\varphi\psi} = L_\varphi L_\psi = \{wv | w \in L_\varphi,~v\in L_\psi\}$ - $\varphi^*$ jest wyrażeniem skończonym i - $L_{\varphi^*} = (L_\varphi)^*$ $L^0 = L_{\varepsilon}$ $L^{i+1} = LL^i$ $$ L^* = \bigcup_{i \in \N} L^i $$ ## Twierdzenie Następujące trzy warunki są równoważne 1. istnieje wyr. regularne $\varphi$, takie że $L_\varphi = L$ 2. istnieje DFA $A$, taki że $L = L_A$ 3. istnieje NFA z $\varepsilon$-przejściami $A$, taki że $L = L_A$. :::spoiler szkic dowodu $3\to 2$ już było $1\to 3$ konstrukcja NFA tak, żeby było dokładnie jedno wejście i wyjście $2\to 1$ ::: # Języki bezkontekstowe ## Definicje - $\Sigma$ - alfabet - $\pi$ - skończony zbiór par słów nad $\Sigma$, czyli $\pi \subseteq \Sigma^* \times \Sigma^*$ $$ w \longrightarrow_\pi v \Leftrightarrow \exists x,l,r,y \in \Sigma^*,~w = xly,~v=xry,~ <l,r> \in \pi $$ $\overset{*}{\longrightarrow}_\pi$ - przechodnie (tranzytywne), zwrotne, domknięcie $\longrightarrow_\pi$ $\overset{*}{\longleftrightarrow}$ - równoważnościowe domknięcie $\longrightarrow_\pi$ $\longleftrightarrow_\pi$ - symetryczne domknięcie $\longrightarrow_\pi$ ## Gramatyka bezkontekstowa ### Definicja Gramatyka bezkonteksta, CFG, to $<T, N, S, \pi>$ gdzie $T, N$ to rozłączone alfabety. - $T$ - symbole terminalne - $N$ - symbole nieterminalne - $S$ - symbol początkowy ($S \in N$) - $\pi \subseteq N \times (T \cup N)^*$ (jest skończone) $$ \overline{L}_G = \{ w \in (N\cup T)^*: S \overset{*}{\longrightarrow}_\pi w\} $$ $$ L_G = \overline{L}_G \cap T^* $$ Język $L$ jest CFL, jeśli istnieje istnieje $G \in CFG,~G = <T,N,S,\pi>$, taka że $$ L = L_G $$ #### Znaczenie równości Jeśli $L_1, L_2 \in CFL$ to napis $$ L_1 = L_2 $$ oznacza że $$ L_1 \overset{\cdot}{-} L_2 = \{\varepsilon\} $$ ## Twierdzenie Każdy język regularny jest CFL. :::spoiler szkic dowodu Indukcja strukturalna ::: ## Lemat o pompowaniu dla CFL Dla każdego języka bezkontekstowego $L$ istnieje stała $n \in \N$ (zwaną stałą z lematu o pompowaniu) dla której $w \in L,~|w| > n$ istnieją  $s,z,t,y,x \in \Sigma^*$, takie że $w = sztyx,~zy\neq\varepsilon,~|zty| \le n$, takie że dla każdego $k \in \N$ $$ sz^kty^kx \in L $$ :::spoiler szkic dowodu Patrzymy na gramatykę Chomsky'ego. Z grubsza widać, że to jest pewne drzewo binarne. Rozpatrujemy pewną ściężkę. Musi być na niej powtórzenie jakiegoś stanu. Patrzymy na poddrzewa powtrzającego się stanu. ::: #### Postać Chomsky’ego gramatyk CFG, $G = <T,N,S,\pi>$ jest postaci normalnej Chomskyego, gdy każda produkcja z $\pi$ jest albo postaci $$ A \to BC,~BC \in N $$ albo $$ A \to a,~a \in T $$ ##### Twierdzenie Dla każdej $G\in CFG$ istnieje $G'\in CFG$, takie że $G'$ jest postaci normalnej Chomsky'ego oraz $$ L_G = L_{G'} $$ :::spoiler Dowód został pominięty ::: ## Automaty ze stosem ### Definicja Automat ze stosem to siódemka uporządkowana $A = <\Sigma, Q, \Gamma, \delta, q_0, S, F>$, gdzie - $\Sigma$ - skończony alfabet - $Q$ - skończony zbiór stanów - $\Gamma$ - skończony zbiór symboli stosowych - $\delta \subseteq (Q\times (\Sigma \cup \{\varepsilon\}) \times \Gamma ) \times (Q \times \Gamma^*)$ - $q_0$ - stan początkowy - $S \in \Gamma$ - początkowy symbol stosowy - $F \subseteq Q$ - zbiór stanów akceptujących Myślimy w następujący sposób. Zawsze ściągamy jeden element z stosu, a możemy wrzucić wiele. Ogólnie są dwie konwencje, automat albo akceptuje, gdy stos jest pusty lub gdy jest w stanie akceptującym. Mając do dyspozycji $\varepsilon$-przejścia są one równoważne. #### Twierdzenie Język jest bezkontekstowy wtedy i tylko wtedy, gdy daje się rostrzygnąć automatem (niedeterministycznym) ze stosem (NPDA). #### Wniosek Przecięcie języka bezkontekstowego i języka regularnego jest bezkontekstowe. #### Wniosek Przecięcie dwóch CFL niekoniecznie jest bezkontekstowe. Inaczej mówiąc automat z dwoma stosami może zdecydowanie więcej niż automat z jednym stosem. ### Postać Greibach gramtyk bezkontekstowych CFG $G=<T,N,S,\pi>$ jest w postaci normalnej Greibach, gdy każda produkcja z $\pi$ ma postać  $$ A \to aw $$ gdzie $A\in N, a\in T, w \in N^*$ #### Twierdzenie Dla każdej $G\in$ CFG, istnieje $G'\in$ CFG w postaci normalnej Greibach, taka że $$ L_G = L_{G'} $$ # Problemy ## Problemy rekurencyjne Na początku niech każdy ustali (i nikomu nie mówi, to akurat jest bardzo ważne) jaki jest jego Ulubiony Język Programowania (MUJP). Język $\subseteq \{0,1\}^*$, albo język $\subseteq \Sigma^*$. Teraz mamy **problemy**. Problem $\subseteq \N$. (Każdy wie, że $\N = \{0,1\}$.) Problem $A\subseteq N$ nazywa się **rekurencyjny** albo **obliczalny** albo **rozstrzygalny** gdy istnieje w MUJP program $\phi$, taki że $\forall n \in \N$: $$ n \in A \Leftrightarrow \phi(n) = 1\\ n \notin A \Leftrightarrow \phi(n) = 0\\ $$ ###### obserwacja Istnieją nierekurencyjne podzbiory $\N$ (argument z kardynalności). ###### obserwacja o problemach rekurencyjnych Jeśli $A, B$ rekurencyjne to: $A\cup B,~A \cap B,~\overline A$ też. ###### obserwacja Każdy zbiór skończony jest rekurencyjny. ## Problemy rekurencyjnie przeliczalne (r.e) Zbiór $A\subseteq N$ jest r.e. gdy istnieje program $\phi_A \in$MUJP, taki że dla każdego $n\in\N$: $$ \phi_A(n) = 1 \Leftrightarrow n\in A $$ (dla $n\notin A$ obliczenie $\phi_A(n)$ może się nie zakończyć. Oznaczamy to $\phi_A(n) = \bot$.) Równoważnie: $$ \forall n\in\N~\phi_A(n)\in\N \Leftrightarrow n\in A $$ ###### obserwacja Istnieją zbiory które nie są r.e (argument z kardynalności). ###### obserwacja o problemach r.e Jeśli $A,B$ są r.e to również $A\cup B,~A\cap B$, ##### Lemat Jeśli $A, \overline A$ są oba r.e. to są oba rekurencyjne. #### Twierdzenie Istnieje bijekcja między $\N$, a programami w MUJP których relacja wejścia-wejścia zawiera się w $\N\times\N$. Ta bijekcja ma być w obie strony efektywna. To znaczy znajać program musimy umieć znaleźć jego numer, a znając numer musimy umieć znaleźć jego program. #### wniosek Możemy ustawić programy w ciąg. $$ K = \{n: \phi_n(n) \in \N\} $$ :::warning Nie istnieje efektywna numeracja programów które się zatrzymują. ::: ###### obserwacja $K$ jest r.e. ## Twierdzenie Touring o nierozstrzygalności problemu stopu $K$ nie jest rekurencyjny. :::spoiler Dowód jest niby ważny, więc jest ![](https://i.imgur.com/Tg9pQLT.png) ::: ###### Oznaczenia $\phi_n$ - program o numerze $n$ $\operatorname{Dom}(\phi_n) = \{m: \phi_n(m)\in \N\}$ (dla każdego $n$ jest to zbiór r.e.). ###### obserwacja Dla każdego $A\in$ r.e istnieje $n\in\N$, taki że $A = \operatorname{Dom}(\phi_n).$ ###### Morał Zbiory r.e to są "wiersze" w tej tabelce. $A\in$co-re $\Leftrightarrow~\overline A\in$ r.e ## Funkcje rekurencyjne $f\subseteq \N\times\N$ nazywa się **częściową funkcją rekurencyjną**, jeśli jest funkcją i jeśli istnieje program $\phi_n$, taki że dla każdego $k\in\N$ zachodzi: $<k,m>\in f~\Leftrightarrow~\phi_n(k)=m$ (to samo $m$). ### Częściowa funkcja rekurencyjna Funkcja która wylicza program $\phi_n$ dla jakiegoś $n$. $\operatorname{Dom}(\phi_n)\subseteq\N$ Podzbiorem zbioru częściowych funkcji rekurencyjnych są **całkowite funkcje rekurencyjne.** $$ \operatorname{Dom}(\phi_n) = \N $$ ### Definicja relacji $A,B\subseteq \N$, wtedy $\newcommand{\rek}{\le_{\text{rek}}} A\rek B$ ($A$ jest nie trudniejszy od $B$ w sensie redukcji będącą całkowitą funkcją rekurencyjną). Gdy istnieje funkcja rekurencyjna $f: \N\to\N$, taka że $$ \forall n\in\N~n\in A \Leftrightarrow f(n)\in B $$ #### obserwacja Jeśli $A\rek B$ i $B\in$ Rek/r.e, to $A\in$ Rek/r.e. #### obserwacja 2 Jeśli $A\in$ Rek i $B,\overline B \neq \emptyset$, to $$ A\rek B $$ Praporządek - relacja zwrotnia i przechodnia. Z praporządku da się zrobić częściowy porządek poprzez utożsamienie elementów (podzbiorów $\N$) która są w tej samej silnej składowej spójności. Częściowy porządek, otrzymany z $\rek$ ma element najmniejszy. Jest to klasa wszystkich zbiorów rekurencyjnych (różnych od $\emptyset$ i $\N$). #### obserwacja 3 Dla każdego $A\in$ r.e zachodzi $$ A \rek K $$ Mówi się, że "$K$ jest r.e - trudny ze względu na redukcję będącą całkowitymi funkcjami rekurencyjnymi." Ponieważ $K$ jest r.e to mówimy, że $K$ jest r.e-zupełny. :::warning Wszystkie dowody nierostrzygalności jakie zobaczymy będą polegały na pokazaniu, że $$ K\rek A $$ ::: ## Twierdzenie Rice'a ### Definicje - Podzbiór $A\subseteq\N$ jest trywialny jeśli $A=\N$ lub $A=\emptyset$ wpp jest nietrywialny - $A\subseteq\N$ jest ekstensjonalny, jeśli dla każdych dwóch $n,m\in\N$ zachodzi implikacja $$ \forall k\in\N\quad\phi_n(k) = \phi_m(k) \Rightarrow (n\in A \Leftrightarrow m\in A) $$ ### Twierdzenie Żaden nietrywialny zbiór ekstensjonalny nie jest rozstrzygalny. Czyli żaden ekstensjonalnej własności programów nie da się automatycznie sprawdzić. ## O naturalnych/kombinatorycznych problemach nierozstrzygalnych ### Thue $$ Thue = \{<v,w,\pi>: v \overset{*}{\longleftrightarrow}_\pi w\}\\ semiThue = \{<v,w,\pi>: v \overset{*}{\longrightarrow}_\pi w\} $$ Czy z $v$ da się dojść do $w$ wykonując produkcję ze zbioru $\pi$. Problem słów dla procesów Thuego / semi-procesów Thuego. #### Twierdzenie Thue i Semithue są nierozstrzygalne, ale są r.e. ### Problem odpowiedności Posta Instacja PCP jest skończony zbiór par słów $P=\{<l_1,r_1>,\ldots, <l_k,r_k>\}$. Rozwiązaniem $P$ jest słowo $s\in\{1...k\}^{\star}$, takie że $$ l_{s_1}l_{s_2}\ldots l_{s_m} = r_{s_1}r_{s_2}\ldots r_{s_m} $$ Problem: Czy dla danego $P$ istnieje rozwiązanie, jest nierozstrzygalny. ## Maszyn Turinga ### Pożegnanie z MUJP Opierając się tylko na MUJP pokazaliśmy, że $K\notin$ Rek i mnóstwo innych rzeczy, w tym tw. Rice'a. Teraz się umówimy co do jakiegoś modelu obliczeń. Były różne koncepcje co do tego jak formalizować pojęcie algorytmu. - Alonzo Church, $\lambda$-rachunek (obliczalne są funkcje dla których są $\lambda$-termy) - Stephen Cole Kleene, definiować "najmniejsze klasy które coś tam..., zamknięte na operacje...". Klasa funkcji rekurencyjnych $\N^k\to \N$ - każda funkcja $f:\N\to\N$ stała jest rek - $id:\N\to\N$ jest fun rek - $succ:\N\to\N$ jest fun rek - każdy rzut na $k$-tą oś jest funkcją rekurencyjną  Jeśli $g:\N^k\to\N$ jest f rek i $f_1,f_2,\ldots,f_k:\N^m\to\N$ są f rekurencyjną, to $h=g(f_1,f_2,\ldots,f_k)$ jest f rekurencyjną (złożenie) i $h: \N^m\to\N$. #### Operator rekursji Jeśli $g:\N^{m+2}\to\N,~h:\N^m\to\N$ są f rek to funkcja $s:\N^{m+1}\to\N$ zdefiniowana $$ s(0,w) = h(w)\\ s(k+1,w) = g(k,g(k,s(k,w),w) $$ #### Operator minimum Jeśli $g:\N^{m+1}\to\N$ jest rek, to $h:\N^m\to\N$ zdefiniowana jako: $$ h(w) = \min\{n\in\N: g(n,w) > 0\} $$ jest rekurencyjna. ### Definicja - $Q$ stany - $\Sigma$ alfabet taśmowy - $\delta:Q\times \Sigma\to Q\times\Sigma\times\{L,R\}$ Jest symbol początkowy $\alpha$, symbol końca wejścia $\omega$, oraz symbole $B$ (blank). Taśma jest potencjalnie nieskończona Uniwersalna maszyna Touringa. Bardzo prosty model. Łatwo go zakodować w innych problemach. ### Teza Churcha Wszystkie modele formalizujące intuicyjne pojęcie algorytmu są równoważne maszynie Turinga. Wszystkie modele która znamy i wszystkie te które w przyszłości wymyślimy.