Notes/UNB/Year 4/Semester 2/CS2333/2024-01-26.md

2.8 KiB

Finite Automata

Simple machines that take in strings (sequences of symbols) as input and recognize whether or note each input string satisfies some condition(s)

Finite automata use states to keep track of important information about symbols

Mathematical definition of a finite automaton

M = (Q, \sum, \delta, q, F)

  • Q is a finite set of states
  • \sum is a finite set of input symbols called the input alphabet
  • \delta is the transition function
    • Takes every pair consisting of a state and an input smbol and returns the next state, this tells us everything we need to know about what the machine does in one computation step
  • q \in Q is the start state
  • F \subseteq Q is the set of accept states

Acceptance by a finite automaton

Let M be a finite automaton Let w = w_1, w_2, ..., w_n be n input string over \sum As input string w is process by M, define the sequence of visited states r_0, r_1, ..., r_n as follows:

  • r_0 = q
  • $\forall i = 0,1, ... n-1, r_{i+1} = \delta(r_i, w_{i+1})$ If r_n \in F then M accepts w, otherwise M rejects w

Note: The empty string \epsilon has length 0, it is accepted by M if any only if the start state is an accept state

For a given finite automaton M, the set of stings accepted by M is the language of M and is denoted L(M)

A language A is called regular if there exists a finite automaton M such that A = L(M)

Example of finite automata

A finite automation M_1 that accepts

\{w \in \{0,1\}^* \ | \ n_1(w) \geq 2\}

(State diagram on board) A is the start sate and C is the accept state A -> B (On 1) B -> C (On 1) A -> A (On 0) B -> B (On 0) C -> C (On 0, 1)

A: we have seen no ones yet B: we have seen exactly one 1 C: we have seen two ore more 1's

Example 2 of finite automata

A finite automation M_2 that accepts

\{w \in \{0,1\}^* \ | \ n_1(w) = 2\}

(State diagram on board) A is the start state and C is the accept state A -> B (On 1) B -> C (On 1) C -> D (On 1) A -> A (On 0) B -> B (On 0) C -> C (On 0) D -> D (On 0, 1)

Note: D is an example of a dead state, in which you cannot escape after

Example 3 of finite automata

A finite automation M_3 that accepts

\{w \in \{a,b\}^* \ | \ \text{w starts with abb}\}

(State diagram on board) A is the start state and D is the accept state A -> B (On a) B -> C (On b) C -> D (On b) D -> D (On a, b) A -> X (On b) B -> X (On a) C -> X (On a) X -> X (On a ,b)

Example 4 of finite automata

A finite automation M_4 that accepts (Didn't catch the definition)

\{w \in \{0,1\}^* \ | \ n_1(w) = 2\}

(State diagram on board) A is the start state and D is the accept state

(state transitions would go here)

A: the most recent symbol was 1 or we have seen no symbols B: the last symbol was 0, but we have noon seen 010 yet C: the last two symbols were 01, but we have not seen 010 D: we have seen the pattern 010