1. Trang chủ
  2. » Giáo án - Bài giảng

ÔTÔ mát hữu hạn và BIỂU THỨC CHÍNH QUY

19 557 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 269,32 KB

Nội dung

ÔTÔ MÁT H Ữ U HẠ N VÀ BI Ể U TH Ứ C CHÍNH QUY Nộ i dung chính: Trong chương này, ta nghiên cứu loại "máy trừu tượng" gọi ôtômát hữu hạn Chúng công cụ dùng đoán nhận lớp ngôn ngữ đơn giản gọi lớp ngôn ngữ quy Trước hết, hai dạng ôtômát hữu hạn trình bày có chứng minh chúng tương đương khả đoán nhận ngôn ngữ Tiếp đó, ta đề cập đến biểu thức quy - phương tiện khác để xác định ngôn ngữ ta lại thấy lớp ngôn ngữ ôtômát hữu hạn chấp nhận lớp ngôn ngữ quy Phần chương đề cập đến mối quan hệ chế ôtômát biểu thức quy dùng ký hiệu cho ngôn ngữ Cuối chương này, vài ứng dụng cụ thể ôtômát hữu hạn trình bày Mục tiêu cần đạt: Kết thúc chương này, sinh viên cần nắm vững : Khái niệm ôtômát hữu hạn, thành phần, dạng khác biệt hai dạng Cách thức chuyển đổi tương đương từ dạng đơn định sang không đơn định ngược lại Viết biểu thức quy ký hiệu cho tập ngôn ngữ quy Mối liên quan ôtômát hữu hạn biểu thức quy Vẽ sơ đồ chuyển trạng thái (đơn định không đơn định) từ biểu thức quy Tìm ứng dụng thực tế khác từ mô hình ôtômát hữu hạn Kiến th ức c bản: Để tiếp thu tốt nội dung chương này, sinh viên cần có số kiến thức liên quan lý thuyết đồ thị, lý thuyết mạch; hiểu khái niệm kiến trúc máy tính; có sử dụng qua số trình soạn thảo văn thông thường … Tài liệu tham khảo : John E Hopcroft, Jeffrey D.Ullman – Introduction to Automata Theory, Languages and Computation – Addison – Wesley Publishing Company, Inc – 1979 (Chapter : Finite Automata and Regular Expressions) Phan Thị Tươi – Trình biên dịch – Nhà xuất Giáo dục – 1986 (Chương : Bộ phân tích từ vựng) J.A.Garcia and S.Moral- Theory of Finite Automata : http://decsai.ugr.es/~jags/fat.html Donald R Biggar - Regular Expression Matching Using Finite Automata: http://www3.sympatico.ca/dbiggar/FA.home.html ÔTÔMÁT H ỮU H ẠN (FA : Finite Automata) Ôtômát hữu hạn FA mô hình tính toán hệ thống với mô tả input output Tại thời điểm, hệ thống xác định số hữu hạn cấu hình nội gọi trạng thái (states) Mỗi trạng thái hệ thống thể tóm tắt thông tin liên quan đến input chuyển qua xác định phép chuyển dãy input Trong khoa học máy tính, ta tìm thấy nhiều ví dụ hệ thống trạng thái hữu hạn, lý thuyết ôtômát hữu hạn công cụ thiết kế hữu ích cho hệ thống Chẳng hạn, hệ chuyển mạch điều khiển (Control Unit) máy tính Một chuyển mạch bao gồm số hữu hạn cổng (gate) input, cổng có giá trị Các giá trị đầu vào xác định mức điện khác cổng output Mỗi trạng thái mạng chuyển mạch với n cổng trường hợp 2nphép gán cổng khác Các chuyển mạch thiết kế theo cách này, chúng xem hệ thống trạng thái hữu hạn Các chương trình sử dụng thông thường, chẳng hạn trình sọan thảo văn hay phân tích từ vựng trình biên dịch máy tính thiết kế hệ thống trạng thái hữu hạn Ví dụ phân tích từ vựng quét qua tất dòng ký tự chương trình máy tính để tìm nhóm chuỗi ký tự tương ứng với tên biến, số, từ khóa, …Trong trình xử lý này, phân tích từ vựng cần phải nhớ số hữu hạn thông tin ký tự bắt đầu hình thành chuỗi từ khóa Lý thuyết ôtômát hữu hạn thường dùng đến nhiều cho việc thiết kế công cụ xử lý chuỗi hiệu Máy tính xem hệ thống trạng thái hữu hạn Trạng thái thời xử lý trung tâm, nhớ thiết bị lưu trữ phụ thời điểm số lớn hữu hạn số trạng thái Bộ não người hệ thống trạng thái hữu hạn, số tế bào thần kinh hay gọi neurons số có giới hạn, nhiều 35 Lý quan trọng cho việc nghiên cứu hệ thống trạng thái hữu hạn tính tự nhiên khái niệm khả ứng dụng đa dạng nhiều lĩnh vực thực tế Ôtômát hữu hạn (FA) chia thành loại: đơn định (DFA) không đơn định (NFA) Cả hai loại ôtômát hữu hạn có khả nhận dạng xác tập quy Ôtômát hữu hạn đơn định có khả nhận dạng ngôn ngữ dễ dàng ôtômát hữu hạn không đơn định, thay vào thông thường kích thước lại lớn so với ôtômát hữu hạn không đơn định tương đương Ôtômát h ữu hạn đơn định - DFA (Deterministic Finite Automata) Một ôtômát hữu hạn đơn định (DFA) - gọi tắt FA -gồm tập hữu hạn cáctrạng thái tập phép chuyển từ trạng thái tới trạng thái khác ký hiệu nhập (input symbols) chọn từ chữ Σ Mỗi ký hiệu nhập có phép chuyển khỏi trạng thái (có thể chuyển trở nó) Một trạng thái, thường ký hiệu q 0, gọi trạng thái bắt đầu (trạng thái ôtômát bắt đầu) Một số trạng thái thiết kế trạng thái kết thúc hay trạng thái chấp nhận Một đồ thị có hướng, gọi sơ đồ chuyển (transition diagram) tương ứng với DFA sau: đỉnh đồ thị trạng thái DFA; có đường chuyển từ trạng thái q đến trạng thái p input a có cung nhãn a chuyển từ trạng thái q đến trạng thái p sơ đồ chuyển DFA chấp nhận chuỗi x tồn dãy phép chuyển tương ứng ký hiệu x dẫn từ trạng thái bắt đầu đến trạng thái kết thúc Chẳng hạn, sơ đồ chuyển DFA mô tả hình 3.1 Trạng thái khởi đầu q mũi tên có nhãn "Start" Chỉ có trạng thái kết thúc, q trường hợp này, hai vòng tròn Ôtômát chấp nhận tất chuỗi số số với số số số số số chẵn Thí dụ 3.1 : Hình 3.1 - Sơ đồ chuyển DFA Một điều cần lưu ý, DFA sử dụng trạng thái để giữ phần chuỗi số chứa số thực sự, DFA cần dùng số hữu hạn trạng thái Định nghĩa Một cách hình thức ta định nghĩa ôtômát hữu hạn gồm năm thành phần (Q, Σ, δ, q 0, F), : Q tập hợp hữu hạn trạng thái Σ chữ nhập hữu hạn δ hàm chuyển ánh xạ từ Q × Σ → Q, tức δ(q, a) trạng thái cho phép chuyển từ trạng thái q ký hiệu nhập a q0 ∈ Q trạng thái bắt đầu F ⊆ Q tập trạng thái kết thúc Ta vẽ DFA điều khiển hữu hạn, với trạng thái thuộc Q, DFA đọc chuỗi ký hiệu a từ Σ viết băng (như hình vẽ) Hình 3.2 - Mô tả DFA Trong lần chuyển, DFA trạng thái q đọc ký hiệu nhập a băng, chuyển sang trạng thái xác định hàm chuyển δ(q, a), dịch đầu đọc sang phải ký tự Nếu δ(q, a) chuyển đến trạng thái kết thúc DFA chấp nhận chuỗi viết băng input phía trước đầu đọc, không bao gồm ký tự vị trí đầu đọc vừa dịch chuyển đến Trong trường hợp đầu đọc dịch đến cuối chuỗi băng, DFA chấp nhận toàn chuỗi băng Hàm chuyển trạng thái mở rộng Để mô tả cách hình thức hoạt động DFA chuỗi, ta mở rộng hàm chuyển δ để áp dụng trạng thái chuỗi trạng thái ký hiệu Ta định nghĩa hàm chuyển δ ánh xạ từ Q × Σ * → Q với ý nghĩa δ(q, w) trạng thái DFA chuyển đến từ trạng thái q chuỗi w Một cách hình thức, ta định nghĩa : d (q, ε) = q δ (q, wa) = δ(δ (q, w), a), với chuỗi w ký hiệu nhập a Một số quy ước ký hiệu : • Q tập trạng thái Ký hiệu q p (có số) trạng thái, q trạng thái bắt đầu • Σ chữ nhập Ký hiệu a, b (có số) chữ số ký hiệu nhập • δ hàm chuyển • F tập trạng thái kết thúc • w, x, y z (có số) chuỗi ký hiệu nhập Ngôn ngữ chấp nhận DFA Một chuỗi w chấp nhập ôtômát hữu hạn M (Q, Σ, δ, q 0, F) δ(q0, w) = p với p ∈ F Ngôn ngữ chấp nhận M, ký hiệu L(M) tập hợp: Thí dụ 3.2 : Xét sơ đồ chuyển hình 3.1 Theo khái niệm hình thức, ta có DFA xác định M (Q, Σ, δ, q0, F) với Q = {q0, q1, q2, q3}, Σ = {0, 1}, F = {q0} hàm chuyển δ sau: Giả sử chuỗi w = 110101 nhập vào M Ta có δ(q0, 1) = q1 δ(q1, 1) = q0 ,vậy δ(q0, 11) = δ(δ(q0,1),1) = δ(q1, 1) = q0 Tiếp tục δ(q0, 0) = q2, δ(q0, 110) = δ(δ(q0, 11), 0) = q2 Tiếp tục ta có δ(q0, 1101) = q3, δ(q0, 11010) = q1 Và cuối δ(q0, 110101) = q0 ∈ F (Hay d(q0, 110101) = d(q1, 10101) = d(q0, 0101) = d(q2, 101) = d(q3, 01) = d(q1, 1) = q0 ∈ F) Vậy 110101 thuộc L(M) Ta chứng minh L(M) tập chuỗi có số chẵn số số chẵn số Theo mô tả DFA trên, ta thấy dùng bảng hàm chuyển (transition table) để mô tả phép chuyển trạng thái ôtômát hữu hạn Trong bảng hàm chuyển, hàng chứa trạng thái thuộc tập trạng thái ôtômát cột ký hiệu thuộc chữ nhập Bảng hàm chuyển gợi ý cho cấu trúc liệu để mô tả cho ôtômát hữu hạn, đồng thời cho thấy dễ dàng mô hoạt động DFA thông qua chương trình máy tính, chẳng hạn dùng cấu trúc vòng lặp Giải thuật mô hoạt động DFA Nhận xét : Một cách tổng quát, ta thấy tập Q DFA thể trạng thái lưu trữ ôtômát trình đoán nhận ngôn ngữ, khả lưu trữ ôtômát hữu hạn Mặt khác, hàm chuyển d hàm toàn phần đơn trị, bước chuyển ôtômát luôn xác định cách Chính hai đặc điểm mà DFA mô tả gọi ôtômát hữu hạn đơn định Ôtômát h ữu hạn không đơn định - NFA (Nondeterministic Finite Automata) Xét dạng sửa đổi mô hình DFA để chấp nhận không, nhiều phép chuyển từ trạng thái ký hiệu nhập Mô hình gọi ôtômát hữu hạn không đơn định (NFA) Một chuỗi ký hiệu nhập a a2 an chấp nhận NFA có tồn chuỗi phép chuyển, tương ứng với chuỗi nhập, từ trạng thái bắt đầu đến trạng thái kết thúc Chẳng hạn, chuỗi 01001 chấp nhận ôtômát hình có chuỗi phép chuyển qua trạng thái q0, q0, q0, q3, q4, q4 có nhãn tương ứng 0, 1, 0, 0, NFA chấp nhận tất chuỗi có hai số liên tiếp hai số liên tiếp Thí dụ Hình 3.3 - Sơ đồ chuyển NFA Chú ý xem ôtômát hữu hạn đơn định - DFA (hay gọi tắt FA) trường hợp đặc biệt NFA, trạng thái có phép chuyển ký hiệu nhập Vì DFA, với chuỗi nhập w trạng thái q, có đường nhãn w q Để xác định chuỗi w có chấp nhận DFA hay không cần kiểm tra đường Nhưng NFA, có nhiều đường có nhãn w, tất phải kiểm tra để thấy có hay đường tới trạng thái kết thúc Tương tự DFA, NFA hoạt động với điều khiển hữu hạn đọc băng nhập Tuy nhiên, thời điểm, điều khiển chứa số trạng thái Khi có lựa chọn trạng thái kế tiếp, chẳng hạn từ trạng thái q ký hiệu nhập hình 3.3, ta phải tưởng tượng có ôtômát thực đồng thời Mỗi trạng thái mà ôtômát chuyển đến tương ứng với ôtômát mà điều khiển chứa trạng thái Chẳng hạn, với chuỗi 01001, ta có : Định nghĩa Một cách hình thức ta định nghĩa ôtômát hữu hạn không đơn định NFA thành phần (Q, Σ, δ, q0, F) Q, Σ, q0 F có ý nghĩa DFA, δ hàm chuyển ánh xạ từ Q × Σ → 2Q Khái niệm δ(q, a) tập hợp tất trạng thái p cho có phép chuyển nhãn a từ trạng thái q tới p Hàm chuyển trạng thái mở rộng Để thuận tiện việc mô tả hoạt động ôtômát chuỗi, ta mở rộng hàm chuyển δ ánh xạ từ Q × Σ* → 2Q sau : d(q, e) = {q} δ(q, wa) = { p | có trạng thái r δ(q, w) mà p thuộc δ(r, a)} = δ(δ(q, w), a) d(P, w) = Èq ∈ P d(q, w) , ∀P ⊆ Q Ngôn ngữ chấp nhận NFA Ngôn ngữ L(M), với M ôtômát hữu hạn không đơn định NFA (Q, Σ, δ, q0, F) tập hợp : L(M) = {w | δ(q0, w) có chứa trạng thái F } Thí dụ 3.4 : Xét sơ đồ chuyển hình 3.3 Theo khái niệm hình thức, ta có : NFA M ({q0, q1, q2, q3, q4}, {0, 1}, d, q0, {q2, q4}) với hàm chuyển d sau : Xét chuỗi nhập w = 01001 Ta có : d (q0, 0) = {q0, q3} d (q0, 01) = d(d(q0, 0),1) = d({q0, q3},1) = d (q0, 1) È d (q3, 1) = {q0, q1} Tương tự , ta tính : d (q0, 010) = {q0, q3} d (q0, 0100) = {q0, q3, q4} d (q0, 01001) = {q0, q1, q4} Do q4 ∈ F nên w ∈ L (M) S ự t ươ ng đươ ng gi ữa DFA NFA Vì DFA NFA, nên rõ ràng lớp ngôn ngữ chấp nhận NFA bao gồm tập quy (đây ngôn ngữ chấp nhận DFA ) Tuy nhiên, sở để nói NFA chấp nhận tập hợp Điều cho thấy DFA mô hoạt động NFA, nghĩa với NFA, ta xây dựng DFA tương đương (chấp nhận ngôn ngữ với nó) Đặt DFA mô hoạt động NFA cho phép trạng thái DFA tương ứng với tập trạng thái NFA Tại thời điểm, DFA lưu giữ điều khiển tất trạng thái mà NFA chuyển đến đọc input DFA ĐỊNH LÝ 3.1 : Nếu L tập chấp nhận NFA tồn DFA chấp nhận L Chứng minh Đặt M (Q, Σ, δ, q0, F) NFA chấp nhận L Ta xây dựng DFA M' (Q’, Σ, δ’, q0’, F’) tương đương sau: - Các trạng thái M’ tất tập hợp tập trạng thái M, hay Q’= Q Tại thời điểm, M’ lưu giữ trạng thái tất trạng thái M Một phần tử Q’ ký hiệu [q 1, q2, , qi], trạng thái q 1, q2, , qi ∈ Q Ta xem [q1, q2, , qi] trạng thái đơn DFA tương ứng với tập trạng thái NFA - q0’ = [q0] - F' tập hợp trạng thái Q’ có chứa trạng thái kết thúc tập F M - Ta định nghĩa hàm chuyển δ’ sau : d’ ([q1, q2, , qi], a) = [p1, p2, , pj] δ ({q1, q2, , qi }, a) = {p1, p2, , pj} Bây ta chứng minh quy nạp theo độ dài chuỗi nhập x rằng: d ’( q ’ , x) = [q , q , , q i ] Û d ( q , x) = {q , q , , q i } ( ) Với  x  = , ta có x = ε q ’ = [q ] nên (1) hiển nhiên Giả sử (1) với chuỗi nhập có độ dài tới m Xét chuỗi nhập có độ dài m + 1, đặt chuỗi xa với a ∈ Σ , ta có : d ’( q ’ , xa) = d ’( d ’( q ’ , x), a) Theo định nghĩa : d ’([p , p , , p i ], a) = [r , r , , r k ] Û d ({p , p , , p j }, a) = {r , r , , r k } Mặt khác theo giả thiết quy nạp d ’( q ’ , x) = [p , p , , p j ] Û d (q , x) = {p , p , , p j }, nên thay vào ta có : d ’( q ’ , xa) = [r , r , , r k ] Û d ( q , xa) = {r , r , , r k } Dễ thấy d ’( q ’ , x) ∈ F' d (q , x) có chứa trạng thái ∈ F Vậy L(M) = L(M’) Vì NFA DFA chấp nhận tập hợp, nên ta không phân biệt chúng trừ điều thật cần thiết, đơn giản để hiểu hai ôtômát đơn định Thí dụ 3.5 : Cho NFA M ({q0, q1}, {0, 1}, d, q0, {q1}) với hàm chuyển d sau : d(q0, 0) = {q0, q1}, d(q0,1) = {q1}, d(q1, 0) = ∅ , d(q1, 1) = {q0, q1} Ta xây dựng DFA tương đương M’ (Q’, {0, 1}, d’, [q0], F’) chấp nhận L(M) sau : Q’ : chứa tất tập {q 0, q1}, Q’ = {[q0], [q1], [q0, q1], ∅ } Hàm chuyển d’ : Vì d(q0, 0) = {q0, q1} nên d’([q0], 0) = [q0, q1] Tương tự : d’([q0], 1) = [q1] d’([q1], 0) = ∅ d’([q1], 1) = [q0, q1] Mặt khác : d’( ∅ , 0) = d’( ∅ , 1) = ∅ Cuối : d’([q0, q1],0) = [q0, q1] ( d({q0, q1},0) = d(q0, 0) d(q1, 0) = {q0, q1} ∅ = {q0, q1}) d’([q0, q1], 1) = [q0, q1] ( d({q0, q1},1) = d(q0, 1) d(q1, 1) = {q1} {q0, q1} = {q0, q1}) Tập trạng thái kết thúc F' = {[q1], [q0, q1]} Thực tế, có nhiều trạng thái NFA hàm chuyển đến từ trạng thái bắt đầu [q 0] Do đó, thông thường, cách tốt ta nên xây dựng DFA tương đương trạng thái [q 0] thêm vào trạng thái cho DFA có hàm chuyển từ trạng thái thêm vào trước NFA với ε-dịch chuyển (NFAε) Ta mở rộng mô hình NFA cho phép phép chuyển nhãn rỗng ε Sơ đồ chuyển sau NFA chấp nhận chuỗi gồm số (có thể 0) chữ số sau số chữ số sau số chữ số Thông thường, ta nói NFA chấp nhận chuỗi w có đường truyền nhãn w từ trạng thái bắt đầu đến trạng thái kết thúc Chẳng hạn, chuỗi 002 chấp nhận đường truyền q0, q0, q0, q1, q2, q2 với cung nhãn 0, 0, ε, ε, Thí dụ 3.6 : Sơ đồ chuyển NFA với ε-dịch chuyển : Hình 3.4 - NFA với ε-dịch chuyển Định nghĩa: Một cách hình thức ta định nghĩa NFA với ε-dịch chuyển thành phần (Q, Σ, δ, q 0, F) với tất thành phần có ý nghĩa trên, hàm chuyển δ ánh xạ từ Q × (Σ {ε}) → 2Q Khái niệm δ(q, a) gồm tất trạng thái p cho có phép chuyển nhãn a từ q tới p, a ký hiệu thuộc Σ ε Hàm chuyển trạng thái mở rộng: Ta mở rộng hàm chuyển δ thành hàm chuyển δ * ánh xạ từ Q × Σ* → 2Q δ*(q,w) chứa tất trạng thái p cho từ q tới p theo đường nhãn w (có thể chứa cạnh nhãn ε) Ta sử dụng ε-CLOSURE(q) để xác định tập tất đỉnh p cho có đường từ q tới p với nhãn ε Thí dụ 3.7 : Trong hình 3.4, ε-CLOSURE(q0) = {q0, q1, q2} Vì đường có đỉnh q0 (không có cung đường đi) đường từ q tới q0 có tất cạnh nhãn ε Đường q0, q1chỉ q1 thuộc ε-CLOSURE(q0) Và đường q0, q1, q2 q2 thuộc ε-CLOSURE(q0) Đặt ε-CLOSURE(P) = ∪q∈Pε-CLOSURE(q), P tập trạng thái q trạng thái Ta định nghĩa hàm δ* sau: δ*(q, e) = e-CLOSURE(q) δ*(q, wa) = e-CLOSURE(P), tập P = {p | có r δ*(q, w) cho p ∈ δ(r, a)}, ∀w ∈ Σ* a ∈ Σ Hay δ*(q, wa) = e-CLOSURE(d(δ*(q, w), a) Ta mở rộng δ δ* tập hợp trạng thái R sau : δ (R, a) = q∈R δ(q, a), δ*(R, w) = q∈R δ*(q, w) Nhận xét : δ*(q, a) δ(q, a) không thiết δ *(q, a) gồm tất trạng thái chuyển đến từ q nhãn a gồm đường nhãn e, d(q, a) gồm trạng thái đến từ q cung nhãn a Tương tự δ *(q, e) không δ(q, e) Vì ta phải phân biệt ký hiệu δ δ* NFA với e-dịch chuyển Ngôn ngữ chấp nhận NFA ε : Ta định nghĩa L(M), ngôn ngữ chấp nhận NFAεM = (Q, Σ, δ, q0, F) tập hợp chuỗi : L(M) = {w | δ*(q0, w) có chứa trạng thái F} Thí dụ 3.8 : Xét sơ đồ chuyển hình 3.4 Theo khái niệm hình thức, ta có NFA M ({q0, q1, q2}, {0, 1, 2}, δ, q0, {q2}) với hàm chuyển δ sau : Xét chuỗi nhập w = 012 Ta cần tính δ*(q0, 012) Ta có : δ*(q0, e) = e-CLOSURE(q0) = {q0, q1, q2} δ*(q0, 0) = e-CLOSURE(δ(δ*(q0, e), 0) Do δ*(q0, 012) có chứa trạng thái q2 ∈ F nên chuỗi w ∈ L(M) Giải thuật mô hoạt động NFA ε : S ự t ươ ng đươ ng gi ữa NFA có e-dịch chuyển Tương tự NFA, khả thực phép chuyển nhãn e NFAe không làm cho NFAe chấp nhận tập hợp không quy Ta dẫn chứng điều cách mô hoạt động NFAe NFA e-dịch chuyển ĐỊNH LÝ 3.2 : Nếu L chấp nhận NFA có e -dịch chuyển L chấp nhận NFA e -dịch chuyển Chứng minh Đặt M (Q, Σ, δ, q0, F) NFA với e-dịch chuyển Ta xây dựng NFA M’(Q, Σ, δ’, q0, F’) tương đương e-dịch chuyển, đó: F {q0} e-CLOSURE(q0) chứa trạng thái thuộc F F’ = F trường hợp lại δ’(q, a) δ*(q, a) với q ∈ Q a ∈ Σ Chú ý M’ e-dịch chuyển nên ta dùng δ’ thay cho δ*’, phải phân biệt δ δ* Ta chứng minh quy nạp | x | δ’(q0, x) = δ*(q0, x) Tuy nhiên, điều không với x = e δ’(q0, e) = {q0} δ*(q0, e) = e-CLOSURE(q0) Do đó, sở quy nạp bắt đầu với độ dài chuỗi Với | x | = x ký hiệu a δ ’ (q, a) = δ * (q, a) theo định nghĩa δ ’ Xét | x | > 1: đặt x = wa với a ký hiệu Σ Ta có δ ’ (q, wa) = δ ’ ( δ ’ (q , w), a) Theo giả thiết quy nạp δ ’ (q , w) = δ * (q , w) Đặt δ * (q , w) = P, ta cần δ (P, a) = δ * (q , wa) Ta có δ ’ (P, a) = q ∈ P δ ’ (q, a) = q ∈ P δ * (q, a) Hơn P = δ * (q , w) nên q ∈ P δ * (q, a) = δ * (q , wa) ( theo quy tắc định nghĩa δ * ) Vậy δ ’(q , wa) = δ * (q , wa) Để đầy đủ chứng minh ta phải δ ’(q , x) chứa trạng thái F’ δ * (q , x) chứa trạng thái F Nếu x = e điều hiển nhiên (theo định nghĩa F’) Nếu x ≠ e ta đặt x = wa với a ∈ Σ Nếu δ * (q , x) chứa trạng thái F chắn δ ’(q , x) chứa trạng thái F’ Ngược lại, δ ’(q , x) chứa trạng thái F’ khác q δ (q , x) phải chứa trạng thái F (vì tập F F’ chênh lệch trạng thái q ) Nếu δ ’(q , x) có chứa trạng thái q q trạng thái thuộc tập trạng thái kết thúc F δ * (q , x) = e CLOSURE( δ( δ * (q , w),a)), nên trạng thái chung e -CLOSURE(q ) F phải δ * (q , x) Thí dụ 3.9 : Chuyển NFA với e-dịch chuyển hình 3.4 sang dạng NFA chứa e-dịch chuyển Ta xây dựng NFA tương đương M’(Q, Σ, δ’, q 0, F’) chấp nhận L(M) với thành phần : Q = {q 0, q1, q2} å = {0, 1, 2} Trạng thái bắt đầu : q0 F' = {q0, q2} e-CLOSURE(q0) = {q0, q1, q2} có chứa q2 ∈ F Hàm chuyển δ’ M’ xác định theo công thức : d’(q, a) = d*(q, a) = e-CLOSURE(d(d*(q0, e), a) Kết bảng hàm chuyển sau : Sơ đồ chuyển trạng thái: Hình 3.5 - NFA tương đương cho thí dụ 3.9 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ó 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 a1, 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 a 1a2 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 eclosure(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ừ q0 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 toán e-closure(T) xem 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 eclosure(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 : 10 11 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* ε-closure(δ(E, a)) = ε-closure({3, 8}) = B ε-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ố hoàn toà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ố toá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) 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ô trình tìm kiếm quay lui giải thuật không đơn định Không đơn định hữu hiệu việc giúp giải toán dễ dàng Chẳng hạn, số toá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 quát kết luận [...]... được xác định theo các phép chuyển trạng thái trên nhãn là mọi ký hiệu từ trạng thái bắt đẩu của DFA, và sau đó lần lượt được bổ sung thêm vào tập trạng thái nếu như nó chưa có trong đó Giải thuật chi tiết được trình bày như 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 cùng ngôn ngữ như NFA Phương pháp: Xây dựng bảng hàm chuyển cho DFA mô phỏng... năng trong chúng và đi theo hướng đó cho đến khi xác định hướng đó là tốt nhất hay chưa Nếu chưa phải là hướng tốt nhất, ta phải quay về điểm quy t định cuối cùng trước đó và thử khảo sát theo một hướng khác Một giải thuật mô phỏng quá trình tìm kiếm quay lui này là một giải thuật không đơn định Không đơn định đôi khi còn rất hữu hiệu trong việc giúp giải quy t các bài toán dễ dàng Chẳng hạn, trong một... δ*(q, a) với q ∈ Q và a ∈ Σ Chú ý rằng M’ không có e-dịch chuyển nên ta có thể dùng δ’ thay cho δ*’, nhưng phải phân biệt δ và δ* Ta chứng minh bằng quy nạp trên | x | rằng δ’(q0, x) = δ*(q0, x) Tuy nhiên, điều đó có thể không đúng với x = e vì δ’(q0, e) = {q0} trong khi δ*(q0, e) = e-CLOSURE(q0) Do đó, cơ sở quy nạp bắt đầu với độ dài chuỗi là 1 Với | x | = 1 thì x là một ký hiệu a và δ ’ (q, a) = δ... {q0, q1, q2} có chứa q2 ∈ F Hàm chuyển δ’ của M’ được xác định theo công thức : d’(q, a) = d*(q, a) = e-CLOSURE(d(d*(q0, e), a) Kết quả được chỉ ra trong bảng hàm chuyển sau : Sơ đồ chuyển trạng thái: Hình 3.5 - NFA tương đương cho thí dụ 3.9 Giải thuật xây d ựng DFA t ừ NFA Qua khảo sát các 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 là một trường hợp đặc biệt của NFA, nhưng... chuỗi nhập bất kỳ và trạng thái bắt đầu Một số gợi ý câu trả lời: Trong một số các bài toán mang tính chọn lựa, có nhiều hướng giải quy t (nhiều cách đi) như trong các chương trình trò chơi (games) thì thông thường hướng giải quy t tốt nhất (cách đi tốt nhất) là không biết trước được, nhưng có thể tìm thấy được bằng cách sử dụng chiến lược tìm kiếm quay lui (back-tracking) Khi có một vài khả năng chọn... ε-CLOSURE(q0) Và đường đi q0, q1, q2 chỉ ra rằng q2 thuộc ε-CLOSURE(q0) Đặt ε-CLOSURE(P) = ∪q∈Pε-CLOSURE(q), trong đó P là một tập các trạng thái và q là một trạng thái Ta định nghĩa hàm δ* như sau: 1 δ*(q, e) = e-CLOSURE(q) 2 δ*(q, wa) = e-CLOSURE(P), trong đó tập P = {p | có r trong δ*(q, w) sao cho p ∈ δ(r, a)}, ∀w ∈ Σ* và a ∈ Σ Hay δ*(q, wa) = e-CLOSURE(d(δ*(q, w), a) Ta mở rộng δ và δ* trên tập... a) = q∈R δ(q, a), và 4 δ*(R, w) = q∈R δ*(q, w) Nhận xét : δ*(q, a) và δ(q, a) không nhất thiết bằng nhau vì δ *(q, a) gồm tất cả các trạng thái có thể chuyển đến được từ q trên nhãn a gồm cả đường đi nhãn e, trong khi đó d(q, a) chỉ gồm các trạng thái có thể đến được từ q chỉ bằng các cung nhãn a Tương tự δ *(q, e) có thể cũng không bằng δ(q, e) Vì vậy ta phải phân biệt ký hiệu δ và δ* đối với NFA.. .và sau nữa là một số bất kỳ chữ số 2 Thông thường, ta nói NFA chấp nhận một chuỗi w nếu có đường truyền nhãn w từ trạng thái bắt đầu đến một trạng thái kết thúc Chẳng hạn, chuỗi 002 được chấp nhận bởi đường truyền q0, q0, q0, q1, q2, q2 với các cung nhãn 0, 0, ε, ε, 2 Thí dụ 3.6 : Sơ đồ chuyển của một NFA với ε-dịch chuyển : Hình 3.4 - NFA với ε-dịch chuyển Định nghĩa: Một cách hình thức ta... : Ta xây dựng các trạng thái và bảng hàm chuyển cho DFA theo cách như sau : - Mỗi trạng thái của DFA tượng trưng bởi một tập trạng thái của NFA mà NFA có thể chuyển đến sau khi đọc một chuỗi ký hiệu nhập gồm: tất cả sự truyền rỗng có thể xảy ra trước hoặc sau các ký hiệu được đọc - Trạng thái bắt đầu của DFA là e-closure(q0) - Các trạng thái và hàm chuyển sẽ được thêm vào D bằng giải thuật trên - Một... thiết quy nạp thì δ ’ (q 0 , w) = δ * (q 0 , w) Đặt δ * (q 0 , w) = P, ta cần chỉ ra rằng δ (P, a) = δ * (q 0 , wa) Ta có δ ’ (P, a) = q ∈ P δ ’ (q, a) = q ∈ P δ * (q, a) Hơn nữa vì P = δ * (q 0 , w) nên q ∈ P δ * (q, a) = δ * (q 0 , wa) ( theo quy tắc 2 trong định nghĩa δ * ) Vậy δ ’(q 0 , wa) = δ * (q 0 , wa) Để đầy đủ chứng minh ta còn phải chỉ ra rằng δ ’(q 0 , x) chứa một trạng thái trong F’ nếu và ... Ôt mát hữu hạn (FA) chia thành loại: đơn định (DFA) không đơn định (NFA) Cả hai loại ôt mát hữu hạn có khả nhận dạng xác tập quy Ôt mát hữu hạn đơn định có khả nhận dạng ngôn ngữ dễ dàng ôt mát. .. ôt mát hữu hạn không đơn định, thay vào thông thường kích thước lại lớn so với ôt mát hữu hạn không đơn định tương đương Ôt mát h ữu hạn đơn định - DFA (Deterministic Finite Automata) Một ôt mát hữu. .. DFA cần dùng số hữu hạn trạng thái Định nghĩa Một cách hình thức ta định nghĩa ôt mát hữu hạn gồm năm thành phần (Q, Σ, δ, q 0, F), : Q tập hợp hữu hạn trạng thái Σ chữ nhập hữu hạn δ hàm chuyển

Ngày đăng: 28/03/2016, 01:16

TỪ KHÓA LIÊN QUAN

w