Ta nói Automat thừa nhận xâu vào w nếu sau khi xuất phát từ trạng thái đầu qo và đầu đọc chỉ vào kí hiệu bên trái nhất của xâu w, sau một số bước dịch chuyển hữu hạn, Automat đọc xong xâ
Trang 1(Deterministic Finite Automat – DFA) 1
I.1 Mô tả không hình thức 1
I.2 Mô tả hình thức 2
I.3 DFA xử lý xâu như thế nào 2
I.4 Các cách biểu diễn đơn giản hơn của DFA 4
a Biểu đồ dịch chuyển 4
b Bảng dịch chuyển 5
I.5 Hàm dịch chuyển mở rộng 5
I.6 Ngôn ngữ được thừa nhận bởi DFA 7
Chương II 9
SỰ TƯƠNG ĐƯƠNG CỦA CÁC AUTOMAT DFA 9
II.1 Sự tương đương của các trạng thái 9
II.2 Sự tương đương của các DFA 11
a Dự vào bảng đánh dấu sự tương đương các trạng thái 11
b Dựa vào tính đóng dưới phép giao 12
II.3 Cài đặt 15
a Cài đặt dựa theo trạng thái tương đương 16
Trang 2Chương I.
AUTOMAT ĐƠN ĐỊNH (Deterministic Finite Automat – DFA)
I.1 Mô tả không hình thức
Automat hữu hạn là một cái máy đoán nhận xâu Nó bao gồm các bộ phận sau:
- Một băng vào được chia thành ô, dùng để ghi xâu vào, mỗi kí hiệu của xâu vào thuộc bảng chữ Σ được ghi trên một ô
- Một đầu đọc, mỗi thời điểm đọc (trỏ) đến một ô trên băng vào
- Một bộ điều khiển Q, gồm một số hữu hạn các trạng thái, tại mỗi thời điểm nó có một trạng thái
Hoạt động của Automat được thực hiện như sau: Automat hoạt động theo từng bước Mỗi bước như sau: tùy theo trạng thái hiện thời của bộ điều khiển
và kí hiệu mà đầu đọc đang đọc, mà Automat chuyển sang một 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 trạng thái của Automat hữu hạn đơn định được mô tả bởi một hàm, được gọi là hàm dich chuyển như sau:
Trang 3Trong Q, có một trạng thái đầu, thường kí hiệu qo và một tập hợp các trạng thái cuối / thừa nhận, thường kí hiệu F (F Q)
Ta nói Automat thừa nhận xâu vào w nếu sau khi xuất phát từ trạng thái đầu qo và đầu đọc chỉ vào kí hiệu bên trái nhất của xâu w, sau một số bước dịch chuyển hữu hạn, Automat đọc xong xâu w và rơi vào một trong các trạng thái cuối thuộc F
Tập hợp tất cả các xâu đoán nhận bởi Automat hợp thành ngôn ngữ được nhận bởi Automat đó
I.2 Mô tả hình thức
Định nghĩa: Một Automat hữu hạn đơn định DFA được định nghĩa như là
một bộ năm: (Q, Σ, δ, q0, F), trong đó:
Q là tập hợp hữu hạn các trạng thái
Σ là bộ chữ cái nhập hữu hạn
δ là hàm chuyển ánh xạ từ Q × Σ → Q, tức là δ(q, a) là một trạng thái được cho bởi phép chuyển từ trạng thái q trên ký hiệu nhập a thì nó chuyển sang trạng thái q’
q0 Q là trạng thái bắt đầu
F Q là tập các trạng thái kết thúc
I.3 DFA xử lý xâu như thế nào
Giả sử w = a0a1 an là xâu vào DFA sẽ bắt đầu với trạng thái q0, nó sẽ thực hiện dịch chuyển δ(q0, a1) giả sử cho q1 DFA bây giờ ở trạng thái q1 và kí hiệu tiếp theo sẽ đọc a2, nó thưc hiện dịch chuyển δ(q1, a2) giả sử cho q2 Nó cứ tiếp tục như thế, cho đến khi đọc an thì sẽ chuyển sang trạng thái qn nào đó, nếu qn thuộc tập F thì DFA thừa nhận xâu vào w, ngược lại thì xâu vào sẽ không được thừa nhận
Trang 4Ví dụ: Xây dựng DFA thừa nhận các xâu gồm các kí hiệu 0, 1 và chứa ít
nhất một lần xâu 01, nghĩa là chúng ta có thể mô tả ngôn ngữ L này như sau:
L = { x01y / x và y gồm các kí tự 0 và 1 bất kì }
Để xây dựng DFA thừa nhận L, DFA M cần phải ghi nhớ các khả năng sau:
DFA đã đọc xâu 01, như thế sau đó nó có thể thừa nhận xâu vào
DFA chưa bao giờ đọc kí tự 0, nhưng nó đã đọc ít nhất kí tự 1, trong trường hợp này nó có thể tiếp tục đọc các kí tự 1 cho đến khi nào đó một kí tự 0 đầu tiên, thì nó có thể sau đó đọc một kí tự 1 đi liền sau
DFA chưa đọc xâu 01, nhưng ngay trước đó ít nhất một kí tự 0, như thế nó
có thể tiếp tục đọc kí tự 0 cho đến khi gặp một kí tự 1 thì có thể chuyển sang thừa nhận xâu vào
Với nhận xét trên chúng ta dễ dàng thấy mỗi trường hợp trên sẽ ứng với một trạng thái ghi nhớ của DFA Trường hợp (1) sẽ tương ứng với trạng thái thừa nhận, kí hiệu trạng thái q2, ở trạng thái này, DFA có thể tiếp tục đọc bất kì
kí hiệu nào Như thế δ(q2, 0) = δ(q2, 1) = q2
Trường hơp (2) sẽ tương ứng với trạng thái đầu q0, khi ở trạng thái này DFA có thể tiếp tục đọc kí tự cho đến khi gặp kí tự 0 thì chuyển sang trạng thái khác Như thế δ(q0, 1) = q0, δ(q0, 0) = q1
Trường hợp (3) sẽ tương ứng với trạng thái q1, khi đã đọc trước đó ít nhất một kí tự 0, nhưng chưa bao giờ đọc xâu 01.Ở trạng thái q1 thì DFA có thể tiếp tục đọc kí tự 0 cho đến khi gặp kí tự 1, thì chuyển sang trạng thái thừa nhận q2 Như thế δ(q1, 0) = δ(q1, 1) =q2
Vậy cuối cùng chúng ta có DFA như sau:
M=({q0, q1, q2}, {0, 1}, δ, q0, {q2})
Với δ được định nghĩa như trên
Trang 5Giải thuật mô phỏng hoạt động của một DFA
Mục đích: kiểm tra một chuỗi nhập x có thuộc ngôn ngữ L(M) đoán
nhận bởi automata M.
Input: chuỗi nhập x$
Output: câu trả lời ‘YES’ hoặc ‘NO’
Giải thuật:
I.4 Các cách biểu diễn đơn giản hơn của DFA
Cách mô tả DFA bằng bộ năm như trên là tương đối khó hiểu và ít trực quan Có hai cách mô tả đơn giản hơn một DFA là: biểu đồ dịch chuyển và bản dịch chuyển
a Biểu đồ dịch chuyển
Mỗi trạng thái trong Q là một nút
Với mỗi trạng thái q Q và mỗi kí hiệu a Σ, có δ(q, a) = p Q Như thế, biểu đồ dịch chuyển có một cung đi từ nút p đến q mang nhãn a, nếu có nhiều kí hiệu tạo ta dịch chuyển từ q đến p thì chỉ cần biểu diễn một cung mang nhãn là danh sách các kí hiệu đó
Có một mũi tên đi vào nút q0 để kí hiệu trạng thaí đầu
Các trạng thái kết thúc F là các nút được biểu diễn bởi hai vòng tròn
q := q 0 ;
c := nextchar ; {c là ký hiệu nhập được đọc tiếp theo}
While c <> $ do begin
q := δ(q, c);
c := nextchar ; end
If (q in F) then write("YES") else write("NO");
Trang 6Các trạng thái không thuộc F là các nút được biểu diễn bởi chỉ một vòng tròn
Ví dụ:
DFA biểu diễn ngôn ngữ trong Ví dụ
b Bảng dịch chuyển
Bảng dịch chuyển cho một DFA là một quy ước biểu diễn dạng bảng của hàm, mà ở đây là dịch chuyển với hai tham số: các trạng thái và các kí hiệu vào Trạng thái đầu được đánh dấu bởi dấu , các trạng thái cuối sẽ được đánh các dấu *
Bảng dịch chuyển của DFA xây dựng trong Ví dụ
I.5 Hàm dịch chuyển mở rộng
Một cách không hình thức chúng ta có thể nhận thấy rằng, một DFA định nghĩa ngôn ngữ gồm các xâu là kết quả của quá trình dịch chuyển từ trạng thái đầu đến một trong các trạng thái thừa nhận Để xác định ngôn ngữ được thừa nhận bởi một DFA, chúng ta sẽ định nghĩa hàm dịch chuyển mở rộng Hàm dịch chuyển mở rộng, kí hiệu là δ* , sẽ nhận tham số là trạng thái q và xâu w và trả về trạng thái p Nghĩa là DFA đang ở trạng thái q, sau khi xử lý xâu w thì DFA đạt đến trạng thái p
Trang 7Định nghĩa: Hàm dịch chuyển mở rộng được định nghĩa đệ quy trên độ dài của xâu như sau:
δ*(q, ε) =q, với mọi trạng thái q, nếu DFA không đọc kí hiệu vào nào sẽ ở lại trạng thái đó
δ*(q, w)= δ (δ*(q, x), a), với w = x a, x Σ* và a Σ
Ví dụ: Xây dựng DFA thừa nhận ngôn ngữ
L = {w / w chỉ chứa các kí hiệu 0, 1 và luôn kết thúc bởi kí hiệu 1}
DFA phải phân biệt hai khả năng:
Khi nó đọc kí hiệu 1, thì ngay sau đó có thể kết thúc
Khi nó đọc kí hiệu 0 thì ngay sau đó không được kết thúc, mà phải đọc tiếp các kí hiệu khác cho đến khi gặp kí hiệu 1 Như thế, DFA sẽ có ít nhất hai trạng thái tương ứng với hai khả năng trên
Ta xây dựng DFA như sau:
M = ({q0, q1}, {0, 1}, δ, q0, {q1})
Trong đó, hàm δ như sau:
DFA cho Ví dụ Hay chúng ta có thể biểu diễn hàm δ bởi bảng dịch chuyển như sau:
Trang 8δ 0 1
* q1 q0 q1
Sử dụng hàm dịch chuyển mở rộng để đoán nhận xâu w = 101101 của ngôn ngữ L
δ*(q0, ε) = q0
δ*(q0, 1) = δ(δ*(q0, ε), 1) = δ*(q, 1) = q1
δ*(q0, 10) = δ(δ*(q0, 1), 0) = δ(q1, 0) = q0
δ*(q0, 101) = δ(δ*(q0, 10), 1) = δ(q0, 1) = q1
δ*(q0, 1011) = δ(δ*(q0, 101), 1) = δ(q1, 1) = q1
δ*(q0, 10110) = δ(δ*(q0, 1011), 0) = δ(q1, 0) = q0
δ*(q0, 101101) = δ(δ*(q0, 10110), 1) = δ(q0, 1) = q1
Như vậy, xâu vào w = 101101 được thừa nhận bởi DFA
Chúng ta có thể biểu diễn quá trình đoán nhận đơn giản hơn như sau:
q0- 101101 q1- 01101 q0-1101 q1-101 q1-01 q0-1 q1 F
I.6 Ngôn ngữ được thừa nhận bởi DFA
Định nghĩa: Cho DFA M = (Q, Σ, δ, q0, F), ngôn ngữ được thừa nhận bởi M, được kí hiệu là L(M), được định nghĩa như sau:
L(M) = { w Σ* / δ*(q0, w) = qf, qf F}
Nghĩa là, ngôn ngữ L(M) gồm các xâu w sao cho M xuất phát từ trạng thái đầu q0, sau khi đọc hết xâu w thì đạt đến một trong các trạng thái qf thuộc F Định nghĩa: Cho DFA M, một ngôn ngữ L = L(M) được gọi là ngôn ngữ chính quy (regular language) Hay nói cách khác, ngôn ngữ được thừa nhận bởi một Automat hữu hạn đơn định là ngôn ngữ chính quy
Trang 9Ví dụ: Xây dựng Automat thừa nhận ngôn ngữ L gồm các xâu trên bảng
chữ Σ= {a, b} được bắt đầu bởi xâu aa
Ví dụ: Chứng minh rằng ngôn ngữ L = {abanbm / n, m > 0} là ngôn ngữ chính quy
Để chứng minh một ngôn ngữ là chính quy, ta chỉ ra rằng tồn tại DFA thừa nhận ngôn ngữ đó Thật vậy L được thừa nhận bởi DFA sau:
Trang 10Chương II.
SỰ TƯƠNG ĐƯƠNG CỦA CÁC AUTOMAT DFA
II.1 Sự tương đương của các trạng thái
Mục đích của chúng ta là xác định xem hai trạng thái khác nhau p và q có thể thay thế bởi một trạng thái duy nhất mà có chức năng như p và q
Chúng ta nói rằng, hai trạng thái p và q là tương đương nếu: với mọi xâu
w, δ*(p, w) cho kết quả là trạng thái kết thúc và δ*(q, w) cho kết quả cũng là trạng thái kết thúc hoặc δ*(p, w) cho kết quả là trạng thái không kết thúc và
δ*(q, w) cho kết quả cũng là trạng thái không kết thúc
Lưu ý, chúng ta không yêu cầu δ*(p, w) và δ*(q, w) cho cùng trạng thái mà chỉ cho kết quả cùng trạng thái kết thúc hoặc không kết thúc
Ngược lại, hai trạng thái không tương đương được gọi là phân biệt Nghĩa
là trạng thái p phân biệt với trạng thái q, nếu tồn tại ít nhất một xâu w sao cho một trong hai dịch chuyển δ*(p, w) và δ*(q, w) cho trạng thái kết thúc và dịch chuyển còn lại cho trạng thái không kết thúc
Để xác định sự tương đương của các trạng thái, chúng ta sử dụng thuật toán xây dựng bảng đánh dấu như sau:
Nếu p là trạng thái không kết thúc và q là trạng thái kết thúc thì {p, q} là cặp trạng thái phân biệt
Cho p và q là các trạng thái sao cho với kí hiệu vào a, r = δ (p, a) và
s= δ (q, a) là cặp trạng thái phân biệt Khi đó {p, q} cũng là cặp trạng thái phân biệt Thật vậy, bởi vì {r, s} là cặp trạng thái phân biệt, nên tồn tại xâu w phân biệt r và s, nghĩa là chỉ có một trong hai dịch chuyển δ*(r, w) và δ*(s, w) cho kết quả là trang thái kết thúc, còn một dịch chuyển cho kết quả là trạng thái
Trang 11không kết thúc Khi đó, δ*(p, aw) và δ*(q, aw) cho cùng kết quả với δ*(r, w) và
δ*(s, w), nghĩa là {p, q} cũng là cặp trạng thái phân biệt bởi xâu aw
Ví dụ: Xây dựng bảng đánh dấu của DFA trong hình vẽ
Trong bảng đánh dấu các trạng thái phân biệt, các cặp trạng thái phân biệt được đánh dấu X, các cặp trạng thái tương đương được để trống, các ô bôi đen không được sử dụng Ban đầu, không có cặp nào bị đánh dấu Chúng ta thực hiện việc đánh dấu theo thuật toán đã trình bày ở trên
Trước hết, các cặp trạng thái gồm có một trạng kết thúc và một trạng thái không kết thúc được đánh dấu Thực hiện bước 2 của thuật toán, chúng ta không tìm thấy thêm cặp trạng thái phân biệt nào nữa
Bảng đánh dấu các cặp trạng thái phân biệt cho
Ví dụ
Trang 12II.2 Sự tương đương của các DFA
Ví dụ: Xét hai DFA, hai DFA này cùng đoán nhận ngôn ngữ gồm các xâu
trên bảng chữ {0, 1} kết thúc bởi kí hiệu 0
a D vào b ng đánh d u s t ự vào bảng đánh dấu sự tương đương các trạng thái ảng đánh dấu sự tương đương các trạng thái ấu sự tương đương các trạng thái ự vào bảng đánh dấu sự tương đương các trạng thái ương đương các trạng thái ng đ ương đương các trạng thái ng các tr ng thái ạng thái
Chúng ta dễ dàng xác định được sự tương đương của hai DFA Thật vậy, giả sử có hai DFA M1 và M2 Xét DFA mới là hợp của hai DFA M1 và M2 Khi đó, DFA này có hai trạng thái đầu Tuy nhiên, nếu DFA M1 và M2 là tương đương thì cặp trạng thái đầu phải là cặp trạng thái tương đương Ngược lại, nếu cặp trạng thái đầu là cặp trạng thái phân biêt thì M1 và M2 là không tương đương
Áp dụng thuật toán
Trang 13Chúng ta coi hai DFA như là một DFA với các trạng thái là A, B, C, D và
E Bây giờ xây dựng bảng đánh dấu các trạng thái phân biệt của DFA này
A và C là cặp trạng thái tương đương, vậy hai DFA là tương đương Tức
là cùng thừa nhận một ngôn ngữ
b D a vào tính đóng d ự vào bảng đánh dấu sự tương đương các trạng thái ưới phép giao i phép giao
Định lý: Nếu L1 và L2 là các ngôn ngữ chính quy thì L1 ∩ L2 cũng là ngôn ngữ chính quy
Chứng minh: Chúng ta xây dựng trực tiếp DFA thừa nhận ngôn ngữ
L1∩ L2 từ các DFA thừa nhận L1 và L2
Giả sử M1= (Q1, Σ1, δ1, q01, F1) và M2 = (Q2, Σ2, δ2, q02, F2) là các DFA thừa nhận tương ứng L1 và L2 Chúng ta sẽ xây dựng DFA M bắt chước thực hiện đồng thời M1 và M2 Mỗi trạng thái của M sẽ là một cặp trạng thái: một trạng thái của M1 và một trạng thái của M2 Bảng chữ của M sẽ là hợp của các bảng chữ của M1 và M2 Một dịch chuyển trong M được xây dựng tương ứng một dịch chuyển đồng thời trên M1 và M2 khi đọc cùng một kí hiệu M sẽ đoán nhận xâu vào khi đồng thời cả hai DFA M1 và M2 cùng đoán nhận xâu vào Như vậy, M được xây dựng như sau:
M=(Q1× Q2, Σ1 Σ2, δ, (q01, q02), F1× F2)
Trong đó, δ((p, q), a) = (δ1(p, a), δ2(q, a)), với p Q1, q Q2, a Σ1 Σ2
Trang 14Thật vậy, δ*((q01, q02), w) = (δ1 * (q01, w), δ2* (q02, w)), như thế M chỉ chấp nhận w khi δ1 * (q01, w) F1 và δ2 * (q02, w) F2, nghĩa là M chỉ chấp nhận w khi M1 chấp nhận w và M2 chấp nhận w Vậy chấp nhận L(M1) L(M2)
Ví dụ: Cho L1 là ngôn ngữ chính quy có chứa ít nhất một kí hiệu 0 được thừa nhận bởi DFA M1 (a) và L2 là ngôn ngữ chính quy có ít nhất một kí hiệu 1 được thừa nhận bởi DFA M2 (b) Chúng ta chỉ ra DFA M (c) thừa nhận ngôn ngữ giao của L1 và L2
Trang 15DFA giao của hai DFA Chúng ta dễ dàng nhận thấy rằng, DFA thừa nhận ngôn ngữ gồm it nhất một kí hiệu 0 và ít nhất một kí hiệu 1
* Áp dụng thuật toán
Trang 16Để chứng minh hai DFA L1 và L2 tương đương thì ta chứng minh như sau: L1= L2 thì L1 L2= L1 L2 = L(M) = .
Automat DFA rỗng: Nếu không tồn tại một đương đi từ trạng thái đầu đến một trong các trạng thái cuối thì là rỗng, ngược lại thì không rỗng
Áp dụng cho Ví dụ
Trang 17DFA biểu diễn L1
DFA biểu diễn L2
DFA biểu diễn L2
Trang 18DFA biểu diễn L1L2= L(M)
Ta thấy L(M) là một Automat rỗng vì không tồn tại đương đi nào từ (A, C) đến (A, E)
Tương tự ta có L(M)= L1 L2 cũng rỗng
Suy ra hai DFA L1, L2 tương đương
II.3 Cài đặt
Chú ý:
Dùng ma trận để mã hóa 2DFA
Trang 19+ Ma trận có 3 cột, số hàng là số các trạng thái: cột 1 là trạng thái Q, cột 2 thể hiện hàm δ (Q, 0), cột 3 thể hiện hàm δ(Q, 1)
+ Các trạng thái không kết thúc được mã hóa là số 1, trạng thái kết thúc được mã hóa là số 0
Dùng cho các DFA không có trạng thái mồ côi, trạng thái kết thúc vẫn có hàm δ
Cài đ t d a theo tr ng thái t ặt dựa theo trạng thái tương đương ự vào bảng đánh dấu sự tương đương các trạng thái ạng thái ương đương các trạng thái ng đ ương đương các trạng thái : ng