Tin học lý thuyết - Chương 3 pdf

31 252 0
Tin học lý thuyết - Chương 3 pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 ] [...]... 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)) = -CLOSURE({5,10}) = {1, 2, 4, 5, 6, 7, 10} → E -CLOSURE(δ(E, a)) = -CLOSURE( {3, 8}) → B 19 -CLOSURE(δ(E,... BTCQ k-1 rkij = (rk-1ik)(rk-1kk)*(r kj) + rk-1ij → bổ đề đã được chứng minh ● Ta có nhận xét: L(M) = qj F Rn1j ● Vậy L có thể được ký hiệu bằng BTCQ n r = rn1j1 + rn1j2 + … + r 1jp với F = {qj1, qj2, …, qjp} 28 Sự tương đương giữa DFA và BTCQ Ví dụ: viết BTCQ cho DFA 1 Start q1 1 0 q2 0 q3 0, 1 Ta cần viết biểu thức: r = r312 + r3 13 Ta có: 3 • • r312 = r2 13( r 233 )*r 232 + r212 r 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 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 ... δ*(q0, ) = -CLOSURE(q0) = {q0, q1, q2} • δ*(q0, 0) = -CLOSURE(δ(δ*(q0, ), 0)) = -CLOSURE(δ({q0, q1, q2}, 0)) = -CLOSURE(δ(q0, 0)  δ(q1, 0)  δ(q2, 0) ) = -CLOSURE( {q0}     ) = -CLOSURE({q0}) = {q0, q1, q2} • δ*(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})... 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 0 q3 r3 Start q5 q4 q1 q7  1  q5 q2 q3 0 q4  q7  q5 1 q6  q8    q8   r = r1 + r2 = 01* + 1 q9  q4  q6  r1 = r3r4 = 01* q6 r5 Start 0 q3 1 q5 r4 = r5* = 1* Start 1  q7 1  q6   q8 q10 26 Sự tương đương giữa DFA và BTCQ Định lý 4: Nếu L được chấp nhận bởi một DFA,... Rkij : Rkij = Rk-1ik(Rk-1kk)*Rk-1kj  Rk-1ij R0ij = {a | δ(qi, a) = qj}, nếu i ≠ j {a | δ(qi, a) = qj}  {}, nếu i = j 27 Sự tương đương giữa DFA và BTCQ • Ta sẽ chứng minh (quy nạp theo kk) 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 R ij  k = 0: R0ij là tập hữu hạn các chuỗi 1 ký hiệu hoặc   Giả sử k-1 có bổ k-1 trên đúng với k-1, tức là tồn tại BTCQ rk-1lm sao ta đề... U:= -closure((T, a)) If U không có trong tập trạng thái Q’ của DFA then begin Thêm U vào tập các trạng thái Q’ của DFA ; Trạng thái U chưa được đánh dấu; [T, a] := U;{[T, a] là phần tử của bảng chuyển DFA} end; end; End; 18 Xây dựng DFA từ NFA() ● ● ● ● ● ● ● ● ● ● ● -CLOSURE(q0) = {0, 1, 2, 4, 7} → q0’ = [0, 1, 2, 4, 7] = A -CLOSURE(δ(A, a)) = -CLOSURE( {3, 8}) = {1, 2, 3, 4, 6, 7, 8} → B -CLOSURE(δ(A,... đường đi từ q tới p theo nhãn  } ● -CLOSURE(P) = qP -CLOSURE(q) Hàm chuyển trạng thái mở rộng: mở rộng δ thành δ* Q • • δ* : Q x Σ* → 2 δ*(q, w) = { p | có đường đi từ q tới p theo nhãn w, trên đường đi có thể chứa cạnh nhãn  } Ta có: • • • • δ*(q, ) = -CLOSURE(q) δ*(q,a) = -CLOSURE(δ(δ*(q, ),a)) δ*(q, wa) = -CLOSURE( δ( δ*(q, w), a) ) Cách khác: δ*(q, wa) = -CLOSURE(P) với P = { p | r  δ*(q,... NFA sau: M = (Q={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, Σ={a, b}, δ, 0, F={10})  a 2 Start   0 3  1  6  4 b a 7 b 8 b 9 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ó chứa ít nhất một trạng thái của F } Xây dựng hàm chuyển δ’ 17 Giải thuật xây dựng hàm chuyển δ’ Giải thuật: T := -CLOSURE (q0) ; T chưa được... • • • • r = r = r r = r =  (r + s) t = rt + st r (s + t) = rs + rt Tổng hợp: • (r* + s*)* = (r*s*)* = (r + s)* • (rs)*r = r(sr)* • (r*s)* r* = (r + s)* 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 . 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}). ● -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 ● -CLOSURE(δ(E, b)) = -CLOSURE({5}). DFA từ NFA() ● -CLOSURE(q 0 ) = {0, 1, 2, 4, 7} → q 0 ’ = [0, 1, 2, 4, 7] = A ● -CLOSURE(δ(A, a)) = -CLOSURE( {3, 8}) = {1, 2, 3, 4, 6, 7, 8} → B ● -CLOSURE(δ(A, b)) = -CLOSURE({5}) = {1,

Ngày đăng: 25/07/2014, 05:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan