1. Trang chủ
  2. » Công Nghệ Thông Tin

Tập bài giảng Ngôn ngữ hình thức

246 11 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 246
Dung lượng 1,98 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tập bài giảng “Ngôn ngữ hình thức” được biên soạn theo chương trình chi tiết môn học “Ngôn ngữ hình thức” của trường Đại học Sư phạm Kỹ thuật Nam Định. Mục tiêu của tập đề cương bài giảng nhằm cung cấp các kiến thức cơ bản, tổng quan về ngôn ngữ, văn phạm và automat; giúp sinh viên nắm vững các kiến thức cơ bản về văn phạm chính quy và automat hữu hạn, văn phạm phi ngữ cảnh và automat đẩy xuống là công cụ dùng để xây dựng và phân tích từ vựng, cú pháp của các ngôn ngữ lập trình. Mời các bạn cùng tham khảo.

Trang 1

Mục lục

LỜI NÓI ĐẦU 4

Chương 1 TỔNG QUAN VỀ NGÔN NGỮ VÀ AUTOMAT 6

1.1 Các khái niệm cơ bản 6

1.1.1 Khái niệm ngôn ngữ hình thức 6

1.1.2 Bảng chữ cái (alphabet) 8

1.1.3 Xâu trên bảng chữ cái 8

1.1.4 Các phép toán trên xâu 9

1.1.5 Ngôn ngữ (language) 10

1.2 Văn phạm và ngôn ngữ 13

1.2.1 Văn phạm 13

1.2.2 Ngôn ngữ sinh bởi Văn phạm 15

1.2.3 Văn phạm tương đương 16

1.3 Phân loại văn phạm và ngôn ngữ 16

1.3.1 Văn phạm và ngôn ngữ loại 0 16

1.3.2 Văn phạm và ngôn ngữ loại 1 17

1.3.3 Văn phạm và ngôn ngữ loại 2 17

1.3.4 Văn phạm và ngôn ngữ loại 3 17

1.3.5 Ví dụ 18

1.4 Một số tính chất của ngôn ngữ 19

1.4.1 Tính chất 1 19

1.4.2 Tính chất 2 20

1.4.3 Tính chất 3 20

1.4.4 Tính chất 4 21

1.4.5 Tính chất 5 (Tính đệ quy của ngôn ngữ) 21

1.5 Automat 23

1.5.1 Mô tả automat 23

1.5.2 Phân loại automat 24

CÂU HỎI VÀ BÀI TẬP CHƯƠNG 1 25

Trang 2

Chương 2 VĂN PHẠM CHÍNH QUY VÀ AUTOMAT HỮU HẠN 30

2.1 Automat hữu hạn (FINITE AUTOMAT - FA) 31

2.1.1 Định nghĩa Automat hữu hạn 31

2.1.2 Automat hữu hạn đơn định 36

2.1.3 Automat hữu hạn không đơn định-NFA (Nondeterministic Finite Automata) 42

2.1.4 Sự tương đương giữa DFA và NFA 49

2.1.5 NFA với ε-dịch chuyển (NFAε) 56

2.1.6 Sự tương đương giữa NFA có và không có ε-dịch chuyển 62

2.2 Biểu thức chính quy (RE: Regular Expressions) 64

2.2.1 Định nghĩa 65

2.2.2 Một số tính chất đại số của biểu thức chính quy 66

2.2.3 Sự tương đương giữa automat hữu hạn và biểu thức chính quy 67

2.3 Văn phạm chính quy 79

2.3.1 Văn phạm tuyến tính 79

2.3.2 Sự tương đương giữa văn phạm chính quy và automat hữu hạn 80

2.3.3 Tính chất của ngôn ngữ chính quy 87

2.3.4 Bổ đề bơm cho ngôn ngữ chính quy 90

2.3.5 Xác định ngôn ngữ chính quy 92

CÂU HỎI VÀ BÀI TẬP CHƯƠNG 2 94

Chương 3 VĂN PHẠM PHI NGỮ CẢNH VÀ AUTOMAT ĐẨY XUỐNG 107

3.1 Văn phạm phi ngữ cảnh (CFG: Context Free Grammar) 107

3.1.1 Định nghĩa 109

3.1.2 Dẫn xuất và ngôn ngữ 110

3.1.3 Cây dẫn xuất 111

3.1.4 Quan hệ giữa dẫn xuất và cây dẫn xuất 113

3.1.5 Dẫn xuất trái nhất, dẫn xuất phải nhất 115

3.1.6 Văn phạm nhập nhằng (mơ hồ) 116

3.2 Rút gọn văn phạm phi ngữ cảnh 117

3.2.1 Loại bỏ các ký tự thừa 118

Trang 3

3.2.2 Luật sinh ε (ε quy tắc) 124

3.2.3 Luật sinh đơn vị 128

3.3 Chuẩn hóa văn phạm phi ngữ cảnh 130

3.3.1 Dạng chuẩn Chomsky - CNF (Chomsky Normal Form) 130

3.3.2 Dạng chuẩn Greibach (Greibach Normal Form - GNF) 134

3.4 Tính chất của ngôn ngữ phi ngữ cảnh 140

3.4.1 Bổ đề bơm đối với CFL (Dùng để chứng minh một ngôn ngữ không là ngôn ngữ phi ngữ cảnh) 140

3.4.2 Tính chất đóng của CFL 143

3.5 Automat đẩy xuống (Push down Automata) 145

3.5.1 Mô tả PDA 145

3.5.2 Định nghĩa Automat đẩy xuống 146

3.5.3 Ngôn ngữ đoán nhận bởi PDA 150

3.5.4 PDA và văn phạm phi ngữ cảnh 153

CÂU HỎI VÀ BÀI TẬP CHƯƠNG 3 161

LỜI GIẢI TÓM TẮT HOẶC HƯỚNG DẪN 168

TÀI LIỆU THAM KHẢO 246

Trang 4

LỜI NểI ĐẦU

Ngụn ngữ hỡnh thức (Formal Languages) là bộ mụn khoa học quan trọng

của khoa học mỏy tớnh Ở nhiều nước trờn thế giới, mụn học này đó trở thành mụn

học cơ sở đối với sinh viờn cỏc ngành thuộc lĩnh vực cụng nghệ thụng tin Ở nước

ta, hiện nay nhiều trường đại học cũng đang giảng dạy mụn học “Ngụn ngữ hỡnh

thức” cho sinh viờn cỏc ngành khoa học mỏy tớnh và cụng nghệ thụng tin Tuy nhiờn

tài liệu phục vụ giảng dạy cho mụn học ở nước ta cũn ớt, thời lượng dành cho mụn

học cũng cũn rất khỏc nhau ở mỗi trường Để có một nội dung thống nhất cho các

ngành thuộc lĩnh vực công nghệ thông tin của Tr-ờng, tr-ờng Đại học S- phạm Kỹ

thuật Nam Định đã ban hành ch-ơng trình chi tiết cho môn học Việc xuất bản tập

đề cương bài giảng nhằm đỏp ứng nhu cầu cung cấp tài liệu mụn học cho việc

giảng dạy của giảng viờn và học tập của sinh viờn cỏc ngành thuộc khoa Cụng nghệ

Thụng tin trường Đại học Sư phạm Kỹ thuật Nam Định núi riờng và làm tại liệu

tham khảo cho sinh viờn và cỏn bộ giảng dạy cỏc trường núi chung

Tập đề cương bài giảng “Ngụn ngữ hỡnh thức” được biờn soạn theo chương

trỡnh chi tiết mụn học “Ngụn ngữ hỡnh thức” của trường Đại học Sư phạm Kỹ thuật

Nam Định Mục tiờu của tập đề cương bài giảng nhằm cung cấp cỏc kiến thức cơ

bản, tổng quan về ngụn ngữ, văn phạm và automat; giỳp sinh viờn nắm vững cỏc

kiến thức cơ bản về văn phạm chớnh quy và automat hữu hạn, văn phạm phi ngữ

cảnh và automat đẩy xuống là cụng cụ dựng để xõy dựng và phõn tớch từ vựng, cỳ

phỏp của cỏc ngụn ngữ lập trỡnh Đõy là cỏc kiến thức nền tảng, làm cơ sở cho việc

xõy dựng ra cỏc ngụn ngữ lập trỡnh và cỏc chương trỡnh dịch Về nội dung, tập đề

cương bài giảng được chia thành 3 chương:

Chương 1 Tổng quan về ngụn ngữ và automat.

Chương này trỡnh bày: Cỏc khỏi niệm, kiến thức cơ bản về bảng chữ cỏi, xõu

trờn bảng chữ cỏi, cỏc phộp toỏn trờn xõu; khỏi niệm văn phạm và ngụn ngữ, phõn

loại văn phạm và ngụn ngữ, cỏc phộp toỏn trờn ngụn ngữ và biểu diễn ngụn ngữ;

khỏi niệm, phõn loại automat

Chương 2 Văn phạm chớnh quy và automat hữu hạn

Chương này trỡnh bày cỏc kiến thức cơ bản về: Automat hữu hạn (FA);

automat hữu hạn đơn định (DFA) và Automat hữu hạn khụng đơn định (NFA); Sự

tương đương giữa DFA và NFA; Biểu thức chớnh quy; sự tương đương giưa FA và

biểu thức chớnh quy; Văn phạm chớnh quy, sự tương đương giữa văn phạm chớnh

quy và FA; tớnh chất của văn phạm chớnh quy

Trang 5

Chương 3 Văn phạm phi ngữ cảnh và automat đẩy xuống

Chương này trình bày các kiến thức cơ bản về: Văn phạm phi ngữ cảnh (CFG); rút gọn văn phạm phi ngữ cảnh; chuẩn hoá văn phạm phi ngữ cảnh; tính chất của văn phạm phi ngữ cảnh; automat đẩy xuống (PDA); sự tương đương của PDA và CFG

Đặc biệt cuối mỗi chương còn đưa ra hệ thống câu hỏi, bài tập nhằm củng

cố, khắc sâu, nâng cao và vận dụng các kiến thức vào giải các bài tập và cuối cùng

là phần lời giải tóm tắt hoặc hướng dẫn cho các bài tập nhằm giúp sinh viên tự rèn luyện kỹ năng và kiểm tra kiến thức

Trong quá trình biên soạn, tập đề cương bài giảng không tránh khỏi những sai sót, rất mong đồng nghiệp và các em sinh viên góp ý kiến để tập đề cương bài giảng ngày càng được hoàn thiện hơn

Người biên soạn

Phạm Hùng Phú

Trang 6

Chương 1 TỔNG QUAN VỀ NGÔN NGỮ VÀ AUTOMAT

Mục tiêu:

Giúp sinh viên có khả năng:

- Hiểu được các khái niệm cơ bản: xâu, ngôn ngữ, văn phạm

- Hiểu được các phép toán trên xâu, ngôn ngữ

- Xác định được các thành phần của văn phạm

- Biết được mối quan hệ giữa văn phạm và ngôn ngữ, cách phân loại văn

phạm và ngôn ngữ, các phương pháp biểu diễn ngôn ngữ

- Vận dụng được các kiến thức vào giải các bài tập

Nội dung chính:

- Các khái niệm cơ bản

- Khái niệm, phân loại văn phạm và ngôn ngữ

- Các phép toán trên ngôn ngữ và biểu diễn ngôn ngữ

- Khái niệm, phân loại và biểu diễn automat

1.1 Các khái niệm cơ bản

1.1.1 Khái niệm ngôn ngữ hình thức

Ta đã từng nghe, từng nói nhiều về ngôn ngữ như ngôn ngữ tiếng Anh, tiếng

Việt, ngôn ngữ lập trình Pascal, ngôn ngữ thuật toán, … Song ít người có thể trả lời

chính xác câu hỏi ngôn ngữ là gì?; có bao nhiêu loại ngôn ngữ? và điều quan trọng

hơn, thu hút sự quan tâm hơn là làm thế nào để có ngôn ngữ?

Từ lâu các nhà ngôn ngữ học đã nghiên cứu về ngôn ngữ, song việc nghiên

cứu của họ thiên về các khía cạnh xã hội, lịch sử của ngôn ngữ như: quá trình hình

thành ngôn ngữ, các đặc trưng ngôn ngữ của các dân tộc, … Từ khi máy tính ra đời,

xuất hiện nhu cầu phải dùng ngôn ngữ đễ diễn đạt thuật toán, phải dịch từ ngôn ngữ

thuật toán này sang ngôn ngữ thuật toán khác, … khi đó bắt buộc phải giải quyết

một loạt các vấn đề được đặt ra như:

- Ngôn ngữ là gì?

Trang 7

- Làm thế nào để biểu diễn ngôn ngữ?

- Ngôn ngữ thuật toán cần phải có đặc trưng gì?

- Thế nào là dịch từ ngôn ngữ này sang ngôn ngữ khác?

- Thế nào là bản dịch đúng? …

Quan tâm nghiên cứu, giải quyết những vấn đề nêu trên là lĩnh vực nghiên cứu của ngôn ngữ hình thức và chương trình dịch

Trước hết đề cập đến ngôn ngữ hình thức, một cách ngắn gọn ngôn ngữ hình thức được coi là bộ môn khoa học mà đối tượng nghiên cứu của nó là ngôn ngữ và công cụ nghiên cứu của nó là toán học Nhờ toán học, người ta có thể gạt bỏ đi những đặc trưng riêng của từng loại ngôn ngữ, trừu tượng hoá, hình thức hoá những vấn đề bản chất nhất của ngôn ngữ để nghiên cứu chúng Chính vì lý do này mà ngôn ngữ hình thức còn có tên gọi là “Lý thuyết ngôn ngữ lập trình”

Để minh hoạ cho cách tiếp cận nghiên cứu ngôn ngữ của bộ môn khoa học này, ta xét ví dụ sau:

Xét trong câu tiếng Việt: “Tôi ăn cơm”

Từ “tôi” là <chủ ngữ>, từ “ăn” là <vị ngữ>, từ “cơm” là <bổ ngữ>, khi đó ta

có thể khái quát câu trong tiếng Việt gồm 3 thành phần sắp xếp ở dạng sau:

<Chủ ngữ> <vị ngữ> <bổ ngữ>

Trong đó <chủ ngữ> có thể là <đại từ> hoặc <danh từ>, thay cho các viết này ta viết ngắn gọn:

<Chủ ngữ>  <đại từ>|<danh từ>

Tương tự như vậy ta có thể viết:

<Đại từ>  anh | tôi | nó| ông | bà | em |…

<Danh từ>  cam | bánh | kẹo | xôi | báo | voi…

<Vị ngữ>  <động từ>

<Động từ>  đi | đứng | học | làm | nhảy | viết | vẽ…

<Bổ ngữ> <danh từ>

Theo nguyên tắc này, người ta có thể tạo ra các câu một cách máy móc Ví

dụ như: tôi viết báo cáo, anh ấy học bài, …

Trang 8

1.1.2 Bảng chữ cái (alphabet)

Một bảng chữ cái hay bộ chữ cái là một tập hợp hữu hạn, khác rỗng các phần

tử, ký hiệu là  Các phần tử của một bảng chữ cái  đƣợc gọi là các chữ cái hoặc các ký tự (character) hay ký hiệu (symbol)

là các chữ cái hoặc các ký hiệu hay các ký tự

Để chỉ một chữ cái hoặc ký tự hay ký hiệu thuộc hay không thuộc một bảng chữ cái ta dùng ký hiệu  hoặc 

Ví dụ:

; 9

1.1.3 Xâu trên bảng chữ cái

Xâu (string) hay từ (word) trên một bảng chữ cái  là một dãy hữu hạn gồm một số lớn hơn hay bằng không các ký tự của bảng chữ cái đó; Trong đó, một ký tự

có thể xuất hiện nhiều lần

- Thuật ngữ xâu hay từ còn đồng nghĩa với xâu ký tự

- Xâu rỗng là xâu không có chữ cái nào, độ dài của xâu rỗng bằng không, xâu rỗng đƣợc ký hiệu là 

Trang 9

Xâu x  đƣợc gọi là xâu con của xâu w nếu x đƣợc tạo từ các ký tự nằm liền kề nhau trong xâu w

Tiền tố của xâu w là một xâu con bất kỳ nằm ở đầu xâu w

Hậu tố của xâu w là một xâu con bất kỳ nằm ở cuối xâu w

Ví dụ: cho các xâu w = abc và x = de trên bảng chữ cái La tinh;

- |w| = 3; |x| = 2

- Các xâu a, b, c, ab, bc, abc là các xâu con của xâu w

- Các xâu a, ab, abc là các tiền tố của xâu w

- Các xâu c, bc, abc là các hậu tố của xâu w

1.1.4 Các phép toán trên xâu

1) Phép nhân ghép hai xâu

Cho hai xâu x = x1x2…xn và y = y1y2…ymtrên bảng chữ cái , phép nhân ghép hai xâu x và y là phép cho ta một xâu xy = x1x2…xny1y2…ym trên bảng chữ cái 

Xâu xy đƣợc gọi là xâu ghép của hai xâu x và y Nhƣ vậy, xâu ghép của hai xâu là một xâu đƣợc tạo ra bằng cách viết xâu thứ nhất, sau đó là xâu thứ hai (không có khoảng trống ở giữa)

Ví dụ: Xâu ghép của hai xâu w = abc và u = de trên bảng chữ cái La Tinh là

xâu wu = abcde và w = w = w

Ta ký hiệu: w0

= ; w1 = w; w2 = ww; , wi = wwi-1 với i > 0

2) Phép đảo ngược xâu:

Cho xâu w = a1a2…an trên bảng chữ cái , phép đảo ngƣợc xâu w là phép cho ta kết quả là một xâu trên bảng chữ cái , ký hiệu là wR

và wR = anan-1…a2a1 Xâu wR đƣợc gọi là xâu đảo ngƣợc của xâu w Nhƣ vậy, xâu đảo ngƣợc của xâu w là một xâu đƣợc tạo ra từ xâu w bằng cách viết w theo thứ tự ngƣợc lại và hiển nhiên εR = ε

Trang 10

1.1.5 Ngôn ngữ (language)

1) Khái niệm ngôn ngữ

Cho  là một bảng chữ cái, ký hiệu *

là tập hợp tất cả các xâu trên  kể cả xâu rỗng, +

là tập hợp tất cả các xâu trên  trừ xâu rỗng; như vậy, giữa *

và +

có mối liên hệ *

Ví dụ:

Cho  = a; L = ai với a  và i  N thì L là ngôn ngữ trên bảng chữ cái 

2) Các phép toán trên ngôn ngữ

Theo khái niệm ngôn ngữ thì ngôn ngữ L là một tập hợp Ký hiệu |L| là số các xâu hay số phần tử của L; nếu |L| là một số hữu hạn thì nói rằng L là ngôn ngữ hữu hạn

Từ các ngôn ngữ cho trước, ta có thể thu được các ngôn ngữ mới nhờ áp dụng các phép toán trên ngôn ngữ

Vì ngôn ngữ L là một tập hợp nên các phép toán hợp (union), giao (intersect), hiệu (difference) của lý thuyết tập hợp đều có thể áp dụng trên các ngôn ngữ của cùng một bảng chữ cái để thu được ngôn ngữ mới cũng trên bảng chữ cái

đó Tức là:

- Cho  là bảng chữ cái L1, L2 là hai ngôn ngữ trên  thì:

L1  L2 = x xL1 hoặc x L2;

Trang 11

L1  L2 = x xL1 và x L2;

L1 - L2 = x xL1 và x L2 cũng là các ngôn ngữ trên  Ngoài ra, còn có một số phép toán thường gặp khác như:

Cho Llà ngôn ngữ trên bảng chữ cái 

Ký hiệu: L0 = , ở đây  ký hiệu cho từ rỗng, đó là từ không chứa ký hiệu nào của bảng chữ cái, hay là từ có độ dài bằng 0

- Phép lấy bao đóng (closure)

+ Bao đóng dương (positive)

Trang 12

Ví dụ: Cho ngôn ngữ L = { a, ba } thì:

- L2 = {aa, aba, baa, baba};

- L3= { aaa, aaba, abaa, ababa, baaa, baaba, babaa, bababa};

- L*= { ε, a, ba, aa, aba, baa, baba, aaa, aaba, abaa, ababa, baaa, baaba, … }

3) Biểu diễn ngôn ngữ

Ta biết rằng một ngôn ngữ L trên một bảng chữ cái Σ là một tập con của tập

Σ* Vậy vấn đề đặt ra là đối với một ngôn ngữ L, làm thế nào có thể chỉ rõ các xâu

có thuộc vào L hay không ? Đó chính là vấn đề biểu diễn ngôn ngữ Để biểu diễn ngôn ngữ, ta có thể:

Ví dụ: L1= { ε, a, aa, aaa, aaaa, }

L2 = { ε, ab, aabb, aaabbb, }

- Chỉ ra tính chất đặc trưng:

Trong trường hợp một ngôn ngữ là vô hạn hoặc không thể liệt kê được tất cả các xâu thuộc vào ngôn ngữ đó Trong những trường hợp không phức tạp lắm, người ta thường phải tìm ra tính chất đặc trưng chung của các xâu và xác định các xâu bằng cách chỉ rõ tính chất đặc trưng của các xâu đó Tính chất đặc trưng này thường được mô tả thông qua một vị từ

Trang 13

công cụ cho phép sản sinh ra mọi xâu của một ngôn ngữ; trong khi đó automat lại là

cơ chế hay công cụ cho phép đoán nhận một xâu bất kỳ có thuộc ngôn ngữ hay không Về mặt hình thức, cả văn phạm và automat đều là cách biểu diễn khác nhau của ngôn ngữ

Ví dụ: Cho L là một ngôn ngữ trên bộ chữ cái Σ = {a, b} được định nghĩa như sau:

- ε  L (1)

- Nếu w  L thì awb  L (2)

- Không còn xâu nào khác thuộc L (3)

Định nghĩa đệ quy trên cho ta một cách sản sinh ra các xâu thuộc ngôn ngữ L như sau: Do (1) nên ta có xâu đầu tiên trong L là ε Xem đó là w thì theo (2) ta lại

có được xâu thứ hai aεb hay ab Áp dụng lặp đi lặp lại quy tắc (2) ta lại tìm được các xâu: aabb, rồi lại aaabbb, … Cứ như thế có thể phát sinh tất cả các xâu thuộc ngôn ngữ L Bằng cách áp dụng (một số hữu hạn) quy tắc phát sinh như trên, ta có thể phát sinh bất kỳ xâu nào trong ngôn ngữ

Dễ dàng nhận thấy: L = {ai

bi | i ≥ 0}

Trong giáo trình này, các chương sau sẽ tập trung nghiên cứu hai công cụ dùng để biểu diễn ngôn ngữ, như đã nói ở trên, đó là văn phạm và automat, bằng cách ấn định các dạng khác nhau vào các công cụ để có thể đưa ra được nhiều loại văn phạm và automat khác nhau, từ đơn giản đến phức tạp và cũng sẽ nghiên cứu các ngôn ngữ được sinh bởi văn phạm hoặc được đoán nhận bởi automat và mối liên quan của chúng với nhau

1.2 Văn phạm và ngôn ngữ

1.2.1 Văn phạm

Một công cụ để mô tả ngôn ngữ là văn phạm Đây là công cụ có định nghĩa toán học chặt chẽ, được các nhà toán học nghiên cứu kỹ và trở thành một thành phần quan trọng, chính yếu của lý thuyết ngôn ngữ

1) Định nghĩa

Văn phạm G là một hệ thống gồm bốn thành phần được xác định như sau:

G = (N, T, P, S) trong đó:

Trang 14

+ N – Là một tập hữu hạn các ký hiệu không kết thúc (Nonterminal) hay tập

Giả sử α  (N  T)+, β (N  T)* và β là ảnh của α qua ánh xạ P, khi đó cặp

(α, β) là một luật sinh và được ký hiệu là α  β

+ SN - là ký hiệu chưa kết thúc đặc biệt dùng làm ký hiệu bắt đầu (start)

- Các chữ cái La Tinh viết hoa (A, B, C, ) để chỉ các ký hiệu trong tập ký

hiệu không kết thúc N; Chữ cái in hoa nằm ở vế trái của luật sinh đầu tiên là ký tự

khởi đầu của văn phạm

- Các chữ cái viết thường ở đầu bảng chữ cái La Tinh (a, b, c, ) hoặc các

chữ số để chỉ các ký hiệu kết thúc thuộc tập ký hiệu kết thúc T

- Các chữ cái viết thường ở cuối bảng chữ cái La Tinh (x, y, z, w, ) để chỉ

xâu các ký hiệu kết thúc

Nhận xét: Bằng quy ước này có thể suy ra được các ký hiệu không kết thúc, các

ký hiệu kết thúc và ký hiệu bắt đầu của văn phạm một cách xác định và duy nhất

bằng cách xem xét các luật sinh Vì vậy, để biểu diễn một văn phạm, một cách đơn

giản người ta chỉ cần liệt kê tập các luật sinh mà không cần chỉ rõ đầy đủ các thành

phần của của văn phạm

Trang 15

1.2.2 Ngôn ngữ sinh bởi Văn phạm

m là dẫn xuất qua một hoặc nhiều bước

2) Ngôn ngữ sinh bởi văn phạm

Ngôn ngữ sinh bởi văn phạm G = (N, T, P, S) là tập hợp các xâu w  T*được dẫn xuất ra từ ký hiệu bắt đầu S của văn phạm bởi các luật sinh thuộc tập P và được ký hiệu là L(G) Như vậy:

Trang 16

1.2.3 Văn phạm tương đương

Cho hai văn phạm G1 = (N1, T, P1, S1) và G2 = (N2, T, P2, S2), ta nói rằng G1

tương đương với G2 , ký hiệu là G1  G2 nếu L(G1) = L(G2)

Nói cách khác hai văn phạm được gọi là tương đương nếu chúng sinh ra cùng một ngôn ngữ

Như vậy, G1 và G2 là hai văn phạm tương đương

1.3 Phân loại văn phạm và ngôn ngữ

Ở trên đã xem xét văn phạm là một công cụ để sinh ra ngôn ngữ, tiếp theo ta

sẽ xem xét các vấn đề liên quan đến câu hỏi có bao nhiêu loại ngôn ngữ ? Quan hệ giữa chúng như thế nào ? Liên quan đến các câu hỏi trên đã có nhiều nhà khoa học đưa ra cách phân loại khác nhau, song một cách phân loại được coi là tốt nhất, phù hợp với mục đích nghiên cứu là cách phân loại của nhà toán học Chomsky Chomsky đưa ra cách phân loại ngôn ngữ dựa vào các quy tắc sinh và được sử dụng như là cách phân loại chủ yếu trong lý thuyết ngôn ngữ hình thức

1.3.1 Văn phạm và ngôn ngữ loại 0

Văn phạm G được gọi là văn phạm loại 0 nếu các quy tắc sinh của nó không

có bất kỳ một điều kiện ràng buộc nào Văn phạm loại 0 còn có tên gọi là văn phạm ngữ cấu hay văn phạm không hạn chế (Unrestricted Grammar)

Ngôn ngữ sinh bởi văn phạm loại 0 được gọi là ngôn ngữ loại 0

Trang 17

1.3.2 Văn phạm và ngôn ngữ loại 1

Văn phạm G đƣợc gọi là văn phạm loại 1 nếu các quy tắc sinh của nó có

dạng:  , với điều kiện (NT)+ và 

Văn phạm loại 1 còn đƣợc gọi là văn phạm cảm ngữ cảnh (Context Sensitive

Grammar - CSG)

Ngôn ngữ sinh bởi văn phạm loại 1 đƣợc gọi là ngôn ngữ loại 1 và còn đƣợc

gọi là ngôn ngữ cảm ngữ cảnh (CSL)

1.3.3 Văn phạm và ngôn ngữ loại 2

Văn phạm G đƣợc gọi là văn phạm loại 2 nếu các quy tắc sinh của nó có

dạng: ; với N (NT)*

Văn phạm loại 2 còn đƣợc gọi là văn phạm phi ngữ cảnh (Context free

Grammar - CFG)

Ngôn ngữ sinh bởi văn phạm loại 2 đƣợc gọi là ngôn ngữ loại 2 và còn đƣợc

gọi là ngôn ngữ phi ngữ cảnh (CFL)

1.3.4 Văn phạm và ngôn ngữ loại 3

Văn phạm G đƣợc gọi là văn phạm loại 3 nếu mọi quy tắc sinh của nó có một

trong hai dạng:

1 A  Bw hoặc A  w (văn phạm tuyến tính trái);

2 A  wB hoặc A  w (văn phạm tuyến tính phải)

Trong đó: A, BN và wT*

Văn phạm loại 3 còn đƣợc gọi là văn phạm chính quy (Regular Grammar - RG)

Ngôn ngữ sinh bởi văn phạm loại 3 đƣợc gọi là ngôn ngữ loại 3 và còn đƣợc

gọi là ngôn ngữ chính quy (RL)

Chú ý:

Từ cách phân loại trên ta có nhận xét: Văn phạm loại 3 cũng là văn phạm loại

2; văn phạm loại 2 cũng là văn phạm loại 1; văn phạm loại 1 cũng là văn phạm loại 0

Tức là: G3 G2  G1  G0

Từ đây suy ra nhận xét trên cũng đúng với các loại ngôn ngữ Tức là:

L3 L2  L1  L0

Trang 18

- P = {S → aS; S → aA; A → bA; A → b}

Đây là văn phạm loại 3 (vì tập luật sinh có dạng tuyến tính phải)

Chẳng hạn, một dẫn xuất từ S có dạng:

S  aS  aaS  aaaA  aaabA  aaabbA  aaabbbA  aaabbbb = a3 b4

Hay văn phạm sinh ra ngôn ngữ L(G) = {ambn | m, n ≥ 1}

S  aSb  aaSbb  aaaSbbb  aaaabbbb = a4b4

Hay văn phạm sinh ra ngôn ngữ L(G

Trang 19

P: SA → a; S → bcA; acS → cA

Đây là văn phạm loại 0

1.4 Một số tính chất của ngôn ngữ

Bản chất của ngôn ngữ là tập hợp vì vậy ngôn ngữ mang đầy đủ các tính chất của tập hợp, mặt khác ngôn ngữ lại được sinh ra bởi văn phạm vì vậy cần phải xem xét ngoài các tính chất của tập hợp ngôn ngữ còn có thêm những tính chất gì ? Phần này sẽ trình bày một số tính chất của ngôn ngữ do văn phạm sinh ra

1.4.1 Tính chất 1

Loại của ngôn ngữ đóng với phép hợp

Nói cách khác, tính chất 1 khẳng định rằng hợp của 2 ngôn ngữ cùng loại là ngôn ngữ cùng loại

Giả sử cho 2 văn phạm cùng loại G1 = (N1, T, P1, S1), G2 = (N2, T, P2, S2), văn phạm G1, G2 tương ứng sinh ra ngôn ngữ L1, L2 Giả sử L = L1  L2 ta cần chứng minh: L là ngôn ngữ được sinh ra bởi văn phạm G cùng loại với văn phạm G1, G2 Điều đáng lưu ý ở đây là hai văn phạm phải có cùng bảng chữ cái T thì việc xem xét mới có nghĩa

Trang 20

Ta xây dựng văn phạm G = (N, T, P, S) thoả mãn 2 điều kiện:

S  S1* w hoặc S  S2 * w; nhưng từ S1 * w hoặc S2 * w ta suy ra

w  L1L2 Ngược lại nếu w  L1  L2, khi đó w  L1 hoặc w L2

Theo định nghĩa suy ra S1 * w hoặc S2 * w Nếu w  L1 có nghĩa là

S1 * w Suy ra S  S1 * w ; tức là S * w hay w  L, còn nếu w L2 có nghĩa

là S2 * w Suy ra S  S2 * w suy ra S * w hay w  L

1.4.2 Tính chất 2

Loại của ngôn ngữ đóng với phép lặp

Tính chất 2 khẳng định rằng phép lặp của một ngôn ngữ là một ngôn ngữ cùng loại Nghĩa là nếu M = L L…L = Li thì M là ngôn ngữ cùng loại với L Ta có thể kiểm tra tính đúng đắn của các tính chất trên

1.4.3 Tính chất 3

Cho G = (N, T, P, S) không phải là văn phạm loại 0, có ký hiệu ban đầu S ở vế phải của quy tắc sinh khi đó tồn tại văn phạm G‟ cùng loại và tương đương với G không có ký hiệu bắt đầu ở vế phải của quy tắc sinh

Trang 21

Nói cách khác P‟ gồm tất cả các quy tắc sinh của G có bổ sung thêm các quy tắc sinh dạng S‟   nếu trong P có quy tắc sinh dạng S 

Với cách xây dựng trên rõ ràng trong G‟ không có quy tắc nào mà ký hiệu bắt đầu S‟ xuất hiện ở vế phải Bây giờ, ta chỉ cần chứng minh G và G‟ là tương đương, nghĩa là L(G) = L(G‟)

Giả sử w  L(G) khi đó theo định nghĩa ta có dẫn xuất S * w, tách bước đầu tiên của dẫn xuất này ta có S  * w, với   (NT)+ Theo cách xây dựng G‟ vì trong G có quy tắc S   nên trong G‟ có quy tắc S‟  Khi đó, dẫn xuất S‟* w là ở trong G‟ vì dẫn xuất * w trong G cũng là dẫn xuấu trong G‟

Suy ra w  L(G‟) hay L(G)  L(G‟)

Ngược lại giả sử w L(G‟) khi đó theo định nghĩa ta có S‟ * w Lập luận tương tự như trên ta có L(G)  L(G‟) Suy ra L(G) = L(G‟)

Chú ý:

Tính chất 3 cho phép ta coi các văn phạm loại 1, 2, 3 không có ký hiệu bắt đầu

ở vế phải của các quy tắc sinh Do đó nếu từ rỗng  L(G) thì trong P ắt phải có quy tắc S 

1.4.5 Tính chất 5 (Tính đệ quy của ngôn ngữ)

Ta nói rằng văn phạm G là đệ quy nếu tồn tại thuật toán xác định một từ w cho trước có thuộc L(G) hay không? Trước khi nói đến tính đệ quy của ngôn ngữ ta có vài nhận xét sau:

Trang 22

- Giả sử G = (N, T, P, S) là văn phạm cảm ngữ cảnh, xâu rỗng  L(G) khi và chỉ khi tập P có quy tắc S  Như vậy, ta cần phải kiểm tra quy tắc S  có trong P hay không? Bằng cách loại quy tắc S  khỏi P, ta có văn phạm cảm ngữ cảnh mới:

G‟ = (N, T, P‟, S) Văn phạm G‟ sinh ra L(G) \ , mỗi dẫn xuất trong G‟ thoả mãn điều kiện của văn phạm cảm ngữ cảnh Nghĩa là trong mọi quy tắc sinh của G‟ có độ dài vế phải lớn hơn hoặc bằng vế trái

Giả sử V = NT, V = n và w là xâu khác xâu rỗng thuộc L(G‟)

Ta suy ra S * w Giả sử dẫn xuất có dạng:

S 12  …m (a)

Ở đây m= w Từ nhận xét trên ta suy ra:

12 … mGiả sử rằng tồn tại i sao cho các xâu i, i+j trong dãy dẫn xuất trên có độ dài như nhau và bằng p Giả sử rằng j > np

khi đó suy ra trong dãy dẫn xuất (a) có ít nhất hai xâu giống nhau, do đó suy ra trong V* chỉ có nhiều nhất là np xâu có độ dài p trong trường hợp ngược lại ta có thể bỏ đi ít nhất một bước trong dãy dẫn xuất trên Giả sử r = s với r < s khi đó dẫn xuất (a) có thể viết lại ngắn hơn là:

Trang 23

Nếu S *  và   n thì  phải thuộc vào một Tm nào đó, trái lại nếu không dẫn xuất được ra  hoặc > n thì  sẽ không thuộc bất kỳ Tm nào

Từ cách xây dựng Tm ở trên suy ra Tm là dãy không giảm Tm-1  Tm với mọi

m 1; hơn nữa, dãy này bị chặn nên tồn tại m mà Tm= Tm-1 = T‟ Nếu w không thuộc

Tm khi đó w không thuộc L(G) và đương nhiên nếu w thuộc Tm thì S * w

Giả sử V = NT và V= q, khi đó trong V+ số xâu có độ dài nhỏ hơn hoặc bằng n là s = q + q2 + q3+……+ qn Ta có s < (1+q)n+1, rõ ràng số từ này là hữu hạn trong T‟ Vì vậy, ta có thể so w với các từ có trong T‟ Nghĩa là tồn tại thuật toán để xác định xem w có thuộc L(G) hay không?

Ví dụ:

Cho G = (N, T, P, S):

N= S, B, C; T= a, b, c; P: S  aSBC; S  aBC; CB  BC; aB  ab;

BB  bb; bC bc; cC cc;

Xét từ w = abac trong L(G); theo cách xây dựng Tm trong định lý trên ta có:

T0 = S;

T1 = S, aSBC, aBC;

T2 = S, aSBC, aBC, abc;

T3 = S, aSBC, aBC, abc;

kỳ, sau một số bước làm việc, automat sẽ cho câu trả lời xâu đó có thuộc ngôn ngữ hay không Để có được quá trình tự động như vậy, người ta thường phải lập trình sẵn cho nó một “lộ trình” thực hiện và các máy chỉ cần hoạt động theo đúng lộ trình này Một trong số những máy tự động này điển hình mạnh nhất có thể nói chính là

Trang 24

máy tính số ngày nay Tuy hoạt động theo kiểu “máy”, song thực chất mỗi bước làm việc của automat là một sự thay thế ký hiệu, nghĩa là một bước dẫn xuất như đã nói ở trên Nói chung, một mô hình automat thường bao gồm những thành phần chủ yếu như sau:

Hình 1 Mô hình chung cho một automat

Xâu vào cần xác định sẽ được lưu trữ trên băng vào (input) Tại mỗi thời điểm, ứng với trạng thái hiện thời, máy đọc một ký tự trên băng vào (input), có thể kết hợp với việc xem xét ký hiệu tương ứng trong bộ nhớ, bộ điều khiển của automat sẽ quyết định bước chuyển đến trạng thái tiếp theo

Các loại automat tương ứng với một số lớp văn phạm sẽ được giới thiệu lần lượt trong các chương tiếp theo

1.5.2 Phân loại automat

Dựa vào sự hoạt động của automat, có thể chia automat thành hai loại automat đơn định và automat không đơn định

Automat đơn định (Deterministic Automata): Là một automat mà tại mỗi bước di chuyển, bộ điều khiển chỉ có duy nhất một khả năng lựa chọn trạng thái được chuyển đến tiếp theo khi đọc vào một ký tự trên băng vào Sự duy nhất này thể hiện tính đơn định, nghĩa là hàm chuyển của automat dạng này luôn là đơn trị

Automat không đơn định (Non - deterministic Automata): Là một automat mà tại mỗi bước di chuyển, bộ điều khiển có một vài khả năng để chọn lựa trạng thái được chuyển đến tiếp theo khi đọc vào một ký tự trên băng vào Sự chọn lựa này thể hiện tính không đơn định, nghĩa là hàm chuyển của automat dạng này là đa trị

a1 a2 a3 a4 … ai … … an

Bộ điều khiển

Đầu đọc

Băng vào

Trang 25

CÂU HỎI VÀ BÀI TẬP CHƯƠNG 1

1.1 Nêu khái niệm ngôn ngữ hình thức, công cụ và lĩnh vực nghiên cứu của nó 1.2 Nêu các khái niệm: bảng chữ cái, xâu trên bảng chữ cái, tiền tố, hậu tố; cho

ví dụ

1.3 Nêu các phép toán trên xâu; cho ví dụ

1.4 Nêu các khái niệm: *, +, ngôn ngữ; cho ví dụ

1.5 Nêu các phép toán trên ngôn ngữ; cho ví dụ

1.6 Nêu định nghĩa văn phạm; cho ví dụ

1.7 Nêu khái niệm ngôn ngữ sinh bởi văn phạm; cho ví dụ

1.8 Nêu cách phân loại và các loại văn phạm và ngôn ngữ; cho ví dụ

1.9 Nêu khái niệm văn phạm tương đương; cho ví dụ

1.10 Nêu các tính chất của ngôn ngữ

1.11 Mô tả automat, cách phân loại và các loại automat

1.12 Nêu các phương pháp biểu diễn ngôn ngữ; cho ví dụ

1.13 Cho bảng chữ cái T = {0 ,1} Ta ký hiệu T* là tập tất cả các xâu (kể cả xâu rỗng )

1) Hãy biểu diễn T* dưới dạng liệt kê theo thứ tự độ dài tăng dần và trong các xâu có cùng độ dài thì theo thứ tự từ điển

2) Chỉ ra một số ngôn ngữ trên bảng chữ cái T

1.14 Cho bảng chữ cái T = {0 ,1} L1 và L2 là hai ngôn ngữ trên bảng chữ cái T; với:

Trang 26

1.15 Cho bảng chữ cái  = {a , b} L là một ngôn ngữ trên bảng chữ cái ; với: L

= {, a, b}

Hãy tính:

1) L

2) L0, L1, L2, L3

1.16 Tìm các biểu diễn hữu hạn cho các ngôn ngữ vô hạn sau:

1) L1 = {, ab, aabb, aaabbb, }

2) L2 = {, 0, 1, 00, 01, 000, 001, 011, 111, 0000, 0001, 0011, 0001, 1111, }

1.17 Cho các văn phạm sau đây:

1) G = (N, T, P, S) với tập quy tắc sinh là:

P ={S  ABC; AB aADb; Dab  bDb; DbC  BaC; aB Ba; AB ;

C }

2) G = (N, T, P, S) với tập quy tắc sinh là:

P = {S  ABaDF; BD DCB; BC  bB; AD AAE;

EC AE; EB BE; EF BBDF; DF  B | }

3) G = (N, T, P, S) với tập quy tắc sinh là:

P = {S  SS; S aSb; S bSa; S ab; S ba}

4) G = (N, T, P, S) với tập quy tắc sinh là:

1) S Sab; Sb; S Aa; A  Sa; A Abbba; A  a; S

2) S  AB; AB  BA; A  aA; B  Bb; A  a; B  b

3) S  A; S  AAB; Aa  Aba; A aa; BbAbb; AB ABB; B b 1.19 Cho văn phạm có tập các luật sinh: S Sa; S a; S

Trang 27

1) Văn phạm trên thuộc loại nào; nêu đầy đủ các thành phần của văn phạm trên 2) Chỉ ra các dẫn xuất sinh ra mỗi từ sau:

- w = ;

- w = a;

- w = aa;

- w = ai ; với iN

3) Chỉ ra ngôn ngữ sinh bởi văn phạm trên

1.20 Cho văn phạm có tập các luật sinh: S aA; A aA; A aB; B bB; Bb

1) Văn phạm trên thuộc loại nào; nêu đầy đủ các thành phần của văn phạm trên 2) Chỉ ra các dẫn xuất sinh ra mỗi từ sau:

- w = aab;

- w = aaaaabb;

- w = ai bj; với i, jN+; i  2

3) Chỉ ra ngôn ngữ sinh bởi văn phạm trên

1.21 Cho văn phạm có tập các luật sinh: S bSa; S

1) Văn phạm trên thuộc loại nào; nêu đầy đủ các thành phần của văn phạm trên 2) Chỉ ra các dẫn xuất sinh ra mỗi từ sau:

- w = ;

- w = ba;

- w = bbbaaa;

- w = bi ai; với iN

3) Chỉ ra ngôn ngữ sinh bởi văn phạm trên

1.22 Cho văn phạm có tập các luật sinh: S aAb; S; A aAb; A

1) Văn phạm trên thuộc loại nào; nêu đầy đủ các thành phần của văn phạm trên 2) Chỉ ra các dẫn xuất sinh ra mỗi từ sau:

Trang 28

1.23 Cho văn phạm có tập các luật sinh: S AB; A aA; A a; B aB; Bb

1) Văn phạm trên thuộc loại nào; nêu đầy đủ các thành phần của văn phạm trên 2) Chỉ ra các dẫn xuất sinh ra mỗi từ sau:

- w = aab;

- w = aaaaabb;

- w = ai b; với iN+

3) Chỉ ra ngôn ngữ sinh bởi văn phạm trên

1.24 Chỉ ra văn phạm G có tập T = a, b sao cho xâu L(G) có một trong các tính chất sau:

2) Chỉ ra văn phạm tuyến tính phải sinh ra ngôn ngữ trên

3) Chỉ ra văn phạm phi ngữ cảnh (không chính quy) sinh ra ngôn ngữ trên 1.26 Cho ngôn ngữ: L = {03

1i| iN+ } 1) Chỉ ra văn phạm tuyến tính trái sinh ra ngôn ngữ trên

2) Chỉ ra văn phạm tuyến tính phải sinh ra ngôn ngữ trên

3) Chỉ ra văn phạm phi ngữ cảnh (không chính quy) sinh ra ngôn ngữ trên

1.27 Cho ngôn ngữ: L = {0i1i 2j 3j | iN+, jN } Xây dựng văn phạm phi ngữ cảnh sinh ra ngôn ngữ trên

1.28 Cho ngôn ngữ L = {an bn cm | nN+, mN} Hãy chỉ ra văn phạm phi ngữ cảnh G sao cho L(G) = L

1.29 Cho ngôn ngữ L = {(ab)n cm | n, mN+} Hãy chỉ ra:

1) Văn phạm tuyến tính phải sinh ra ngôn ngữ trên

2) Văn phạm tuyến tính trái sinh ra ngôn ngữ trên

3) Văn phạm phi ngữ cảnh sinh ra ngôn ngữ trên

1.30 Cho ngôn ngữ: L = {031i 2j | i, jN+}

Trang 29

1) Xây dựng văn phạm tuyến tính trái sinh ra ngôn ngữ trên

2) Xây dựng văn phạm tuyến tính phải sinh ra ngôn ngữ trên

3) Xây dựng văn phạm phi ngữ cảnh (không chính quy) sinh ra ngôn ngữ trên 1.31 Cho ngôn ngữ: L = {0i1j 2k | i, j, kN }

1) Xây dựng văn phạm tuyến tính trái sinh ra ngôn ngữ trên

2) Xây dựng văn phạm tuyến tính phải sinh ra ngôn ngữ trên

3) Xây dựng văn phạm phi ngữ cảnh (không chính quy) sinh ra ngôn ngữ trên 1.32 Cho ngôn ngữ: L = {0i

1j 2k 3m| i, j, k, mN } 1) Xây dựng văn phạm tuyến tính trái sinh ra ngôn ngữ trên

2) Xây dựng văn phạm tuyến tính phải sinh ra ngôn ngữ trên

3) Xây dựng văn phạm phi ngữ cảnh (không chính quy) sinh ra ngôn ngữ trên

Trang 30

Chương 2 VĂN PHẠM CHÍNH QUY VÀ AUTOMAT HỮU HẠN

(Regular Grammar -RG and Finite Automata -FA)

Mục tiêu:

Giúp sinh viên có khả năng:

- Trình bày được khái niệm và xác định được các thành phần của một FA và phân loại được FA

- Biết cách chuyển từ NFA sang NFA và từ NFA sang DFA

- Viết được biểu thức chính quy ký hiệu cho ngôn ngữ chính quy

- Hiểu được mối liên hệ giữa FA và biểu thức chính quy và xây dựng được NFA từ một biểu thức chính quy và ngược lại

- Nhận dạng được lớp ngôn chính quy do văn phạm chính quy (RG) sinh ra

- Xây dựng được văn phạm chính quy sinh ra ngôn ngữ được đoán nhận FA

và ngược lại

Nội dung chính:

- Automat hữu hạn (FA): định nghĩa, ngôn ngữ đoán nhận bởi FA

- Automat hữu hạn đơn định (DFA) và Automat hữu hạn không đơn định (NFA)

- Sự tương đương giữa DFA và NFA

- Biểu thức chính quy: định nghĩa và tính chất

- Sự tương đương giưa FA và biểu thức chính quy

- Văn phạm chính quy: văn phạm tuyến tính, sự tương đương giữa văn phạm chính quy và FA

- Tính chất của RL (Regular Languages )

Trang 31

2.1 Automat hữu hạn (FINITE AUTOMAT - FA)

Automat hữu hạn FA là một mô hình tính toán của hệ thống với sự mô tả bởi các thông tin vào (input) và các thông tin ra (output) Tại mỗi thời điểm, hệ thống

có thể được xác định ở một trong số hữu hạn các cấu hình nội bộ gọi là các trạng thái (states) Mỗi trạng thái của hệ thống thể hiện sự tóm tắt các thông tin liên quan đến những input đã chuyển qua và xác định các phép chuyển tiếp theo trên dãy input tiếp theo

Lý do quan trọng nhất cho việc nghiên cứu các hệ thống trạng thái hữu hạn là tính tự nhiên của khái niệm và khả năng ứng dụng đa dạng trong nhiều lĩnh vực thực tế Automat hữu hạn (FA) được chia thành 2 loại: đơn định (DFA) và không đơn định (NFA) Cả hai loại automat hữu hạn đều có khả năng nhận dạng chính xác tập chính quy Automat hữu hạn đơn định có khả năng nhận dạng ngôn ngữ dễ dàng hơn automat hữu hạn không đơn định, nhưng thay vào đó thông thường kích thước của nó lại lớn hơn so với automat hữu hạn không đơn định tương đương

Automat hữu hạn được coi là một công cụ hữu hiệu để nghiên cứu một lớp các ngôn ngữ quan trọng, đó là ngôn ngữ chính quy Trước hết, ta đưa ra định nghĩa về Automat hữu hạn

2.1.1 Định nghĩa Automat hữu hạn

Một cách hình thức ta coi Automat hữu hạn là một hệ thống gồm 5 thành phần, ký hiệu là M = <Q, , , q0, F> trong đó:

Q - Tập hữu hạn khác rỗng các trạng thái

 - Tập hữu hạn khác rỗng các ký hiệu vào (gọi tắt là bảng chữ cái vào)

 - Ánh xạ còn gọi là hàm chuyển trạng thái và có một trong hai dạng sau: 1) : Q  Q

(q, a)  p

2) : Q  2Q

Trang 32

Ta vẽ FA như là bộ điều khiển hữu hạn trạng thái, với mỗi trạng thái qQ,

FA đọc một ký hiệu a  Σ viết trên băng vào (như hình vẽ)

Trong một lần chuyển, FA đang ở trạng thái q đọc ký hiệu vào a trên băng vào, chuyển sang trạng thái được xác định bởi hàm chuyển δ(q, a), rồi dịch đầu đọc sang phải một ký tự Nếu δ(q, a) chuyển đến một trong những trạng thái kết thúc thì

FA đoán nhận xâu được viết trên băng vào (input) phía trước đầu đọc, nhưng không bao gồm ký tự tại vị trí đầu đọc vừa dịch chuyển đến Trong trường hợp đầu đọc đã dịch đến cuối xâu trên băng thì FA mới đoán nhận toàn bộ xâu trên băng vào

Trang 33

2) Cho automat hữu hạn M = <Q, , , q0, F> trong đó:

2.1.1 Biểu diễn Automat hữu hạn

1) Phương pháp đồ thị

Để tiện cho việc xem xét một cách trực quan, người ta dùng sơ đồ để biểu diễn Automat, phương pháp này gọi là phương pháp đồ thị Trong đồ thị, người ta biểu diễn mỗi Automat ứng với một đồ thị có hướng, có trọng số Mỗi trạng thái của Q ứng với một đỉnh của đồ thị; mỗi cung có hướng đi từ đỉnh q đến đỉnh p có trọng số là a nếu (q, a) = p

Trang 34

2) Phương pháp bảng

Trong phương pháp này, người ta dùng bảng gồm m dòng, n cột trong đó m

là số trạng thái của Q, n là số kí tự vào của bảng chữ cái vào 

- Mỗi hàng là một trạng thái qi với i = 1, , m ;

- Mỗi cột là một ký hiệu vào aj với j = 1, , n;

- Ô (i, j), giao của hàng i và cột j là qk nếu (qi, aj) = qk

Ví dụ 1: Cho automat M = <Q, , , q0, F> trong đó:

Hình 2.2 Biểu diễn Automat bằng đồ thị

Biểu diễn automat bằng bảng

Trang 35

Hình 2.3 Đồ thị biểu diễn Automat

Trang 36

Biểu diễn automat bằng bảng

 - Tập hữu hạn khác rỗng các ký hiệu vào (gọi tắt là bảng chữ cái vào)

 - Ánh xạ còn gọi là hàm chuyển trạng thái có dạng:

Trang 37

Nếu p là ảnh của (q, a) qua ánh xạ  thì ký hiệu là (q, a) = p; với q, pQ;

avà đƣợc gọi là một phép chuyển từ trạng thái q sang trạng thái p khi automat nhận ký tự vào là a

Nhƣ vậy, Automat hữu hạn đơn định đang ở trạng thái q, nhận một ký tự vào

a thì nó hoặc không thay đổi trạng thái (chuyển vào chính nó) hoặc xác định duy nhất một trạng thái chuyển tiếp theo

Ngƣợc lại, Automat không thoả mãn điều kiện (*) gọi là Automat không đơn định (Nondeterministic Automat) Nếu M là Automat hữu hạn không đơn định thì

sẽ  a, q Q sao cho (q, a) 1 hay (q, a) sẽ là một tập con của Q

2) Hàm chuyển trạng thái mở rộng

Để có thể mô tả cách hình thức hoạt động của DFA trên một xâu vào, ta mở rộng hàm chuyển δ để áp dụng đối với một trạng thái trên một xâu Ta định nghĩa hàm chuyển mở rộng δ*

là một ánh xạ từ Q × Σ*→ Q với ý nghĩa δ*

(q, w) là trạng thái DFA chuyển đến từ trạng thái q trên xâu vào w:

Trang 38

Q = q0, q1, q2, q3;  = 0, 1; q0 = q0 ; F = q0

Hàm chuyển  xác định nhƣ sau:

(q0, 0) = q2; (q0, 1) = q1; (q1, 0) = q3; (q1, 1) = q0; (q2, 0) = q0;

(q2, 1) = q3; (q3, 0) = q1; (q3, 1) = q2 Hãy tính (q2, 1010)

Áp dụng công thức (1), ta có:

(q2, 1) = q3; (q3, 0) = q1; (q1, 1) = q0; (q0, 0) = q2;Vậy (q2, 1010) = q2

3) Ngôn ngữ đoán nhận bởi automat hữu hạn đơn định

Cho Automat hữu hạn đơn định M = <Q, , , q0, F>, ta gọi ngôn ngữ đoán nhận bởi Automat hữu hạn đơn định M là tập:

L(M) = w  Σ* *

(q0,w) = qF và w*Nhƣ vậy, ngôn ngữ đoán nhận bởi Automat hữu hạn đơn định DFA M là tập tất cả các xâu vào w* sao cho khi Automat ở trạng thái ban đầu q0, nhận từ vào w thì nó có thể chuyển dịch về trạng thái kết thúc thuộc tập F

Hình 2.4 Mô tả quá trình DFA M đoán nhận xâu

Nhƣ vậy, để kiểm tra một xâu vào w = a

1 a

2 a

n đƣợc đoán nhận bởi một NFA hay không ? Ta phải tính *

(q0,w)

q0  q1  q2  qn-1 qn

w = a1 a2 a3 … an -1 an

Trang 39

*(q0,w) = *(q0, a

1a

2 a

n) =  q0,  a1 an-1 an =  q0, a1 an-1 an

Bảng 2.3 Biểu diễn automat bằng bảng

Hãy kiểm tra xem xâu w = 110101 có thuộc L(M) không?

Ta có δ(q

0, 1) = q

1 ; δ(q

1, 1) = q

0 ; δ(q

0, 0) = q

2;

(q2, 1) = q3;



Trang 40

Từ các kết quả trên, ta có giải thuật sử dụng DFA để đoán nhận xâu của ngôn ngữ

4) Giải thuật mô phỏng hoạt động của một DFA

Input : Xâu vào w kết thúc bởi $

Output: Câu trả lời "YES" nếu DFA đoán nhận đƣợc xâu w

và "NO" nếu ngƣợc lại

Hình 2.5 Đồ thị biểu diễn Automat

Ta trình bày giải thuật sử dụng automat đơn định đoán nhận w bằng bảng sau:

b

Start

a

Ngày đăng: 22/11/2021, 14:28

TỪ KHÓA LIÊN QUAN

w