====== Lecture A/5: Finite Automata and Regular Languages ====== * Generally, it's easier to find a NFA to accept a given language, but easier to program a DFA. * It is asserted that both FDAs and NFAs recognise the regular languages, which themselves are represented by regular expressions. {{:theocs:screenshot_2024-10-17_at_13-13-33_lecture_a_5_finite_automata_and_regular_languages_-_lecture05_a_slides.pdf.png?400|}} {{:theocs:screenshot_2024-10-17_at_13-14-28_lecture_a_5_finite_automata_and_regular_languages_-_lecture05_a_slides.pdf.png?400|}} {{:theocs:screenshot_2024-10-17_at_13-14-37_lecture_a_5_finite_automata_and_regular_languages_-_lecture05_a_slides.pdf.png?400|}} ====== Lecture A/6: What is beyond regular languages? ====== A **Regular grammar** is on e where each production takes on fo the following restricted forms: * $N \to \Lambda$ * $N \to w$ * $N \to A$ * $N \to wA$ Every transition is associated witha grammar production, e.g. if the state $1$ corresponds to the nonterminal $A$, them $$T(S,a) = 1 \Leftrightarrow S \to aA$$ Every final state has a additional production, $$A \to \Lambda$$ ===== Pumping lemma ===== $\{a^n b^n | n > 0\}$ Is not finite! it is impossible to create an automaton that can satisfy it! * The automation would have to remember the number of $a$'s it has seen, which might be arbitrarily large * **This is impossible for a machine with a finite number of possible states.** Any algorithm will break down when $n$ exceeds the number of states of the machine! Given a language, is there a way to determine whether it is regular? One possibility for proving the language is not regular is using the **pumping lemma**, which applies for infinite languages (All finite languages are regular!) **Theorem (The pigeon hole principle)** If we put $n$ into $m$ pigeonholes ($n>m$), then at least one pigeon hole must have more than one pigeon! **Theorem (Pumping Lemma)** Let $L$ be an infinite regular language accepted by a DFA with $m$, states. Then any string $w$ in $L$ with at least $m$ symbols can be decomposed as $w = xyx$ with $|xy| \leq m$, and $|y| \geq 1$ such that $$w_i = \underbrace{xy...yz}_i$$ is also in $L$ for all $i = 0,1,2...$ **We can use the pumping lemma to prove a language is not regular**, but not that it is regular! We can prove **by contradiction** that $L = \{a^n b^n, n \geq 0 \}$ is not regular using the pumping lemma.