Fall 2009 Examples for Finite Automata CSC3130 Tutorial One Xiao Linfu lfxiao@cse.cuhk.edu.hk Department of Computer Science & Engineering Outline • DFA example • NFA example • NFA to DFA conversion • Regular Expressions DFA • For every string x, there is a unique path from initial state and associated with x. x • x is accepted if and only if this path ends at a accept state. NFA • For any string x, there may exist none or more than one path from initial state and associated with x. • x is accepted if there is some path that ends at a accept state. Strings With Common Prefix • Construct a DFA that accepts a language L over = {0, 1} such that L is the set of all strings starting with “101”. 0,1 start q0 1 0 q1 1 q2 1 0 absorbing state 0 q4 0,1 q3 dead state Strings With Common Suffix • Construct a DFA that accepts a language L over = {0, 1} such that L is the set of all strings ending with “101”. 0 0 start q0 1 1 q1 0 q10 1 0 1 q101 NFA for Common Suffix • We can have a simpler representation for common suffix language using NFA: 1,0 start 1 0 q0 1 q1 q2 q3 • Use subset construction to convert it to a DFA. 0 0 start 1 q0 1 q0q1 0 q0q2 1 0 1 q0q1q3 compare with previous DFA NFA Example • Construct NFAs for the following languages over the alphabet {a, b, …, z}: – All strings that contain eat or sea or easy all start e a q1 q0 q2 s q3 y q4 s e q5 all t a q6 NFA Example • Construct NFA for the language over the alphabet {a, b, …, z} such that every string doesn’t contain “fool”. not ‘f’ ‘f’ ‘f’ dead state ‘f’ start ‘f’ q0 ‘o’ q1 not ‘f’,‘o’ ‘o’ not ‘f’,‘o’ q2 ‘l’ q2 not ‘f’,‘l’ q3 Regular Expressions - Alphabet X = {a, b, c, d} 1) (a + b)* all strings containing only a and b 2) c(a + b + c)*c2 all strings containing only a, b, and c that begin with c and end with cc 3) all strings containing only one b (a+c+d)*b(a+c+d)* Regular Expressions - Alphabet X = {0, 1} 1) (0 + 1)* the set of all binary strings 2) 031*04 all strings consisting of three 0’s, followed by any number of 1’s, followed by four 0’s 3) 0*1001* all strings starting with any number of 0’s, followed by 100, followed by and number of 1’s Thank you!