1 Automata hữu hạn & Biểu thức chính quy Nội dung: • Khái niệm DFA & NFA • Sự tương đương giữa DFA & NFA • Biểu thức chính quy • Các tính chất của tập chính quy Chương 3: 2 Phân loại FA FA (Finite Automata) DFA Deterministic Finite Automata NFA Nondeterministic Finite Automata Biểu thức chính quy 3 Start 1 1 0 0 0 0 1 1 a b c d q 1 q 0 q 3 q 2 Ví dụ: Input Bộ điều khiển 10100110 Q : tập hữu hạn các trạng thái (p, q…) Σ : bộ chữ cái nhập (a, b … ; w, x, y …) δ : hàm chuyển, ánh xạ: Q x Σ → Q q 0 ∈ Q : trạng thái bắt đầu. F ⊆ Q : tập các trạng thái kết thúc. M=(Q, Σ, δ, q 0 , F) Trạng thái bắt đầu Trạng thái kết thúc x Phép chuyển trên nhãn x Automata hữu hạn đơn định (DFA) 4 Mở rộng hàm chuyển trạng thái 1. δ(q, ε) = q 2. δ(q, wa) = δ( δ(q,w), a) với ∀ w, a Ngôn ngữ được chấp nhận: L(M) = { x | δ( q 0 , x ) ∈ F } Ngôn ngữ chính quy Ví dụ: chuỗi nhập w=110101 • δ(q 0 , 1) = q 1 • δ(q 0 , 11) = δ(q 1 , 1) = q 0 • δ(q 0 , 110) = δ(q 1 , 10) = δ(q 0 , 0) = q 2 • δ(q 0 , 1101) = δ(q 1 , 101) = δ(q 0 , 01) = δ(q 2 , 1) = q 3 • δ(q 0 , 11010) = … = δ(q 3 , 0) = q 1 • δ(q 0 , 110101) = … = δ(q 1 , 1) = q 0 ∈ F 5 Giải thuật hình thức • Mục đích: kiểm tra một chuỗi nhập x có thuộc ngôn ngữ L(M) được chấp nhận bởi automata M. • Input: chuỗi nhập x$ • Output: câu trả lời ‘YES’ hoặc ‘NO’ • Giải thuật: q := q 0 ; c := nextchar ; {c là ký hiệu nhập được đọc tiếp theo} While c <> $ do begin q := δ(q, c); c := nextchar ; end If (q in F) then write("YES") else write("NO"); 6 Automata hữu hạn không đơn định (NFA) Nhận xét: • Ứng với một trạng thái và một ký tự nhập, có thể có không, một hoặc nhiều phép chuyển trạng thái. • DFA là một trường hợp đặc biệt của NFA Start 0 1 1 0 1 0 q 0 q 3 q 4 1 0 q 1 q 2 0 1 • Ví dụ: cho automata M (hình vẽ) và xét chuỗi nhập 01001 0 0 10010 1 0 0 1 1 q 0 q 0 q 0 q 0 q 0 q 0 q 3 q 1 q 3 q 3 q 1 q 4 q 4 7 Định nghĩa NFA Chú ý: khái niệm δ(q, a) là tập hợp tất cả các trạng thái p sao cho có phép chuyển từ trạng thái q trên nhãn a. Hàm chuyển trạng thái mở rộng: • δ(q, ε) = {q} • δ(q, wa) = { p | có một trạng thái r trong δ(q, w) mà p∈δ(r, a) } = δ( δ(q,w), a) • δ(P, w) = ∪ q∈P δ(q, w) với ∀P ⊆ Q Q : tập hữu hạn các trạng thái. Σ : bộ chữ cái nhập. δ : hàm chuyển ánh xạ Q x Σ → 2 Q q 0 ∈ Q : trạng thái bắt đầu. F ⊆ Q : tập các trạng thái kết thúc. M=(Q, Σ, δ, q 0 , F) 8 Ví dụ: xét chuỗi nhập w=01001 và NFA đã cho ở trên • M( {q 0 , q 1 , q 2 , q 3 , q 4 }, {0, 1}, δ, q 0 , {q 2 , q 4 } ) {q 4 }{q 4 }q 4 Ø{q 4 }q 3 {q 2 }{q 2 }q 2 {q 2 }Øq 1 {q 0 ,q 1 } {q 0 ,q 3 } q 0 10Trạng thái Inputδ • δ(q 0 , 0) = {q 0 ,q 3 } • δ(q 0 , 01) = δ( δ(q 0 , 0), 1) = δ({q 0 , q 3 },1) = δ(q 0 , 1) ∪ δ(q 3 , 1) = {q 0 , q 1 } • δ(q 0 , 010) = {q 0 , q 3 } • δ(q 0 , 0100) = {q 0 , q 3 , q 4 } • δ(q 0 , 01001) = {q 0 , q 1 , q 4 } Do q 4 ∈ F nên w=01001 ∈ L(M) Ví dụ về NFA 9 Sự tương đương giữa DFA & NFA Định lý 1: Nếu L là tập được chấp nhận bởi một NFA thì tồn tại một DFA chấp nhận L. Giả sử NFA M={Q, Σ, δ, q 0 , F} chấp nhận L Ta xây dựng DFA M’={Q’, Σ, δ’, q 0 ’, F’} chấp nhận L • Q’ = 2 Q . Một phần tử trong Q’ được ký hiệu là [q 0 , q 1 , …, q i ] với q 0 , q 1 , …, q i ∈ Q • q 0 ’ = [q 0 ] • F’ là tập hợp các trạng thái của Q’ có chứa ít nhất một trạng thái kết thúc trong tập F của M • Hàm chuyển δ’([q 1 , q 2 , ., q i ], a) = [p 1 , p 2 , ., p j ] nếu và chỉ nếu δ({q 1 , q 2 , ., q i }, a) = {p 1 , p 2 , ., p j } 10 Ví dụ về sự tương đương giữa DFA & NFA Ví dụ: NFA M ({q 0 , q 1 }, {0, 1}, δ, q 0 , {q 1 }) với hàm chuyển δ(q 0 ,0) = {q 0 , q 1 }, δ(q 0 ,1) = {q 1 }, δ(q 1 ,0) = ∅, δ(q 1 ,1) = {q 0 , q 1 } Ta sẽ xây dựng DFA tương đương M’ (Q’, {0, 1}, δ’, [q 0 ], F’) • Q’ = {∅, [q 0 ], [q 1 ], [q 0 , q 1 ]} • F’ = {[q 1 ], [q 0 , q 1 ]} • Hàm chuyển δ’ δ’(∅, 0) = δ’(∅, 1) = ∅ δ’([q 0 ], 0) = [q 0 , q 1 ] δ’([q 0 ], 1) = [q 1 ] δ’([q 1 ], 0) = ∅ δ’([q 1 ], 1) = [q 0 , q 1 ] δ’([q 0 , q 1 ], 0) = [q 0 , q 1 ] δ’([q 0 , q 1 ], 1) = [q 0 , q 1 ] [...]... dụ: viết BTCQ cho DFA 1 Start q1 0 q2 0 1 q3 0, 1 Ta cần viết biểu thức: r = r312 + r3 13 Ta có: • r312 = r2 13( r 233 )*r 232 + r212 • r3 13 = r2 13( r 233 )*r 233 + r2 13 29 Sự tương đương giữa DFA và BTCQ k=0 k=1 k=2 rk11 ε ε (00)* rk12 0 0 0(00)* rk 13 1 1 0*1 rk21 0 0 0(00)* rk22 ε ε + 00 (00)* rk 23 1 1 + 01 0*1 rk31 ∅ ∅ (0 + 1)(00)*0 rk32 0+1 0+1 (0 + 1)(00)* rk 33 ε ε ε + (0 + 1)0*1 Thay vào và rút gọn, ta... r = 01* + 1 • r có dạng: r = r1 + r2 với r1 = 01* và r2 = 1 • r1 có dạng r1 = r3r4 với r3 = 0 và r4 = 1* ε • r4 có dạng r4 = r5* với r5 = 1 Start 1 q1 Start q2 r2 Start Start q3 q5 0 r3 q4 q1 ε r = r1 + r2 = 01* + 1 q9 ε q4 q7 ε ε 1 q5 q 3 0 q4 ε q7 ε 1 ε ε q5 1 q6 ε ε q8 26 q8 ε ε q2 ε q6 ε r1 = r3r4 = 01* q6 r5 Start 0 q3 1 q5 r4 = r5* = 1* Start 1 ε q7 ε q10 q6 ε q8 Sự tương đương giữa DFA và BTCQ... ● ε-CLOSURE(δ(A, a)) = ε-CLOSURE( {3, 8}) = {1, 2, 3, 4, 6, 7, 8} → B ● ε-CLOSURE(δ(A, b)) = ε-CLOSURE({5}) = {1, 2, 4, 5, 6, 7} →C ● ε-CLOSURE(δ(B, a)) = ε-CLOSURE( {3, 8}) → B ● ε-CLOSURE(δ(B, b)) = ε-CLOSURE({5, 9}) = {1, 2, 4, 5, 6, 7, 9} → D ● ε-CLOSURE(δ(C, a)) = ε-CLOSURE( {3, 8}) → B ● ε-CLOSURE(δ(C, b)) = ε-CLOSURE({5}) = → C ● ε-CLOSURE(δ(D, a)) = ε-CLOSURE( {3, 8}) → B ● ε-CLOSURE(δ(D, b)) =... + rk + … r* = ε + r+ (ε + r)+ = (ε + r)* = r* r*r = r r* = r+ 23 Sự tương đương giữa NFAε và BTCQ Định lý 3: nếu r là BTCQ thì tồn tại một NFA với ε-dịch chuyển chấp nhận L(r) Chứng minh: quy nạp theo số phép toán • Xét r không có phép toán nào Start q0 r= ε Start q0 qf Start q0 r=∅ Các NFAε cho các kết hợp đơn a qf r=a • Xét r có i phép toán: r = r1 + r2, r = r1r2 hoặc r = r1* Xây dựng NFAε M1 =... DFA và BTCQ • Ta sẽ chứng minh (quy nạp theo k) bổ đề sau: với mọi Rkij đều tồn tại một biểu thức chính quy ký hiệu cho Rkij k = 0: R0ij là tập hữu hạn các chuỗi 1 ký hiệu hoặc ε Giả sử ta có bổ đề trên đúng với k-1, tức là tồn tại BTCQ rk-1lm sao cho L(rk-1lm) = Rk-1lm Vậy đối với Rkij ta có thể chọn BTCQ rkij = (rk-1ik)(rk-1kk)*(rk-1kj) + rk-1ij → bổ đề đã được chứng minh ● Ta có nhận xét: L(M)... rk31 ∅ ∅ (0 + 1)(00)*0 rk32 0+1 0+1 (0 + 1)(00)* rk 33 ε ε ε + (0 + 1)0*1 Thay vào và rút gọn, ta có: r = 0*1((0 + 1)0*1)* (ε + (0 + 1)(00)*) + 0(00)* 30 Mối liên hệ giữa FA và BTCQ Sơ đồ liên hệ: DFA Định lý 1 Định lý 4 RE NFA Định lý 2 Định lý 3 NFAε 31 ... 1, 2 thái q0 q2 q1 ∅ q2 ∅ 2 {q0, q1, q2} {q1, q2} {q2} {q1, q2} {q2} ∅ 16 {q2} Xây dựng DFA từ NFA(ε) Ví dụ: xây dựng DFA tương đương với NFAε sau: M = (Q={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, Σ={a, b}, δ, 0, F={10}) ε a Start 0 ε ε 1 2 ε 4 3 b ε ε 6 ε 7 a 8 b 9 b 10 5 ε Ta xây dựng DFA M’= (Q’, Σ, δ’, q0’, F’) tương đương M • Trạng thái bắt đầu: q0’ ↔ ε-CLOSURE(q0) • F’ = { p | trong ký hiệu của p có... 8}) → B ● ε-CLOSURE(δ(C, b)) = ε-CLOSURE({5}) = → C ● ε-CLOSURE(δ(D, a)) = ε-CLOSURE( {3, 8}) → B ● ε-CLOSURE(δ(D, b)) = ε-CLOSURE({5,10}) = {1, 2, 4, 5, 6, 7, 10} → E ● ε-CLOSURE(δ(E, a)) = ε-CLOSURE( {3, 8}) → B 19 ● ε-CLOSURE(δ(E, b)) = ε-CLOSURE({5}) = → C Xây dựng DFA từ NFA(ε) • Bảng hàm chuyển Trạng thái Ký hiệu nhập a b A B C B B D b C B C D B E E B C b Start A a a B b b D C a a b E a • Ký hiệu... • δ*(q0, 01) = ε-CLOSURE(δ(δ*(q0, 0), 1)) = ε-CLOSURE(δ({q0, q1, q2}, 1)) = ε-CLOSURE({q1}) = {q1,q2} • δ*(q0, 012) = ε-CLOSURE(δ(δ*(q0, 01), 2)) = ε-CLOSURE(δ({q1, q2}, 2)) = ε-CLOSURE({q2}) = {q2} 13 • Do q2 ∈ F nên w ∈ L(M) Giải thuật hình thức cho NFAε Mục đích: mô phỏng hoạt động của NFAε Input: chuỗi nhập x$ Output: câu trả lời ‘YES’ (x được chấp nhận) hoặc ‘NO’ Giải thuật: q := ε-CLOSURE (q0) . q 0 q 3 q 4 1 0 q 1 q 2 0 1 • Ví dụ: cho automata M (hình vẽ) và xét chuỗi nhập 01001 0 0 10010 1 0 0 1 1 q 0 q 0 q 0 q 0 q 0 q 0 q 3 q 1 q 3 q 3 q 1 q. 0) = {q 0 ,q 3 } • δ(q 0 , 01) = δ( δ(q 0 , 0), 1) = δ({q 0 , q 3 },1) = δ(q 0 , 1) ∪ δ(q 3 , 1) = {q 0 , q 1 } • δ(q 0 , 010) = {q 0 , q 3 } • δ(q 0 ,