GIÁO TRÌNH AUTOMAT VÀ NGÔN NGỮ HÌNH THỨC.PGS.TS.Nguyễn Văn Định

44 19 0
GIÁO TRÌNH AUTOMAT VÀ NGÔN NGỮ HÌNH THỨC.PGS.TS.Nguyễn Văn Định

Đ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

Chương OTOMAT HỮU HẠN VÀ NGƠN NGỮ CHÍNH QUY Trong chương này, nghiên cứu mô hình “máy trừu tượng” để đốn nhận ngơn ngữ, otomat hữu hạn Chương gồm nội dung sau: 3.1 Otomat hữu hạn đơn định  Ngôn ngữ đoán nhận otomat đơn định 3.2 Otomat hữu hạn khơng đơn định  Ngơn ngữ đốn nhận otomat khơng đơn định  Đơn định hóa otomat  Sự tương đương otomat đơn định khơng đơn định 3.3 Ngơn ngữ quy biểu thức quy  Sự liên hệ otomat hữu hạn ngơn ngữ quy  Sự liên hệ otomat hữu hạn biểu thức quy  Điều kiện cần ngơn ngữ quy 73 3.1 OTOMAT HỮU HẠN ĐƠN ĐỊNH Một otomat hữu hạn (Finite Automata-FA) mơ hình tính tốn thực hữu hạn với mơ tả q trình tính tốn input (đầu vào) output (đầu ra) Tại thời điểm, hệ thống xác định số cấu hình nội tại, gọi trạng thái (state status) 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 hệ thống, xác định trạng thái dãy input Mọi liên quan đến otomat hữu hạn có kích thước hữu hạn, cố định, khơng thể mở rộng suốt q trình tính toán Các loại otomat khác nghiên cứu sau có nhớ vơ hạn tiềm Sự phân biệt loại otomat khác chủ yếu dựa việc thơng tin lưu trữ nhớ Một otomat hữu hạn làm việc theo thời gian rời rạc, vậy, ta nói thời điểm “kế tiếp” đặc tả hoạt động otomat hữu hạn Tuy nhiên, nói chung, thơng tin (output) sản sinh otomat hữu hạn phụ thuộc vào thông tin vào lẫn thông tin vào trước Như otomat có khả (với phạm vi đó) ghi nhớ thơng tin vào khứ Một cách chi tiết hơn, điều có nghĩa sau: Mỗi otomat hữu hạn có số hữu hạn trạng thái lưu nhớ trong, thời điểm i, trạng thái đó, chẳng hạn qi Trạng thái qi+1 thời điểm sau xác định qi thông tin vào cho thời điểm i Thông tin thời điểm i xác định trạng thái qi (hay qi) Vì vậy, otomat hữu hạn cịn gọi “máy trạng thái” 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 otomat hữu hạn cơng cụ thiết kế hữu ích cho hệ thống Chẳng hạn, trường hợp đơn giản thiết bị khơng có nhớ mà thời điểm, thông tin phụ thuộc vào thơng tin vào lúc Các thiết bị mơ hình mạch tổ hợp Hay phức tạp hơn, trạng thái hệ thống chuyển mạch với n cổng vào 2n phép gán với giá trị input, vậy, chuyển mạch xem hệ thống trạng thái hữu hạn Các máy tính đại ngày máy trạng thái hữu hạn, trạng thái xử lý trung tâm, nhớ thiết bị lưu trữ liên quan thời điểm số lớn hữu hạn số trạng thái Và não người xem hệ thống trạng thái hữu hạn, số nơ ron thần kinh số có giới hạn, số không vượt 235 74 Các otomat hữu hạn chia làm hai loại: otomat hũu hạn đơn định (Deterministic Finite Automata-DFA) otomat hữu hạn không đơn đinh (Non deterministic Finite Automata-NFA), có khả đốn nhận ngơn ngữ quy, lớp ngơn ngữ có khả ứng dụng lớn việc xây dựng ngơn ngữ lập trình Otomat đơn định có khả đốn nhận ngơn ngữ dễ dàng so với otomat không đơn định, otomat không đơn định lại có ưu điểm thuờng có cấu trúc đơn giản Điều quan trọng lớp ngơn ngữ đốn nhận hai loại otomat tương đương Dưới nghiên cứu hai loại otomat 3.1.1 Định nghĩa otomat hữu hạn đơn định Định nghĩa 3.1 Một otomat hữu hạn đơn định (Deterministic Finite Automata-DFA) năm: A = < Q, , , q0, F > đó: Q tập hữu hạn khác rỗng, gọi tập trạng thái (set of states);  bảng chữ cái, gọi bảng chữ vào (input alphabet); : D Q, ánh xạ từ D  Q ×  vào Q, gọi hàm chuyển trạng thái (transition function); q0  Q, gọi trạng thái khởi đầu (starting state); F  Q gọi tập trạng thái kết thúc (final states) Nếu D = Q × , tức hàm hai biến (q, a) xác định với cặp giá trị (q, a), với q  Q, a   ta nói A otomat đầy đủ, trái lại, có cặp giá trị (q, a) mà hàm chuyển (q, a) khơng xác định, otomat A gọi khơng đầy đủ Sau ta thấy otomat hữu hạn đưa otomat hữu hạn đầy đủ tương đương Hoạt động otomat hữu hạn đơn định A = với xâu vào  = a1a2… an mơ tả sau: Khi bắt đầu làm việc, otomat trạng thái khởi đầu q0 đầu đọc nhìn vào có ký hiệu a1 Tiếp theo, tác động ký hiệu vào a1, otomat chuyển từ trạng thái q0 trạng thái q1 xác định hàm chuyển, tức (q0, a1) = q1 Q, đầu đọc chuyển sang phải ơ, tức nhìn vào có ký hiệu a2 Sau otomat A lại tiếp 75 tục chuyển từ trạng thái q1 nhờ hàm chuyển  trạng thái q2 = (q1, a2) Q trình tiếp tục gặp tình sau: a) Otomat A đọc hết xâu vào  chuyển sang trạng thái qn, tức A trạng thái qn-1, đọc ký hiệu cuối an có (qn-1,an) = qn , qn F, ta nói A đốn nhận xâu , trái lại qn F ta nói otomat A khơng đốn nhận xâu  b) Hoặc otomat A trạng thái qi đó, đọc đến ký hiệu aj xâu vào, (j  n) hàm chuyển (qi , aj) khơng xác định, otomat A dừng, ta nói A khơng đốn nhận xâu  Chú ý A otomat đầy đủ tình a) ln xảy ra, tức xâu  ln đọc hết, cịn tình b) xảy A otomat khơng đầy đủ Hình 3.1 mơ tả q trình đốn nhận xâu  với tình otomat A đọc hết xâu vào  chuyển vể trạng thái qn Khi qn F, ta nói A đốn nhận xâu , trái lại qn F ta nói otomat A khơng đốn nhận xâu  Xâu vào  = a1 a2 a3 q0 q1 q2 an-1 … qn-2 an qn-1 qn Hình 3.1 Mơ tả q trình đoán nhận xâu  otomat A 3.1.2 Biểu diễn otomat hữu hạn đơn định Hàm chuyển trạng thái phận quan trọng otomat hữu hạn đơn định Cho otomat thực chất cho hàm chuyển trạng thái nó, cho dạng bảng chuyển cho dạng đồ thị chuyển Ứng với cách cho hàm chuyển, ta có cách biểu diễn otomat Biểu diễn otomat bảng chuyển trạng thái Cho ôtômát A = , với Q = {q0, q1, q2,…, qm} tập trạng thái, bảng chữ  = {a1, a2,…, an}, hàm chuyển cho bảng gồm m+1 hàng n cột; (i, j) nằm dòng i cột j bảng ghi giá trị hàm chuyển (qi,aj), ô (i, j) trống (hoặc ghi kí hiệu Ø) (qi,aj) không xác định Cho bảng chuyển trạng thái, rõ tập trạng thái kết thúc F, quy ước q trạng thái khởi đầu, ta hoàn toàn xác định otomat A Bảng chuyển trạng thái otomat A có dạng sau: 76 Ký hiệu vào Trạng thái a1 a2 … an q0 (q0, a1) (q0, a2) … (q0, an) q1 (q1, a1) (q1, a2) … (q1, an) q2 (q2, a1) (q2, a2) … (q2, an) … … … … … qm (qm, a1) (qm, a2) … (qm, an) Hình 3.2 Bảng chuyển trạng thái otomat A Biểu diễn otomat đồ thị chuyển trạng thái Cho otomat A = Hàm chuyển  cho đa đồ thị có hướng, có khuyên G, gọi đồ thị chuyển trạng thái (hay đồ thị chuyển) otomat A Tập đỉnh G gán nhãn phần tử thuộc Q, cung gán nhãn phần tử thuộc , tức a từ trạng thái q chuyển sang trạng thái p theo cơng thức (q, a) = p có cung từ đỉnh q tới đỉnh p gán nhãn a Đỉnh vào đồ thị chuyển đỉnh ứng với trạng thái ban đầu q0 Các đỉnh khoanh vòng tròn, đỉnh xuất phát q0 có mũi tên vào, riêng đỉnh với trạng thái kết thúc phân biệt vòng tròn đậm, hình vng… Việc cho đồ thị chuyển với quy ước hoàn toàn xác định otomat A Thí dụ 3.1: Cho hai otomat hữu hạn đơn định:  A1 = , Với (q0, a) = q0, (q0, b) = q1, (q1, a) = q0, (q1, b) = q2, (q2, a) = q2, (q2, b) = q2 Ta có bảng chuyển trạng thái đồ thị chuyển trạng thái otomat A1 cho hình 3.3 3.4: Trạng thái q0 q1 q2 Ký hiệu vào a b q0 q1 q0 q2 q2 q2 Hình 3.3 Bảng chuyển trạng thái A1 77 a b q0 b q1 q2 a a b Hình 3.4 Đồ thị chuyển trạng thái A1 Dãy trạng thái otomat A1 q trình đốn nhận xâu vào = ababbab là: a b a b b a b q0 q0 q1 q0 q1 q2 q2 q2  F Hình 3.5 Quá trình đốn nhận xâu  = ababbab A1 Như vậy, xâu  đoán nhận otomat A1  A2 = , (q0, 0) = q2, (q0, 1) = q1, (q1, 0) = q3, (q1, 1) = q0, (q2, 0) = q0, (q2, 1) = q3, (q3, 0) = q1, (q3, 1) = q2 Ta có bảng chuyển trạng thái đồ thị chuyển trạng thái otomat A2 cho hình 3.6 3.7: Trạng thái q0 q1 q2 q3 Ký hiệu vào q2 q1 q3 q0 q0 q3 q1 q2 Hình 3.6 Bảng chuyển trạng thái otomat A2 q1 q0 0 0 q3 q2 Hình 3.7 Đồ thị chuyển trạng thái otomat A2 78 Dãy trạng thái otomat A2 q trình đốn nhận xâu vào  = 1010100 mơ tả hình 3.8 đây: Hình 3.8 Q trình đốn nhận xâu vào  = 1010100 Như vậy, otomat A2 không chấp nhận xâu  Ta mơ tả q trình đốn nhận xâu vào otomat hữu hạn đơn định đầy đủ A thuật tốn mơ sau: Input : Một xâu , kết thúc ký hiệu kết thúc file eof Một otomat hữu hạn đơn định đầy đủ A với trạng thái khởi đầu q0 tập trạng thái kết thúc F Output: Trả lời “Đúng” A đoán nhận xâu  Trả lời “Sai” A khơng đốn nhận xâu  Thuật toán: Begin S := q0; C := ký hiệu ; While C < > eof begin S:= (S, C); C:= ký hiệu tiếp theo; end; if S in F return (True) else return (False); End 79 3.1.3 Ngơn ngữ đốn nhận otomat đơn định Để mơ tả hình thức q trình đốn nhận từ (xâu vào), người ta đưa vào ánh xạ mở rộng ’ từ Q × * vào Q định nghĩa sau: Định nghĩa 3.2 Cho otomat hữu hạn đơn định A = Mở rộng ’  ánh xạ từ Q × * vào Q xác định sau: ’(q, ) = q, q Q, ’(q, φa) = (’(q, φ), a), a , q Q,  = φa * cho ’(q, φ) xác định Chú ý rằng, ánh xạ  khác ánh xạ ’ ký hiệu vào , xâu kí hiệu vào , điều kiện 2., Q × , ta đồng ’ với  Nếu không cần phân biệt, từ sau ta viết  thay cho ’, hiểu ánh xạ  miền Q × , hiểu ánh xạ ’ miền Q × * Định nghĩa 3.3 Cho otomat hữu hạn đơn định A = , xâu  * Ta nói  đoán nhận A (q0, ) F Tập hợp tất từ đoán nhận otomat A gọi ngơn ngữ đốn nhận otomat A, ký hiệu T(A), vậy: T(A) = { * | (q0, ) F} Từ định nghĩa trên, ta thấy đồ thị chuyển A, xâu   * đoán nhận A  xâu nhãn ứng với đường từ đỉnh q0 đến đỉnh kết thúc Cụ thể,  = a1a2… ak đường (q0, q1,…, qk) với cung (qi-1, qi) có nhãn (với  i  k) qk  F Như vậy, T(A) tập hợp tất xâu ghi đường từ q0 đến đỉnh kết thúc otomat A Bổ đề 3.1 Cho otomat hữu hạn đơn định A = Khi 1, 2 *, q Q cho (q, 12) xác định, ta có: (q, 12) = ((q, 1), 2) (1) Chứng minh: Ta chứng minh đẳng thức quy nạp theo độ dài 2 Khi |2| = hay 2 = a, a  , ta có (q, 1a) = ((q, 1),a) Đẳng thức (1) 80 Giả sử đẳng thức (1) với 2 có độ dài |2|  n Ta cần chứng minh với 2 có độ dài |2| = n + Đặt 2 = ’2a, với ’2 *, |’2| = n, a  Ta có (q, 12) = (q, 1’2a) = ((q, 1’2), a) = (((q, 1), ’2), a) = ((q, 1), ’2a) = ((q, 1), 2) Do đẳng thức (1) với 2 có độ dài n + Bổ đề chứng minh Chú ý: Với otomat hữu hạn đơn định A = bất kỳ, ta ln xây dựng otomat hữu hạn đơn định đầy đủ A’ tương đương với A Thật vậy, lấy S Q (do S F), đặt Q’= Q  {S} ’: Q’ x  Q’ xác định bởi: q Q, a , ’(q, a) = (q, a) (q, a) xác định, ’(q, a) = S (q, a) không xác định ’(S, a) = S Khi A’ otomat hữu hạn đơn định đầy đủ mà T(A’) = T(A) Ta thường chọn S = , không cần bổ sung S vào Q Trên đồ thị chuyển otomat đơn định đầy đủ thể hiện: với đỉnh (gán nhãn trạng thái) có số cung khỏi đỉnh số ký hiệu bảng chữ cái, cung khác gán nhãn chữ khác Chẳng hạn, otomat A1 A2 thí dụ 3.1 otomat đơn định đầy đủ 3.2 OTOMAT HỮU HẠN KHÔNG ĐƠN ĐỊNH 3.2.1 Định nghĩa otomat hữu hạn không đơn định Định nghĩa 3.4 Otomat hữu hạn không đơn định (Nondeterministic Finite Automata-NFA) năm: A = Q, , q0, F định nghĩa DFA, riêng hàm chuyển trạng thái ánh xạ khơng đơn định : Q ×   2Q, 2Q ký hiệu tập tất tập Q Ở ánh xạ  hàm đa trị, cho kết tập trạng thái, tức q  Q, a   (q, a) = {p1, p2,… pk}  Q (hàm khơng đơn định), otomat A định nghĩa gọi không đơn định Trong trường hợp (q, a) xác định q Q, a , ta nói otomat A đầy đủ 81 Nếu (q, a) = {p1, p2,…, pk} ta nói otomat A trạng thái q gặp ký hiệu a chuyển đến trạng thái p1, p2,…, pk Nếu (q, a) = {p} trạng thái q gặp ký hiệu a, otomat A chuyển đến trạng thái p, trường hợp giống otomat hữu hạn đơn định Như vậy, ta thấy otomat hữu hạn đơn định coi otomat hữu hạn khơng đơn định đặc biệt, với kết hàm chuyển (q, a) tập gồm trạng thái Nếu (q, a) không xác định (ta thường viết (q, a) =  ) trạng thái q gặp ký hiệu a, otomat A chuyển đến trạng thái nào, otomat dừng, (tương tự với DFA) Hoạt động otomat hữu hạn không đơn định A = cho xâu vào  = a1a2… an mơ tả sau: Khi bắt đầu làm việc, otomat trạng thái khởi đầu q0 đầu đọc nhìn vào có ký hiệu a1 Từ trạng thái q0, tác động ký hiệu vào a1, (q0, a1) = {p1,…, pk}, otomat xác định trạng thái trạng thái p1,…, pk đầu đọc chuyển sang phải ơ, tức nhìn vào có ký hiệu a2 Tiếp tục với pi (1 i  k) ký hiệu a2, trạng thái đến (p1, a2)…(pk, a2) Q trình tiếp tục gặp tình sau: a) Otomat A đọc hết xâu vào  chuyển sang tập trạng thái Q’, có hai khả năng: (i) Nếu Q’F  , ta nói otomat A đoán nhận  (ii) Nếu Q’ F = , ta nói A khơng đốn nhận  b) Hoặc bước i-1, có (qi-1, aj-1) = {p1,…, pk}= Q’, mà pi  Q’, hàm chuyển (qi , aj) không xác định, otomat A dừng, ta nói A khơng đốn nhận xâu  Chú ý A otomat đầy đủ tình a) ln xảy ra, tức xâu  ln đọc hết, cịn tình b) xảy A otomat không đầy đủ Một otomat hữu hạn không đơn định biểu diễn dạng bảng chuyển đồ thị chuyển trường hợp otomat hữu hạn đơn định Nếu (q, a) = {p1, p2,…, pk} đồ thị chuyển có k cung từ q sang p1, , pk ghi nhãn a Thí dụ 3.2: Cho otomat hữu hạn khơng đơn định: A = , Với (q0,0) = {q0,q3}, (q0, 1) = {q0,q1}, (q1, 0) = , (q1, 1) = {q2}, (q2, 0) = {q2}, (q2, 1) = {q2}, (q3, 0) = {q4}, (q3,1) = , (q4, 0) = {q4}, (q4, 1) = {q4} 82 Hãy xây dựng văn phạm quy sinh ngơn ngữ đốn nhận otomat A Từ đồ thị chuyển, ta xác định otomat A = , với hàm chuyển xác định sau: (q0, 0) = q1; (q1, 0) = q1; (q1, 1) = q2, (q2, 1) = q2 Theo thuật toán định lý 3.6, ta xây dựng văn phạm quy: G = , với tập quy tắc sinh sau: q0 0q1, P: q1 0q1 | 1q2 | 1, q2 1q2 | Dễ dàng kiểm tra L(G) = T(A) = {0n1m | với m, n ≥ 1} Thí dụ 3.13: Cho otomat hữu hạn đơn định A = , đó: (q0, 0) = q1; (q1, 0) = q2; (q1, 1) = q0, (q2, 1) = q0 Hãy xây dựng văn phạm quy sinh ngơn ngữ đốn nhận otomat A Ta có đồ thị chuyển otomat A là: q0 q1 q2 Hình 3.25 Đồ thị chuyển otomat A thí dụ 3.13 Dễ thấy L = T(A) = {(01)n00, {00 | {01, 001}*} Ta xây dựng văn phạm G = theo quy tắc định lý  = {q0, q1, q2}, S = q0 , Tập quy tắc P = {q0  0q1, q1 0q2, q1 0, q1 1q0, q2 1q0 } 102 Như G văn phạm quy, dễ thấy L(G) = L, L ngôn ngữ quy 3.3.3 Sự liên hệ otomat hữu hạn biểu thức quy Định lý 3.7 Cho r biểu thức quy, tồn otomat hữu hạn không đơn định M đốn nhận ngơn ngữ quy xác định r, tức T(M) = L(r) Chứng minh Dựa định nghĩa biểu thức quy, ta xây dựng thuật tốn để xác định otomat khơng đơn định M từ biểu thức quy tương ứng sau: r =  Otomat M cần xây dựng có trạng thái q0 qf với đồ thị chuyển sau: q0  qf Hình 3.26 Đồ thị chuyển otomat tương ứng với biểu thức quy r =  r =  Otomat M cần xây dựng có trạng thái q0 qf với đồ thị chuyển sau: q0  qf Hình 3.27 Đồ thị chuyển otomat tương ứng với biểu thức quy r =  r = a Otomat M cần xây dựng có trạng thái q0 qf với đồ thị chuyển sau: q0 a qf Hình 3.28 Đồ thị chuyển otomat tương ứng với biểu thức quy r = a Giả sử xây dựng otomat M, M1 M2 tương ứng với biểu thức quy r, r1 r2, ta xây dụng otomat tương ứng với biểu thức quy r1 + r2 ; r1.r2 r* sau : a Otomat ứng với r1 + r2, ký hiệu M1  M2, xây dựng theo sơ đồ hình 3.29 Trong sơ đồ này, M1 otomat tương ứng với biểu thức quy r1 với q1 f1 trạng thái khởi đầu kết thúc M1 Tương tự, M2 otomat tương ứng với biểu thức quy r2 với q2 f2 trạng thái khởi đầu kết thúc M2 103 Để xây dựng otomat M1  M2, ta thêm vào trạng thái q0 làm trạng thái xuất phát trạng thái qf làm trạng thái kết thúc otomat này, thêm cung rỗng nối trạng thái với otomat cho Một xâu đoán nhận otomat hợp M1  M2 đốn nhận M1 đốn nhận M2, tức xâu thuộc L(r1)  L(r2), tương ứng với biểu thức quy r1 + r2 Do vậy, T(M1  M2) = L(r1 + r2)  q0  L(r1 q1) M1 f f1  qf  q2 M2 f2 L(rf2) Hình 3.29 Đồ thị chuyển otomat tương ứng với biểu thức quy r = r1 + r2 b Otomat ứng với r1 r2, ký hiệu M1.M2, xây dựng theo sơ đồ sau: q1 f1 L(r1) M1  L(r2) q2 f2 f1 Mf22 Hình 3.30 Đồ thị chuyển otomat tương ứng với biểu thức quy r = r1 r2 Trong sơ đồ trên, M1 otomat tương ứng với biểu thức quy r1 với q1 f1 trạng thái khởi đầu kết thúc M1 Tương tự, M2 otomat tương ứng với biểu thức quy r2 với q2 f2 trạng thái khởi đầu kết thúc M2 Để xây dựng otomat M1.M2, ta chọn trạng thái xuất phát q1 M1 làm trạng thái xuất phát otomat tích ghép, chọn trạng thái kết thúc f2 otomat M2 làm trạng thái kết thúc otomat Dễ thấy T(M1.M2) = L(r1.r2) c Otomat ứng với r*, ký hiệu M* , xây dựng theo sơ đồ sau:  q0  q f M  qf L(r)  Hình 3.31 Đồ thị chuyển otomat tương ứng với biểu thức quy r = r* Trong sơ đồ trên, M otomat tương ứng với biểu thức quy r với q f trạng thái khởi đầu kết thúc M Để xây dựng otomat M*, ta thêm vào trạng thái q0 làm trạng thái xuất phát trạng thái qf làm trạng thái kết thúc otomat mới, thêm cung rỗng nối trạng thái với otomat ban đầu, tạo nên ngôn ngữ lặp 104 Trong otomat hình 3.31, ta bỏ cung rỗng nối từ q0 đến qf , ta nhận otomat M+, tương ứng với biểu thức quy r+ Các thuật tốn định lý cịn gọi thuật toán Thompson, cho phép xây dựng otomat hữu hạn không đơn định từ biểu thức quy (Obtain NFA from Regular Expression) Thí dụ 3.14: Xây dựng otomat hữu hạn không đơn định (NFA) đốn nhận ngơn ngữ L gồm xâu bảng chữ {a, b}, bắt đầu ‘ab’ Dễ thấy biểu thức quy tương ứng L : r = ab(a+b)* Dựa biểu thức quy r , áp dụng thuật tốn Thompson ta xây dụng otomat tương ứng với r theo bước đây, ý sau bước trạng thái xuất phát trạng thái kết thúc thay đổi Để cho gọn, ta dùng chữ số để ký hiệu trạng thái Bước 1: Xây dựng otomat tương ứng với biểu thức quy ‘a’: a Bước 2: Xây dựng otomat tương ứng với biểu thức quy ‘b’: b Bước 3: Xây dựng otomat tương ứng với biểu thức quy ‘a + b’:  a   b  Bước 4: Xây dựng otomat tương ứng với biểu thức quy (a + b)*:    a   b    Bước 5: Xây dựng otomat tương ứng với biểu thức quy ‘ab’: 105 a b Bước 6: Nhân ghép otomat bước với otomat xây dựng bước 4, ta otomat cuối M, với trạng thái xuất phát 0, trạng thái kết thúc  a b   a   b    Hình 3.32 Đồ thị chuyển otomat M tương ứng với biểu thức quy r = ab(a+b)* Theo cách xây dựng trên, otomat M tương đương với biểu thức quy r = ab(a+b)* Dễ dàng thấy : T(M) = {ab | với   {a, b}*} Chú ý Ta rút gọn otomat để otomat tương đương : Khi đỉnh q có cung rỗng (cung ghi ký hiệu ) tới đỉnh kết thúc p đỉnh q coi đỉnh kết thúc, xóa bỏ cung rỗng từ q tới p Khi đỉnh trở thành đỉnh lập xóa bỏ đỉnh khỏi đồ thị chuyển, xóa bỏ trạng thái đỉnh khỏi otomat Một ngơn ngữ quy có chứa từ rỗng , otomat tương ứng, trạng thái xuất phát coi đồng thời trạng thái kết thúc Thí dụ 3.15: Xây dựng otomat hữu hạn không đơn định (NFA), biểu thức quy văn phạm quy xác định số ngôn ngữ : L0 = {}, với  = {0, 1}:  Otomat chấp nhận ngôn ngữ L0 có đồ thị chuyển định lý 3.7 (H.3.27), gộp trạng thái thành q0, vừa trạng thái khởi đầu, vừa trạng thái kết thúc : q0  Biểu thức quy xác định ngôn ngữ L0 = {} r0 =   Văn phạm quy sinh ngơn ngữ L0 = {} : G0 = 106 L1 = * , với  = {0, 1} :  Otomat chấp nhận ngôn ngữ L1 có đồ thị chuyển sau, q0 vừa trạng thái khởi đầu, vừa trạng thái kết thúc : q0  Biểu thức quy xác định ngôn ngữ L1 = * : r1 = (0+1)*  Văn phạm quy sinh ngơn ngữ L1 = * là: G1 = Theo cách rút gọn đây, otomat M thí dụ 3.14 tương đương với otomat có đồ thị chuyển sau : a q0 a q1 b q2 b Hình 3.33 Đồ thị chuyển rút gọn otomat M thí dụ 3.14 Kết luận Từ định lý ta có kết luận liên hệ otomat hữu hạn ngơn ngữ quy sau: 1/ Gọi LD lớp ngơn ngữ đốn nhận otomat hữu hạn đơn định, LN lớp ngôn ngữ đốn nhận otomat hữu hạn khơng đơn định LR lớp ngơn ngữ quy Định lý 3.2 cho biết LD = LN, Định lý 3.5 cho biết LR  LN, Định lý 3.6 cho biết LD  LR , Vậy LD = LN = LR , tức lớp ngôn ngữ sinh otomat đơn định, lớp ngôn ngữ sinh otomat không đơn định lớp ngôn ngữ quy trùng 2/ Ngơn ngữ L quy khi: a/ Tồn biểu thức quy biểu diễn L, b/ Tồn văn phạm quy sinh ngơn ngữ L, c/ Tồn otomat hữu hạn đoán nhận L 107 Thí dụ 3.15: Cho ngơn ngữ quy L = {01n, 021 | n  1}, ta L có cách xác định sau:  Biểu thức quy biểu diễn L là: r = 01*1+021  Văn phạm quy sinh ngơn ngữ L: G =  Otomat hữu hạn A đốn nhận L có đồ thị chuyển là: q2 q1 q0 q4 q3 Hình 3.34 Đồ thị chuyển otomat A thí dụ 3.15 3.4 ĐIỀU KIỆN CẦN CỦA NGƠN NGỮ CHÍNH QUY Khi ngơn ngữ đoán nhận otomat hữu hạn, sinh văn phạm quy, xác định biểu thức quy ngơn ngữ quy Như việc chứng minh ngơn ngữ quy dễ dàng cách xác định cách Tuy nhiên, để khẳng định ngôn ngữ L khơng phải ngơn ngữ quy lại không đơn giản Dù ta không xây dựng otomat hữu hạn, văn phạm quy hay biểu thức quy để xác định L, ta kết luận ngôn ngữ ngơn ngữ quy, ta khơng thể khẳng định không tồn văn phạm quy hay otomat hữu hạn sinh L Như vậy, cần có tiêu chuẩn để vào kết luận ngơn ngữ khơng phải ngơn ngữ quy, tiêu chuẩn điều kiện cần ngơn ngữ quy 3.4.1 Otomat tối tiểu Cùng ngơn ngữ quy L, có nhiều otomat hữu hạn đốn nhận Tuy nhiên, số đó, trước hết quan tâm đến otomat có số trạng thái đốn nhận ngơn ngữ L Dưới đưa định nghĩa thí dụ otomat tối tiểu, mà khơng trình bày thuật tốn tìm otomat tối tiểu 108 Định nghĩa 3.10 Otomat có số trạng thái otomat hữu hạn đoán nhận ngôn ngữ L gọi otomat tối tiểu ngôn ngữ L Nhận xét: Dễ thấy với ngơn ngữ L, otomat tối tiểu khơng Thí dụ 3.16: Giả sử ta có otomat M = , với Q = {t0, t1, t2, t3} (t0, a) = t0, (t0, b) = t2, (t1, a) = t2, (t1, b) = t3, (t2, a) = t2, (t2, b) = t2, (t3, a) = t3, (t3, b) = t3 F = {t1, t2} otomat M đơn định, có trạng thái có đồ thị chuyển sau: a a t0 b t2 b a t1 b a t3 b Hình 3.35 Đồ thị chuyển otomat M thí dụ 3.16 Dễ thấy otomat M đốn nhận ngơn ngữ: L = T(M) = {anb | n0,  {a, b}*} Nhìn vào đồ thị chuyển M, ta thấy khơng có đường từ t đến đỉnh kết thúc t1, otomat M tương đương với otomat M’ có đồ thị chuyển sau: a t0 b a t1 b Hình 3.36 Đồ thị chuyển otomat tối tiểu M’ thí dụ 3.16 109 Rõ ràng otomat M’ đốn nhận ngơn ngữ L = T(M’) = {anb | n0,  {a, b}*}, M’ có hai trạng thái otomat tối tiểu ngôn ngữ L = {a nb | n0,  {a, b}*} 3.4.2 Điều kiện cần ngơn ngữ quy Định lý 3.7 Nếu L ngơn ngữ quy tồn số nguyên dương n cho với  L mà | |  n phân tích dạng  = uvw, (với |v|  hay v  ) mà với số i = 0, 2,… ta có uviw L Chứng minh: Vì L ngơn ngữ quy, tồn otomat hữu hạn đốn nhận Giả sử L = T(A) , với A = otomat tối tiểu có n trạng thái, tức |Q| = n Ta chứng minh n số tự nhiên cần tìm Giả sử  = a1a2…am L với m  n Khi ta có (q0, ) F, tức q0, q1…, qm  Q cho (qi-1, ai) = qi, 1 i  m qm F Do m  n nên dãy q0, q1, …, qm có hai trạng thái trùng nhau, giả sử qi = qk, i < k  n, (với k số nhỏ mà ta có qi = qk) Đặt u = a1…ai, v = ai+1…ak, w = ak+1…am Ta có  = uvw, |v| = |ai+1…ak|  (do i0 |v|b = 0) với i đủ lớn |uviw|a > | uviw|b  Nếu v chứa b (|v|b >0 |v|a = 0) với i đủ lớn | uviw|b > |uviw|a  Nếu |v|a >0 |v|b > với i = ta có v = (ab)2 = abab, tức a b xen kẽ uviw, uviw khơng thể có dạng anbn Cả ba trường hợp mâu thuẫn với uviw L Vậy không tồn otomat hữu hạn đơn định đốn nhận L, tức L khơng phải ngơn ngữ quy Hệ ứng dụng điều kiện cần ngơn ngữ quy, để chứng minh ngơn ngữ khơng phải quy ta cần khơng thỏa mãn điều kiện cần 111 BÀI TẬP CHƯƠNG Hãy xác định thành phần otomat hữu hạn có đồ thị chuyển sau xác định ngơn ngữ đốn nhận chúng a) q0 0 q1 b) q3 b q1 a 1 a q0 q2 Cho otomat hữu hạn A có đồ thị chuyển hình vẽ: q0 q1 q2 a) Biểu diễn hình thức otomat A dạng định nghĩa b).Otomat A otomat loại gì: đơn định/ khơng đơn định/ đầy đủ/ không đầy đủ c) Biểu diễn otomat A dạng bảng chuyển trạng thái d) Xác định ngôn ngữ chấp nhận otomat A e) Xây dựng otomat đơn định A’ tương đương với A cho T(A’) = T(A); vẽ dồ thị chuyển otomat A’ Hãy xây dựng biểu thức quy otomat hữu hạn đơn định biểu diễn ngôn ngữ sau: a) L = {anbm | n1, m1} b) L = {(01)n, (010)n | n0} c) L = {(aab)n(baa)m | n1, m1} Hãy xây dựng biểu thức quy otomat hữu hạn đơn định biểu diễn ngôn ngữ sau: a) L1 = {{0, 1}* |  bắt đầu chữ số 0} b) L2 = {{0, 1}* |  bắt đầu chữ số 0} 112 c) L3 = {{0, 1}* |  kết thúc chữ số 0} d) L4 = { {0, 1}* |  kết thúc chữ số 0} e) L5 = { {0, 1}* |  không bắt đầu hai chữ số liên tiếp} Hãy xây dựng otomat hữu hạn đốn nhận ngơn ngữ phần bù ngôn ngữ tập Chú ý: Nếu A otomat hữu hạn đơn định đầy đủ otomat đốn nhận ngơn ngữ phần bù T(A) (gọi otomat bù A, ký hiệu A ) otomat nhận từ A cách đổi trạng thái kết thúc thành trạng thái không kết thúc, ngược lại Hãy xây dựng otomat hữu hạn đốn nhận ngơn ngữ ngược ngôn ngữ tập Hãy xây dựng biểu thức quy otomat hữu hạn xác định ngôn ngữ sau: a) L1 gồm xâu có chẵn ký hiệu a b) L2 gồm xâu có lẻ ký hiệu a Hãy xây dựng biểu thức quy otomat hữu hạn xác định ngôn ngữ sau: a) L1 = {{a, b}* | với || số chẵn} b) L2 = {{a, b}* | với || số lẻ} Hãy xây dựng otomat hữu hạn không đơn định đốn nhận ngơn ngữ sau: a) L1 = {1aba2 | 1, 2 {a, b}*} b) L2 = {{0, 1}* |  bắt đầu luỹ thừa dương 101} c) L3 = {(1111)n |  {0, 1}*, n0} 10 Hãy thành lập văn phạm quy sinh ngơn ngữ mà đốn nhận otomat hữu hạn không đơn định sau: a) A = , đó: (q0, a) = {q0, q1}, (q0, b) = {q0, q1}, (q1, a) = , (q1, b) = {q2}, (q2, a) = {q2}, (q2, b) = {q2}, (q3, a) = {q4}, (q3, b) = , (q4, a) = {q4}, (q4, b) = {q4} b) A = , đó: (q0, 0) = {q0, q1}, (q0, 1) = {q1}, (q1, 0) = , (q1, 1) = {q0, q1} 113 11 Hãy xây dựng otomat hữu hạn đơn định đốn nhận ngơn ngữ mà sinh văn phạm quy sau: a) G = b) G = (hướng dẫn: xây dựng otomat không đơn định từ văn phạm theo định lý 3.5, sau dùng thuật tốn đơn định hóa để nhận otomat đơn định, trước hết xác định biểu thức quy biểu diễn ngôn ngữ sinh văn phạm cho, dùng thuật toán Thompson để xây dựng otomat từ biểu thức quy) 12 Hãy xây dựng ngôn ngữ biểu diễn biểu thức quy sau: a) bba(a+b)* b) (a+b)*bab c) (bb+a)* d) (aa+b)* e) (bb+a)*(aa+b)* 13 Hãy xây dựng otomat hữu hạn đơn định đốn nhận ngơn ngữ biểu diễn biểu thức quy sau: a) bba(a+b)* b) (a+b)*bab c) (bb+a)* d) (aa+b)* e) (bb+a)*(aa+b)* 14 Cho ôtomat A = (S,  , s1, , F), với tập trạng thái S = {s1, s2, s3, s4}, bảng chữ  = {a, b}, F = {s4}, hàm chuyển trạng thái cho bảng sau:  a s1 s2 { s2 , s4 } s3 b { s3 , s4 } s3 s3 s4 a) Vẽ đồ thị chuyển ơtomat A b) Tìm otomat M đơn định đầy đủ tương đương với otomat A c) Vẽ đồ thị chuyển ôtomat M 114 s4 15 Cho otomat A = (S, , s1, , F), với tập trạng thái S = {s1, s2, s3},  = {a, b, c}, F = {s3}, hàm chuyển trạng thái cho bảng sau:  s1 s2 s3 a s2 s3 {s1, s2} b s3 s1 c s3 s1 a) Vẽ đồ thị chuyển otomat A b) Tìm otomat M = (Q,  , q1, f, P), đơn định đầy đủ, tương đương otomat A c) Vẽ đồ thị chuyển otomat M 16 Hãy ngôn ngữ quy: a) L = {anbm | n, m  n < m } b) L = {anbm | n, m  n > m } 17 Áp dụng định lý điều kiện cần ngơn ngữ quy, chứng minh rằng: a) Ngơn ngữ L = {a, aa, aaa, a5, a7, a11, ,,, , ap, …| với p số nguyên tố} ngơn ngữ quy b) Ngơn ngữ L = {a, a4, a9, a16, ,,, , ak, …| với k số phương} khơng phải ngơn ngữ quy 18 Hãy xác định biểu thức quy biểu diễn ngơn ngữ đốn nhận otomat hữu hạn có đồ thị chuyển sau: q0 a) q1 1 q2 q3 0, 1 b) q0 q1 0 q2 115 TÀI LIỆU THAM KHẢO [1] Đặng Huy Ruận [2002] “Lý thuyết ngơn ngữ hình thức Otomat” NXB Đại hoc Quốc gia Hà nội 2002 [2] Phan Đình Diệu, [1971] “Lý thuyết Otomat Thuật toán”, NXB Đại hoc trung hoc chuyên nghiệp, Hà nội 1971 [3] Đỗ Đức Giáo, [2000], “Toán rời rạc”, NXB Đại học Quốc gia Hà nội, Hà nội, 2000 [4] Bài giảng “Ngơn ngữ Hình thức Otomat”, Đại học Khoa học, Đại học Huế [5] Nguyễn Xuân Huy [1988], “Thuật Toán”, NXB Thống Kê, Hà Nội, 1988 [6] Nguyễn Văn Định, [2000] “Thiết kế phân tích thuật tốn”, Bài giảng chun đề khoa Toán-Cơ-Tin học, ĐH Khoa học Tự nhiên, ĐHQG Hà nội [7] J.E Hopcroft, and J.D.Ullman [1979] “Introduction to Automata Theory, Languages and Computation” Addison-Wesley, Reading, MA.1979 [8] Nguyen Van Dinh, [1998] “Solving Determinazation Problems of Automata on the computer”, VNU Journal of Science, Nat Sci., t.XIV, n01-1998, p: 27-32 [9] Nguyen Van Dinh [2001].“The Automata complexity of the Language transformation schema that contains operations with restricted degree” Journal of computer science and cybernetics, T.17, S.2 (2001), pages 39-44 116

Ngày đăng: 25/09/2021, 00:22

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan