Definition 8.1 (Finite State Machine)
The tuple (S, I, E, F, T, A) is called a FSM.
FSM can be used to recognize patterns.
For example:
@ s sub 0 @ = 0 S = { 0, 1, 2, 3, 4, 5, 6 } I = { , '0'-'9', 'a'-'z', 'A'-'Z', whiteSpace } E = { 6 } F = A A(6, ) = 'print "I found ``plan 9'' and exit A(?, ? ) = do nothing for other input symbols and states T T(0, 'p' ) = 1 T(1, 'l' ) = 2 T(2, 'a' ) = 3 T(3, 'n' ) = 4 T(4,' ') = 5 T(5, '9' ) = 6 for all other input symbols and states: T(i, s ) = 0
A graphical representation:
The FSM detects also ``grumbleplan 9''!
Next iteration:
= -1
The FSM doesn't detect `` plan 9 . wordSeperator.
Next iteration:
= -1
The FSM detects `` plxplan 9 . wordSeperator. Next iteration:
= -1
The FSM detects only `` plan 9 . wordSeperator.
The definition ot the FSM:
S = { -1, 0, 1, 2, 3, 4, 5, 6, 7 } @ s sub 0 @ = -1 I { x | x is a character } E { 7 } F A A(7, } = print Heuraka and exit. A(?, ? } = do nothing T T(-1, WS) = 0 T(-1, x) = -1 for x wordSeperator T(0, WS) = 0 T(0, 'p') = 1 T(1, 'l') = 2 T(1, x) = -1 for x I \ { 'l' } T(2, 'a') = 3 T(2, x) = -1 for x I \ { 'a' } T(3, 'n') = 4 T(3, x) = -1 for x I \ { 'n' } T(4, ' ') = 5 T(4, x) = -1 for x I \ { ' ' } T(5, '9') = 6 T(5, x) = 0 for x I \ wordSeperator T(5, x) = -1 for x I \ { '9' } T(6, WS) = 7 T(6, x) = -1 for x I \ wordSeperator
Define a FSM which recognizes sequences of letters that have subsequences
aeiou.
For example:
-- adventitious -- facetious -- sacrilegious
A graphical representation:
The definition:
@ s sub 0 @ = 0 S = { 0, 1, 2, 3, 4, 5, 7, 8 } I = { x | x is a character } E = { 7 } F = { 8 } A A(7, } = print the word A(8, } = exit A(1, x ) = store x, for x I \ { 'a' } wordSeperator A(2, x ) = store x, for x I \ { 'e' } wordSeperator A(3, x ) = store x, for x I \ { 'i' } wordSeperator A(4, x ) = store x, for x I \ { 'o' } wordSeperator A(5, x ) = store x, for x I \ { 'u' } wordSeperator A(6, x ) = store x, for x I \ wordSeperator T T(0, WS) = 0 T(0, x) = 1 for x I \ { 'a' } T(0, 'a') = 2 T(1, 'a') = 2 T(1, x) = 1 for x I \ { 'a' } T(1, x) = 8 for x wordSeperator T(2, 'e') = 3 T(2, x) = 1 for x I \ { 'e' } T(2, x) = 8 for x wordSeperator T(3, 'i') = 4 T(3, x) = 1 for x I \ { 'i' } T(3, x) = 8 for x wordSeperator T(4, 'o') = 5 T(4, x) = 1 for x I \ { 'o' } T(4, x) = 8 for x wordSeperator T(5, 'u') = 6 T(5, x) = 1 for x I \ { 'u' } T(5, x) = 8 for x wordSeperator T(6, x) = 7 for x wordSeperator T(6, x) = 1 for x I \ wordSeperator
Find the words
-- Kenya -- Kansas -- Kauder -- Kunta Kintein an input stream.
Find the words with
-- the first letter must be an 'p' -- the second letter must be an 'r' -- the third letter can be an 'o' or 'e' -- the rest ot the word is 'klap'
in an input stream.
Find the words with the substring
-- Yps and -- Ilon
in an input stream.
Last modified: 27/July/98 (12:14)