Biểu Diễn Automat Bằng Đồ Thị 27640


- Q = q0, q1, q2, q3;

- F = q0;

- :

(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àm chuyển thuộc dạng 1).


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

- Q = q0, q1, q2, q3;

- = 0,1;

- q0 = q0 ;

- F = q3;

- :


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

(q1, 0) = q2 ; (q1, 1) = {q1, q3 } ;

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

(q3, 0) = q3 ; (q3, 1) = q3.

(Hàm chuyển thuộc dạng 2).

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.


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 đó:

- q0 = q0 ;

- = 0, 1;

- Q = q0, q1, q2, q3;

- F = q0;

- :

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

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

Biểu diễn của automat trên bằng phương pháp đồ thị


0

0

1

Start

q0

1

q1

q2

1

q3

1

0

0


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


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


- q0 = q0 ;


- F = q0


Q

0

1

q0

q2

q1

q1

q3

q0

q2

q0

q3

q3

q1

q2

Có thể bạn quan tâm!

Xem toàn bộ 254 trang tài liệu này.

Bảng 2.1. Bảng chuyển trạng thái Ví dụ 2: Cho automat hữu hạn M = <Q, , , q0, F> trong đó:

- Q = q0, q1, q2, q3;

- = 0,1;

- q0 = q0 ;

- F = q3;

- :


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

(q1, 0) = q2 ; (q1, 1) = {q1, q3 } ;

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

(q3, 0) = q3 ; (q3, 1) = q3.

Biểu diễn của automat trên bằng phương pháp đồ thị

1

1 1 Start q 0 1 q 1 0 1 q 2 0 q 3 0 0 Hình 2 3 Đồ thị biểu diễn Automat Biểu diễn 1

1 1


Start

q01


q10

1

q2 0 q30


0

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


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


- q0 = q0 ;

- F = q3;


Q

0

1

q0

{q2}

{q1}

q1

{q2}

{q1,q3}

q2

{q3}

{q1}

q3

{q3}

{q3}

Bảng 2.2. Bảng chuyển trạng thái


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


1) Định nghĩa


Cho Automat hữu hạn M = <Q, , , q0, F >, ta gọi M là Automat hữu hạn đơn định nếu:Với a, q Q ta có (q, a) = 1 và hàm chuyển có dạng 1 (*)

Cụ thể:


Automat hữu hạn đơn định 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 có dạng:

: Q Q (q, a) p

q0 - Là trạng thái bắt đầu; q0 Q.

F - Tập con của Q ( F Q) là tập các trạng thái kết thúc.


Nếu p là ảnh của (q, a) qua ánh xạ thì ký hiệu là (q, a) = p; với q, pQ; 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:

1. δ* (q, ε) = q

2. δ*(q, wa) = δ(δ*(q, w), a); với q Q; w Σ* a Σ.


Suy ra:


*(q, a a ... a ) =  q, a1 an-1an

1 2 n


*(q, a a ... a ) =  q, a1 an-1an

1 2 n


=  q1, a2 an-1an

= …


= q n-2, an-1an

= qn-1, an

= qn


Ví dụ: Cho Automat hữu hạn M = <Q, , , q0 , F>


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) = qF 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.

Một xâu vào w = a a

1 2

... a

n

được đoán nhận bởi một DFA nếu có tồn tại một dãy

các phép chuyển, tương ứng với xâu vào, từ trạng thái bắt đầu đến trạng thái kết thúc.


w = a1 a2 a3 an -1 an


q0 q1 q2 ... qn-1 qn


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 = a1 a2 ... an được đoán nhận bởi một NFA hay không ?. Ta phải tính *(q0,w).


*(q0,w) = *(q0, a a ... a ) =  q0, a1 an-1an

1 2 n


=  q0, a1 an-1an

=  q1, a2 an-1an

= …


= q n-2, an-1an

= qn-1, an

= qn

Nếu qn F thì w N(M); ngược lại qn F thì w N(M). Ở đây q1 q2 qn Q.

Ví dụ:


Cho Automat hữu hạn M = <Q, , , q0 , F> trong ví dụ trên và được biểu diễn dưới dạng bảng là:

q0 = q0 ; F = q0


Q

0

1

q

0

q

2

q

1

q

1

q

3

q

0

q

2

q

0

q

3

q

3

q

1

q

2


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 , 1) = q ;

0 1

δ(q , 1) = q ;

1 0

δ(q0, 0) = q2;

(q2, 1) = q3;

(q3, 0) = q1;


(q1, 1) = q0;

Và cuối cùng δ*(q , 110101) = q F. Vậy 110101 L(M).

0 0

Ta có thể chứng minh được rằng L(M) là tập mọi xâu có số chẵn số 0 và số chẵn số 1.

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.

Process


Ví dụ:


q := q ;

0

c := getchar() ; {c là ký hiệu vào đầu tiên}

While c < > $ do begin

q := δ(q, c);

c := nextchar(); {c là ký hiệu vào được đọc tiếp theo} end;

If q F then write("YES" )

Else write("NO" )


Sử dụng giải thuật trên với automat được cho ở hình 2.5

để đoán nhận các từ sau:

- w = bbaaabb$

a

Start

0

a

1

b

2

b

3

b

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:

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 16/07/2022