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

Bài giảng Ôtômát và ngôn ngữ hình thức: Chương 3 - ThS. Nguyễn Thị Thùy Linh

15 52 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 15
Dung lượng 852,89 KB

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

Nội dung

Bài giảng Ôtômát và ngôn ngữ hình thức: Chương 3 Văn phạm chính quy và ôtômát hữu hạn cung cấp cho người học những kiến thức như: Ôtômát hữu hạn đơn định - DFA; Ôtômát hữu hạn không đơn định - NFA; Sự tương đương của NFA và DFA; Mối liên quan giữa VPCQ và OH; OHD không xuất phát lại; Các tính chất đóng của ngôn ngữ chính quy; Định lý KLEENE; Biểu thức chính quy; Thuật toán Thampson.

Trang 1

Chương 3 :

VĂN PHẠM CHÍNH QUY

VÀ ÔTÔMÁT HỮU HẠN

2

Nội dung

1 Ôtômát hữu hạn đơn định - DFA

2 Ôtômát hữu hạn không đơn định - NFA

3 Sự tương đương của NFA và DFA

4 Mối liên quan giữa VPCQ và OH

5 OHD không xuất phát lại

6 Các tính chất đóng của ngôn ngữ chính quy

7 Định lý KLEENE

8 Biểu thức chính quy

9 Thuật toán Thampson

Ôtômát hữu hạn đơn định – DFA

(Deterministic Finite Automata)

 Mô tả phi hình thức:

 Ôtômát hữu hạn như một “máy” đoán nhận chuỗi, nó

làm việc như sau:

 Băng từ chia thành nhiều ô Mỗi ô có khả năng lưu

trữ một ký hiệu của chuỗi nhập (chuỗi cần được

đoán nhận w є *)

 Có một đầu đọc, ở mỗi thời điểm quan sát một ô trên

băng từ

 Có một bộ điều khiển Q gồm tập hợp hữu hạn trạng

thái; ở mỗi thời điểm có một trạng thái hiện hành gọi

là trạng thái nội

 Tùy theo cấu hình hiện tại gồm (trạng thái hiện thời của bộ điều khiển và ký hiệu trên ô mà đầu đọc quan sát được), mà Ôtômát chuyển sang trạng thái mới, đồng thời đầu đọc dịch chuyển sang phải một ô

 Quy luật chuyển sang trạng thái mới, được cho bởi một hàm, gọi là hàm chuyển trạng thái : Q x  Q

q Bộ điều khiển

Băng từ sức chứa vô hạn

Input : w  *

Output : Yes, w  L

No, w  L

Trang 2

5

 Trong Q có phân biệt q0 Q, gọi là trạng thái đầu và một tập

hợp F chứa các trạng thái kết thúc

 Ta nói ôtômát đoán nhận (hay thừa nhận) một chuỗi vào w 

*, nếu xuất phát từ q0, đầu đọc nhìn vào ký hiệu bên trái

nhất của w, sau một số bước hữu hạn làm việc, nó đọc xong

chuỗi w và rơi vào một trong các trạng thái kết thúc

 Tập hợp mọi chuỗi (được đoán nhận bởi Ôtômát) hợp thành

ngôn ngữ được đoán nhận bởi ôtômát đó

 Do Q là hữu hạn và hàm chuyển  là hàm toàn phần và đơn

trị, cho nên bước chuyển của Ôtômát được xác định một

cách duy nhất Chính vì vậy mà Ôtômát mô tả như trên được

gọi là ôtômát hữu hạn đơn định

6

 Định nghĩa hình thức: Một ôtômát hữu hạn đơn định (viết tắt là ÔHĐ) là một hệ thống M = (, Q, , q0, F) trong đó:

  là một bộ chữ cái hữu hạn, gọi là bộ chữ vào

 Q là một tập hữu hạn các trạng thái,  Q = 

 : Q x  Q, được gọi là hàm chuyển

 q0 Q là trạng thái đầu

 F  Q là tập các trạng thái cuối

7

 Ví dụ 3.1: Xét Ôtômát hữu hạn đơn định M(  ,Q,  ,q0,F) trong đó:

 = {0, 1}

Q = {q0, q1, q2, q3}

F = {q0}

Hàm  cho bởi ma trận sau:

q0 q2 q1

q1 q3 q0

q2 q0 q3

q3 q1 q2

Ký hiệu vào Trạng thái

Biểu diễn hàm chuyển trạng

 Có 3 cách biểu diễn hàm chuyển (hàm chuyển trạng thái):

 Theo định nghĩa  (qi,a)=qj

 Theo bảng truyền

 Theo đồ thị

8

Trang 3

9

 Để cho dễ hình dung hơn, ta thường biểu diễn hàm chuyển dưới

dạng một đồ thị định hướng, gọi là biểu đồ chuyển như sau:

 Mỗi nút tương ứng với một trạng thái

 Nút đầu trỏ bởi mũi tên có chữ “Bắt đầu”

 Nút cuối được khoanh bởi hai vòng tròn

 Nếu (q, a) = p thì có một cung đi từ nút q tới nút p, và cung

đó mang nhãn a

q 0

q 1

q 1

Bắt đầu

a

 Biểu đồ chuyển cho Ôtômát hữu hạn nói ở trên (Ví dụ 3.1) sẽ như sau:

q 0

q 1

Đầu

1

1

1

1

10

Tính chất của hàm chuyển trạng

1  (q,)=q

2  (q,wa)=  ((q,w),a)

3  (q,aw)=  ((q,a),w), w * và a 

4  (q,xy)=  ((q,x),y), x,y *

11

Định nghĩa tập đoán nhận bởi (M)

 Ký hiệu T(M)

 T(M) = { w | w * , (q0,w) = qf F }

 Ví dụ:

 w1 = 1010

 w2 = 11001001

 W3 = 110101

12

Trang 4

 Ta gọi một hình trạng của ÔHĐ là một chuỗi có dạng qx

với q  Q và x *

 VD: q0w3 = q0 110101 là một hình trạng của (M)

 Quá trình đoán nhận một chuỗi của ÔHĐ là quá trình

biến đổi các hình trạng, thực chất là quá trình “viết lại”

chuỗi

 VD: Viết quá trình đoán nhận chuỗi x = 110101

Quá trình đoán nhận chuỗi vào

 Cho chuỗi w= 110101 Quá trình đoán nhận chuỗi vào đó diễn tả bằng các bước chuyển sau:

110101 110101 110101 110101 110101 110101

q 0 q1 q0 q2 q 3 q 1 q0  F

Vì q0F, vậy chuỗi vào w=110101 được thừa nhận bởi Ôtômat

Nhận xét rằng mỗi trạng thái của M ghi nhớ một tình trạng nhất định của phần chuỗi vào đã đọc như sau:

 q0: phần đã đọc chứa một số chẵn con số 0 và một số chẵn con số 1

 q1: phần đã đọc chứa một số chẵn con số 0 và một số lẻ con số 1

15

Tập các chuỗi được ôtômát thừa nhận

 q2: phần đã đọc chứa một số lẻ con số 0 và một

số chẵn con số 1

 q3: phần đã đọc chứa một số lẻ con số 0 và một

số lẻ con số 1

 Mỗi lần đọc thêm một ký hiệu 0 hay 1, hàm  luôn

luôn chuyển trạng thái của ôtômát về đúng tình trạng

trên Vì F = {q0}, cho nên các chuỗi được M thừa

nhận là các chuỗi có chứa một số chẵn con số 0

và một số chẵn con số 1

16

Ngôn ngữ đoán nhận (thừa nhận) bởi M

 Ngôn ngữ đoán nhận (hay thừa nhận) bởi M là:

L(M) = {w| w *và q0w * p với p  F}

 Trở lại ví dụ 3.1, hệ viết lại ngầm định của nó gồm các sản xuất sau:

q00  q2 q10  q3 q20  q0 q30  q1

q01  q1 q11  q0 q21  q3 q31  q2

Quá trình đoán nhận chuỗi w = 110101 là:

q0110101  q110101  q00101  q2101  q301  q11  q0  F

Có một cách viết khác (thường thấy ở các sách khác):

(q0,110101)=(q1,10101)=(q0,0101)=(q2,101)=(q3,01)= (q1, 1)

= q0  F

Trang 5

17

Ôtômát hữu hạn không đơn định – NFA

(Nondeterministic Finite Automata)

 Dễ dàng mở rộng mô hình ÔHĐ trên để cho hệ viết lại ngầm

định của Ôtômát là một hệ viết lại không đơn định, tức là có thể

chứa các sản xuất có cùng vế trái

 Định nghĩa: Ta gọi Ôtômát hữu hạn không đơn định (hay không

tiền định) viết tắt là ÔHK, là một hệ thống:

M = {, Q, , q0, F}

Trong đó: , Q, q0, F vẫn như tương tự OHĐ Chỉ duy

nhất hàm  là đổi lại: : Q x  2Q

 Hệ viết lại W = (V, P) ngầm định của M cũng có V =  Q

18

Ôtômát hữu hạn không đơn định (tt)

 Tập đoán nhận bởi Ôtômat T(M) = {w | w  * và q0w * qf với qf  F}

 Ngôn ngữ đoán nhận bởi M là:

L(M) = {w | w  * và q0w  * qf với qf  F}

 Chuỗi vào w được (M) thừa nhận nếu tồn tại ít nhất một quá trình dẫn xuất q0w  * qf với qf 

F

 Ví dụ 3.2: Xét ÔHK M = ({0,1}, {q0, q1, q2, q3,

q4}, , q0, {q2, q4}) với hàm chuyển  cho như sau:

19

Ôtômát hữu hạn không đơn định (tt)

 Sau đây là quá trình đoán nhận chuỗi vào 01001, dẫn tới trạng

thái cuối q4:

q001001  q01001  q0001  q301  q41  q4  F

 Đây chỉ là một quá trình đoán nhận trong nhiều quá trình

q0 {q0, q3} {q0, q1}

q1  {q2}

q2 {q2} {q2}

q3 {q4} 

q4 {q4} {q4}

Đầu

0, 1

q0

q1

q2

q3 q

4

1

1

0, 1

0, 1

20

Ôtômát hữu hạn không đơn định (tt)

 Nếu xét tất cả các quá trình, ta có một “cây” như sau:

q001001  q01001  q0001  q001  q01  q0

q31001 q1001 q301 q31 q1

q41  q4  F

Như vậy chuỗi 01001 đã thừa nhận bởi M

Dễ thấy rằng ÔHK này thừa nhận các chuỗi trên {0, 1} có

chứa hai con 0 liên tiếp hoặc có chứa hai con 1 liên tiếp

L (M) = { w00w, w11w | w * ={0,1}*}

Trang 6

21

Sự tương đương giữa ÔHĐ và ÔHK

 Theo định nghĩa mỗi ÔHĐ cũng là một ÔHK, cho nên:

L(ÔHĐ)  L(ÔHK) (1)

 Định lý 3.1: Nếu L một ngôn ngữ được đoán nhận bởi một

ÔHK, thì cũng có một ÔHĐ đoán nhận L

Nói cách khác L(ÔHK)  L(ÔHĐ) (2)

 Giải thuật: Input: M = (, Q, , q0, F) là ÔHK đoán nhận L

Output: M’ = (, Q’, ’, q0’, F’) là OHĐ sao cho L(M’)=L(M)

 B1: Đặt M’ = (, Q’, ’, q0’, F’), trong đó:

• Q’ = 2Q

• F’ là tập mọi trạng thái trong Q’ có chứa một trạng thái cuối

nào đó của M

22

Sự tương đương giữa ÔHĐ và ÔHK (tt)

• Mỗi phần tử trong Q’ được ký hiệu bởi tập hợp {q1, q2,

…, qk}, với q1, q2, …, q0 Q

• Trạng thái đầu q0’ = {q0}

 B3: Vẽ đồ thị chuyển trạng thái

 B4: Kết luận M’ và chú thích rõ 5 phần của Ôtômát

 Với cách thành lập M’ trên ta hoàn toàn CM được L(M) = L(M’) (Tham khảo sách “Ngôn ngữ hình thức” – Nguyễn Văn Ba, trang 32)

’({q1, q2, …, qk}, a) = (qi , a)

B2: Hàm chuyển ’ của M’ được thành lập theo công thức:

 Ví dụ 3.3: Cho M = ({0, 1}, {q0, q1, q2},  ,

q0, {q2}), là một ÔHK trong đó hàm chuyển

trạng thái như sau:

 (q0, 0) = {q0, q1}

 (q0, 1) = {q1}

 (q1, 0) = {q2}

 (q1, 1) = 

 (q2, 0) = {q2}

 (q2, 1) = {q2}

Tìm OHĐ tương đương?

Sự tương đương giữa ÔHĐ và ÔHK (tt)

23

• Kết luận : M’ =(  , Q’,  ’, {q0}, F’) là OHĐ cần tìm

Trong đó:

 = Q’ =

’ (vẽ đồ thị Chú ý: cắt bỏ các nhánh không xuất phát từ q0 hoặc xuất phát từ q 0 nhưng không kết thúc được )

q0 là trạng thái bắt đầu F’ =

24

Trang 7

25

Sự tương đương giữa ÔHĐ và ÔHK (tt)

 Thực ra trong 2Q thường có nhiều phần tử

không thể truy đạt từ {q0}, nên chẳng cần đưa

chúng vào Q’ Vậy để lập Q’, ta nên truy xuất

từ {q0}, rồi từng bước thêm dần các trạng thái

mới, nếu các trạng thái này là kết quả của hàm

chuyển thái áp dụng lên các trạng thái đã có

trước đó

26

Bổ đề 3.1:

 Lớp các ngôn ngữ đoán nhận bởi Ôtômát hữu hạn đơn định (hay không đơn định) là một, và gọi là lớp các ngôn ngữ chính quy (viết tắt là NNCQ)

 NNCQ được sinh ra bởi VPCQ nên VPCQ có mối quan hệ mật thiết với OH Nghĩa là L(G)=L(M)=L là NNCQ

27

Văn phạm chính quy

 Định nghĩa VPCQ (nhắc lại):

• Một văn phạm chính quy phải nếu tập luật sinh của nó dạng:

A  wB | w, với w   * và A, B  

• Mộtvăn phạm chính quy trái nếu tập luật sinh của nó dạng:

A  Bw |w, với w   * và A, B  

• Các văn phạm chính quy phải và trái được gọi chung là văn

phạm chính quy (viết tắt là VPCQ)

• Ngôn ngữ được sinh ra bởi VPCQ gọi là NNCQ

28

Cho ôtômát hữu hạn đơn định xây dựng VPCQ

 Định lý 3.2: Nếu L là một NNCQ trên bộ chữ cái  , thì tồn tại một VPCQ phải G sao cho L – {  } = L(G)

 Giải thuật: (xây xựng một VPCQ phải từ một ôtômát hữu hạn đơn định)

 Input: L = L(M) với M = (  , Q,  , q0, F) là ÔHĐ

 Output:Ta thành lập văn phạm G = (T, V, P, S) sao cho L(G)=L \ {  }

Input Output

M = (, Q, , q 0 , F) G = (T, V, P, S)

Q = {q 0, q 1, q 2,… } V = {V 0 ,V 1 ,V 2 ,…}

 (q 0 , a) = q 1

 (q 1 , a) = q f  F

 a   và q 0 ,q 1  Q

P=

V 0  aV 1

V 1  aV f | a

 a  T

q0 S là kí hiệu bắt đầu trong P

F  Q

Trang 8

Ví dụ 3.4: Tìm văn phạm chính qui sinh ra ngôn ngữ L Biết rằng

L là ngôn ngữ được đoán nhận bởi OH sau đây:

M=(, Q,,q1,F)

 xác định như đồ thị:

={a,b,c}

Q={q1,q2,q3}

F={q3}

q1 là trạng thái bắt đầu

q 1

3

q 2

a

a

b

29

GIẢI

 Văn phạm sinh ra ngôn ngữ L có dạng G=(T,V,P,S)

T={a,b,c}

V={S,A,B,}

P={S  aS | aA

A  bA | bB | b

B  cB | c}

S là kí hiệu bắt đầu trong tập luật sinh

q1 Start

q 3

q2

a

a

b

30

31

 Ví dụ 3.5: Cho ÔHĐ M với  = {a, b}, Q = {q0, q1, q2, q3}, F =

{q2} Hàm chuyển  cho như sau:

q0 q1 q3

q1 q1 q2

q2 q3 q2

q3 q3 q3

b

q0 Đầu

q1

q 3

q 2

a

a,b

b

a

Biểu đồ chuyển của ÔHĐ Tìm văn phạm G sinh ra ngôn ngữ L, sao cho L=L(M)

Tìm L? (Có chứng minh)

Ngôn ngữ tìm được là ngôn ngữ gì?

32

 Tìm một số quá trình đoán nhận của OH:

Xét w1 = aabbb

q0aabbb  q1abbb  q1bbb  q2bb  q2b  q2  F  w1  L(M) Xét w2 = aaa

q0aaa  q1aa  q1a q1F  w2  L(M) Xét w3 = ba, thật vậy: q0ba  q3a  q3F  w3  L(M) Xét w4 = aba,thật vậy:q0aba  q1ba  q2a q3 F  w4  L(M)

 w2, w3, w4  L(G) (theo bổ đề 3.1)

 T(M)={ab,aab,aabbb,abb,aaab,abbbb,…}

 Dễ thấy rằng ngôn ngữ do Ôtômát M đoán nhận là:

L(M) = {ambn | m, n > 0}

• Tìm văn phạm G sinh ra ngôn ngữ L, sao cho L(G)=L(M)

• SV tự làm!

Trang 9

33

Cho VPCQ xây dựng ôtômát hữu hạn không đơn định

 Định lý 3.3: Nếu G là một VPCQ

phải, thì L(G) là một ngôn ngữ chính

quy

định từ một VPCQ phải:

 Input: G = (T, V, P, S)

 Output:Ta thành lập một

ÔHK M đoán nhận L(G) như

sau:

M = (  , Q,  , q0, F)

Input Output

G = (T, V, P, S) M = (, Q, , q 0 , F)

V = {V 0 ,V 1 ,V 2 …} Q = {q 0 , q 1 , q 2 ,…}

P=

{V 0  aV 1

V1 a1a2a3…V2

V 2  a}

 (q 0 ,a) = q 1

 (q 1 , a 1 a 2 a 3 …) = q 2

 (q 2 ,a) = q 3

V 0 là kí hiệu bắt đầu trong P q0 là trạng thái bắt đầu

F = {q3 }  Q

Vẽ đồ thị Kết luận M?

qi

Start

qj

a 1 a2 an

 Cách xây dựng hàm chuyển trạng thái 

Mỗi sản xuất dạng V i a1a 2 … a n V j thuộc P

Ta có hàm chuyển trạng (qi, a1a2a3…an) = qj

Đồ thị vẽ như sau:

Cho VPCQ xây dựng ôtômát hữu hạn không đơn định

Mỗi sản xuất dạng V i a1a 2 … a nthuộc P

Ta có hàm chuyển trạng (qi, a1a2a3…an) = qf F

Đồ thị vẽ như sau:

qi

Start

qf

a1 a2 an

34

 Ví dụ 3.6: Xây dựng một Ôtômát hữu hạn chấp nhận ngôn

ngữ được sinh bởi văn phạm có tập luật sinh như sau:

S aA

A abS| b

Giải Đặt M=(,Q, , q0,F) là OH cần tìm

Trong đó:

={a,b}

Q={q0,q1}

 Xác định như sau:

35

 (q0,a)=q1

 (q1,ab)=q0

 (q1,b)=q2 F

 F = {q2}

 q0 là trạng thái bắt đầu

 Vẽ đồ thị chuyển trạng thái như sau:

q0

Start

q 2

q1

a

a

b

b

36

Trang 10

Kết luận M=(,Q, , q0,F) là OH cần tìm

• Trong đó:

• ={a,b}

• Q={q0,q1,q2,q3}

•  Xác định như sau:

• F = {q2}

• q0 là trạng thái bắt đầu

q0

Start

q 2

q1

a

a

b

b q

3

ÔHĐ không xuất phát lại

•Định nghĩa: Một ÔHĐ là không xuất phát lại nếu không tồn tại cặp (q, a) để cho  (q, a) = q0 với q0 là trạng thái đầu

•Bổ đề 3.2 : Có giải thuật cho phép biến đổi một ÔHĐ

M đã cho thành một ÔHĐ không xuất phát lại M’ sao cho L(M’) = L(M)

Giải thuật : –Giả sử M = (  , {q0, q1, …, qn},  , q0, F)

–Lập ÔHĐ M’ = (  , Q  {qn+1},  ’, q0, F’) trong đó:

39

ÔHĐ không xuất phát lại

 ’(qn+1, a) =  ’(q0, a)

 } {

'

1

q F

F

F Nếu q0 không thuộc F

Nếu q0 F

Kết luận M' (, Q  {qn+1}, ’, q0, F’) , chú thích 5 phần?

Dễ thấy M’ thực hiện cùng các bước chuyển như M, trừ khi

M chuyển về q0 thì M’ chuyển sang qn+1, nhưng sau đó lại tiếp

tục bắt chước như M thường



 1

) , ( )

,

(

'

n q a q a

q Nếu q  Q và (q, a)  q0

Nếu q  Q và  (q, a) = q0

 Ví dụ 3.7: Tìm OHĐ không xuất phát lại M’ tương đương với OHĐ có xuất phát lại M sao cho L(M’)=L(M)

Gợi ý

OHĐ không xuất phát lại cần tìm sẽ có đồ thị chuyển trạng

thái sau:

(M)

(M’)

40

Trang 11

 Gọi M’=(, Q  {qn+1}, ’, q0, F’) là OHĐ cần tìm

 Trong đó:

  = {a,b}

 Q = {q0, q1,q2,q3 }

 F’ = {q0,q2,q3}

 q0 là trạng thái bắt đầu

 ’ như đồ thị

q0 q3 q1

q 1 q 2 

q2  q3

q3 q3 q1

Các tính chất đóng của lớp các NNCQ (tt)

 Định lý 3.4: Nếu L và L’ là các NNCQ thì L  L’ cũng là NNCQ

 Định lý 3.5: Nếu L * là một NNCQ, thì * - L cũng là NNCQ

 Định lý 3.6: Nếu L và L’ là các NNCQ thì L  L’ cũng là NNCQ

Bổ đề 3.3: Cho L * và ’. Có một ÔH với bộ chữ vào  đoán nhận L khi và chỉ khi có một ÔH với bộ chữ vào ’ đoán nhận L (Nói cách khác khái niệm NNCQ không tùy thuộc vào bộ chữ)

 Định lý 3.7: Nếu L và L’ đều là các NNCQ thì LL’ cũng là NNCQ

 Định lý 3.8: Nếu L là NNCQ thì L* cũng là NNCQ

43

Định lý KLEENE

 Định lý:  và {} là các NNCQ

 Định lý: Với mọi w *, thì {w} là NNCQ

 Hệ quả: Mọi tập con hữu hạn của * đều là NNCQ

 Hệ quả: Mọi ngôn ngữ tạo nên từ các ngôn ngữ hữu

hạn bằng cách áp dụng một số hữu hạn lần các phép

hợp, ghép tiếp và * đều là NNCQ

 Định lý KLEENE: Mọi NNCQ đều có thể nhận được từ

các ngôn ngữ hữu hạn bằng cách áp dụng một số hữu

hạn lần các phép hợp, ghép tiếp và *

BIỂU THỨC CHÍNH QUI

 Cách khác để mô tả ngôn ngữ chính qui là dùng biểu thức chính qui (BTCQ)

 Một BTCQ là sự kết hợp:

 Các ký tự trong , mỗi ký tự có thể xuất hiện nhiều lần,

 Các toán tử: bao đóng (+,*), ghép, hợp

 Các dấu ngoặc: ()

 VD:

 Với ngôn ngữ L= {a}, ta có BTCQ là a

 L={a,b}, ta có BTCQ là a+b

 L={ab}  {a}, ta có BTCQ là ab+a

 L={a,b} {a} , ta có BTCQ là (a+b)a

44

Ngày đăng: 13/07/2021, 11:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w