Automat và ngôn ngữ hình thức

36 1.5K 2
Automat và ngôn ngữ hình thức

Đ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

1 Chương 2 AUTOMATA HỮU HẠN NGÔN NGỮ CHÍNH QUI 2 1.Automata hữu hạn 1.1 Giới thiệu phi hình thức về automata hữu hạn 1.2 Automata hữu hạn đơn định 1.3 Automata hữu hạn không đơn định 1.4 Automata hữu hạn với phép truyền rỗng 2. Ngôn ngữ biểu thức chính qui 2.1 Biểu thức chính qui 2.2 Chuyển đổi giữa biểu thức chính qui automata hữu hạn 2.3 Các luật đại số cho biểu thức chính qui 2.4 Ngôn ngữ chính qui 3 Automata hữu hạn (Finite automata) Lớp ngôn ngữ “Ngôn ngữ chính qui”, được đoán nhận bởi máy ảo, gọi tên là “automata hữu hạn”.  Automata hữu hạn đơn định ( Deterministic Finite Automata – DFA  Automata hữu hạn không đơn định (Nondeterministic Finite Automata – NFA)  Automata hữu hạn không đơn định, chấp nhận phép truyền rỗng (ε-NFA) 4 Giới thiệu phi hình thức về automata hữu hạn  Một bài toán trong automata là nhận diện chuỗi w có thuộc về ngôn ngữ L hay không.  Chuỗi nhập được xử lý tuần tự từng ký hiệu một từ trái sang phải.  Trong quá trình thực thi, automaton cần phải nhớ thông tin đã qua xử lý. Vấn đề đặt ra là nhớ cái gì nhớ như thế nào. 5 Cần phải nhớ bao nhiêu thông tin? Xét trực quan, có 3 khả năng:  Nhớ tất cả: không phù hợp  Không nhớ gì cả: có thể xảy ra.  Trường hợp còn lại: cần phải nhớ một điều gì đó. 6 Ví dụ: L = {w  {0, 1}* | w kết thúc bằng chuỗi con 10}. Câu trả lời phụ thuộc vào hai ký hiệu cuối cùng. q 0 Start q 1 q 2 01 10 1 0 7 Ví dụ: L = {w  {0, 1}* | w chứa số lượng chẵn ký số 0 số lượng lẻ ký số 1}.  Không nhớ thứ tự sắp xếp các ký hiệu.  Không nhớ chuỗi con.  Nhớ số lượng ký số 0 số lượng ký số 1 đã được đọc. Có 4 trường hợp. 8 even even Start even odd odd even odd odd 0 0 0 0 1 1 1 1 9 Ví dụ: L = {w  {0, 1}* | w kết thúc bằng ký số 1 không chứa chuỗi con 00} TH 1 : Đã biết chuỗi w chứa chuỗi con 00. TH 2 : chuỗi 00 chưa xuất hiện. TH 2.1 : Ký hiệu cuối là 0. Nếu ký hiệu kế tiếp là: 0: Chuyển sang trường hợp 1. 1: Chuyển sang trường hợp 2.2. TH 2.2 : Ký hiệu cuối là 1. Nếu ký hiệu kế tiếp là: 0: Chuyển sang trường hợp 2.1. 1: Vẫn thuộc trường hợp 2.2. 10 Start 1  2.1 2.2 1 1 1 0 0 0 0, 1 11 Automata hữu hạn đơn định (DFA) Định nghĩa: Một DFA A là (Q, ,  , q 0 , F) với 1. Q: tập hữu hạn các trạng thái. 2.  : tập hữu hạn các ký hiệu nhập. 3.  : hàm truyền. 4. q 0 : trạng thái bắt đầu, q 0  Q. 5. F: tập các trạng thái kết thúc/chấp nhận, F  Q. 12 Ví dụ: Mô tả DFA chấp nhận ngôn ngữ L: L = {w | w = x01y chuỗi x, y  {0, 1}*} Bảng chữ cái của ngôn ngữ L này là:  = {0, 1}. DFA A cần phải nhớ: TH 1 : Đã thấy 01. Chấp nhận tất cả những ký hiệu nhập còn lại. TH 2 : Chưa thấy 01 TH 2.1 : Ký hiệu nhập gần nhất là 0. Nếu ký hiệu kế tiếp là: 1: Xem như A đã gặp 01  TH 1. 0: Dừng lại ở TH 2.1. TH 2.2 : Ký hiệu nhập gần nhất là 1. Nếu ký hiệu kế tiếp là: 1: Dừng lại ở TH 2.2. 0: Chuyển sang TH 2.1 13 Mỗi trường hợp TH1, TH 2.1, TH 2.2 có thể được biểu diễn bởi một trạng thái. TH 2.2 được thể hiện bởi trạng thái bắt đầu q 0 .  Hàm truyền trên q 0 :  (q 0 , 1) = q 0  (q 0 , 0) = q 2 . TH 2.1 được thể hiện bởi trạng thái q 2 .  Hàm truyền trên q 2 :  (q 2 , 0) = q 2  (q 2 , 1) = q 1 . TH 1 được thể hiện bởi trạng thái chấp nhận q 1 .  Hàm truyền trên q 1 :  (q 1 , 0) = q 1  (q 1 , 1) = q 1 . Như vậy, Q = {q 0 , q 1 , q 2 }, F = {q 1 }, q 0 : trạng thái bắt đầu. Automaton A chấp nhận ngôn ngữ L: A = ({q 0 , q 1 , q 2 }, {0, 1},  , q 0 , {q 1 }) với các hàm truyền  được chỉ ra ở trên. 14 Biểu diễn của DFA DFA được thể hiện một cách hình thức bởi bộ 5 thành phần như trên sẽ khô khan khó đọc. Có 2 cách đơn giản hơn để mô tả DFA:  Sơ đồ truyền  Bảng truyền 15 Sơ đồ truyền Sơ đồ truyền cho DFA A = (Q, ,  , q 0 , F) là một đồ thị được định nghĩa như sau:  Mỗi trạng thái trong Q là một nút.  Nếu p, q  Q, a . Giả sử  (q, a) = p. Khi đó, sơ đồ truyền có cung nối nút q đến nút p gán nhãn a.  Luôn có 1 mũi tên chỉ vào trạng thái bắt đầu q 0 , gán nhãn Start.  Những nút mô tả trạng thái chấp nhận ( F) có 2 vòng tròn đồng tâm. Những nút còn lại chỉ chứa 1 vòng tròn. 16 Bảng truyền Biểu diễn các hàm truyền trên một bảng. - Dòng của bảng tương ứng với trạng thái. - Các cột là những ký hiệu nhập trong tập . - Trạng thái bắt đầu được đánh dấu bởi mũi tên (). - Trạng thái kết thúc được đánh dấu bởi dấu sao (*). 17 Hàm truyền mở rộng (DFA) Nếu  là hàm truyền thì là hàm truyền mở rộng. với: q – trạng thái xuất phát bất kỳ; w – chuỗi bất kỳ; p – trạng thái mà DFA đạt đến khi bắt đầu từ trạng thái q xử lý chuỗi w.  ˆ pwq ),( ˆ  18 Hàm truyền mở rộng được định nghĩa bằng qui nạp  Bước cơ sở:  ^(q, ε) = q.  Bước qui nạp: Giả sử chuỗi w có dạng xa )),,( ˆ (),( ˆ axqwq   19 Ví dụ: Thiết kế DFA A chấp nhận ngôn ngữ L: L = {w | w có số lượng ký số 0 1 đều chẵn}. DFA phải nhớ số lượng ký số 0 số lượng ký số 1. Có 4 trường hợp.  q 0 là tt bắt đầu cũng như tt kết thúc.  DFA A của ngôn ngữ L là: A = ({q 0 , q 1 , q 2 , q 3 }, {0, 1},  , q 0 , {q 0 }) 20 Sơ đồ truyền Bảng truyền q 2 q 1 q 3 q 3 q 0 q 2 q 0 q 3 q 1 q 1 q 2 * q 0 10 q 0 q 1 q 2 q 3 1 0 1 1 1 0 0 0 Start [...].. .Ngôn ngữ của DFA Định nghĩa: Ngôn ngữ L(A) của DFA A = (Q, , , q0, F) được xác định bởi: L(A) = {w | ^(q0, w)  F } Nếu ngôn ngữ L là L(A) của DFA A nào đó, ta nói, L là ngôn ngữ chính qui 21 Automata hữu hạn không đơn định (NFA)  Automaton kiểu NFA sẽ có thể thuộc về một vài trạng thái cùng một lúc  NFA cũng chấp nhận ngôn ngữ chính qui, giống như DFA  NFA thường cô đọng dễ thiết... nạp: Giả sử chuỗi w có dạng xa 28 Ngôn ngữ của NFA Một NFA chấp nhận chuỗi w nếu một/một số luồng xuất phát từ trạng thái bắt đầu đạt đến trạng thái chấp nhận với điều kiện chuỗi w được xử lý hoàn toàn Gọi NFA A là (Q, , , q0, F) Ngôn ngữ L(A) được chấp nhận bởi A nếu: ˆ L( A)  {w |  (q0 , w)  F  } 29 Ví dụ: Chứng minh rằng NFA trong ví dụ trên chấp nhận ngôn ngữ L = {w | w kết thúc bởi 01}... tương đương giữa DFA NFA  Mọi ngôn ngữ được chấp nhận bởi NFA cũng được chấp nhận bởi DFA  Xây dựng NFA thường dễ dàng hơn  Trong thực tế, số trạng thái của DFA xấp xỉ NFA, nhưng thường thì có nhiều hàm truyền hơn  Trong trường hợp xấu nhất, nếu cùng chấp nhận một ngôn ngữ: NFA có n trạng thái thì DFA có 2n trạng thái 36 Kiến tạo tập con  Để chứng minh DFA chấp nhận mọi ngôn ngữ mà NFA chấp nhận,... 5) = {q1, q4} 2 Bổ sung vào ^(q0, 5) hai bao đóng rỗng: ECLOSE(q1)  ECLOSE(q4) = {q1}  {q4} = {q1, q4}  ^(q0, 5) = {q1, q4} 62 Ngôn ngữ của ε–NFA Định nghĩa: Gọi E = (Q, , , q0, F) là một ε–NFA L(E) là ngôn ngữ được chấp nhận bởi E nếu: L(E) = {w | ^(q0, w) ∩ F ≠ } 63 Chuyển từ ε–NFA sang DFA  Cho trước ε–NFA E, chúng ta có thể xây dựng DFA D chấp nhận cùng một ngôn ngữ của E  Phương pháp... Có thể chuyển đổi từ NFA sang DFA 22 Giới thiệu phi hình thức về NFA Giống như DFA, NFA cũng có: 1 Tập hữu hạn các trạng thái 2 Tập hữu hạn các ký hiệu nhập (bảng chữ cái) 3 Một trạng thái bắt đầu 4 Tập các trạng thái chấp nhận Sự khác nhau giữa DFA NFA là kiểu hàm truyền  23 Ví dụ: Biểu diễn NFA N, chấp nhận ngôn ngữ L L = { w | w  {0, 1}* kết thúc bởi 01 } q0: Trạng thái bắt đầu 0, 1 Start... dễ dàng thấy rằng chuỗi w được chấp nhận bởi DFA D thì cũng được chấp nhận bởi NFA N 50 Automata hữu hạn không đơn định với phép truyền rỗng (ε–NFA)  NFA có thể thực hiện phép truyền rỗng (εtransition) mà không cần nhận vào ký hiệu nhập  ε-NFA liên quan mật thiết đến biểu thức chính qui 51 Giới thiệu phi hình thức về phép truyền rỗng  Trên sơ đồ truyền sẽ xuất hiện các cung truyền với nhãn là chuỗi... Chứng minh hình thức vai trò của “Kiến tạo tập con”  DFA D vừa được xây dựng sẽ chấp nhận chuỗi nhập w nếu D đi vào trạng thái kết thúc sau khi đọc hết w  Mỗi trạng thái chấp nhận của DFA là một tập hợp chứa ít nhất một trạng thái chấp nhận của NFA  NFA chấp nhận chuỗi w nếu đạt đến một trong các trạng thái kết thúc của nó sau khi đọc hết w Kết luận: DFA NFA chấp nhận cùng một chuỗi nhập vì thế,... giao của 3 phát biểu sau: ˆ 1  (q0 , w) chứa q0 đối với mọi w ˆ 2  (q0 , w) chứa q1 nếu chỉ nếu w kết thúc bởi 0 ˆ 3  (q0 , w) chứa q2 nếu chỉ nếu w kết thúc bởi 01 30  Ba phát biểu trên giúp xác định trạng thái của A trước khi đọc ký hiệu nhập kế tiếp  Việc chứng minh 3 phát biểu trên đảm bảo rằng ngôn ngữ của NFA này là tập các chuỗi ký tự kết thúc bởi 01  Sử dụng chứng minh qui nạp tương... Định lý 2.2: Ngôn ngữ L được chấp nhận bởi DFA nếu chỉ nếu L được chấp nhận bởi NFA Chứng minh: (If) Giả thiết L được chấp nhận bởi NFA Chứng minh L cũng được chấp nhận bởi DFA 47 (Only-if) Giả sử L được chấp nhận bởi DFA Chứng minh: L được chấp nhận bởi NFA 48 Thực hiện chứng minh qui nạp trên chiều dài của chuỗi w Bước cơ sở: |w| = 0, nghĩa là w = ε Bước qui nạp: Gọi w = xa với x  * a   49... {q1, q4} · Start · { q2, q3, q5} 0, 1, …, 9 · {q2} 0, 1, …, 9 {q3, q5} 0, 1, …, 9 68 Định lý 2.22: Ngôn ngữ L được chấp nhận bởi ε– NFA nào đó nếu chỉ nếu L được chấp nhận bởi một DFA D Chứng minh: (If) Giả sử L = L(D) được chấp nhận bởi DFA D nào đó Chứng minh L được chấp nhận bởi ε–NFA 69 Từ (1) (2) cho thấy ε–NFA vừa xây dựng hoàn toàn tương đương với DFA ban đầu 70 (Only–if) Gọi E = (QE, . 1 Chương 2 AUTOMATA HỮU HẠN VÀ NGÔN NGỮ CHÍNH QUI 2 1 .Automata hữu hạn 1.1 Giới thiệu phi hình thức về automata hữu hạn 1 .2 Automata hữu hạn đơn định 1.3 Automata hữu hạn không đơn định 1.4 Automata. ký hiệu kế tiếp là: 1: Dừng lại ở TH 2. 2. 0: Chuyển sang TH 2. 1 13 Mỗi trường hợp TH1, TH 2. 1, TH 2. 2 có thể được biểu diễn bởi một trạng thái. TH 2. 2 được thể hiện bởi trạng thái bắt đầu. q 1 , q 2 } nên “kiến tạo tập con” sản sinh ra DFA có 2 3 = 8 trạng thái. {q 0 , q 2 }{q 0 , q 1 }*{q 0 , q 1 , q 2 } {q 2 }Ø*{q 1 , q 2 } {q 0 }{q 0 , q 1 }*{q 0 , q 2 } {q 0 , q 2 }{q 0 ,

Ngày đăng: 10/05/2014, 21:15

Từ khóa liên quan

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

Tài liệu liên quan