giải thuật xây dựng DFA sang NFA pdf

12 302 0
giải thuật xây dựng DFA sang NFA 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

Giải thuật xây dựng DFA từ NFA Qua khảo sát dạng mở rộng từ mơ hình ơtơmát hữu hạn ban đầu, ta thấy DFA thực chất trường hợp đặc biệt NFA, : - Nó khơng có truyền rỗng (truyền nhãn e) - Với trạng thái q ký hiệu nhập a, có đường truyền đến trạng thái khác Giả sử trạng thái DFA tập trạng thái NFA, DFA dùng trạng thái để lưu giữ tất trạng thái NFA đạt sau NFA đọc ký tự nhập Như sau đọc ký tự nhập a 1, a2, , an, DFA trạng thái tập trạng thái thuộc NFA, đạt NFA từ trạng thái bắt đầu theo đường có tên a1a2 an Số trạng thái DFA lúc phải số phần tử tập lũy thừa số trạng thái NFA Song, thực tế trường hợp xấu xảy Các trạng thái thực dùng sơ đồ chuyển cho DFA xác định theo phép chuyển trạng thái nhãn ký hiệu từ trạng thái bắt đẩu DFA, sau bổ sung thêm vào tập trạng thái chưa có Giải thuật chi tiết trình bày sau : Input: Một ôtômát hữu hạn không đơn định NFA Output: Một ôtômát hữu hạn đơn định DFA nhận dạng ngôn ngữ NFA Phương pháp: Xây dựng bảng hàm chuyển cho DFA mô đồng thời tất chuyển dịch NFA chuỗi nhập cho trước Ta dùng tác vụ sau để lưu giữ tập trạng thái NFA : (q : trạng thái NFA, T : tập trạng thái NFA) a) e-closure(q) : tập trạng thái NFA đạt từ trạng thái q truyền rỗng b) e-closure(T) : tập trạng thái NFA đạt từ tất trạng thái q thuộc tập T truyền rỗng c) d(T, a) : tập trạng thái NFA đạt từ tất trạng thái q thuộc tập T truyền ký hiệu a Phân tích: Trước đọc vào ký tự nhập, DFA trạng thái trạng thái thuộc e-closure(q0) với q0 trạng thái bắt đầu NFA Gọi trạng thái T Giả sử trạng thái T trạng thái đạt từ q ký hiệu nhập giả sử a ký hiệu nhập Khi đọc a, NFA chuyển đến trạng thái tập trạng thái d(T, a) Khi cho phép truyền rỗng, NFA trạng thái e-closure(d(T, a)) sau đọc a Giải thuật : Ta xây dựng trạng thái bảng hàm chuyển cho DFA theo cách sau : - Mỗi trạng thái DFA tượng trưng tập trạng thái NFA mà NFA chuyển đến sau đọc chuỗi ký hiệu nhập gồm: tất truyền rỗng xảy trước sau ký hiệu đọc - Trạng thái bắt đầu DFA e-closure(q0) - Các trạng thái hàm chuyển thêm vào D giải thuật - Một trạng thái DFA trạng thái kết thúc tập trạng thái NFA chứa trạng thái kết thúc NFA Việc tính tốn e-closure(T) xem trình tìm kiếm đồ thị nút từ nút cho trước đồ thị bao gồm tồn cạnh có nhãn e NFA Giải thuật đơn giản để tìm e-closure(T) dùng Stack để lưu giữ trạng thái mà cạnh chúng chưa kiểm tra cho truyền rỗng Thí dụ 3.10 : Tạo DFA từ NFAe sau Hình 3.6 – Thí dụ chuyển NFA có ε-dịch chuyển Các bước xây dựng tập trạng thái cho DFA : Trạng thái bắt đầu DFA : ε-closure(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, 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* 10.ε-closure(δ(E, a)) = ε-closure({3, 8}) = B 11.ε-closure(δ(E, b)) = ε-closure({5}) = C Từ tập trạng thái này, ta xác định A trạng thái bắt đầu, E trạng thái kết thúc (vì E có chứa trạng thái 10 trạng thái kết thúc NFA) bảng hàm chuyển DFA sau : Từ bảng hàm chuyển trên, ta xây dựng sơ đồ chuyển trạng thái cho DFA tương đương nhận dạng ngơn ngữ có dạng sau : Hình 3.7 – DFA tương đương cho thí dụ 3.10 Nhận xét : Mặc dù có khác định nghĩa, ta thấy dạng không đơn định NFA định nghĩa tổng quát dạng đơn định DFA, rõ ràng khả nhận dạng lớp ngôn ngữ chúng tương đương Trong thực tế, máy tính số hồn tồn đơn định, trạng thái chúng thời điểm xác định từ chuỗi nhập trạng thái bắt đầu Một số gợi ý câu trả lời: Trong số tốn mang tính chọn lựa, có nhiều hướng giải (nhiều cách đi) chương trình trò chơi (games) thơng thường hướng giải tốt (cách tốt nhất) khơng biết trước được, tìm thấy cách sử dụng chiến lược tìm kiếm quay lui (back-tracking) Khi có vài khả chọn lựa có thể, ta chọn khả chúng theo hướng xác định hướng tốt hay chưa Nếu chưa phải hướng tốt nhất, ta phải quay điểm định cuối trước thử khảo sát theo hướng khác Một giải thuật mơ q trình tìm kiếm quay lui giải thuật không đơn định Khơng đơn định đơi hữu hiệu việc giúp giải toán dễ dàng Chẳng hạn, số tốn việc xây dựng NFA tự nhiên đơn giản việc tìm DFA cho chúng Tương tự vậy, khơng đơn định chế hiệu dùng mô tả văn phạm sinh ngôn ngữ cách súc tích (sự chọn lựa luật sinh sinh từ biến) Trong thực tế, vài kết dễ dàng chứng minh NFA DFA Vì việc cho phép chế khơng đơn định thường làm đơn giản hóa lý luận hình thức mà khơng ảnh hưởng đến tính tổng qt kết luận Tối tiểu hố ơtơmát hữu hạn Trong phần xét vấn đề tìm ôtômát có số trạng thái cực tiểu tương đương (cùng đốn nhận ngơn ngữ) với ơtơmát cho trước Trên tập trạng thái Q định nghĩa số quan hệ tương đương Định nghĩa 2.7 Hai trạng thái q1 q2 gọi tương đương, ký hiệu q1  q 2, hai (q1, x) (q2, x) trạng thái kết thúc hai không kết thúc với x * Số xâu (từ) xây dựng từ bảng ký tự vào  thường lớn (có vô hạn), phần xét trường hợp hữu hạn Định nghĩa 2.8 Hai trạng thái q1 q2 gọi k-tương đương ( k  0), ký hiệu q1 k q2, hai (q1, x) (q2, x) trạng thái kết thúc hai không kết thúc với x * có độ dài nhỏ k Hiển nhiên, hai trạng thái kết thúc hai trạng thái không kết thúc 0tương đương Các quan hệ có số tính chất sau Tính chất 2.3 Hai quan hệ  k quan hệ tương đương (có tính phản xạ, bắc cầu đối xứng) Tính chất 2.4 Các lớp tương đương hai quan hệ   k tạo hai phân hoạch , k Q; phần tử k lớp k-tương đương Tính chất 2.5 Nếu q1  q2 q1  k q2, với k  Tính chất 2.6 Nếu q1  (k+1) q2 q1  k q2 Tính chất 2.7 Tồn n để n = n+1 Mệnh đề sau sở để xây dựng ôtômát cực tiểu Mệnh đề 2.2 Hai trạng thái q1 q gọi (k+1)- tương đương Chúng k-tương đương, (q1,a) (q 2, a) k-tương đương với a  Chứng minh: Chúng ta chứng minh phản chứng Giả sử q q2 khơng phải (k+1)-tương đương Khi tồn w = aw1 với độ dài k+1 cho (q1, aw1) trạng thái kết thúc (q2, aw 1) lại trạng thái kết thúc Như vậy, (q1, aw1) = ((q1, a), w1) trạng thái kết thúc (q2, aw1) = ((q2, a), w1) trạng thái kết thúc Từ suy (q1,a) (q2, a) ktương đương, mâu thuẫn với giả thiết (b)  Dựa vào tính chất xây dựng lớp (k+1)-tương đương biết lớp k-tương đương tập trạng thái từ xây dựng thuật tốn cực tiểu hố ơtơmát (có số trạng thái cực tiểu) tương đương với ơtơmát cho trước Thuật tốn 2.2 Xây dựng ơtơmát cực tiểu hố Input: Cho trước ơtơmát M = (Q, , , q0, F) thường không đơn định Output: Ơtơmát đơn định cực tiểu M = (Q, , , q0, F) Thiết lập phân hoạch 0 Theo định nghĩa 0-tương đương, 0 = {Q10, Q20}, Q10 = F (tập trạng thái kết thúc), Q20 = Q - Q10 Xây dựng k+1 từ k Xây dựng Qik, i = 1, 2, … tập k lớp (k+1)-tương đương q1 q2 nằm Qik chúng (k+1) – tương đương nghĩa (q1, a) (q2, a) k-tương đương, với a bảng chữ vào Điều xảy (q1, a) (q2, a) nằm lớp tương đương k Do vậy, Qik lớp (k+1)-tương đương Thực tập Qik tạo thành phân hoạch k+1 Q mịn k Lặp lại bước để thiết lập k với k = 1, 2, … k = k+1 Xây dựng ôtômát cực tiểu Các trạng thái ơtơmát cực tiểu lớp tương đương xác định bước 3, phần tử k Bảng chuyển trạng thái thu cách thay trạng thái q lớp tương đương tương ứng [q] Lưu ý: Dựa vào bảng chuyển trạng thái cho trước ta dễ dàng xây dựng lớp 0 = {Q10, Q20}, Q10 = F, Q20 = Q - F; Giả sử xây dựng  k , k = 0, 1, … Với q1, q2  Qik , Qik  k, i = 1, 2, … xét trạng thái cột tương ứng với liệu vào a , (q1, a) (q2, a) thuộc tập k (k+1)-tương đương, nghĩa q1, q2 nằm phân hoạch k+1; ngược lại (k+1)-tương đương, nghĩa q1, q2 nằm hai phân hoạch khác k+1 Lặp lại bước k = k+1 Ví dụ 2.9 Xây dựng ơtơmát cực tiểu tương đương với ơtơmát có đồ thị chuyển trạng thái hình H2-9 Hình H2-9 Đồ thị chuyển trạng thái ví dụ 2.9 Từ đồ thị chuyển trạng thái hình H2.9 có bảng chuyển trạng thái Bảng B2.7 Bảng trạng thái M Trạng thái \  a b q0 q1 q0 q1 q0 q2 q2 q3 q1 q3 q3 q0 q4 q3 q5 q5 q6 q4 q6 q5 q6 q7 q6 q3 Theo thuật tốn ta có Q10 = {q3}, Q20 = { q0, q1, q2, q4, q5, q6,  q7}  0 = {{q3},{ q0, q1, q2, q4, q5, q6, q7}}  Chúng ta xét tiếp quan hệ 1-tương đương để tính 1 Trước tiên ta có Q11 = {q3} Dựa vào bảng B2.7 dễ kiểm tra q0 1-tương đương với q1, q5, q6 (q0, t) (qi, t), i = 1, 5, t = a, b kết thúc trạng thái kết thúc Vậy Q21 = { q0,  q1, q5, q6}  Tương tự ta kiểm tra q2 -tương đương với q4 Q31 = { q2, q4} Hiển nhiên lại Q41 = {q7} Từ có 1 = {{q3}, { q0, q1, q5, q6}, { q2, q4}, {q7}} ✓ Phân hoạch tiếp 1 để xây dựng 2 Q12 = {q3} (q0, t) (q6, t), = a, b thuộc lớp 1-tương đương (lớp {q0, q1, q5, q6}) nên q0 q6 2-tương đương Vậy Q22 = {q0, q6} Nhưng q0 q1 (q0 q5) khơng phải 2-tương đương (q0, b) = q0 ((q1, b) = q2, (q0, b) = q0, (q1, b) = q2) chúng lại không lớp 1-tương đương Kiểm tra ta thấy q1 2-tương đương với q5, nên Q32 = {q1, q5} Tương tự q2 2-tương đương với q4, Q42 = { q2, q4} lại Q52 = {q7} Vậy 2 = {{q3}, { q0, q6}, { q1, q5}, { q2, q4}, {q7}} Tiếp tục xây dựng 3 Tương tự trên, thấy Q13 = {q3}; Q23 = {q0, q6} q0 3-tương đương với q6; tương tự Q33 = {q1, q5}; Q43  = {q2, q4}  Q53 = {q7} Nghĩa 3 = {{q3}, {q0, q6}, {q1, q5}, {q2, q4}, {q7}} Vì 2 = 3, nên lớp tương đương 2 làm sở để xây dựng ôtômát cực tiểu M = (Q, {a, b}, , q0, {q3}) Trong Q = 2 = {{q3}, {q0, q6}, {q1, q5}, {q2, q4}, {q7}} Hàm chuyển trạng thái  xác định bảng B2.8 Bảng B2.8 Bảng trạng thái ôtômát cực tiểu Trạng thái \  a b {q0, {q0,q6} {q1, q5} q6} {q2, {q1, q5} {q0,q6} q 4} {q1, {q2, q4} {q3} q 5} {q3} {q3} {q0,q6 } {q7} {q0, q6} {q3} Đồ thị chuyển trạng thái ơtơmát cực tiểu thu Hình H2-10 Ơtơmát cực tiểu ơtơmát hình H2-9 ... cuối trước thử khảo sát theo hướng khác Một giải thuật mơ q trình tìm kiếm quay lui giải thuật không đơn định Không đơn định đơi hữu hiệu việc giúp giải toán dễ dàng Chẳng hạn, số tốn việc xây... sau ký hiệu đọc - Trạng thái bắt đầu DFA e-closure(q0) - Các trạng thái hàm chuyển thêm vào D giải thuật - Một trạng thái DFA trạng thái kết thúc tập trạng thái NFA chứa trạng thái kết thúc NFA... e-closure(T) xem q trình tìm kiếm đồ thị nút từ nút cho trước đồ thị bao gồm toàn cạnh có nhãn e NFA Giải thuật đơn giản để tìm e-closure(T) dùng Stack để lưu giữ trạng thái mà cạnh chúng chưa kiểm tra

Ngày đăng: 28/09/2019, 20:06

Từ khóa liên quan

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

Tài liệu liên quan