Xem mẫu

  1. Chương 2 Ôtômát hữu hạn 2.1 Accepter hữu hạn đơn định 2.2 Accepter hữu hạn không đơn định 2.3 Sự tương đương giữa accepter hữu hạn đơn định và accepter hữu hạn không đơn định 2.4 Rút gọn số trạng thái của một ôtômát hữu hạn Trang 47 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  2. Accepter hữu hạn đơn định Định nghĩa 2.1 Một accepter hữu hạn đơn định (deterministic finite state accepter) hay dfa được định nghĩa bởi bộ năm M = (Q, Σ, δ, q0, F), Q là một tập hữu hạn các trạng thái nội (internal states), Σ là một tập hữu hạn các ký hiệu được gọi là bảng chữ cái ngõ nhập (input alphabet), δ: Q × Σ → Q là hàm chuyển trạng thái (transition function). Để chuyển trạng thái ôtômát dựa vào trạng thái hiện hành q ∈ Q nó đang ở vào và kí hiệu nhập a ∈ Σ nó đang đọc được, nó sẽ chuyển sang trạng thái kế được định nghĩa sẵn trong δ. Trang 48 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  3. Accepter hữu hạn đơn định (tt) q0 ∈ Q là trạng thái khởi đầu (initial state), F ⊆ Q là một tập các trạng thái kết thúc (final states) (hay còn được gọi là trạng thái chấp nhận). Chú ý Ôtômát hữu hạn không có bộ nhớ so với mô hình tổng quát. Trang 49 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  4. Hoạt động của một dfa Hoạt động của một dfa Tại thời điểm khởi đầu, nó được giả thiết ở trong trạng thái khởi đầu q0, với cơ cấu nhập (đầu đọc) của nó đang ở trên kí hiệu đầu tiên bên trái của chuỗi nhập. Trong suốt mỗi lần di chuyển, cơ cấu nhập tiến về phía phải một kí hiệu, như vậy mỗi lần di chuyển sẽ lấy một kí hiệu ngõ nhập. Khi gặp kí hiệu kết thúc chuỗi, chuỗi là được chấp nhận (accept) nếu ôtômát đang ở vào một trong các trạng thái kết thúc của nó. Ngược lại thì có nghĩa là chuỗi bị từ chối. Trang 50 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  5. Đồ thị chuyển trạng thái Để biểu diễn một cách trực quan cho dfa người ta sử dụng đồ thị chuyển trạng thái. Cách biểu diễn như sau. Các đỉnh biểu diễn các trạng thái. Các cạnh biểu diễn các chuyển trạng thái. Các nhãn trên các đỉnh là tên các trạng thái. Các nhãn trên các cạnh là giá trị hiện tại của kí hiệu nhập. Trạng thái khởi đầu sẽ được nhận biết bằng một mũi tên đi vào không mang nhãn mà không xuất phát từ bất kỳ đỉnh nào Các trạng thái kết thúc được vẽ bằng một vòng tròn đôi. Trang 51 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  6. Ví dụ Cho dfa sau M = (Q, Σ, δ, q0, F) Q = {q0, q1, q2}, Σ = {0, 1}, F = {q1}, còn δ được cho bởi δ(q0, 0) = q0, δ(q0, 1) = q1, δ(q1, 0) = q0, δ(q1, 1) = q2, δ(q2, 0) = q2, δ(q2, 1) = q1, Đồ thị chuyển trạng thái tương ứng là 0 0 1 1 q2 q1 q0 1 0 Trang 52 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  7. Hàm chuyển trạng thái mở rộng Hàm chuyển trạng thái mở rộng δ* được định nghĩa một cách đệ qui như sau δ*(q, λ) = q, δ*(q, wa) = δ(δ*(q, w), a), ∀ q ∈ Q, w ∈ Σ*, a ∈ Σ. Ví dụ Nếu δ(q0, a) = q1, và δ(q1, b) = q2, Thì δ*(q0, ab) = q2 Chú ý δ không có định nghĩa cho chuyển trạng thái rỗng, tức là không định nghĩa cho δ(q, λ). Trang 53 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  8. Ngôn ngữ và dfa Định nghĩa 2.2 Ngôn ngữ được chấp nhận bởi dfa M = (Q, Σ, δ, q0, F) là tập tất cả các chuỗi trên Σ được chấp nhận bởi M. L(M) = {w ∈ Σ*: δ*(q0, w) ∈ F}. Nhận xét: L(M ) = {w ∈ Σ* : δ*(q0, w) ∉ F}. Trang 54 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  9. Ví dụ a a, b Ví dụ b a, b Xét dfa M sau q0 q2 q1 Dfa trên chấp nhận ngôn ngữ sau L(M) = {anb : n ≥ 0} Trạng thái bẫy (trap state): là trạng thái mà sau khi ôtômát đi vào sẽ không bao giờ thoát ra được. Trạng thái bẫy có thể là trạng thái kết thúc hoặc không. Định nghĩa trên cũng có thể mở rộng ra cho nhóm các trạng thái bẫy kết thúc hay không kết thúc. Trang 55 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  10. Định lý, bảng truyền Định lý 2.1 Cho M = (Q, Σ, δ, q0, F) là một accepter hữu hạn đơn định, và GM là đồ thị chuyển trạng thái tương ứng của nó. Thì ∀ qi, qj ∈ Q, và w ∈ Σ+, δ*(qi, w) = qj nếu và chỉ nếu có trong GM một con đường mang nhãn là w đi từ qi đến qj. Bảng truyền - (transition table) Là bảng trong đó các nhãn của hàng (ô tô đậm trên hàng trong hình bên) biểu diễn cho trạng thái hiện tại, còn nhãn của cột (ô tô đậm trên cột trong hình bên) biểu diễn cho ký hiệu nhập hiện tại. Các điểm nhập (entry) trong bảng định nghĩa cho trạng thái kế tiếp. Trang 56 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  11. Bảng truyền (tt) a b a, b a q0 q0 q1 b a, b q0 q2 q1 q1 q2 q2 q2 q2 q2 Bảng truyền gợi ý cho chúng ta một cấu trúc dữ liệu để mô tả cho ôtômát hữu hạn. Đồng thời cũng gợi ý cho chúng ta rằng một dfa có thể dễ dàng được hiện thực thành một chương trình máy tính; chẳng hạn bằng một dãy các phát biểu “if”. Trang 57 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  12. Ví dụ Tìm dfa chấp nhận ngôn ngữ Tìm dfa M1 chấp nhận tập tất cả các chuỗi trên Σ = {a, b} được bắt đầu bằng chuỗi ab. Tìm dfa M2 chấp nhận tập tất cả các chuỗi trên Σ = {0, 1}, ngoại trừ những chuỗi chứa chuỗi con 001. 0, 1 a, b 1 0 0 a b 1 0 001 q0 q1 λ q2 0 00 1 a b q3 a, b Trang 58 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  13. Bài tập dfa Tìm dfa chấp nhận ngôn ngữ L1 = {vwvR ∈ {a, b}*: |v| = 2} L2 = {ababn: n ≥ 0} ∪ {aban: n ≥ 0} L3 = {anbm : (n+m) mod 2= 0} L4 = {w ∈ {a, b}*: na(w) chẵn, nb(w) lẽ} L5 = {w ∈ {0, 1}*: giá trị thập phân của w chia hết cho 5} L6 = {w ∈ {a, b}*: số kí tự a trong chuỗi là một số lẽ} Trang 59 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  14. Ngôn ngữ chính qui Định nghĩa 2.3 Một ngôn ngữ L được gọi là chính qui nếu và chỉ nếu tồn tại một accepter hữu hạn đơn định M nào đó sao cho L = L(M) Ví dụ Chứng minh rằng ngôn ngữ L= {awa : w ∈ {a,b}*} là chính qui. a b a a q0 q2 q3 b b q1 a, b Trang 60 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  15. Accepter hữu hạn không đơn định Định nghĩa 2.4 Một accepter hữu hạn không đơn định (nondeterministic finite state accepter) hay nfa được định nghĩa bằng bộ năm: M = (Q , Σ, δ, q0, F ) trong đó Q, Σ, q0, F được định nghĩa như đối với accepter hữu hạn đơn định còn δ được định nghĩa là: δ : Q × (Σ ∪ { λ}) → 2Q Nhận xét Có hai khác biệt chính giữa định nghĩa này và định nghĩa của một dfa. Trang 61 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  16. Accepter hữu hạn không đơn định (tt) Nhận xét (tt) Đối với nfa miền trị của δ là tập 2Q, vì vậy giá trị của nó không còn là một phần tử đơn của Q, mà là một tập con của nó và đặc biệt có thể là ∅, tức là có thể không có định nghĩa cho một δ(q, a) nào đó. Người ta gọi trường hợp này là một cấu hình chết (dead configuration), và có thể hình dung trong trường hợp này ôtômát dừng lại, không hoạt động nữa. Thứ hai định nghĩa này cho phép λ như là một đối số thứ hai của δ. Điều này có nghĩa là nfa có thể thực hiện một sự chuyển trạng thái mà không cần phải lấy vào một kí hiệu nhập nào. Tương tự như dfa, một nfa cũng có thể được biểu diễn bằng một ĐTCTT. Trang 62 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  17. Ví dụ a a q2 q1 q3 a 1 0, 1 q2 q1 q0 q0 0 a a q4 q5 λ a (a) (b) Hàm chuyển trạng thái mở rộng Định nghĩa 2.5 Cho một nfa, hàm chuyển trạng thái mở rộng được định nghĩa sao cho δ*(qi, w) chứa qj nếu và chỉ nếu có một con đường trong ĐTCTT đi từ qi đến qj mang nhãn w. Điều này đúng với mọi qi, qj ∈ Q và w ∈ Σ*. Trang 63 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  18. Hàm chuyển trạng thái mở rộng Ví dụ λ δ*(q1, λ) = {q1, q2, q0} δ*(q2, λ) = {q2, q0} b, λ a q2 q0 q1 δ*(q0, a) = {q1, q2, q0} δ*(q1, a) = {q1, q2, q0} δ*(q1, b) = {q2, q0} Trang 64 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  19. Ngôn ngữ của nfa Định nghĩa 2 .6 Ngôn ngữ được chấp nhận bởi nfa M = (Q, Σ, δ, q0, F), được định nghĩa như là một tập tất cả các chuỗi được chấp nhận bởi nfa trên. Một cách hình thức, L(M) = {w ∈ Σ*: δ*(q0, w) ∩ F ≠ ∅}. Ví dụ Ngôn ngữ được chấp nhận bởi ôtômát bên dưới là L = {(10)n: n ≥ 0} 1 0, 1 q2 q1 q0 0 λ Trang 65 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
  20. Cách tính δ* Với T là một tập con của Q, ta định nghĩa δ(T , a ) = δ(q, a ) δ* (T , λ ) = δ(q, λ ) δ* (T , a ) = U δ (q , a ) U U q∈T q∈T q∈T Người ta thường hiện thực cách tính các hàm này δ(q, a), δ(T, a), δ*(q, λ), δ*(T, λ) lần lượt bằng các hàm move(q, a), move(T, a), λ-closure(q), λ-closure(T) (λ- closure đọc là bao đóng-λ) δ*(q, a) = λ-closure(move(λ-closure(q), a)) δ*(T, a) = λ-closure(move(λ-closure(T) Trang 66 Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông Tin
nguon tai.lieu . vn