NFA DFA Text search References Languages grammars automata

  • Slides: 78
Download presentation
NFA, DFA & Text search References Languages, grammars, automata [1] M. Demlová: A 4

NFA, DFA & Text search References Languages, grammars, automata [1] M. Demlová: A 4 B 01 JAG http: //math. feld. cvut. cz/demlova/teaching/jag/predn_jag. html [2] I. Černá, M. Křetínský, A. Kučera: Automaty a formální jazyky I http: //is. muni. cz/do/1499/el/estud/fi/js 06/ib 005/Formalni_jazyky_a_automaty_I. pdf [3] B. Melichar, J. Holub, T. Polcar: Text Search Algorithms http: //cw. felk. cvut. cz/lib/exe/fetch. php/courses/a 4 m 33 pal/melichar-tsa-lectures-1. pdf For more references see PAL links pages http: //cw. felk. cvut. cz/doku. php/courses/b 4 m 33 pal/odkazy_zdroje (CZ) https: //cw. fel. cvut. cz/wiki/courses/be 4 m 33 pal/references (EN) 0

Finite Automata 1 Automaton FA 1: A Q σ … alphabet … {0, 1},

Finite Automata 1 Automaton FA 1: A Q σ … alphabet … {0, 1}, |A| = 2. . . set of states {S, A, B, C, D }. . . transition function. . . σ: Q A Q : { σ(S, 0) = S, σ(A, 0) = B, σ(B, 0) = C, σ(C, 0) = C, σ(D, 0) = D, σ(S, 1) = A, σ(A, 1) = D, σ(B, 1) = D, σ(C, 1) = A, σ(D, 1) = D } S 0. . . start state S Q QF … unempty set of final states ≠ {C} Q 0 Transition diagram of the automaton FA 1 S 1 1 A 0 1 FA 1 B 0 1 D 0, 1 C 0

Finite Automata 2 Example Language over the alphabet { +, ─ , . ,

Finite Automata 2 Example Language over the alphabet { +, ─ , . , 0, 1, …, 8, 9, … } whose words represent a decimal numbers 0, 1, . . . , 9 0 +, ─ 1 0, 1, . . . , 9 else . 2 else 3 else 5 any symbol 0, 1, . . . , 9 4 else Automaton FA 5 Example of word analysis +87. 09: (0), + → (1), 8 → (2), 7 → (2), . → (3), 0 → (4), 9 → (4) is a final state, word +87. 05 is accepted by FA 5. 76+2: (0), 7 → (2), 6 → (2), + → (5), 2 → (5) is not a final state, word 76+2 is not accepted by FA 5.

Finite Automata Implementation 0, 1, . . . , 9 +, ─ 0 1

Finite Automata Implementation 0, 1, . . . , 9 +, ─ 0 1 0, 1, . . . , 9 2 else 0, 1, . . . , 9 3 else 4 else 5 any symbol 0 1 2 3 4 5 5 5 5 ! 5 5 5 . . + 1 5 5 5 , 5 5 5 ─ 1 5 5 5 5 3 5 5 5 / 5 5 5 0 2 2 2 4 4 5 1 2 2 2 4 4 5 3 2 2 2 4 4 5 4 2 2 2 4 4 5 5 2 2 2 4 4 5 6 2 2 2 4 4 5 7 2 2 2 4 4 5 8 2 2 2 4 4 5 9 2 2 2 4 4 5 : 5 5 5 . . ~ 5 5 5 is. Final 0 0 1 0 boolean is. Decimal( char [] text, int [][] DFA, int [] is. Final ) { int state = 0; // start state for( int i = 0; i < text. length(); i++ ) { // check each symbol char tc = text[i]; if( tc < ascii(32) || tc > ascii(126) return false; state = DFA[state][(int)tc-32]; } return is. Final[state] == 1; } 3

Finite Automata Implementation boolean is. Decimal( char [] text ) { int state =

Finite Automata Implementation boolean is. Decimal( char [] text ) { int state = 0; // start state for( int i = 0; i < text. length(); i++ ) { // check each symbol char tc = text[i]; // current text character switch( state ) { case 0: if ( tc == '+' || tc == '-' ) state = 1; else if( tc >= '0' && tc <= '9' ) state = 2; else state = 5; break; case 1: if ( tc >= '0' && tc <= '9' ) state = 2; else state = 5; break; case 2: if ( tc >= '0' && tc <= '9' ) state = 2; else if( tc == '. ' ) state = 3; else state = 5; break; case 3: if ( tc >= '0' && tc <= '9' ) state = 4; else state = 5; break; case 4: if ( tc >= '0' && tc <= '9' ) state = 4; else state = 5; break; case 5: break; // no need to react anyhow } // end of switch } // end of for loop -- word has been read return ( state == 2 || state == 4 ); // final states!! } 4

Indeterminism 5 Basics NFA A 1, its transition diagram and its transition table states

Indeterminism 5 Basics NFA A 1, its transition diagram and its transition table states a c b 1 a 0 b 3 6 c b a 2 a a 4 a, b c 7 c 5 b a, b 8 0 1 2 3 4 5 6 7 8 a 1 b 2 3, 4 4, 5 6 F 0 6, 7, 8 8 0 6 7 c 6 7 F accept states marked by F A 1 alphabet

Indeterminism 6 NFA at work NFA A 1 processing input word abcba a A

Indeterminism 6 NFA at work NFA A 1 processing input word abcba a A 1 1 c b 1 a 0 b a 3 a 2 a abcba b 0 a, b 8 a b abcba 1 a 3 b 7 c 5 c a, b c 4 2 6 c b a 2 a 6 a, b c 4 7 c 5 a, b b 8 a 6 Active states a 3 c 1 a 0 abcba b b b a 2 a 3 a c b 7 1 a 0 a, b 8 3 b a, b c 5 c 6 c 4 abcba b b a 2 a 4 5 c c c b a, b 7 a, b 8 continue. . .

Indeterminism. . . continued a a c 4 1 a 0 b a 3

Indeterminism. . . continued a a c 4 1 a 0 b a 3 b 4 abcba 0 7 a, b 8 a 6 c b 1 a 0 b 2 abcba 3 6 c b a a a 4 c a, b 7 c 5 b a a, b b 5 c b 5 6 c c c b a 2 a 7 NFA at work a, b 8 Accepted! abcba b 1 3 6 c b a 2 a a 4 c c 5 b a, b 7 a, b 8 NFA A 1 has processed the word abcba and went through the input characters and respective sets(!) of states {0} → a → {1} → b → {3, 4} → c → → {0, 6, 7, 8} → b → {2, 6, 7} → a → → {0, 4, 5, 6}.

Indeterminism Simulation NFA simulation without transform to DFA Idea: Register all states to which

Indeterminism Simulation NFA simulation without transform to DFA Idea: Register all states to which you have just arrived. In the next step, read the input symbol x and move SIMULTANEOUSLY to ALL states to which you can get from ALL active states along transitions marked by x. Input: NFA , text in array t Set. Of. States S = {q 0}, S_tmp; i = 1; while( (i <= t. length) && (!S. is. Empty()) ) { S_tmp = Set. empty. Set(); for( q in S ) // for each state in S S_tmp. union( delta(q, t[i]) ); S = S_tmp; i++; } return S. contains. Final. State(); // true or false 8

NFA to DFA Algorithm Generating DFA A 2 equivalent to NFA A 1 using

NFA to DFA Algorithm Generating DFA A 2 equivalent to NFA A 1 using transition tables Data Each state of DFA is a subset of states of NFA. Start state of DFA is an one-element set containing the start state of NFA. A state of DFA is an accept state iff it contains at least one accept state of NFA. Construction Create the start state of DFA and the corresponding first line of its transition table (TT). For each state Q of DFA not yet processed do { Decompose Q into its constituent states Q 1, . . . , Qk of NFA For each symbol x of alphabet do { S = union of all references in NFA table at positions [Q 1] [x], . . . , [Qk][x] if (S is not among states of DFA yet) add S to the states of DFA and add a corresponding line to TT of DFA } Mark Q as processed } // Remember, empty set is also a set ot states, it can be a state of DFA 9

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a 1 0 1 2 3 4 5 6 7 8 b 2 3, 4 Copy start state c A 2 F 4, 5 6 0. . . 0 6 7 F 0 1 2. . . a c b a 0 b c Add new state(s) 6 7 1 b 2 0 6, 7, 8 8 A 1 a 1 3 4 c b c a, b 7 c 5 b 2 6 c b a 2 a a a 1 a, b 8 continue. . . 10

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a 1 0 1 2 3 4 5 6 7 8 b 2 3, 4 c A 2 F 4, 5 6 0 1 2 34. . . 0 6, 7, 8 8 0 6 7 Add new state(s) F a 1 b 2 34 c F 6 7 a c b A 1 1 a 0 b 3 6 c b a 2 a a 4 a, b c 7 c 5 b a, b 8 continue. . . 11

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a 1 0 1 2 3 4 5 6 7 8 b 2 3, 4 c A 2 F 4, 5 6 0 1 2 34 45. . . 0 6, 7, 8 8 0 6 7 Add new state(s) F a 1 b 2 34 c F 45 6 7 a c b A 1 1 a 0 b 3 6 c b a 2 a a 4 a, b c 7 c 5 b a, b 8 continue. . . 12

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a 1 0 1 2 3 4 5 6 7 8 b 2 3, 4 c A 2 F 4, 5 6 0 1 2 34 45 6 0678. . . 0 6, 7, 8 8 0 6 7 Add new state(s) F 6 7 a 1 45 6 b 2 34 c F 0678 a c b A 1 1 a 0 b 3 6 c b a 2 a a 4 a, b c 7 c 5 b a, b 8 continue. . . 13

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a 1 0 1 2 3 4 5 6 7 8 b 2 3, 4 c A 2 F 4, 5 6 0 1 2 34 45 6 0678 8 678. . . 0 6, 7, 8 8 0 6 7 F 6 7 a c b A 1 1 a 0 b 3 a 2 a a 4 c b b 2 34 45 6 8 c F 0678 F a, b 7 c 5 a 1 6 c b Add new state(s) a, b 8 continue. . . 14

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a 1 0 1 2 3 4 5 6 7 8 b 2 3, 4 c A 2 F 4, 5 6 0 6, 7, 8 8 0 6 7 a c b A 1 1 a 0 b 3 4 c b b 2 34 45 6 8 c F 0678 F 0 a, b 7 c 5 a 1 6 c b a 2 a a 0 1 2 34 F 45 6 0678 8 678 No new state. . . Add new state(s) a, b 8 continue. . . 15

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a 1 0 1 2 3 4 5 6 7 8 b 2 3, 4 c A 2 F 4, 5 6 0 1 2 34 45 6 0678 8 678 0167 267. . . 0 6, 7, 8 8 0 6 7 F 6 7 a c b A 1 1 a 0 b 3 a 2 a a 6 c b 4 c b a 1 b 2 34 45 6 8 0 0167 c F 0678 F 267 a, b 7 c 5 Add new state(s) a, b 8 continue. . . 16

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a 1 0 1 2 3 4 5 6 7 8 b 2 3, 4 c A 2 F 4, 5 6 0 6, 7, 8 8 0 6 7 F 6 7 a c b A 1 1 a 0 b 3 a 2 a a 6 c b 4 a, b c b 0 1 2 34 45 6 0678 8 678 0167 267 7. . . a 1 b 2 34 45 6 8 0 0167 7 c F 0678 F 267 7 7 c 5 Add new state(s) a, b 8 continue. . . 17

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a

NFA to DFA Example Generating DFA A 2 equivalent to NFA A 1 a 1 0 1 2 3 4 5 6 7 8 b 2 3, 4 c A 2 F 4, 5 6 0 6, 7, 8 8 0 6 7 F 6 7 a c b A 1 1 a 0 b 3 a 2 a a 6 c b 4 a, b c 7 c 5 b Add new state(s) a, b 8 0 1 2 34 45 6 0678 8 678 0167 267 7 067 67. . . a 1 b 2 34 45 6 8 0 0167 7 067 c F 0678 F 267 7 67 F continue. . . 18

NFA to DFA Example A 2 DFA A 2 equivalent to NFA A 1

NFA to DFA Example A 2 DFA A 2 equivalent to NFA A 1 a 1 0 1 2 3 4 5 6 7 8 b 2 3, 4 . . . FINISHED! c F 4, 5 6 0 6, 7, 8 8 0 6 7 F 6 7 a c b A 1 1 a 0 b 3 6 c b a 2 a a 4 a, b c 7 c 5 b a, b 8 0 1 2 34 45 6 0678 8 678 0167 267 7 067 67 016 2346 0456 06 01 234 28 456 457 68 07 16 26 654 n a 1 n 45 6 n 0 0167 7 067 016 0456 6 016 06 01 0456 01 01 1 456 457 0 6 07 16 0 045 1 n b 2 34 n n 8 n 267 7 67 2346 6 6 234 n 28 2 234 n 7 8 68 7 26 34 n 28 n c n n n 0678 n n 0678 n n 678 n F F F F F 19

Text Search Basics 20 Alphabet: Finite set of symbols. Text: Sequence of symbols of

Text Search Basics 20 Alphabet: Finite set of symbols. Text: Sequence of symbols of the alphabet. Pattern: Sequence of symbols of the same alphabet. Goal: Pattern occurence is to be detected in the text. Text is often fixed or seldom changed, pattern typically varies (looking for different words in the same document), pattern is often significantly shorter than the text. Notation Alphabet: Symbols in the text: t 1, t 2, …, tn. Symbols in the pattern: p 1, p 2, …, pm. It holds m n, usually m << n Example Text: Pattern: . . . task is very simple but it is used very freq. . . simple

Power of Indeterminism 21 Examples NFA A 3 which accepts just a single word

Power of Indeterminism 21 Examples NFA A 3 which accepts just a single word p 1 p 2 p 3 p 4. 0 A 3 p 1 1 p 2 2 p 3 3 p 4 4 NFA A 4 which accepts each word with suffix p 1 p 2 p 3 p 4 and its transition table. A 4 0 p 1 1 p 2 2 p 3 3 p 4 4 p 1 p 2 p 3 p 4 0 0, 1 0 0 0 1 2 2 3 3 4 4 z 0 z {p 1, p 2, p 3, p 4} F

Power of Indeterminism repeated p 1 p 2 p 3 p 4 0 0,

Power of Indeterminism repeated p 1 p 2 p 3 p 4 0 0, 1 0 0 0 1 2 2 3 3 4 4 NFA A 4 which accepts each word with suffix p 1 p 2 p 3 p 4 and its transition table. A 4 0 p 1 p 2 1 2 p 3 22 Easy description p 4 3 4 z 0 F z – {p 1, p 2, p 3, p 4} equivalently DFA A 5 is a deterministic equivalent of NFA A 4. x = – {x} p 1 0 p 1 p 3, p 4, z A 5 p 1 01 p 2, p 4, z p 2 p 1 02 p 1 p 3 p 2, p 3, z 03 p 4 p 1 04 0 01 02 03 04 p 1 01 01 01 p 2 0 0 0 p 3 0 0 03 0 0 p 4 0 04 0 z 0 0 0 Supposing p 1 p 2 p 3 p 4 are mutually different! F

Power of Indeterminism Easy construction example a b 0 0, 1 0 1 2

Power of Indeterminism Easy construction example a b 0 0, 1 0 1 2 2 3 3 4 4 NFA A 6 which accepts each word with suffix abba and its transition table A 6 0 a b 1 b 2 3 a 4 z 0 F z – {a, b} DFA A 7 is a deterministic equivalent of NFA A 6. It also accepts each word with suffix abba. A 7 a b, z 0 a a b 01 z z a b 02 b, z b 03 z a 04 0 01 02 03 04 a 01 014 01 Note the structural difference between A 5 and A 7. b 0 02 03 0 02 z 0 0 0 F 23

Power of Indeterminism Simple examples NFA accepting exactly one word p 1 p 2

Power of Indeterminism Simple examples NFA accepting exactly one word p 1 p 2 p 3 p 4. p 1 0 1 p 2 2 p 3 3 p 4 4 NFA accepting any word with suffix p 1 p 2 p 3 p 4. p 1 0 1 p 2 2 p 3 3 p 4 4 NFA accepting any word with substring (factor) p 1 p 2 p 3 p 4 anywhere in it. 0 A p 1 1 p 2 2 p 3 3 p 4 4 24

Power of Indeterminism Examples Example NFA accepting any word with subsequence p 1 p

Power of Indeterminism Examples Example NFA accepting any word with subsequence p 1 p 2 p 3 p 4 anywhere in it. p 1 0 p 2 1 p 3 2 p 4 3 4 Example NFA accepting any word with subsequence p 1 p 2 p 3 p 4 anywhere in it, one symbol in the sequence may be altered. 0 p 1 1 5 p 2 2 6 p 3 3 7 p 4 4 p 4 8 Alternatively: NFA accepting any word containing a subsequence Q whose Hamming distance from p 1 p 2 p 3 p 4 is at most 1. 25

Epsilon Transitions Definition/example Search the text for more than just exact match NFA with

Epsilon Transitions Definition/example Search the text for more than just exact match NFA with transitions The transition from one state to another can be performed without reading any input symbol. Such transition is labeled by symbol . closure Symbol CLOSURE(p) denotes the set of all states q, which can be reached from state p using only transitions. By definition, let CLOSURE(p) = {p} when there is no transition out from p. CLOSURE(0) = {2, 3, 4} CLOSURE(1) = {1} CLOSURE(2) = {3, 4} CLOSURE(3) = {3}. . . 1 A 9 b a 4 a a 0 a, b c b 2 c 3 6 5 26

Epsilon Transitions Removal Construction of equivalent NFA without transitions Input: NFA A with some

Epsilon Transitions Removal Construction of equivalent NFA without transitions Input: NFA A with some transitions. Output: NFA A' without transitions. 1. A' = exact copy of A. 2. Remove all transitions from A'. 3. In A' for each (q, a) do: add to the set (p, a) all such states r for which it holds q CLOSURE(p) and (q, a) = r. 4. Add to the set of final states F in A' all states p for which it holds CLOSURE(p) F . easy construction a p q a a, b r t 27

Epsilon Transitions a, b 1 b 6 c b 2 a a 4 a

Epsilon Transitions a, b 1 b 6 c b 2 a a 4 a 0 Removed 5 NFA with s transitions c 3 1 a a, b 4 a a b 2 0 a a c c 3 c 6 c 5 Equivalent NFA without transitions New transitions and accept states are highlighted 28

Epsilon Transitions NFA for search for any unempty substring of pattern p 1 p

Epsilon Transitions NFA for search for any unempty substring of pattern p 1 p 2 p 3 p 4 over alphabet . Note the transitions. 29 Application A 0 p 1 1 p 2 2 p 3 3 p 4 4 5 p 2 6 p 3 7 p 4 8 9 p 3 10 p 4 11 12 p 4 13

Epsilon Transitions 30 Application cont. Equivalent NFA for search for any unempty substring of

Epsilon Transitions 30 Application cont. Equivalent NFA for search for any unempty substring of pattern p 1 p 2 p 3 p 4 with transitions removed. A 0 p 1 p 2 1 2 p 3 3 p 4 4 p 2 5 6 p 3 7 p 4 8 p 3 p 4 p 3 9 p 3 10 p 4 11 p 4 States 5, 9, 12 are unreachable. Transformation algorithm NFA -> DFA if applied, will neglect them. p 4 12 p 4 13

Epsilon Transitions 0 1 2 3 4 5 6 7 8 9 10 11

Epsilon Transitions 0 1 2 3 4 5 6 7 8 9 10 11 12 13 p 1 p 2 0, 1 0, 6 2 6 p 3 p 4 31 Removed / DFA z 0, 10 0, 13 0 0 3 0 4 0 0 10 13 0 7 0 8 0 0 10 13 0 11 0 0 13 0 0 F F F F F Transition table of NFA above without transitions. 0 0. 1 0. 6 0. 10 0. 13 0. 2. 6 0. 7. 10 0. 11. 13 0. 3. 7. 10 0. 8. 11. 13 0. 4. 8. 11. 13 p 1 p 2 p 3 p 4 z 0. 1 0. 6 0. 2. 6 0. 10 0. 7. 10 0. 3. 7. 10 0. 13 0. 11. 13 0. 8. 11. 13 0. 4. 8. 11. 13 0 0 0 Transition table of DFA which is equivalent to previous NFA. DFA in this case has less states than the equivalent NFA. Q: Does it hold for any automaton of this type? Proof? F F F F F

Text Search with epsilon transitions Text search using NFA simulation without transform to DFA

Text Search with epsilon transitions Text search using NFA simulation without transform to DFA Input: NFA , text in array t, Set. Of. States S = eps_CLOSURE(q 0), S_tmp; int i = 1; while ((i <= t. length) && (!S. empty())) { for (q in S) // for each state in S if (q. is. Final) print(q. final_state_info); // pattern found S_tmp = Set. empty(); // transiton to next for (q in S) // set of states S_tmp. union(eps_CLOSURE(delta(q, t[i]))); S = S_tmp; i++; // next char in text } return S. contains. Final. State(); // true or false 32

Languages Hierarchy Wider picture 33 Search NFA can search for more than one pattern

Languages Hierarchy Wider picture 33 Search NFA can search for more than one pattern simultaneously. The number of patterns can be finite -- this leads also to a dictionary automaton (we will meet it later) or infinite -- this leads to a regular language. Chomsky language hierarchy remainder Grammar Language Type-0 Type-1 Recursively enumerable Context-sensitive Type-2 Type-3 Context-free Regular Automaton Turing machine Linear-bounded non-deterministic Turing machine Non-deterministic pushdown automaton Finite state automaton (NFA or DFA) Only regular languages can be processed by NFA/DFA. More complex languages cannot. For example, any language containing well-formed parentheses is context-free and not regular and cannot be recognized by NFA/DFA.

Regular Languages A reminder 34 Operations on regular languages Let L 1 and L

Regular Languages A reminder 34 Operations on regular languages Let L 1 and L 2 be any languages. Then L 1 L 2 is union of L 1 and L 2. It is a set of all words which are in L 1 or in L 2. L 1. L 2 is concatenation of L 1 and L 2. It is a set of all words w for which holds w = w 1 w 2 (concatenation of words w 1 and w 2), where w 1 L 1 and w 2 L 2. L 1 * is Kleene star or Kleene closure of language L 1. It is a set of all words which are concatenations of any number (incl. zero) of any words of L 1 in any order. Closure property Whenever L 1 and L 2 are regular languages then L 1 L 2, L 1. L 2 , L 1* are regular languages too. Example L 1 = {001, 00001, . . . }, L 2 = {110, 11110, . . . }. L 1 L 2 = {001, 110, 0001, 1110, . . . } L 1. L 2 = {001110, 00111110, . . . , 0001110, 000111110, . . . } L 1 * = { , 001001, 001001001, . . . 0010001, . . . , 00100001, 001000001, . . . } // this one is not easy to list nicely. . . or is it?

Finite Automata Easy Examples Automaton C 1 accepts union of sets L 1 =

Finite Automata Easy Examples Automaton C 1 accepts union of sets L 1 = {00, 001100, 0011001100, . . . } {11, 110011, 1100110011, . . . }. C 1 0 0 1 1 2 1 3 4 1 Automaton C 2 accepts language L 2 over = {0, 1}, in each word of L 2 : -- there is at least one symbol 1, -- each symbol 1 is followed by exactly two or three symbols 0. C 2 0 0 1 1 0 2 0 3 0 4 35

Finite Automata Easy Examples Automaton C 3 accepts all binary nonnegative integers divisible by

Finite Automata Easy Examples Automaton C 3 accepts all binary nonnegative integers divisible by 3, any number of leading zeros may be included. 0 C 3 1 0 0 1 1 1 2 0 Automaton C 4 accepts all binary positive integers divisible by 3, no leading zeros are allowed. 1 C 4 0 0 1 1 1 0 2 0 1 3 36

Language operations Union Automaton A 3 accepting union of two regular languages L 1

Language operations Union Automaton A 3 accepting union of two regular languages L 1 , L 2 accpted by automata A 1, A 2 respectively. Automaton A 3 is constructed using A 1 and A 2: Do not change A 1 and A 2. Create new aditional start state S 0, add - transitions from S 0 to start states S 1 and S 2 of A 1 and A 2 respectively. Define set of final states of A 3 as union of final states of A 1 and A 2. Scheme A 3 . S 0 S 1 A 1 S 2 A 2 37

Union automaton 0 C 1 0 0 0 1 1 2 38 Example 1

Union automaton 0 C 1 0 0 0 1 1 2 38 Example 1 3 0 C 3 4 1 0 1 0 1 2 Automaton B 3 accepts any word from sets {00, 001100, 0011001100, . . . } {11, 110011, 1100110011, . . . } and also any binary nonnegative integer divisible by 3 with any number of leading zeros B 3 0 0 0 1 2 1 3 1 4 0 1 1 0 1 2

Language operations Concatenation Automaton A 5 accepting concatenation of two regular languages L 1

Language operations Concatenation Automaton A 5 accepting concatenation of two regular languages L 1 , L 2 accepted by automata A 1, A 2 respectively. Automaton A 5 is constructed using A 1 and A 2: Do not change A 1 and A 2. Add - transitions from each final state Fk of A 1 to the start state S 2 of A 2. Define start state of A 5 to be equal to the start state of A 1. Define set of final states of A 5 to be equal to the set of final states of A 2. Scheme A 5 . F 1 S 1 A 1 F 2 S 2 A 2 39

Concatenation automaton 0 C 2 1 0 2 0 3 0 1 C 4

Concatenation automaton 0 C 2 1 0 2 0 3 0 1 C 4 1 1 1 0 40 Example 0 4 0 1 1 1 0 2 0 1 3 Automaton B 5 accepts any word over {0, 1} which can be split into two consecutive words w 1 and w 2, where word w 1 is described by regular expression 0*(100+1000)* , word w 2 represents binary positive integer divisible by 3 w/o leading 0's. B 5 0 0 1 1 0 2 0 3 0 1 4 0 0 1 1 1 0 2 0 1 3

Language operations Iteration Automaton A 6 accepting iteration of language L 1 accepted by

Language operations Iteration Automaton A 6 accepting iteration of language L 1 accepted by automaton A 1. Automaton A 6 is constructed using A 1: Do not change A 1. Create new aditional start state S 0 and add - transition from S 0 to start state S 1 of A 1 Add - transitions from all final states Fk of A 1 to state S 1. Define start state of A 6 to be S 0. Define set of final states of A 6 as union of final states Fk and S 0. Scheme A 6 . S 0 S 1 F 1 A 1 F 2 41

Iteration automaton Example 0 C 2 1 0 1 1 1 0 2 0

Iteration automaton Example 0 C 2 1 0 1 1 1 0 2 0 3 0 4 Automaton B 6 accepts any word created by concatenation and repetition of any words accepted by C 2 including empty word. B 6 0 s 0 0 1 1 0 2 0 3 0 4 Maybe you can find some more telling informal description of the corresponding language? 42

Language operations Intersection Automaton A 4 accepting intersection of two regular languages L 1

Language operations Intersection Automaton A 4 accepting intersection of two regular languages L 1 , L 2 accepted by automata A 1, A 2 respectively. Automaton A 4 is constructed using A 1 and A 2: Create Cartesian product Q 1 Q 2 , where Q 1, Q 2 are sets of states of A 1, A 2. Each state of A 4 will be an ordered pair of states of A 1, A 2. State (S 1, S 2) will be start state of A 4, where S 1, S 2 are start states of A 1, A 2. Final states of A 4 will be just those pairs (F, G), where F is a final state of A 1 and G is a final state of A 2. Create transition from state (p 1, p 2) to (q 1, q 2) in A 4 labeled by symbol x if and only if there is a transition p 1 q 1 labeled by x in A 1 and also there is a transition p 2 q 2 labeled by x in A 2. 43

Language operations Intersection automaton S 1 Scheme of an automaton A 4 accepting the

Language operations Intersection automaton S 1 Scheme of an automaton A 4 accepting the intersection of two regular languages L 1, L 2 accepted by automata A 1, A 2 respectively. x y S 1 w x w A 4 w w a z S 2 y w w a S 1 z x z z y z z S 1 S 2 x S 2 y S 2 A 1 a S 1 A 2 x y 44

Language operations Automaton A 4 accepting binary integers divisible by 3 (C 4) in

Language operations Automaton A 4 accepting binary integers divisible by 3 (C 4) in which each symbol 1 is followed by exactly two or three symbols 0 (C 2). intersection automaton 0 0 1 1 0 23 0 0 0 12 11 22 0 21 0 A 1 0 32 1 1 42 1 31 0 10 20 0 1 40 1 1 1 0 2 41 30 0 1 00 A 2 43 0 1 1 1 33 0 1 01 1 13 A 4 02 2 1 1 03 3 0 1 1 1 0 1 3 0 4 45

Hamming distance Definition Hamming distance of two strings is equal to k (k 0),

Hamming distance Definition Hamming distance of two strings is equal to k (k 0), whenever k is the minimal number of rewrite operations which when applied on one of the strings produce the other string. Rewrite operation rewrites one symbol of the alphabet by some other symbol of the alphabet. Symbols cannot be deleted or inserted. Hamming distance is defined only for pairs of strings of equal length. Informally: Align the strings and count the number of mismatches of corresponding symbols. Learn some Czech l o k o m o t i v a v y k o l e j i l a distance = 6 m a l é _ p i v o v e l k ý _ v ů z distance = 8 Pokročilá Algoritmizace, A 4 M 33 PAL, ZS 2009/2010, FEL ČVUT, 7/12 46

Hamming distance search automaton A 2 for aproximate pattern matching. It detects all occurences

Hamming distance search automaton A 2 for aproximate pattern matching. It detects all occurences of substrings whose Hamming distance form the pattern 'rose' is less or equal to 3. Automaton A 2 detects among others also the words: r 0 1 o rose (distance = 0) dose (distance = 1) rest (distance = 2) list (distance = 3) and more. . . 2 s 5 o e 6 s 7 s 4 e 9 A 2 3 8 10 e 11 12 e 13 47

Hamming distance 0 r 1 o s 2 3 5 o e 4 6

Hamming distance 0 r 1 o s 2 3 5 o e 4 6 s 7 e 8 9 s 10 e 11 48 Hamming distance of the found pattern Q from pattern P = "rose" cannot be deduced from the particular end state. E. g. : "rope": r - 1 - o - 2 - p - 7 - e - 8. r - 5 - o - 6 - p - 10 - e - 11. Improvement 0 Clever labeling r 1 r o 2 s o 5 o 3 e s 6 s o e 7 e s 9 s 4 Notation: x = ─ {x} means: Complement of x in . 8 e 10 e 11 Hamming distance from the pattern P = "rose" to the found pattern Q corresponds exactly to the end state.

Levenshtein distance Definition Levenshtein distance of two strings A and B is such minimal

Levenshtein distance Definition Levenshtein distance of two strings A and B is such minimal k (k ≥ 0 ), that we can change A to o B or B to A by applying exactly k edit operations on one of A or B. The edit operations are Remove, Insert or Rewrite any symbol of the alphabet anywhere in the string. (Rewrite is also called Substitution. ) Levenshtein distance is defined for any two strings over a given alphabet. B R U X E L L E S B E T E L G E U S E Delete X. Rewrite R->E, U->T, L->G. Insert U, E. Distance = 6 Note Although the distance is defined unambiguously (prove!), the particular edit operations transforming one string to another may vary (find an example). 49

Levenshtein distance Calculation 50 Calculating Levenshtein distance Apply a simple Dynamic Programming approach. Let

Levenshtein distance Calculation 50 Calculating Levenshtein distance Apply a simple Dynamic Programming approach. Let A = a[1]. a[2]. . . a[n] = A[1. . n], B = b[1]. b[2]. . . b[m] = b[1. . m], n, m ≥ 0. Dist(A, B) = |m ─ n| if n = 0 or m = 0 Dist(A, B) = 1+ min ( Dist(A[1. . n ─ 1], B[1. . m]), Dist(A[1. . n], B[1. . m ─ 1]), Dist(A[1. . n ─ 1], B[1. . m ─ 1]) ) if n > 0 and m > 0 and A[n] ≠ B[m] Dist(A, B) = Dist(A[1. . n ─ 1], B[1. . m ─ 1]) Calculation corresponds to if n > 0 and m > 0 and A[n] = B[m] . . . Operation 1+ Dist(A[1. . n ─1], B[1. . m]), . . . Insert(A, n ─1, B[m]) or Delete(B, m) 1+ Dist(A[1. . n], B[1. . m ─1]), . . . Insert(B, m ─1, A[n]) or Delete(A, n) 1+ Dist(A[1. . n ─1], B[1. . m ─1]). . . Rewrite(A, n, B[m]) or Rewrite(B, m, A[n])

Levenshtein distance Example 51 Dist("BETELGEUSE", "BRUXELLES") = 6 B R U X E L

Levenshtein distance Example 51 Dist("BETELGEUSE", "BRUXELLES") = 6 B R U X E L L E S 0 1 2 3 4 5 6 7 8 9 B 1 0 1 2 3 4 5 6 7 8 E 2 1 1 2 3 3 4 5 6 7 D[0][j] = j; D[i][0] = i; T 3 2 2 2 3 4 4 5 6 7 E 4 3 3 3 4 5 5 6 L 5 4 4 4 3 4 5 6 G 6 5 5 5 4 4 5 6 E 7 6 6 5 5 5 4 5 U 8 7 7 6 6 6 5 5 S E 9 10 8 9 7 8 7 7 7 8 6 7 5 6 // i = 0. . n, j = 0. . m // supposing A. length = n+1, B. length = m+1 for( i = 1; i <= n; i++ ) for( j = 1; j <= m; j++ ) if( A[i] == B[j] ) D[i][j] = D[i-1][j-1]; else D[i][j] = 1+ min(D[i-1][j-1], D[i-1][j], D[i][j-1]);

Levenshtein distance 52 Search automaton NFA searches in a text for a string within

Levenshtein distance 52 Search automaton NFA searches in a text for a string within Levenshtein distance 3 from the pattern "rose". Note the transitions. 0 r o 1 r, o, 5 o, vertical. . . Insert operation epsilon. . . Delete operation s 9 s, s 7 e 10 s, Self-check question Label vertical transitions by (whole alphabet). How will it change the functionality of this NFA? e s 6 4 e, s o e 3 s, o More transitions than in Hamming distance NFA s 2 e e, e 12 e 8 11 13

Dictionary NFA Tiny Example of dictionary automaton whose transition diagram fits to one slide.

Dictionary NFA Tiny Example of dictionary automaton whose transition diagram fits to one slide. NFA Alphabet = {a, b} Dictionary = {"aba", "aab", "bab"} 53

Dictionary DFA Tiny Example Automaton obtained by transforming the previous NFA to DFA Alphabet

Dictionary DFA Tiny Example Automaton obtained by transforming the previous NFA to DFA Alphabet = {a, b} Dictionary = {"aba", "aab", "bab"} 54

Dictionary DFA Favourably Sized The transition diagram of a dictionary NFA, like A 1

Dictionary DFA Favourably Sized The transition diagram of a dictionary NFA, like A 1 in the previous example, is a directed tree with the start state in the root. The only loop is the self-loop in the start state labeled by the whole alpahbet. This NFA has an usefull property: Effectivity Transforming dictionary NFA of this shape to DFA does not increase the number of states. Example The transition diagram of the DFA in the following example has 38 states (same as NFA) and 684 transitions. It would not fit nicely into one slide, therefore we present only the transition table. . . : Homework: Draw it! 55

Finite language Building Automaton Merge repeatedly into a single state any two states A

Finite language Building Automaton Merge repeatedly into a single state any two states A and B such that path from S to A and from S to B are of equal length and contain equal sequence of transition labels. You may find e. g. BFS/DFS to be useful. S a d d a d v a n c e d a l g o r i t h m s t o y o u r a l g o n g u i a n a d v e n t u r e s 56

Finite language a S Building Automaton d d d v a n c e

Finite language a S Building Automaton d d d v a n c e d l g o r i t h m s l g o n g u i a n d v e n t u r e s u r t o y o 57

Finite language Building Automaton d d a S l t o y o v

Finite language Building Automaton d d a S l t o y o v a n c e d v e n t u r e s g o r i t h m s g o n g u i a n u r etc. . . 58

Dictionary NFA 59 Automaton Search NFA for dictionary D = {"add", "advanced", "algorithms", "to",

Dictionary NFA 59 Automaton Search NFA for dictionary D = {"add", "advanced", "algorithms", "to", "your", "algonqiuan", "adventures"} 3 d A 1 2 v 4 a d n 6 c 7 e 8 d 9 e 1 a 5 10 l 0 17 g 18 o 19 n r 11 20 t i 12 21 u t 13 22 r h 14 23 e m 15 24 s s 16 25 n 26 t y 32 34 o o 33 35 u 36 r 37 q 27 u 28 i 29 a 30 n 31

Dictionary DFA 60 Example Part 1 a c d e g h i l

Dictionary DFA 60 Example Part 1 a c d e g h i l m n o q r s t u v y 0 0, 1 0 0 0 0, 32 0 0 0, 34 0, 1 0 0, 2 0 0 0, 17 0 0 0 0, 32 0 0 0, 34 0, 32 0, 1 0 0 0 0 0, 33 0 0, 32 0 0 0, 34 0, 1 0 0 0 0 0, 35 0 0 0, 32 0 0 0, 34 0, 2 0, 1 0 0, 3 0 0 0, 32 0 0, 17 0, 1 0 0 0 0, 32 0 0 0, 34 0, 33 0, 1 0 0 0 0, 32 0 0 0, 34 0, 35 0, 1 0 0 0 0, 32 0, 36 0 0, 34 0, 3 0 0 0 0, 32 0 0 0, 34 0, 1, 5 0 0 0 0, 32 0 0 0, 34 0, 18 0, 1 0 0 0 0 0, 19 0 0, 32 0 0 0, 34 0, 36 0, 1 0 0 0, 37 0 0, 32 0 0 0, 34 0, 1, 5 0, 1 0 0 0, 2 0 0, 17 0 0, 6 0 0 0, 32 0 0 0, 34 0, 1 Transition table of DFA A 2 equivalent to dictionary NFA A 1. 0, 4 0, 34 Continue. . . F F

Dictionary DFA 61 Example Part 2 . . . continued a c d e

Dictionary DFA 61 Example Part 2 . . . continued a c d e g h i l m n o q r s t u v y 0, 10 0, 1 0 0 0 0 0, 11 0 0 0, 32 0 0 0, 34 0, 19 0, 1 0 0 0 0 0, 26 0 0 0, 20 0 0, 32 0 0 0, 34 0, 37 0, 1 0 0 0 0, 32 0 0 0, 34 0, 7 0 0 0 0, 32 0 0 0, 34 0, 11 0, 1 0 0 0 0, 12, 32 0 0 0, 34 0, 26 0, 1 0 0 0, 27 0 0 0, 32 0 0 0, 34 0, 20 0, 1 0 0 0, 21 0 0 0 0, 32 0 0 0, 34 0, 7 0, 1 0 0 0, 8 0 0 0, 32 0 0 0, 34 0, 12, 0, 1 32 0 0 0 0 0, 33 0 0, 32 0, 13 0 0, 34 0, 27 0, 1 0 0 0 0, 32 0, 28 0 0, 34 0, 21 0, 1 0 0 0 0, 22, 32 0 0 0, 34 0, 8 0, 1 0 0, 9 0 0 0, 32 0 0 0, 34 0, 13 0, 1 0 0 0, 14 0 0, 32 0 0, 6 0, 1 0 0, 34 continue. . . F

Dictionary DFA 62 Example Part 3 . . . continued a c d e

Dictionary DFA 62 Example Part 3 . . . continued a c d e g h i l m n o q r s t u v y 0, 28 0, 1 0 0 0, 29 0 0 0 0, 32 0 0 0, 34 0, 22, 0, 1 32 0 0 0, 23 0 0 0, 33 0 0, 32 0 0 0, 34 0, 1 0 0 0 0, 32 0 0 0, 34 0, 1 0 0 0, 15 0 0 0, 32 0 0 0, 34 0, 23 0, 1 0 0 0 0, 24 0 0 0, 32 0 0 0, 34 0, 1, 30 0 0 0, 32 0 0 0, 34 0, 15 0, 1 0 0 0 0, 16 0, 32 0 0 0, 34 0, 24 0, 1 0 0 0 0, 25 0, 32 0 0 0, 34 0, 1, 0, 1 30 0 0, 2 0 0 0, 17 0 0, 31 0 0 0, 32 0 0 0, 34 0, 16 0, 1 0 0 0 0, 32 0 0 0, 34 F 0, 25 0, 1 0 0 0 0, 32 0 0 0, 34 F 0, 31 0, 1 0 0 0 0, 32 0 0 0, 34 F 0, 9 0, 29 . . . finished. F

Regular Expressions Another reminder Regular expressions defined recursively Symbol is a regular expression. Each

Regular Expressions Another reminder Regular expressions defined recursively Symbol is a regular expression. Each symbol of alphabet is a regular expression. Whenever e 1 and e 2 are regular expressions then also strings (e 1), e 1+e 2, e 1 e 2, (e 1)* are regular expressions. Languages represented by regular expressions (RE) defined recursively RE represents language containing only empty string. RE x, where x , represents language {x}. Let RE's e 1 and e 2 represent languages L 1 and L 2. Then RE (e 1) represents L 1, RE e 1+e 2 represents L 1 L 2, REs e 1 e 2, e 1. e 2 represent L 1. L 2 , RE (e 1)* represents L 1*. Examples 0+1(0+1)* all integers in binary without leading 0's 0. (0+1)*1 all finite binary fractions (0, 1) without trailing 0's ((0+1)(0+1+2+3+4+5+6+7+8+9) + 2(0+1+2+3)): (0+1+2+3+4+5)(0+1+2+3+4+5+6+7+8+9) all 1440 day's times in format hh: mm from 00: 00 to 23: 59 (mon+(wedne+t(ue+hur))s+fri+s(atur+un))day English names of days in the week (1+2+3+4+5+6+7+8+9)(0+1+2+3+4+5+6+7+8+9)*((2+7)5+(5+0)0) all decimal integers ≥ 100 divisible by 25 63

Regular Expressions Conversion to NFA Convert regular expression to NFA Input: Regular expression R

Regular Expressions Conversion to NFA Convert regular expression to NFA Input: Regular expression R containing n characters of the given alphabet. Output: NFA recognizing language L(R) described by R. Create start state S for each k (1 ≤ k ≤ n) { assign index k to the k-th character in R // this makes all characters in R unique: c[1], c[2], . . . , c[n]. create state S[k] // S[k] corresponds directly to c[k] } for each k (1 ≤ k ≤ n) { if c[k] can be the first character in some string described by R then create transition S S[k] labeled by c[k] with index stripped off if c[k] can be the last character in some string described by R then mark S[k] as final state for each p (1 ≤ p ≤ n) if (c[k] can follow immediately after c[p] in some string described by R) then create transition S[p] S[k] labeled by c[k] with index stripped off } 64

Regular Expression to NFA 65 Example Regular expression R = a*b(c + a*b)*b +

Regular Expression to NFA 65 Example Regular expression R = a*b(c + a*b)*b + c Add indices: R = a 1*b 2(c 3+ a 4*b 5)*b 6 + c 7 NFA accepts L(R) S a c b c 7 S a b a a 1 b a c b b 2 c c 3 a a 4 b a b b 5 b c b 6 S

Regular Expressions Search NFA searches the text for any occurence of any word of

Regular Expressions Search NFA searches the text for any occurence of any word of L(R) R = a*b (c + a*b)* b + c The only difference from the NFA accepting R S a c b c 7 S a b a a 1 b a c b b 2 c c 3 a a 4 b a b b 5 b c b 6 S 66

Regular Expressions More applications 67 Bonus To find a subsequence representing a word L(R),

Regular Expressions More applications 67 Bonus To find a subsequence representing a word L(R), where R is a regular expression, do the following: Create NFA acepting L(R) Add self loops to the states of NFA: 1. Self loop labeled by (whole alphabet) at the start state. 2. Self loop labeled ─ {x} at each state whose outgoing transition(s) are labeled by single x . // serves as an "optimized" wait loop 3. Self loop labeled by at each state whose outgoing transition(s) are labeled by more than single symbol from . // serves as an "usual" wait loop 4. No self loop to all other states. // which have no outgoing loop = final ones

Regular Expressions Subsequence search Bonus NFA searches the text for any occurence of any

Regular Expressions Subsequence search Bonus NFA searches the text for any occurence of any subsequence representing a word of L(R) R = ab + (abcb + cc )* a S a, c a a 1 b b 2 S a a a, c a 3 a, b b b 4 c a, c c c 5 b a b 6 c c c 7 c a a a, b c 8 a S a 9 68

Regular Expressions Effectivity of NFA Transforming NFA which searches text for an occurence of

Regular Expressions Effectivity of NFA Transforming NFA which searches text for an occurence of a word of a given regular language into the equivalent DFA might take exponential space and thus also exponential time. Not always, but sometimes yes: Consider regular expression R = a(a+b). . . (a+b) over alphabet {a, b}. Text search NFA 1 for R a, b NFA 1 a 0 1 a, b 2 a, b 3 a, b Mystery Text search NFA 2 for R, why not this one? NFA 2 a, b 0 b b a a 1 a b a 2 b 3 a a a 4 b 5 b a a a 6 b b 7 n 69

Regular Expressions Effectivity of NFA R = a(a+b) NFA table Text search NFA for

Regular Expressions Effectivity of NFA R = a(a+b) NFA table Text search NFA for R a, b 0 a 1 Text search DFA for R a, b 2 a, b 3 0 1 2 3 a 0, 1 2 3 - b 0 2 3 - DFA table 0 01 0123 02 023 013 03 a 01 0123 013 012 01 b 0 02 023 03 03 02 0 70

Text Search Using Automata Summary Text search using finite automata brings in many possibilities

Text Search Using Automata Summary Text search using finite automata brings in many possibilities regarding what can be effectively found: A. Any given exact pattern P. (e. g. ababccabc) B. Any word of any language specified by a particular DFA or NFA. (Just add the loop labeled by the whole alphabet to the start state. ) C. Any string which represents some modification of the pattern P: A string within (or exactly at) a given Hamming distance from P A string within (or exactly at) a given Levenshtein/edit distance from P. D. Any of strings in a given (finite) dictionary. E. Any word of any language described by a regular expression. F. Any union, intersection, concatenation, iteration of any of cases A. - F. G. Any string containing any of cases A. - F. as a subsequence. (Just add the loops labeled by the whole alphabet to all states. ) 71