bài giảng automata hữu hạn và ngôn ngữ chính quy

36 489 0
bài giảng automata hữu hạn và ngôn ngữ chính quy

Đ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 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 hữu hạn với phép truyền rỗng 2. Ngôn ngữ và 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 và 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ì và 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 và 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 và 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 và 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 và 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 và  (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 và  (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 và  (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 và 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 và 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 và 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 và 1 đều chẵn}. DFA phải nhớ số lượng ký số 0 và 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 và dễ thiết... 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 và 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}* và kết thúc bởi 01 } q0: Trạng thái bắt đầu 0, 1 Start q0 0 q1 1 q2 24 Mô phỏng... 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 và đạ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 và 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... 49 Từ đây, có thể 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... ε không góp mặt vào chuỗi được nhận dạng 52 Ví dụ: Đây là sơ đồ truyền của ε–NFA chấp nhận số thập phân, bao gồm: 1 Dấu +, – (tùy ý) 2 Chuỗi các số nguyên 3 Dấu ‘.’ phần thập phân 4 Chuỗi các số nguyên khác 0, 1, …, 9 Start q0 ε, +, – q1 0, 1, …, 9  q2 0, 1, …, 9 q3 ε q5  0, 1, …, 9 q4 53 Định nghĩa: ε–NFA A là bộ năm (Q, , , q0, F):  Q: tập hữu hạn các trạng thái   : tập hữu hạn các ký hiệu... 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 và NFA chấp nhận cùng một chuỗi nhập và vì thế, chúng chấp nhận cùng một ngôn ngữ 43 Định lý 2.1: Nếu DFA D = (QD, ,... trình hoạt động của NFA với chuỗi nhập là 00101 q0 q0 q1 q0 q0 q0 q1 q0 q1 (dừng) Các trạng thái hiện hành q2 q2 (dừng) 0 0 1 0 1 25 Định nghĩa: NFA A là (Q, , , q0, F) với  Q: tập hữu hạn các trạng thái   : tập hữu hạn các ký hiệu nhập  : hàm truyền  q0: trạng thái bắt đầu, q0  Q  F: tập các trạng thái kết thúc/chấp nhận, F  Q 26 Ví dụ: NFA A chấp nhận chuỗi kết thúc bởi 01 là: A = ({q0,... 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 và chỉ nếu w kết thúc bởi 0 ˆ 3  (q0 , w) chứa q2 nếu và 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 . 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. 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. Automata hữu hạn với phép truyền rỗng 2. Ngôn ngữ và 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 và automata hữu hạn 2.3 Các luật đại số cho biểu thức chính

Ngày đăng: 17/04/2015, 14:07

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