Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
563,99 KB
Nội dung
Chương Ôtômat hữu hạn ngôn ngữ quy Chương OTOMAT VÀ NGÔN NGỮ CHÍNH QUY I OTOMAT HỮU HẠN (FINITE AUTOMATA – FA) Khái niệm ôtômat Ôtômat hữu hạn xem hệ hữu hạn trạng thái hay máy tự động hoạt động theo hướng : đoán nhận ngôn ngữ : cho xâu , hỏi L ? sinh ngôn ngữ : liệt kê xâu L ta xét ôtômat theo hướng thứ tức đoán nhận ngôn ngữ a Định nghĩa Ôtômat hữu hạn M = , : tập hữu hạn khác rỗng kí hiệu vào Q tập hữu hạn khác rỗng trạng thái q0 Q gọi trạng thái ban đầu F Q gọi tập trạng thái kết thúc gọi hàm chuyển có dạng : Nếu : Q x Q ôtômat gọi ôtômat đơn định (DFA) Nếu : Q x 2Q ôtômat gọi ôtômat không đơn định (NFA) Hoạt động đoán nhận từ = x1x2 … xn ôtômat mô tả sau : Khi bắt đầu làm việc máy trạng thái ban đầu q0 đầu đọc nhìn vào ô kí tự xâu x1 Trạng thái q0 tác động x1 chuyển thành trạng thái q1 = (q0, x1) đầu đọc dịch chuyển sang ô Tiếp tục tác động kí tự x2 ôtômat chuyển từ trạng thái q1 sang trạng thái q2 = (q1, x2) đầu đọc tiếp tục dịch chuyển Quá trình lặp lại đầu đọc chuyển đến cuối xâu, tác động xn ôtômat chuyển từ trạng thái qn-1 sang trạng thái qn = (qn-1, xn) ôtômat dừng Nếu qn F ta gọi ôtômat đoán nhận xâu ngược lại Một cách hình thức ta mở rộng hàm xâu : (q, ) = (… ((q, x1), x2), … xn) Khi đoán nhận xâu (q0, ) F Tập L(M) = { * | (q0, ) F} gọi tập ngôn ngữ đoán nhận ôtômat M b Thuật toán đoán nhận Với ôtômat đơn định Boolean Accepted(M: DFA; : string) { Chương Ôtômat hữu hạn ngôn ngữ quy Var i : integer; q : Q; q = q0; For i =1 to length() q = (q, [i]); Accepted = q F; } Với ôtômat không đơn định Boolean Accepted(M: NFA; : string) { Var i: integer; q : Q; S = {q0}; For i=1 to length() S = (q, [i]); qS Accepted = S F ; } Phương pháp biểu diễn ôtômat hữu hạn Cho ôtômat thực chất cho hàm chuyển Hàm chuyển cho dạng bảng chuyển dạng đồ thị a Phương pháp dùng bảng chuyển Là bảng có dòng trạng thái, cột kí hiệu vào Mỗi ô giao dòng trạng thái qi kí hiệu vào xj trạng thái qij = (qi, xj) (qij tập trạng thái ôtômat không đơn định, tập rỗng) Ví dụ 1: Cho ôtômat đơn định M với F = {q0} Q A b C q0 Q1 q1 q3 q1 Q0 q3 q2 q2 Q3 q2 q1 q3 Q0 q1 q3 Cách thức đoán nhận xâu aabcacaa, bcbabbbcca ? Ví dụ 2: Cho ôtômat không đơn định N với F = {q0} Q A b C q0 Q1 { q2, q3 } q1 { q0, q1 } q2 q2 q3 q3 { q0, q2 } q1 q3 Chương Ôtômat hữu hạn ngôn ngữ quy Cách thức đoán nhận xâu aabcacaa, bcbabbbcca ? Đối với ôtômat không đơn định để đoán nhận xâu ta phải vẽ đoán nhận Ví dụ 3: Hãy xây dựng ôtômat không đơn định đoán nhận ngôn ngữ L = {0n1 | n } Ta xây dựng M = : = {0, } Q = {q0, q1 } F = {q0 } cho bởi: (q0, 0) = q0 (q0, 1) = q1 Khi dễ dàng chứng minh L(M) = {0n1 | n } Chú ý không xác định với q1 Để hàm xác định hoàn toàn ta đưa thêm vào Q trạng thái giả q2 xác định thêm sau : (q1, 0) = q2 , (q1, 1) = q2 , (q2, 0) = q2 , (q2, 1) = q2 (hoặc ) Như vậy, ôtômat hàm xem hàm xác định toàn phần b Phương pháp dùng đồ thị Là đa đồ thị định hướng có tập đỉnh tập trạng thái, có mũi tên vào trạng thái ban đầu để kí hiệu điểm xuất phát, trạng thái kết thúc đánh dấu đặc biệt, ví dụ khoanh vòng tròn Giữa trạng thái qi qj có cung nối với nhãn x (qi, x) = qj Ôtômat đoán nhận xâu có đường với nhãn từ trạng thái ban đầu q0 đến trạng thái kết thúc F Ví dụ : ôtômat cho cách đoán nhận xâu aabcacaa, bcbabbbcca Ôtômat không đơn định với -cung Một ôtômat không đơn định mở rộng với cung rỗng, tức cung chuyển trạng thái với nhãn kí tự rỗng Một phép chuyển (qi, ) = qj, có nghĩa ôtômat trạng thái qi chuyển sang trạng thái qj mà không cần phải đọc kí hiệu vào Tương tự, với ôtômat không đơn định định nghĩa trên, ta nói đoán nhận ôtômat M đồ thị M có tồn đường từ q0 đến q F với nhãn Hiển nhiên đường có chứa cung rỗng (tức nhãn ) a Tập trạng thái đạt Định nghĩa : Cho q Q x , ta gọi q’ trạng thái đạt từ q với nhãn x tồn dãy phép chuyển (tức đường đi) từ q đến q’ có phép chuyển với nhãn x lại tất với nhãn Ví dụ : Cho ôtômat với đồ thị chuyển sau : q0 ta có : q1 a q2 q3 q4 Chương Ôtômat hữu hạn ngôn ngữ quy q1 đạt từ q0, q3 đạt từ q2, q4 đạt từ q3 với nhãn q2 đạt từ q1 với nhãn a Tương tự, dễ thấy trạng thái q2, q3, q4 đạt từ q1 từ q0 với nhãn a = ˆ Từ ta mở rộng định nghĩa hàm chuyển trạng thái thành hàm ˆ cho ˆ (q0, a) (q1, a) = {q2, q3, q4}, có nghĩa q’ ˆ (q, a) q’ (q, a) với xâu rỗng Định nghĩa : Cho S Q x , ta gọi (S, x) tập trạng thái đạt từ tập trạng thái S với nhãn x định nghĩa : (S, x) = (q , x ) qS Định nghĩa tương tự với hàm ˆ : ˆ (S, x) = ˆ ( q , x ) qS Ví dụ : Ta xét ví dụ với S = {q1, q2} Khi : (S, a) = (q1, a) (q2, a) = {q2} = {q2} ˆ (S, a) = ˆ (q1, a) b Hàm chuyển trạng thái ˆ (q2, a) = {q2, q3, q4} = {q2, q3, q4} ˆ Phần ta đưa định nghĩa ˆ cách trực quan Phần sau hàm chuyển trạng thái ’ định nghĩa cách chặt chẽ Trước hết ta xét khái niệm _bao đóng trạng thái q Định nghĩa : Một tập trạng thái T gọi _bao đóng q trạng thái đạt từ q qua dãy chuyển với nhãn , tức : T = {q’ | q’ (q, ) với *} Chú ý : hiển nhiên q trạng thái thuộc _bao đóng nó, tức T chứa q Trường hợp ôtômat không chứa cung rỗng ta có _bao đóng q chứa trạng thái q, q Q Để đơn giản ta kí hiệu _bao đóng q (q) Ví dụ : Với ví dụ mục a ta có : (q0) = {q0, q1}, (q1) = {q1}, (q2) = {q2, q3, q4}, (q3) = {q3, q4}, (q4) = {q4} Định nghĩa _bao đóng tập trạng thái S mở rộng thành hợp tất _bao đóng trạng thái q S, tức : (S) = (q ) qS Từ định nghĩa thuật toán tìm tập (S) với S Q, xây dựng sau : Thuật toán tìm (S) Chương Ôtômat hữu hạn ngôn ngữ quy Procedure _closure(S) { Var stack : STACK; push(S, stack); (S) = S; While !empty(stack) { pop(stack, q); For với q’ = (q, ) if q’ stack then { push(q’, stack); (S) = (S) {q’}; } } } Định nghĩa : Cho q Q, x , hàm ˆ ˆ // Bổ sung q’ vào stack // Bổ sung q’ vào (S) định nghĩa sau : (q, x) = (((q), x)) tức ˆ (q, x) tập trạng thái q’ cho có dãy phép chuyển (hay dãy cung đồ thị ôtômat) từ q đến q’, có cung với nhãn x, lại tất cung rỗng (có nhãn ) Tương tự, ta định nghĩa : ˆ ˆ (q, ) = ˆ (… (S, x) = ˆ ( ˆ (q, x1), x2) …, xn), với = x1x2 … xn ˆ ( q , x ) , với S Q qS Từ định nghĩa ta dễ dàng chứng minh định lý sau : Định lý 1: : * đoán nhận M, tức có đường từ trạng thái ban đầu q0 đến q F với nhãn , ˆ (q0, ) F Trường hợp ôtômat cung rỗng, tức (q) = {q}, q Q ta có hàm ˆ đồng với Như vậy, mặt tổng quát ôtômat không đơn định (có hay cung rỗng), thuật toán đoán nhận viết lại sau : Thuật toán đoán nhận với ôtômat không đơn định Boolean Accepted(M: NFA; : string) { Var i: integer; q : Q; S := {q0}; Chương Ôtômat hữu hạn ngôn ngữ quy For i:=1 to length() S := ˆ (q, [i]); qS Accepted := S F ; } Sự tương đương ôtômat đơn định không đơn định Do định nghĩa ta nghĩ lớp ngôn ngữ ôtômat không đơn định đoán nhận rộng lớp ngôn ngữ đoán nhận bơỉ ôtômat đơn định Tuy nhiên, thực tế khả đoán nhận ngôn ngữ loại ôtômat nhau, thể qua định lý sau Định lý 2: : Lớp ngôn ngữ đoán nhận ôtômat đơn định trùng với lớp ngôn ngữ đoán nhận ôtômat không đơn định Chứng minh: Gọi lớp ngôn ngữ đoán nhận ôtômat đơn định L(M) lớp ngôn ngữ đoán nhận ôtômat không đơn định L(N) Việc chứng minh L(M) L(N) dễ dàng ôtômat đơn định xem ôtômat không đơn định Ta chứng minh vế ngược lại L(M) L(N), cách đưa thuật toán xây dựng ôtômat đơn định cho trường hợp : ôtômat có cung rỗng a Ôtômat cung rỗng Cho ôtômat không đơn định N = đoán nhận ngôn ngữ L = L(N) Ta xây dựng ôtômat đơn định M = đoán nhận L sau : ’ = Q’ = 2Q q0’ = { q0 } F’ = { q’ Q’ | q’ F } ’: Q’ x Q’, với ’(q’, x) = (q , x ) (chú ý : Q’ = 2Q q’ Q) qq' Bằng xây dựng ta thấy xâu đoán nhận N đoán nhận M, ta xây dựng đường tương tự ôtômat M mô đường đoán nhận ôtômat N để đoán nhận xâu Ví dụ 1: Cho ôtômat không đơn định N với = {a, b }, Q = {q0, q1 }, F = {q1} hàm chuyển cho bảng sau : Q a b q0 { q0, q1 } q1 q1 { q0, q1 } Khi ôtômat đơn định M ứng với N xây dựng sau : ’ = {a, b } Q’ = { u1, u2, u3, u4 }, u1 = , u2 = {q0}, u3 = {q1}, u4 = Q = {q0, q1 } q0’ = u2 Chương Ôtômat hữu hạn ngôn ngữ quy F’ = {u3, u4 } Và hàm ’ cho bảng chuyển Q’ a b u1 u2 u4 u3 u3 u4 u4 u4 u4 Khi đó, ta có L = L(N) = L(M) Trong thực hành ta xây dựng cung đạt ôtômat có cung rỗng b Ôtômat có cung rỗng Đối với ôtômat N = có cung chuyển ta xây dựng ôtômat đơn định M = đoán nhận L sau : ’ = Q’ 2Q q0’ = (q0) F’ = { q’ Q’ | q’ F } ’ = ˆ Q’ xây dựng thuật toán sau : Procedure Build_DFA(N: NFA) { Var stack : STACK, q, q’ : 2Q; q’ = (q0); push(q, stack); Q’ = {q’}; While !empty(stack) { pop(stack, q); For với x { q’ = ˆ (q, x); if q’ Q’ then { push(q’, stack); Q’ = Q’ {q’}; } } } // Bổ sung q’ vào stack // Bổ sung q’ vào Q’ Chương Ôtômat hữu hạn ngôn ngữ quy Về hoạt động thuật toán mô tả sau : Trạng thái ban đầu q’0 = (q0) Q’ Với x , tính ˆ (q’0, x), xem tập kết đỉnh chưa thuộc Q’ bổ sung vào Q’ Lập lại trình cho đỉnh vừa bổ sung Nếu không đỉnh bổ sung dừng Thuật toán dừng sau không 2|Q| bước Ví dụ 2: Cho ôtômat không đơn định với đồ thị chuyển hình vẽ q2 a q3 q0 q6 q1 q7 a q8 q4 q5 b Tập Q’ xây dựng qua bước : q’0 = (q0) = {q0, q1, q2, q4, q7} ˆ (q’0, a) = {q1, q2, q3, q4, q6, q7, q8} = q’1 ˆ (q’0, b) = {q1, q2, q4, q5, q6, q7} = q’2 ˆ (q’1, a) = {q1, q2, q3, q4, q6, q7, q8} = q’1 (loại) ˆ (q’1, b) = {q1, q2, q4, q5, q6, q7, q9} = q’3 ˆ (q’2, a) = {q1, q2, q3, q4, q6, q7, q8} = q’1 (loại) ˆ (q’2, b) = {q1, q2, q4, q5, q6, q7} = q’2 (loại) ˆ (q’3, a) = {q1, q2, q3, q4, q6, q7, q8} = q’1 (loại) ˆ (q’3, b) = {q1, q2, q4, q5, q6, q7, q10} = q’4 ˆ (q’4, a) = {q1, q2, q3, q4, q6, q7, q8} = q’1 (loại) ˆ (q’4, b) = {q1, q2, q4, q5, q6, q7} = q’2 (loại) Từ đó, thấy F’ = {q’4} bảng chuyển ’ sau : b q9 b q10 Chương Ôtômat hữu hạn ngôn ngữ quy Q’ a b q’0 q’1 q’2 q’1 q’1 q’3 q’2 q’1 q’2 q’3 q’1 q’4 q’4 q’1 q’2 Trên sở bảng chuyển ta dễ dàng vẽ đồ thị ôtômat đơn định M II NGÔN NGỮ VÀ BIỂU THỨC CHÍNH QUY Ngôn ngữ quy Trong phần ta đưa định nghĩa đệ qui lớp ngôn ngữ mà ta gọi ngôn ngữ quy (thực chất lớp ngôn ngữ đoán nhận văn phạm quy) Định nghĩa : Cho bảng chữ hữu hạn, ngôn ngữ quy định nghĩa đệ qui sau : i {} ngôn ngữ quy , ii Các ngôn ngữ sơ cấp bảng chữ (tức tập , {a} (a )) ngôn ngữ quy iii Nếu R, S ngôn ngữ quy R S, R.S R* ngôn ngữ quy iv Các ngôn ngữ quy tạo từ qui tắc i., ii Và iii Ví dụ 3: Cho bảng chữ = {0, 1} Khi {0}, {1} ngôn ngữ quy áp dụng qui tắc ta có : L1 = {10, 11} L2 = {011, 11} ngôn ngữ quy Khi L1L2 = {10011, 1011, 11011, 1111} L1* = {10, 11}* = {, 10, 11, 1010, 1011, 1110, 1111, …} ngôn ngữ quy Ví dụ 4: Từ {a} {b} ngôn ngữ quy, ta có {anbm | n, m 1} ngôn ngữ quy Nhận xét : Mọi ngôn ngữ quy bảng chữ nhận từ ngôn ngữ hữu hạn cách áp dụng hữu hạn lần phép toán : hợp, nhân ghép lặp Lớp ngôn ngữ quy đóng phép toán hợp, nhân ghép lặp Biểu thức quy Để biểu diễn hữu hạn ngôn ngữ quy ta đưa biểu thức quy, định nghĩa : Định nghĩa : Chương Ôtômat hữu hạn ngôn ngữ quy biểu thức quy, biểu diễn ngôn ngữ {} ngôn ngữ quy, biểu diễn ngôn ngữ Nếu a , a biểu thức quy, biểu diễn ngôn ngữ {a} Nếu r s biểu thức quy biểu diễn ngôn ngữ R, S tương ứng (r + s), (rs), (r*) biểu thức quy, chúng biểu diễn ngôn ngữ quy R S, R.S R* v Các biểu thức quy tạo từ cách nêu i ii iii iv Thông thường, dựa vào mức độ ưu tiên (lặp, nhân ghép, cộng) phép toán, để gọn biểu thức ta bỏ bớt dấu ngoặc Ví dụ 5: 00 biểu diễn ngôn ngữ {00}, (0+1)* biểu diễn ngôn ngữ {0, 1}* tức * ngôn ngữ {anbm | n, m 0} biểu diễn biểu thức quy a*b* ngôn ngữ {11 | {0, 1}*} biểu diễn 11(0+1)* Đối với ngôn ngữ biểu r kí hiệu L(r) Tuy nhiên trường hợp không gây nhầm lẫn, ta dùng r để hai Định lý 3: : Một ngôn ngữ quy biểu diễn biểu thức quy Chứng minh: Điều hiển nhiên suy từ định nghĩa III QUAN HỆ GIỮA OTOMAT HỮU HẠN VÀ BIỂU THỨC CHÍNH QUY Tính tương đương ôtômat hữu hạn biểu thức quy Phần ta chứng minh lớp ngôn ngữ đoán nhận ôtômat hữu hạn sinh biểu thức quy Định lý 4: r biểu thức quy có tồn DFA đoán nhận ngôn ngữ sinh biểu thức quy Chứng minh: Thuật toán Thompson : Ví dụ : vẽ đồ hình đoán nhận ngôn ngữ sinh 01*+1 Bỏ qua Tính đóng ngôn ngữ quy Định lý 5: Lớp ngôn ngữ quy đóng phép toán : họp, giao, hiệu, nhân ghép, lấy phần bù, lặp ảnh ngược 10 Chương Ôtômat hữu hạn ngôn ngữ quy IV QUAN HỆ GIỮA OTOMAT HỮU HẠN VÀ VĂN PHẠM CHÍNH QUY Định lý 6: Tập ngôn ngữ đoán nhận ôtômat hữu hạn trùng với tập ngôn ngữ sinh văn phạm quy Chứng minh: Để chứng minh ta cho văn phạm G = xây dựng DFA M = đoán nhận L(G) ngược lại cho DFA M, ta xây dựng văn phạm G sinh ngôn ngữ L(M) i Cho ngôn ngữ G = , ta xây dựng NFA M = sau : M = G Q = F {giả thiết F } q0 = I FM = {F} Hàm chuyển xác định (A a B kí hiệu cho cung từ A sang B với nhãn a) Tương ứng với luật A aB ta xây dựng cung A a B Tương ứng với luật A a ta xây dựng cung A a F với nhãn a (cả a = ) Có thể dễ dàng chứng minh L(G) = L(M), từ xây dựng lại M thành DFA ii Cho M DFA G xây dựng sau : G = M =Q I = q0 Tập qui tắc R xác định : Tương ứng với cung A a B (B F) ta xây dựng luật A aB Tương ứng với cung A a F ta xây dựng luật A a F cung ra, F có cung ta xây dựng luật A aF bổ sung thêm luật F Có thể dễ dàng chứng minh L(M) = L(G) Ví dụ 6: Cho văn phạm G với R = {I aI | aA, A bA | b}, L(G) = {anbm | n, m 1} NFA M có cung : I a I, I a A, A I tập đỉnh kết thúc {F} 11 Q a b I IA IA IA AF AF AF b A A b F Với đỉnh bắt đầu Chương Ôtômat hữu hạn ngôn ngữ quy Cho G với R = {I aA | bB, A aA | , B bB | }, L(G) = {an, bm | n, m 1} NFA M có cung : I a A, I b B, A a A A F Với đỉnh bắt đầu I tập đỉnh kết thúc {F} Q a b I AF BF AF AF BF BF F, B b B, B Ví dụ 7: Cho DFA M ví dụ trên, ta có văn phạm : R = {I aA, A aA | bB, B bB | } R = {I aA | bB, A aA | , B bB | } Từ định lý 3, 4, ta có định lý sau Định lý 7: Các lớp ngôn ngữ sau tương đương : Lớp ngôn ngữ quy Lớp ngôn ngữ sinh biểu thức quy Lớp ngôn ngữ sinh văn phạm quy Lớp ngôn ngữ đoán nhận ôtômat hữu hạn V ĐỊNH LÝ MYHILL-NERODE (điều kiện cần đủ để ngôn ngữ quy) Các quan hệ ngôn ngữ Cho L * Định nghĩa quan hệ sau : , L, R(mod L) L ( L L) : quan hệ bất biến phải , L, (q0, ) = (q0, beta) Khi quan hệ quan hệ tương đương Định lý 8: : Ngôn ngữ L quy hạng quan hệ R(mod L) hữu hạn (hạng số lớp tương đương quan hệ đó) Chứng minh: Dễ thấy, quan hệ R(mod L) R hữu hạn hữu hạn Ngược lại, giả sử hạng R(mod L) hữu hạn, kí hiệu lớp tương đương : L0, L1, 12 Chương Ôtômat hữu hạn ngôn ngữ quy …, Lk, L0 chứa từ rỗng 13 Chương Ôtômat hữu hạn ngôn ngữ quy BÀI TẬP I OTOMAT HỮU HẠN Xây dựng ôtômat đơn định đoán nhận ngôn ngữ: , a1a2 …an, an, anbm, * Xây dựng ôtômat (không đơn định) đoán nhận ngôn ngữ sinh biểu thức (a + b)* c* (a + b)* Chuyển ôtômat đơn định Xây dựng ôtômat (không đơn định) đoán nhận ngôn ngữ sinh biểu thức c* (a + b)* c* Chuyển ôtômat đơn định Ôtômat đoán nhận tập xâu chứa số liền chứa số Cho ngôn ngữ L biểu diễn biểu thức quy E = 0*1*2* bảng chữ = {0, 1, 2} Hãy: a Bằng thuật toán Thompson (thu gọn) xây dựng đồ hình ôtômat N với cung rỗng đoán nhận ngôn ngữ L b Chuyển ôtômat có cung rỗng N (được xây dựng câu a) thành ôtômat đơn định M (yêu cầu viết bảng chuyển trạng thái mô tả trình chuyển N sang M cuối vẽ đồ hình M) Chứng minh: a q0 q1 q2 b Trạng thái ban đầu q’0 M (q0) = {q0, q1, q2} Từ trạng thái ban đầu q0’ tiếp tục xây dựng trạng thái cho bảng chuyển bên Bảng chuyển trạng thái M {q0, q1, q2} = A {q0, q1, q2} = A {q1, q2} = B {q2} = C {q1, q2} = B {q1, q2} = B {q2} = C {q2} = C {q2} = C Từ bảng chuyển trạng thái ban đầu A tập trạng thái kết thúc {A, B, C} Đồ hình M 14 Chương Ôtômat hữu hạn ngôn ngữ quy A B Ôtômat đoán nhận xâu xâu (khoá số điện tử) Ôtômat đoán nhận tập xâu có số chữ a khác số chữ b Ôtômat đoán nhận tập số chia hết cho C Chứng minh: Ta có nhận xét số nguyên A chia chẵn cho tổng chữ số A chia hết cho (0, 3, 6, 9) Ôtômat có tập trạng thái phản ánh tổng chữ số từ đầu A chữ số thứ i mà ôtômat đọc Do trạng thái cuối ôtômat đọc hết chữ số n tổng chữ số n Ôtômat M = xây dựng sau : = {0, 1, 2, …, 9} Q gồm có 10 trạng thái số từ đến q0 = F = {3, 6, 9} (i, x) = tổng chữ số i+x Ví dụ (0,4) = 4, (8, 7) = (vì 8+7=15 có tổng chữ số 6) Dễ thấy ôtômat M đoán nhận tập số dương chia hết cho Ôtômat đoán nhận tập số chia hết cho Chứng minh: Hãy xây dựng ôtômat hữu hạn, đơn định bảng chữ vào = {0, 1, 2, …, 9}, đoán nhận tập số nguyên dương chia chẵn cho Chứng minh: Ta có nhận xét số nguyên n chia chẵn cho hai chữ số cuối n 04, 08, 12, 16, …, 92, 96 Ôtômat M = xây dựng sau : = {0, 1, 2, …, 9} Q gồm có 100 trạng thái số từ đến 99 Trong đó, trạng thái viết dạng chữ số, ví dụ trạng thái thứ viết 00, trạng thái thứ viết 04, trạng thái thứ 50 viết 50 q0 = 00 F = {04, 08, 12, …, 96} (ij, x) = jx, i, j, x chữ số từ đến 15 Chương Ôtômat hữu hạn ngôn ngữ quy Khi dễ thấy trạng thái ban đầu q0 = 00, ôtômat đọc chữ số n cho trạng thái cuối chữ số cuối n Và trạng thái có dạng trạng thái F có nghĩa n chia hết cho ngược lại 10 Ôtômat đoán nhận tập số lẻ, chẵn, chia hết cho 5, … 16 [...]... R(mod L) R hữu hạn vì hữu hạn Ngược lại, giả sử hạng của R(mod L) là hữu hạn, kí hiệu các lớp tương đương là : L0, L1, 12 Chương 7 Ôtômat hữu hạn và ngôn ngữ chính quy …, Lk, trong đó L0 chứa từ rỗng 13 Chương 7 Ôtômat hữu hạn và ngôn ngữ chính quy BÀI TẬP I OTOMAT HỮU HẠN 1 Xây dựng ôtômat đơn định đoán nhận các ngôn ngữ: , a1a2 …an, an, anbm, * 2 Xây dựng ôtômat (không đơn định) đoán.. .Chương 7 Ôtômat hữu hạn và ngôn ngữ chính quy IV QUAN HỆ GIỮA OTOMAT HỮU HẠN VÀ VĂN PHẠM CHÍNH QUY Định lý 6: Tập ngôn ngữ đoán nhận được bởi ôtômat hữu hạn là trùng với tập ngôn ngữ sinh bởi văn phạm chính quy Chứng minh: Để chứng... {I aI | aA, A bA | b}, L(G) = {anbm | n, m 1} NFA M có các cung : I a I, I a A, A là I và tập đỉnh kết thúc là {F} 11 Q a b I IA IA IA AF AF AF b A và A b F Với đỉnh bắt đầu Chương 7 Ôtômat hữu hạn và ngôn ngữ chính quy Cho G với R = {I aA | bB, A aA | , B bB | }, L(G) = {an, bm | n, m 1} NFA M có các cung : I a A, I b B, A a A và A F Với đỉnh... ôtômat đơn định 4 Ôtômat đoán nhận tập xâu chứa 2 số 0 liền nhau hoặc chứa ít nhất 3 số 1 5 Cho ngôn ngữ L được biểu diễn bởi biểu thức chính quy E = 0*1*2* trên bảng chữ = {0, 1, 2} Hãy: a Bằng thuật toán Thompson (thu gọn) xây dựng đồ hình của ôtômat N với cung rỗng đoán nhận ngôn ngữ L b Chuyển ôtômat có cung rỗng N (được xây dựng trong câu a) về thành ôtômat đơn định M (yêu cầu viết bảng chuyển... A {q0, q1, q2} = A {q1, q2} = B {q2} = C {q1, q2} = B {q1, q2} = B {q2} = C {q2} = C {q2} = C Từ bảng chuyển trạng thái ban đầu là A và tập trạng thái kết thúc là {A, B, C} Đồ hình của M 14 Chương 7 Ôtômat hữu hạn và ngôn ngữ chính quy 2 A 1 0 B 2 1 6 Ôtômat đoán nhận xâu con của một xâu (khoá số điện tử) 7 Ôtômat đoán nhận tập xâu có số chữ cái a khác số chữ cái b 8 Ôtômat đoán nhận tập... trạng thái thứ 0 được viết là 00, trạng thái thứ 4 được viết là 04, trạng thái thứ 50 được viết là 50 q0 = 00 F = {04, 08, 12, …, 96} (ij, x) = jx, trong đó i, j, x là các chữ số từ 0 đến 9 15 Chương 7 Ôtômat hữu hạn và ngôn ngữ chính quy Khi đó dễ thấy bắt đầu từ trạng thái ban đầu q0 = 00, ôtômat đọc lần lượt các chữ số của n và cho ra trạng thái cuối cùng là 2 chữ số cuối của n Và nếu trạng