Chương 3: Automata hữu hạn & Biểu thức quy Nội dung: • • • • Khái niệm DFA & NFA Sự tương đương DFA & NFA Biểu thức quy Các tính chất tập quy Định nghĩa ôtômát (automata) Định nghĩa: máy trừu tượng có cấu hoạt động đơn giản có khả đoán nhận ngôn ngữ • Con người phải lập trình sẵn cho máy ‘lộ trình’ để thực INPUT Bộ điều khiển OUTPUT BỘ NHỚ Phân loại automata Automata đơn định (Deterministic Automata): • Mỗi bước di chuyển xác định cấu hình (hàm chuyển automata đơn trị) Automata không đơn định (Non-deterministic Automata): • Tại bước di chuyển, có vài khả để lựa chọn (hàm chuyển automata đa trị) Phân loại FA DFA Deterministic Finite Automata FA (Finite Automata) NFA Nondeterministic Finite Automata Biểu thức quy Automata hữu hạn đơn định (DFA) Ví dụ: c Input Start q0 0 1 0 1 q1 Bộ điều khiển a b Trạng thái bắt đầu q2 d M=(Q, Σ, δ, q0, F) Trạng thái kết thúc q3 x Phép chuyển nhãn x Q : tập hữu hạn trạng thái (p, q…) Σ : chữ nhập (a, b … ; w, x, y …) δ : hàm chuyển, ánh xạ: Q x Σ → Q q0 Q : trạng thái bắt đầu F Q : tập trạng thái5 kết thúc Mở rộng hàm chuyển trạng thái δ(q, ) = q δ(q, wa) = δ( δ(q,w), a) với Ngôn ngữ chấp nhận: L(M) = { x | δ( q0, x ) w, a F} Ngôn ngữ quy Ví dụ: chuỗi nhập w=110101 • δ(q0, 1) = q1 • δ(q0, 11) = δ(q1, 1) = q0 • δ(q0, 110) = δ(q1, 10) = δ(q0, 0) = q2 • δ(q0, 1101) = δ(q1, 101) = δ(q0, 01) = δ(q2, 1) = q3 • δ(q0, 11010) = … = δ(q3, 0) = q1 • δ(q0, 110101) = … = δ(q1, 1) = q0 F Giải thuật hình thức • Mục đích: kiểm tra chuỗi nhập x có thuộc ngôn ngữ L(M) chấp nhận automata M • Input: chuỗi nhập x$ • Output: câu trả lời ‘YES’ ‘NO’ • Giải thuật: q := q0 ; c := nextchar ; {c ký hiệu nhập đọc tiếp theo} While c $ begin q := δ(q, c); c := nextchar ; end If (q in F) then write("YES") else write("NO"); Automata hữu hạn không đơn định (NFA) • Ví dụ: cho automata M (hình vẽ) xét chuỗi nhập 01001 Start 0 q0 q3 q4 q1 q0 q0 0 q0 q3 q2 q0 q1 q0 q3 q0 q3 q1 q4 Nhận xét: • Ứng với trạng thái ký tự nhập, có không, nhiều phép chuyển trạng thái • DFA trường hợp đặc biệt NFA q4 Định nghĩa NFA Q : tập hữu hạn trạng thái Σ : chữ nhập M=(Q, Σ, δ, q0, F) δ : hàm chuyển ánh xạ Q x Σ → 2Q q0 Q : trạng thái bắt đầu F Q : tập trạng thái kết thúc Chú ý: khái niệm δ(q, a) tập hợp tất trạng thái p cho có phép chuyển từ trạng thái q nhãn a Hàm chuyển trạng thái mở rộng: • δ(q, ) = {q} • δ(q, wa) = { p | có trạng thái r δ(q, w) mà p δ(r, a) } = δ( δ(q,w), a) • δ(P, w) = q P δ(q, w) với P Q Ví dụ NFA Ví dụ: xét chuỗi nhập w=01001 NFA cho M( {q0, q1, q2, q3, q4}, {0, 1}, δ, q0, {q2, q4} ) • δ • δ(q0, 0) = {q0,q3} Input • δ(q0, 01) = δ( δ(q0, 0), 1) Trạng thái q0 {q0,q3} {q0,q1} q1 Ø {q2} q2 {q2} {q2} q3 {q4} Ø q4 {q4} {q4} Do q4 F nên w=01001 L(M) = δ({q0, q3},1) = δ(q0, 1) δ(q3, 1) = {q0, q1} • δ(q0, 010) = {q0, q3} • δ(q0, 0100) = {q0, q3, q4} • δ(q0, 01001) = {q0, q1, q4} 10 ... lựa chọn (hàm chuyển automata đa trị) Phân loại FA DFA Deterministic Finite Automata FA (Finite Automata) NFA Nondeterministic Finite Automata Biểu thức quy Automata hữu hạn đơn định (DFA) Ví... NHỚ Phân loại automata Automata đơn định (Deterministic Automata) : • Mỗi bước di chuyển xác định cấu hình (hàm chuyển automata đơn trị) Automata không đơn định (Non-deterministic Automata) : •... c); c := nextchar ; end If (q in F) then write("YES") else write("NO"); Automata hữu hạn không đơn định (NFA) • Ví dụ: cho automata M (hình vẽ) xét chuỗi nhập 01001 Start 0 q0 q3 q4 q1 q0 q0 0