bài giảng automat

91 312 0
bài giảng automat

Đ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 - LỜI NÓI ĐẦU Môn học “Automat hữu hạn” được đưa vào chương trình đào tạo đại học ngành Công nghệ thông tin từ khóa 505, là khóa đầu tiên đào tạo theo tín chỉ. Bài giảng môn học này được biên soạn lần đầu vào năm 2007 và được sử dụng làm tài liệu học tập cho các sinh viên từ khóa 505 trở đi. Sau 5 năm sử dụng, tài liệu này đã đáp ứng được nhu cầu dạy và học môn học này trong khoa Công nghệ thông tin. Mỗi năm học, bài giảng lại được bổ sung thêm những ý mới, những bài tập mới đáp ứng yêu cầu nâng cao chất lượng đào tạo đại học, tiếp thu được những thay đổi, những tài liệu mới được công bố trên mạng. Trong lần tái bản này, mỗi chương đều được xem xét lại về nội dung, cập nhật những kiến thức mới, chỉnh sửa những chỗ sai sót, bổ sung thêm kiến thức cần thiết, bổ sung thêm những bài tập, những câu hỏi trắc nghiệm, cách giải các bài tập, giúp cho sinh viên nắm được nội dung bài giảng tốt hơn. Chúng tôi đã cố gắng trình bày bài giảng sao cho dễ đọc, dễ hiểu hơn, tuy nhiên nhiều vấn đề khi trình bày vẫn còn nặng về lý thuyết, trừu tượng. Mặc dù đã dành nhiều thời gian, chú trọng đến cả nội dung và hình thức, tuy nhiên trong quá trình biên soạn khó tránh khỏi những sai sót, rất mong được sự góp ý kiến của đồng nghiệp và các bạn sinh viên để bài giảng được tốt hơn. Biên soạn: ThS Trần Văn Lộc - 2 - CHƢƠNG 1 NHẬP MÔN VỀ VĂN PHẠM VÀ NGÔN NGỮ HÌNH THỨC 1. Các khái niệm cơ bản Ngôn ngữ tự nhiên: Ngôn ngữ là phương tiện giao tiếp hàng ngày giữa con người với nhau, được hình thành và phát triển song song với sự phát triển của xã hội loài người. Ngôn ngữ cũng còn là phương tiện giao tiếp giữa con người với máy tính hoặc giữa các máy tính với nhau. Ngôn ngữ giao tiếp giữa người với người gọi là ngôn ngữ tự nhiên, ví dụ như ngôn ngữ tiếng Việt, tiếng Anh, … Các quy tắc cú pháp của ngôn ngữ tự nhiên rất phong phú, đa dạng và phức tạp. Tuy nhiên các yêu cầu nghiêm ngặt về ngữ nghĩa trong các ngôn ngữ tự nhiên chưa cao, thể hiện ở chỗ một từ có thể được hiểu theo nhiều nghĩa khác nhau tùy theo ngữ cảnh cụ thể. Vì lẽ đó, ngôn ngữ tự nhiên không thể dùng để giao tiếp giữa người với máy hoặc giữa các máy với nhau. Ngôn ngữ hình thức (Formal Language): Ngôn ngữ được sử dụng để giao tiếp giữa người với máy hoặc giữa máy với máy phải có các quy tắc cú pháp chặt chẽ hơn sao cho mỗi từ, mỗi câu chỉ được hiểu theo một cách duy nhất. Những ngôn ngữ như vậy được gọi là ngôn ngữ hình thức (Formal Language). Ngôn ngữ hình thức là một loại ngôn ngữ đặc biệt được tạo ra để làm công cụ giao tiếp giữ người và máy hoặc giữa máy với máy. Bộ chữ cái (Alphabet): Giả sử  là 1 tập hợp hữu hạn khác rỗng các phần tử nào đó được dùng để tạo ra các từ của ngôn ngữ, thì  được gọi là bảng chữ cái. Như vậy, bảng chữ cái của ngôn ngữ tiếng Anh là tập hợp 26 chữ cái Latinh từ a đến z. Mỗi phần tử trong  được gọi là 1 ký tự. Ví dụ: Để có các xâu nhị phân thì phải dùng 2 ký tự 0 và 1, như vậy, bảng chữ cái của ngôn ngữ các xâu nhị phân là ={0, 1}. Xâu ký tự (String): Một dãy hữu hạn các ký tự của  được viết liền nhau được gọi là 1 xâu ký tự, hay là 1 từ trên . Trong xâu ký tự, 1 ký tự có thể xuất hiện nhiều lần. Số lượng ký tự trong xâu ký tự gọi là độ dài của xâu ký tự đó. Ví dụ 01001011 là 1 xâu ký tự trên bảng chữ cái {0, 1}, có độ dài 8. Giả sử  là xâu ký tự, sử dụng ký hiệu || hoặc l() để chỉ độ dài của xâu . - 3 - Xâu rỗng (emty string) là xâu đặc biệt không chứa ký tự nào cả và xâu rỗng có độ dài là 0. Ký hiệu xâu rỗng là  (có tài liệu ký hiệu là  hoặc là ^). Lũy thừa của bộ chữ cái: Ký hiệu  k là tập tất cả các xâu ký tự trên  có độ dài bằng k, với k>0. Còn với k=0 thì  0 là tập hợp chỉ có 1 xâu rỗng :  0 ={}. Ví dụ với ={a, b, c}, thì  2 ={aa, ab, ac, ba, bb, bc, ca, cb, cc} Ký hiệu * là tập tất cả các xâu ký tự (kể cả xâu rỗng) trên , như vậy thì: *= 0   1   2  … Ký hiệu  + là tập tất cả các xâu ký tự khác rỗng trên , như vậy thì:  + = 1   2  … Như vậy  + =* - {}, hoặc *= +  {}. Ngôn ngữ (Language): Một tập hợp các xâu ký tự (từ) trên bảng chữ cái  gọi là một ngôn ngữ trên bảng chữ cái đó. Như vậy một ngôn ngữ có thể có hữu hạn và cũng có thể có vô hạn từ, và người ta gọi là ngôn ngữ hữu hạn hoặc ngôn ngữ vô hạn. Ký hiệu  là ngôn ngữ rỗng, tức là ngôn ngữ không chứ từ nào cả. Chú ý phân biệt ngôn ngữ rỗng  với ngôn ngữ có 1 từ rỗng {}. Ví dụ  + , * là các ngôn ngữ vô hạn, còn  k với số k cụ thể nào đó là ngôn ngữ hữu hạn. Có thể coi  là ngôn ngữ hữu hạn. Mọi ngôn ngữ trên  đều là ngôn ngữ con của ngôn ngữ *. Đối với một ngôn ngữ hình thức L  *người ta quan tâm đến 1 số vấn đề sau:  Với xâu  bất kỳ cho trước không biết  có thuộc L hay không ?  Với xâu  của L làm thế nào để tạo ra  ? 2. Văn phạm và ngôn ngữ sinh bởi văn phạm 2.1. Định nghĩa văn phạm Trước khi đưa ra định nghĩa văn phạm, ta có thể hình dung văn phạm như là một “thiết bị tự động” có khả năng sinh ra 1 tập hợp các từ trên 1 bảng chữ cái cho trước nào đó. Mỗi từ được sinh ra sau 1 số hữu hạn bước thực hiện các quy tắc của - 4 - văn phạm. Việc xác định 1 ngôn ngữ trên bảng chữ cái cho trước có thể thực hiện theo 1 trong các cách thức sau: Cách 1: Đối với mỗi xâu thuộc ngôn ngữ đã cho, có thể chọn 1 quy cách hoạt động của “thiết bị tự động” để sau 1 số hữu hạn bước làm việc nó dừng lại và sinh ra chính xâu đó. Cách 2: “Thiết bị tự động” có khả năng lần lượt sinh ra tất cả các xâu trong ngôn ngữ đã cho. Cách 3: Với mỗi xâu  cho trước, “Thiết bị tự động” có thể cho biết xâu đó có thuộc ngôn ngữ đã cho hay không. Việc thực hiện theo các cách trên là như nhau, hay nói cách khác, văn phạm làm việc theo các cách trên là tương đương nhau. Định nghĩa: Văn phạm G là 1 bộ sắp thứ tự gồm 4 thành phần G=<, , I, R>, trong đó:  ,  là các tập hữu hạn, khác rỗng, không giao nhau.  Tập  được gọi là từ điển cơ bản, mỗi phần tử của  gọi là ký hiệu cơ bản hay gọi là ký hiệu kết thúc (terminal).  Tập  được gọi là từ điển hỗ trợ, mỗi phần tử của  gọi là ký hiệu hỗ trợ hay gọi là ký hiệu không kết thúc (nonterminal).  Đặt V=  , tập V gọi là từ điển đầy đủ.  Ký hiệu I là 1 phần tử của  được gọi là ký hiệu ban đầu  R là tập các quy tắc mà mỗi quy tắc có dạng , với ,  là các từ trên từ điển đầy đủ V, còn ký hiệu  thì không thuộc V. Chú ý: Để phân biệt giữa 2 loại ký hiệu kết thúc và không kết thúc, người ta quy ước sử dụng các chữ cái in thường hoặc các chữ số để chỉ ký hiệu kết thúc còn chữ cái in hoa để chỉ ký hiệu không kết thúc. Dẫn được trực tiếp: Cho văn phạm G=<, , I, R> và 1 quy tắc r=  R. Xét các xâu =xy và =xy đều là xâu trên từ điển đầy đủ V. Ta thấy rằng nếu áp dụng quy tắc r thì từ xâu  ta sẽ được xâu . Khi đó  là xâu dẫn được trực tiếp từ xâu  trong văn phạm G, và ký hiệu là: ╞ . - 5 - Như vậy khi áp dụng 1 quy tắc nào đó trong tập quy tắc R để chuyển 1 xâu  thành 1 xâu khác  tức là đã dẫn trực tiếp từ xâu  đến xâu . Dẫn xuất: Dãy các xâu D=( 0 ,  1 , … ,  k) được gọi là 1 dẫn xuất của xâu  k từ xâu  0 trong văn phạm G=<, , I, R>, và ký hiệu là  0 ├  k , nếu  i-1 ╞  i , với i=1, 2, …, k. Số k được gọi là độ dài của dẫn xuất D. Như vậy dẫn được trực tiếp là trường hợp riêng của dẫn xuất với độ dài dẫn xuất bằng k=1. Ví dụ: Cho văn phạm G=<, , I, R>, với ={a, b}; ={I, A}; R={I  I a, I  A, A  aAb, A  ab}; Xét các xâu x=Ia, y=Aa, =aabbaaa Ta thấy, nếu áp dụng quy tắc I  A thì từ x sẽ được y , vì vậy x ╞ y Xét dãy các xâu D=(Ia, Iaa, Iaaa, Aaaa, aAbaaa, aabbaaa) thỏa mãn điều kiện xâu đứng sau dẫn được trực tiếp từ xâu đứng trước, vậy ta có dẫn xuất x├  với độ dài dẫn xuất bằng 5. 2.2. Ngôn ngữ của văn phạm Định nghĩa: Cho văn phạm G=<, , I, R> và D=( 0 ,  1 , … ,  k) là 1 dẫn xuất của xâu  k từ xâu  0 trong văn phạm G. Nếu  0 =I và  k  * thì  k được gọi là một xâu (từ) sinh bởi văn phạm G và dẫn xuất D được gọi là dẫn xuất đầy đủ trong G. Tập hợp tất cả các xâu (từ) sinh bởi văn phạm G được gọi là ngôn ngữ sinh bởi văn phạm G và ký hiệu là L(G), được định nghĩa như sau: L(G)={    * và I ├ } Ví dụ: Cho văn phạm G=<, , I, R>, với ={a, b}; ={I}; R={I  a I b, I  ab}; R chỉ có 2 quy tắc, quy tắc thứ nhất I  a I b mỗi lần áp dụng sẽ tạo ra 1 cặp a b với I ở giữa. Như vậy nếu xuất phát từ I, áp dụng quy tắc thứ nhất n lần ta sẽ được xâu có dạng a aIb b với n ký tự a ở đầu và n ký tự b ở cuối, và có thể viết gọn lại là a n Ib n . Còn quy tắc thứ 2 của R có tác dụng kết thúc quá trình sinh, vì vế phải của quy tắc này chỉ chứa các ký hiệu kết thúc. Như vậy xâu do văn phạm G - 6 - sinh ra sẽ có dạng a n b n với n là 1 số nguyên dương, hay viết đơn giản là n>0. Ngược lại, một xâu bất kỳ có dạng a n b n với n>0 đều do G sinh ra bằng cách áp dụng n-1 lần quy tắc thứ nhất và sau đó 1 lần áp dụng quy tắc thứ 2, dẫn xuất đầy đủ là D=(I, aIb, … , a n-1 Ib n-1 , a n b n ). Do vậy có thể kết luận ngôn ngữ do văn phạm G sinh ra là: L(G)={a n b n  n>0}. Định nghĩa văn phạm tương đương: Hai văn phạm G và G’ được gọi là tương đương nhau nếu chúng cùng sinh ra 1 ngôn ngữ, tức là L(G)=L(G’). Ví dụ: Cho văn phạm G=<, , I, R> và G’=<, , I, R’> với ={a, b}; ={I}; R={I  a I b, I  ab}; R’={I  a I b, I  aabb, I  ab}; Dễ dàng thấy rằng 2 văn phạm này đều sinh ra 1 ngôn ngữ, vì vậy chúng tương đương với nhau. 2.3. Một số tính chất của văn phạm Hai dẫn xuất đồng lực: Cho văn phạm G=<, , I, R> và 2 dẫn xuất trong G là D=( 0 ,  1 , … ,  k) , E=( 0 ,  1 , … ,  m) . D và E được gọi là đồng lực nếu  0 = 0 và  k = m . Dẫn xuất không lặp: Cho văn phạm G=<, , I, R> và dẫn xuất trong G là D=( 0 ,  1 , … ,  k) . D được gọi là dẫn xuất không lặp nếu không tồn tại cặp i, p khác nhau mà  i = p . Tính chất 1: Với mỗi dẫn xuất trong văn phạm tùy ý luôn tồn tại 1 dẫn xuất không lặp đồng lực với nó. Tính chất 2: Với mỗi văn phạm G bất kỳ luôn tồn tại 1 văn phạm G’ tương đương với G, tức là L(G)=L(G’). Các phép toán trên ngôn ngữ : Ngôn ngữ là 1 tập hợp nên có thể áp dụng các phép toán tập hợp là phép hợp , phép giao  giữa 2 ngôn ngữ, cụ thể như sau: Giả sử L và M là 2 ngôn ngữ, hợp của L và M là 1 ngôn ngữ, ký hiệu là L  M, được định nghĩa như sau: L  M={    L hoặc   M}. - 7 - Giao của L và M là 1 ngôn ngữ, ký hiệu là L  M, được định nghĩa như sau: L  M={    L và   M}. Ngoài 2 phép toán trên, với ngôn ngữ người ta còn xét phép nhân 2 ngôn ngữ L và M, ký hiệu là L.M, là 1 ngôn ngữ được định nghĩa như sau: L.M={   L và   M}, trong đó  là xâu ghép nối của 2 xâu  và . Nhận xét: Các phép hợp và giao có tính chất giao hoán còn phép nhân không có tính giao hoán. Cả 3 phép toán đều có tính chất kết hợp. Tính chất 3: Lớp các ngôn ngữ sinh bởi văn phạm đóng đối với các phép hợp, phép giao và phép nhân ngôn ngữ. Tính chất đóng của lớp ngôn ngữ sinh bởi văn phạm cho phép thực hiện các phép hợp, phép giao và phép nhân giữa các ngôn ngữ, kết quả sẽ cho ngôn ngữ cũng được sinh bởi 1 văn phạm nào đó. 3. Phân loại văn phạm của Chomsky Chomsky là nhà bác học người Mỹ có nhiều đóng góp quan trọng trong lĩnh vực ngôn ngữ học và văn phạm, ông đưa ra cách phân loại văn phạm và ngôn ngữ hình thức và được coi là cơ sở cho việc nghiên cứu và phát triển ngôn ngữ hình thức. Theo Chomsky, văn phạm được phân thành 4 loại: Loại 0 (Type 0): Văn phạm ngữ cấu (Phrase-structure Grammar) Loại 1 (Type 1): Văn phạm cảm ngữ cảnh (Context-sensitive Grammar) Loại 2 (Type 2): Văn phạm phi ngữ cảnh (Context-free Grammar) Loại 3 (Type3): Văn phạm chính quy (Regular Grammar). 3.1. Văn phạm ngữ cấu Văn phạm G=<, , I, R> được gọi là văn phạm ngữ cấu nếu mọi quy tắc thuộc R đều có dạng , với   V + và   V*. Ngôn ngữ do văn phạm ngữ cấu sinh ra gọi là ngôn ngữ ngữ cấu. Nhận xét: Trong định nghĩa văn phạm ngữ cấu không có yêu cầu nào khác biệt so với định nghĩa văn phạm ở trên, có chăng là đòi hỏi   V + , thì cũng là lẽ - 8 - tất nhiên, vì không thể có quy tắc nào mà vế trái lại là 1 xâu rỗng. Như vậy văn phạm ngữ cấu là loại văn phạm chung nhất. 3.2. Văn phạm cảm ngữ cảnh Văn phạm G=<, , I, R> được gọi là văn phạm cảm ngữ cảnh nếu G là văn phạm ngữ cấu và mọi quy tắc thuộc R đều có dạng , với l()  l() hoặc có dạng   . Ngôn ngữ do văn phạm cảm ngữ cảnh sinh ra gọi là ngôn ngữ cảm ngữ cảnh. Nhận xét: Trong định nghĩa văn phạm cảm ngữ cảnh có bổ sung thêm các yêu cầu với các quy tắc của R: nếu xâu ở vế phải của quy tắc khác rỗng thì độ dài phải không nhỏ hơn độ dài xâu ở vế trái của quy tắc. Ví dụ: Xét các văn phạm sau: G 1 =< 1 ,  1 , I, R 1 > có  1 ={a, b};  1 ={I, A, B}; R 1 ={I  AB, A  aA, A  a, B  bB, B  b}; G 2 =< 2 ,  2 , I, R 2 > có  2 ={a, b};  2 ={I, A, B, C}; R 2 ={I  ACB, A  aA, AC  a, B  bB, B  b}; Văn phạm G 1 là văn phạm cảm ngữ cảnh, văn phạm G 2 không phải là văn phạm cảm ngữ cảnh mà là văn phạm ngữ cấu, vì trong G 2 có quy tắc AC  a vế trái có độ dài 2 còn vế phải có độ dài 1, không thỏa mãn điều kiện của văn phạm cảm ngữ cảnh. Nhưng 2 văn phạm này lại tương đương vì cùng sinh ra ngôn ngữ L={a m b n | m>0, n>0}. Ví dụ này chứng tỏ rằng 1 ngôn ngữ là cảm ngữ cảnh thì đồng thời cũng là ngôn ngữ ngữ cấu, tuy nhiên điều ngược lại không đúng. Có ngôn ngữ ngữ cấu không thể có văn phạm cảm ngữ cảnh nào sinh ra được. 3.3. Văn phạm phi ngữ cảnh Văn phạm G=<, , I, R> được gọi là văn phạm phi ngữ cảnh nếu mọi quy tắc thuộc R đều có dạng A   với A   ,   V*. Ngôn ngữ do văn phạm phi ngữ cảnh sinh ra gọi là ngôn ngữ phi ngữ cảnh. - 9 - Nhận xét: Trong định nghĩa văn phạm phi ngữ cảnh yêu cầu với các quy tắc của R đều có vế trái là 1 ký hiệu không kết thúc, còn vế phải là xâu tùy ý thuộc V*. Yêu cầu này rõ ràng là cũng thỏa mãn điều kiện của văn phạm cảm ngữ cảnh, vì vậy văn phạm phi ngữ cảnh là trường hợp riêng của văn phạm cảm ngữ cảnh. Ví dụ: Xét các văn phạm sau: G 1 =< 1 ,  1 , I, R 1 > có  1 ={a, b};  1 ={I}; R 1 ={I  aIb, I  ab}; G 2 =< 2 ,  2 , I, R 2 > có  2 ={a, b};  2 ={I, A, B, C}; R 2 ={I  AC, A  aB, BC  ACb, AC  ab}; Rõ ràng G 1 là văn phạm phi ngữ cảnh, còn G 2 không phải là văn phạm phi ngữ cảnh mà là văn phạm cảm ngữ cảnh, vì trong G 2 có các quy tắc BC  ACb và AC  ab có vế trái không phải là 1 ký hiệu, không thỏa mãn điều kiện của văn phạm phi ngữ cảnh. Nhưng 2 văn phạm này lại tương đương vì cùng sinh ra ngôn ngữ L={a n b n | n>0}. Ví dụ này chứng tỏ rằng 1 ngôn ngữ là phi ngữ cảnh thì đồng thời cũng là ngôn ngữ cảm ngữ cảnh, tuy nhiên điều ngược lại không đúng. Có ngôn ngữ cảm ngữ cảnh không thể có văn phạm phi ngữ cảnh nào sinh ra được. 3.4. Văn phạm chính quy Văn phạm G=<, , I, R> được gọi là văn phạm chính quy nếu mọi quy tắc thuộc R có dạng A  aB, A  a hoặc có dạng A  Ba, A  a với A, B   , a   . Ngôn ngữ do văn phạm chính quy sinh ra gọi là ngôn ngữ chính quy. Nhận xét: Trong định nghĩa văn phạm chính quy yêu cầu các quy tắc của R đều có vế trái là 1 ký hiệu không kết thúc, còn vế phải có thể là 1 ký hiệu kết thúc hoặc có thể là xâu gồm 2 ký hiệu dạng aB, gọi là đệ quy phải, hoặc là có dạng Ba thì gọi là đệ quy trái và trong R chỉ được phép có 1 loại đệ quy (trái hoặc phải). Yêu cầu này rõ ràng là cũng thỏa mãn điều kiện của văn phạm phi ngữ cảnh, vì vậy văn phạm chính quy là trường hợp riêng của văn phạm phi ngữ cảnh. Ví dụ: Xét các văn phạm sau: - 10 - G 1 =< 1 ,  1 , I, R 1 > có  1 ={a, b};  1 ={I, A}; R 1 ={I  aI, I  aA, A  bA, A  b,}; G 2 =< 2 ,  2 , I, R 2 > có  2 ={a, b};  2 ={I, A, B}; R 2 ={I  AabB, A  aA, B  bB, A  , B  }; Rõ ràng G 1 là văn phạm chính quy, còn G 2 không phải là văn phạm chính quy mà là văn phạm phi ngữ cảnh, vì trong G 2 có các quy tắc I  AabB có vế phải là xâu gồm 4 ký hiệu, không thỏa mãn điều kiện của văn phạm chính quy. Nhưng G 1 và G 2 lại tương đương vì cùng sinh ra ngôn ngữ L={a m b n | m>0, n>0}. Ví dụ này chứng tỏ rằng 1 ngôn ngữ là chính quy thì đồng thời cũng là ngôn ngữ phi ngữ cảnh, tuy nhiên điều ngược lại không đúng. Có ngôn ngữ phi ngữ cảnh không thể có văn phạm chính quy nào sinh ra được. Nhận xét: Loại của ngôn ngữ trùng với loại của văn phạm sinh ra ngôn ngữ đó. Từ các định nghĩa của các loại văn phạm ta thấy khái niệm văn phạm ngữ cấu rộng nhất, nó bao hàm các loại văn phạm còn lại, văn phạm chính quy là hẹp nhất, nó chứa trong tất cả các loại văn phạm khác. Nếu gọi L 0 , L 1 , L 2 , L 3 theo thứ tự là lớp ngôn ngữ ngữ cấu, lớp ngôn ngữ cảm ngữ cảnh, lớp ngôn ngữ phi ngữ cảnh và lớp ngôn ngữ chính quy là tập tất cả các văn phạm của mỗi loại tương ứng sinh ra, sẽ có dãy bao hàm thức sau: L 3  L 2  L 1  L 0 Có thể chỉ ra rằng tồn tại ngôn ngữ chỉ thuộc L 0 mà không thuộc L 1 , tồn tại ngôn ngữ chỉ thuộc L 1 mà không thuộc L 2 , tồn tại ngôn ngữ chỉ thuộc L 2 mà không thuộc L 3 , tức là các bao hàm thức đều là thực sự, nghĩa là không xảy ra đẳng thức. Biểu đồ Ven sau đây biểu diễn một cách trực quan các bao hàm thức này: L 3 L 2 L 1 L 0 [...]... Tìm văn phạm sinh ra ngôn ngữ L={ambnakbt  m  n  k  t  0} 35) Tìm văn phạm sinh ra ngôn ngữ L=={ambna3mb2n  m  0, n  0} - 20 - CHƢƠNG 2 AUTOMAT HỮU HẠN (FINITE AUTOMATA) 1 Định nghĩa Automat hữu hạn (Finite Automata FA) 1.1 Giới thiệu chung Lý thuyết Automat nghiên cứu về các thiết bị, máy tính toán trừu tượng Vào khoảng năm 1936, khi máy tính chưa ra đời, A Turing, nhà khoa học người Anh đã...4 Các dạng bài toán về văn phạm 4.1 Bài toán xác định ngôn ngữ của văn phạm Dạng tổng quát của bài toán này là cho trước 1 văn phạm yêu cầu xác định ngôn ngữ sinh bởi văn phạm đó Phương pháp chung để giải bài toán này là phân tích các quy tắc của văn phạm đã cho để tìm ra được tất cả các dạng từ có thể tạo được... gọi là automat hữu hạn đơn định (Deterministic Finite Automata, viết tắt là DFA) Dạng 2:  là ánh xạ từ tích Đề các Q x  vào tập hợp các tập con của Q (ký hiệu là 2Q), : Q x   2Q, cho tương ứng mỗi cặp (q, a) với q  Q và a   vào 1 tập con các trạng thái xác định Q’ thuộc 2Q (Q’  Q): (q, a)=Q’ Nếu hàm chuyển có dạng này thì ta gọi là automat hữu hạn không đơn định (Nondeterministic Finite Automata,... các loại máy trừu tượng đơn giản hơn, mà người ta gọi là Automat hữu hạn” (Finite Automata) đã được nhiều nhà khoa học nghiên cứu, tìm hiểu để mô hình hóa chức năng, hoạt động của não bộ, của các thiết bị tự động, máy tính, … Cũng vào giai đoạn này, N Chomsky đã nghiên cứu về văn phạm và ngôn ngữ hình thức, có mối quan hệ mật thiết với các automat trừu tượng, làm cơ sở cho một số phần mềm quan trọng,... từ nêu trên, các dẫn xuất đầy đủ trong G không sinh ra dạng từ nào khác Từ đó kết luận L(G)={am, bn | m>0, n>0} 4.2 Bài toán xác định văn phạm sinh ngôn ngữ Dạng tổng quát của bài toán này là cho trước 1 ngôn ngữ, yêu cầu xác định văn phạm sinh ra ngôn ngữ đó Phương pháp chung để giải bài toán này là phân tích tìm ra những đặc trưng, quy luật của các từ trong ngôn ngữ đã cho, từ đó xây - 11 - dựng các... automat hữu hạn không đơn định (Nondeterministic Finite Automata, viết tắt là NFA) Tập các trạng thái Q của automat M được sử dụng để ghi nhớ trạng thái của M trong quá trình hoạt động Vì Q là hữu hạn nên M được gọi là automat hữu hạn FA đoán nhận ngôn ngữ bằng cách đoán nhận từng từ thuộc ngôn ngữ đó Automat M= hoạt động theo cách sau: khi cho xâu vào =x1x2x3 … xn  *, M sẽ đoán nhận... phép người sử dụng nhấn 1 nút, gây ra các tác dụng khác nhau tùy thuộc vào trạng thái hiện tại của công tắc Công tắc này được mô hình hóa bởi một automat hữu hạn có sơ đồ như sau: push start on off push 1.2 Định nghĩa FA đơn định (DFA)và không đơn định (NFA) Automat hữu hạn là 1 bộ có thứ tự M=, trong đó:   là tập hợp hữu hạn khác rỗng các ký hiệu vào - 21 -  Q là tập hợp hữu hạn khác... x2   M: … q0  q1  … xk xk+1  …  qk-1  qk  … xn  qn-1  p Chú ý: Đối với automat M là DFA, giá trị của hàm chuyển (q, a) là 1 trạng thái xác định thuộc Q, tức là khi M ở trạng thái q, đọc ký hiệu a thì M chuyển sang trạng thái do (q, a) xác định, nên với mỗi xâu vào , M chỉ có 1 cách đọc duy nhất; còn đối với automat M là NFA, giá trị của hàm chuyển (q, a) là 1 tập hợp con của Q, tức là... luận M không đoán nhận được  Để đơn giản cho việc trình bày, có thể viết (q0, )=p, nghĩa là xuất phát từ trạng thái ban đầu q0 với hàm chuyển , sau khi đọc song xâu , automat M ở vào trạng thái p Ngôn ngữ đoán nhận được bởi automat M, ký hiệu là L(M), là tập hợp tất cả các xâu  thuộc * đoán nhận được bởi M: L(M)={  *  (q0, )  F} 1.3 Các phương pháp biểu diễn FA Theo định nghĩa và cách... G chính là văn phạm cần tìm Có thể chỉ ra cách tạo một từ bất kỳ có số lượng a và b đều chẵn theo cách lập luận trên Chẳng hạn, từ abab có dẫn xuất đầy đủ như sau: D=(I, aA, abC, abaB, ababI, abab) 5 Bài tập chƣơng 1 1) Cho văn phạm G = < , , I, R > với:  = { 0, 1 };  = { I }; R = { I01I, I }; Hãy cho biết văn phạm G sinh ra ngôn ngữ nào trong số các ngôn ngữ sau: a L = { 0n1n  n  0 } b L

Ngày đăng: 14/01/2015, 16:50

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

Tài liệu liên quan