Phần lý thuyết Chương 4: Ôtômát không đơn định và định lý KLEENE 4.1. Ôtômat hữu hạn không đơn định Để chứng minh rằng các ngôn ngữ thông thường là giống như những ngôn ngữ tự nhiên mà có thể được thừa nhận bởi một ôtômat hữu hạn, nó là công cụ rất hữu ích để xem xét ngôn ngữ chính quy rất giống với một ôtômat hữu hạn, tuy nhiên, vẫn có một tập hữu hạn các trạng thái và một vài chức năng của trạng thái kế tiếp để lựa chọn, nhưng với các tiêu chuẩn khác. Nó chỉ ra rằng các thiết bị này nhận ra cùng một ngôn ngữ đúng đắn của các ôtômat hữu hạn nhưng thường là đơn giản để xây dựng và giải thích. Ví dụ 4.1. Hình 41a hiển thị các ôtômat hữu hạn xây dựng trong ví dụ 3.14, mà nhận ra ngôn ngữ L tương ứng với biểu thức chính quy (11 +110) 0. Bây giờ nhìn vào biểu đồ trong hình 41b. Các lỗi này được các sơ đồ của một ôtômat hữu hạn đưa ra hai lý do rõ ràng khác nhau. Từ một số trạng thái không có quá trình chuyển đổi cho cả hai ký hiệu đầu vào (từ trạng thái q4 không có quá trình chuyển đổi ở tất cả các trạng thái); và từ một trạng thái, q0, có hai mũi tên tương ứng với đầu vào 1. Các cách để giải thích đầu tiên của các tính năng này rất dễ dàng: Do không có quá trình chuyển đổi từ một trạng thái q nghĩa là từ q không có bắt đầu với một dữ kiện đầu vào có thể cung cấp cho kết quả của một trạng thái đang được chấp nhận. Chúng ta có thể tạo ra một quá trình chuyển đổi bằng cách tạo một trạng tháichết mà các thiết bị có thể đi từ q trên một đầu vào, có một đặc tính mà mỗi khi thiết bị nhận đầu vào một trạng thái mà nó không bao giờ có thể rời khỏi nó. Tuy nhiên, quá trình chuyển đổi này sẽ không bao giờ được thực thi trong bất cứ trình tự dịch chuyển của các trạng thái đi đến một trạng thái được chấp nhận. Do đó, để nó thoát ra khỏi mà không ảnh hưởng đến bất cứ trạng thái chuyển đổi khác(ngoại trừ việc nó vi phạm các luật), và nó làm cho sơ đồ đơn giản. Lỗi thứ hai trong các quy định cho Ôtômat hữu hạn có vẻ là nghiêm trọng hơn. Nếu như có hai quá trình chuyển đổi từ q0 trên đầu vào 1, sau đó nó không rõ ràng những gì thiết bị này là phải làm trong tình hình đó, và vì vậy rất khó để giải thích những sơ đồ tại một trong những cách chúng ta đã làm trong Chương 3: là một thuật toán cho một ngôn ngữ chấp nhận, hoặc như một máy trừu tượng. (Đối với các thuật toán một hoặc một máy, hành động đó sẽ được thực thi trên ở mỗi bước nên được một cách dễ hiểu và rõ ràng.)
Trang 1
Giáo viên hướng dẫn : PGS.TS.Phan Huy Khánh
Cao Bá Thành
Võ Thị Ngọc Hà Lớp : Khoa học máy tính K12
Trang 2Phần lý thuyết
Chương 4: Ôtômát không đơn định và định lý KLEENE
4.1 Ôtômat hữu hạn không đơn định
Để chứng minh rằng các ngôn ngữ thông thường là giống như những ngôn ngữ tự nhiên mà có thể được thừa nhận bởi một ôtômat hữu hạn, nó là công cụ rất hữu ích để xem xét ngôn ngữ chính quy rất giống với một ôtômat hữu hạn, tuy nhiên, vẫn có một tập hữu hạn các trạng thái và một vài chức năng của trạng thái kế tiếp để lựa chọn, nhưng với các tiêu chuẩn khác Nó chỉ ra rằng các thiết bị này nhận ra cùng một ngôn ngữ đúng đắn của các ôtômat hữu hạn nhưng thường là đơn giản để xây dựng và giải thích.
Ví dụ 4.1 Hình 4-1a hiển thị các ôtômat hữu hạn xây dựng trong ví dụ 3.14,
mà nhận ra ngôn ngữ L tương ứng với biểu thức chính quy (11 +110) * 0 Bây giờ nhìn vào biểu đồ trong hình 4-1b Các lỗi này được các sơ đồ của một ôtômat hữu hạn đưa ra hai lý do rõ ràng khác nhau Từ một số trạng thái không có quá trình chuyển đổi cho cả hai ký hiệu đầu vào (từ trạng thái q4 không có quá trình chuyển đổi ở tất cả các trạng thái); và từ một trạng thái, q0, có hai mũi tên tương ứng với đầu vào 1.
Các cách để giải thích đầu tiên của các tính năng này rất dễ dàng: Do không
có quá trình chuyển đổi từ một trạng thái q nghĩa là từ q không có bắt đầu với một
dữ kiện đầu vào có thể cung cấp cho kết quả của một trạng thái đang được chấp nhận Chúng ta có thể tạo ra một quá trình chuyển đổi bằng cách tạo một trạng thái"chết" mà các thiết bị có thể đi từ q trên một đầu vào, có một đặc tính mà mỗi khi thiết bị nhận đầu vào một trạng thái mà nó không bao giờ có thể rời khỏi nó Tuy nhiên, quá trình chuyển đổi này sẽ không bao giờ được thực thi trong bất cứ trình tự dịch chuyển của các trạng thái đi đến một trạng thái được chấp nhận Do
đó, để nó thoát ra khỏi mà không ảnh hưởng đến bất cứ trạng thái chuyển đổi khác(ngoại trừ việc nó vi phạm các luật), và nó làm cho sơ đồ đơn giản.
Lỗi thứ hai trong các quy định cho Ôtômat hữu hạn có vẻ là nghiêm trọng hơn Nếu như có hai quá trình chuyển đổi từ q0 trên đầu vào 1, sau đó nó không rõ ràng những gì thiết bị này là phải làm trong tình hình đó, và vì vậy rất khó để giải thích những sơ đồ tại một trong những cách chúng ta đã làm trong Chương 3: là một thuật toán cho một ngôn ngữ chấp nhận, hoặc như một máy trừu tượng (Đối với các thuật toán một hoặc một máy, hành động đó sẽ được thực thi trên ở mỗi bước nên được một cách dễ hiểu và rõ ràng.)
Trang 3đồ tương ứng với x và từ trạng thái đầu q0 đến trạng thái q4 Bắt đầu tại q0, và cho mỗi lần xuất hiện một trong những chuỗi 11 hoặc 110 trong phần tử của x tương ứng đến (11 + 110) *, nó tạo vòng lặp thích hợp rồi quay về q0; khi gặp phải 0 là kết thúc, đường dẫn dịch chuyển đến trạng thái q4 chấp nhận Rõ ràng rằng bất kỳ đường dẫn bắt đầu từ q0 và kết thúc tại q4 tương ứng với một số chuỗi dưới dạng biểu thức thông thường.
Bây giờ chúng ta có cách tiếp cận theo hướng khác hình 4-1b, mặc dù nó không giống như cách chúng ta giải thích một sơ đồ chuyển tiếp cho một ôtômat hữu hạn Thay vì yêu cầu cho dù một số đường dẫn tương ứng với một đường dẫn đến một dãy trạng thái được chấp nhận, chúng ta tìm hiểu một vài đường dẫn tương ứng với từng chuỗi Chúng ta có thể so sánh điều này áp dụng để giải quyết trực tiếp cho một chuỗi x (11110110) tương ứng với biểu thức chính quy của chúng ta, (11 + 110) * 0 có một số cách chúng ta có thể áp dụng kết hợp với chúng, và một
số phương pháp tiếp cận sẽ không hoạt động được(ví dụ, kết hợp tiền tố 1111 với
Trang 4(11 + 110) *), tuy nhiên, nếu có ít nhất một cách kết hợp với chúng, chúng ta kết luận rằng x tương ứng với biểu thức chính quy.
Một cách hữu ích của tư duy về tình hình này là giới thiệu ý tưởng đoán Trong cố gắng để phù hợp với chuỗi 11110110 để biểu thức thông thường (11 + 110) * 0, chúng ta nhìn vào phần tử 1 đầu tiên của chuỗi Chúng ta có thể đoán rằng cách thích hợp để sử dụng nó như phần tử đầu tiên là 1 trong chuỗi 110; Tuy nhiên, cho đến khi chúng ta kiểm tra chi tiết của chuỗi chúng ta không biết liệu đoán của chúng ta là chính xác Tương tự, tại các sơ đồ trong hình 4-1b, khi chúng ta đang ở trạng thái q0 và chúng ta nhận được ký tự đầu vào 1, chúng ta đoán trong đó có nhãn 1 thích hợp theo mũi tên Đoán sai có nghĩa là chúng ta trả lời "không" cho một chuỗi đó là thực tế trong ngôn ngữ Đây không phải là một vấn đề nghiêm trọng, bởi vì chúng ta giải thích của biểu đồ là nếu có bất kỳ chuỗi đoán rằng khônễnây dựng một câu trả lời tích cực, chuỗi nên được chấp nhận.
Chúng tôi hầu như đã sẵn sàng cho một định nghĩa chính thức của minh hoạ
“hình tượng trưng” trừu tượng bằng hình 4-1b Thay đổi duy nhất chúng ta sẽ cần phải thực hiện trong định nghĩa của một ôtômat hữu hạn liên quan đến chức năng chuyển đổi Như chúng ta đã thấy trong ví dụ 4.1, cho một sự kết hợp cụ thể của một trạng thái và ký tự một đầu vào, có thể không có trạng thái đặc biệt nào để mà dịch chuyển, hoặc có thể có một vài Điều này thừa nhận rằng nếu chúng ta muốn chức năng chuyển đổi δ được định nghĩa trên Q × Σ, như đã trình bày trước đó, giá trị sẽ không phải là một yếu tố của Q nhưng một tập hợp con của Q- có thể tập hợp rỗng, có thể một tập hợp với vài yếu tố Sự giải thích của chúng ta đó là δ(q, a) miêu tả tập hợp các trạng thái mà có thể được xem là hợp lý, như một kết quả ở trong trạng thái q tại bước ưu tiên và sau đó xử lý ký tự đầu vào a Điều này có nghĩa rằng tại thời điểm này chúng ta xem hình tượng trưng như là không đơn định: Tại một vài giai đoạn nó sẽ có một chọn lựa cho sự dịch chuyển, và mỗi lần điều này xảy ra nó chọn một di chuyển trong một vài hướng đi không rõ ràng Ngay sau
đó, chúng ta sẽ thấy rằng tính không đơn định thực sự rõ ràng hơn bởi vì chúng ta
sẽ phải xây dựng một ôtômat hữu hạn thông thường đó được tái tạo chính xác các hoạt động như máy không đơn định.
Định nghĩa 4.1 Một ôtômat hữu hạn không đơn định, được viết tắt là NFA, gồm 5 thành phần M =(Q, Σ, q0, A, δ), mà Q và Σ là các tập hợp hữu hạn không rỗng, q0 Q, A Q, và δ: Q × Σ→ 2Q
Q là tập hợp các trạng thái, Σ là bảng mẫu tự, q0 là trạng thái đầu, và A là tập hợp các trạng thái được chấp nhận, 2Q có nghĩa là tập hợp của tập hợp con của Q Cũng giống trong trường hợp các ôtômat hữu hạn, nó hữu ích để mở rộng chức năng dịch chuyển δ từ Q × Σ để mở rộng hơn tập hợp Q × Σ* Cho một ôtômat hữu hạn không đơn định M, δ*(q, x) là tập hợp các trạng thái của M có thể được xem là hợp lý như kết quả của sự bắt đầu trong trạng thái p và xử lý các ký tự và ở chuỗi x Công thức
đệ quy cho các ôtômat hữu hạn là:
Trang 5δ*(p, xa) = δ(δ*(p, x), a) Tại p là trạng thái bất kỳ, x là chuỗi bất kỳ trong Σ* , và a là ký tự đơn bất kỳ trong bảng mã tự Chúng ta sẽ cho một định nghĩa đệ quy như sau: Tuy nhiên, cho chúng
ta bắt đầu với phương pháp dể tiếp cận hơn Trước hết, chúng ta không muốn nói rằng chỉ trạng thái M có thể nhận từ p bằng một kết quả của việc xử lý Λ là p; chỉ khác bây giờ là chúng ta viết δ*(p, Λ)={p}, đúng hơn δp}, đúng hơn δ*(p, Λ)=p Nếu x = a1a2…an, thì nói rằng M có thể nhận trạng thái q sau khi xử lý x điều đó có nghĩa là có các trạng thái p0,p1,p2,…,pn sao cho p0 = p, pn = q, và cho mỗi i > 0, M có thể nhận trạng thái pi từ pi – 1 bằng cách xử lý ai Một cách đơn giản hơn để nói rằng “M có thể nhận pi từ pi – 1 bằng cách xử lý ai” là chính xác.
Pi δ(pi - 1, ai)
Do đó, mô tả đầu tiên của chúng ta về chức năng của δ*như sau.
Định nghĩa 4.2a(Định nghĩa không đệ quy của δ* cho một ôtômat hữu hạn không đơn định) Cho một ôtômat hữu hạn không đơn định tuỳ ý M =(Q, Σ, q0, A, δ) và cho bất kỳ p Q, δ*(p, Λ)={p}, đúng hơn δp} Cho bất kỳ p Q và cho bất kỳ x = a1a2…an Σ* ,
δ*(p, x) là tập hợp tất cả các trạng thái q cho trạng thái nào có ở một dãy của các trạng thái p = p0, p1,…, pn – 1, pn = q được thoả mãn.
pi δ(pi - 1, ai) cho mỗi i với 1 < i < n Theo thứ tự để tồn tại mô tả một cách đệ của δ*, chúng ta ghi chuỗi x bằng yan, tại y =
a1a2…an – 1 Nếu q δ*(p, yan), thì theo định nghĩa của chúng ta có các trạng thái p =
p0, p1,…, pn – 1, pn = q sao cho mỗi i > 0, pi δ(pi - 1, ai) Nếu chúng ta dừng đúng trước bước sau cùng và áp dụng định nghĩa, chúng ta có thể phát biểu rằng
pn – 1 δ*(p, y) và do đó q = pn δ(r, an) cho một vài r δ*(p, y) Nó mặc dù dể hiểu mà đối số có thể bị nghịch đảo: Nếu pn δ(r, an) cho vài r δ*(p, y), thì chúng ta có thể kết thúc từ định nghĩa mà pn δ*(p, yan) Kết thúc là công thức đệ quy chúng ta cần:
δ*(p, yan) = {p}, đúng hơn δq | q δ(r, an) cho vài r δ*(p, y)} hoặc, ngắn gọn hơn,
Trang 6Chúng ta phát biểu rằng một chuỗi x được chấp nhận bởi một ôtômat hữu hạn không đơn định M có nghĩa rằng có một dãy các dịch chuyển M có thể tạo nên, Bắt đầu trong trạng thái đầu và xử lý các ký hiệu của x, ở đó sẽ được chấp nhận ở trạng thái đầu Trong những từ khác, M chấp nhận x nếu thiết lập các trạng thái trong mà
M có thể kết thúc cho kết quả xử lý x chứa tại trạng thái chấp nhận đầu tiên.
Định nghĩa 4.3 Cho M = (Q, Σ, q0, A, δ) là một ôtômat hữu hạn không đơn định Chuỗi x Σ* được chấp nhận bởi M nếu
δ*(q0, x) ∩ A ≠ ø Ngôn ngữ thừa nhận, hoặc chấp nhận, bởi M thì cho L(M) của tất
cả các chuỗi được chấp nhận bởi M Cho bất kỳ ngôn ngữ nào L Σ* , L được thừa nhận bởi M nếu L = L(M).
Ví dụ 4.2 Cho M = (Q, Σ, q0, A, δ), tại Q = {p}, đúng hơn δq0, q1, q2, q3},
Σ = {p}, đúng hơn δ0, 1}, A = {p}, đúng hơn δq3}, và δ được cho bởi bảng sau:
Trang 8Tại điểm này chúng ta thấy rằng 111 được chấp nhận bởi M và 011 thì không bạn có thể thấy nếu bạn nghiên cứu sơ đồ trong hình 4-2 ở đó δ*(q0, x) chứa
q1 nếu và chỉ nếu x kết thúc bằng 1; và do đó ngôn ngữ được thừa nhận bởi M là: {p}, đúng hơn δ0, 1}*{p}, đúng hơn δ1}{p}, đúng hơn δ0, 1}2
Ngôn ngữ này được gọi là L3 trong ví dụ 3.15, cho các chuỗi với độ dài tối thiểu bằng 3 chứa một phần tử 1 ở vị trí thứ ba kể từ cuối chuỗi Được trình bày ở
sơ đồ trong hình 4-2 như một mô hình mẫu, bạn có thể dễ dàng xây dựng cho bất
kỳ n > 1 một ôtômat hữu hạn không đơn định với n + 1 trạng thái đó thừa nhận Ln Bởi vì trong ví dụ 3.14 chúng ta đã trình bày rằng bất kỳ ôtômat hữu hạn thường chấp nhận Ln cần ít nhất 2n trạng thái, đơn giản để hiểu rằng một ôtômat hữu hạn không đơn định thừa nhận một ngôn ngữ sẽ có ít trạng thái hơn ôtômat hữu hạn thừa nhận ngôn ngữ
Bây giờ chúng ta muốn biểu diễn, tuy nhiên, mặc dù một ôtômat hữu hạn không đơn định có thể cung cấp dựa trên các khái niệm theo hướng đơn giản của việc thừa nhận cho một ngôn ngữ hơn một ôtômat hữu hạn, các ôtômat hữu hạn không đơn định như là một tập hợp không có tác động mạnh hơn các ôtômat hữu hạn: bất kỳ ngôn ngữ nào cũng được chấp nhận bởi một ôtômat hữu hạn không đơn định ngoài ra cũng được chấp nhận bởi một(có lẽ làm phức tạp hơn) ôtômat hữu hạn.
Cho phép chúng ta xây dựng sự chứng minh cho sự kiện này, bằng cách chỉ
ra làm thế nào để loại trừ không đơn định từ một ôtômat hữu hạn không đơn định bất kỳ theo thứ tự sao cho vẫn tồn tại một ôtômat hữu hạn thừa nhận cùng ngôn ngữ Điều này có nghĩa là chúng ta cần đến định nghĩa “các trạng thái ” trong ôtômat hữu hạn như là một hướng đi cho mỗi sự kết hợp của trạng thái và ký hiệu vào, cho kết quả đúng của một trạng thái Giải pháp đã được thừa nhận bởi định nghĩa của một ôtômat hữu hạn khôngn đơn định: chức năng thay đổi trạng thái tạo nên cặp trạng thái vào đến một tập hợp các trạng thái Chú ý ít được dùng ở đây.
Nó hoàn toàn không đơn định để nói đến một cặp (p, a) Q × Σ có vài trạng thái tương ứng được chấp nhận; nó ít hợp lý nhưng có thể nói rằng tương ứng với (p, a)
có đúng một tập hợp các trạng thái Nói cách khác, không đơn định là rõ ràng và có
lẽ chỉ phát sinh từ ý niệm của chúng ta về một “trạng thái" là gì Trong chứng minh của định lý 3.4 trong chương cuối cùng, chúng ta coi các trạng thái cặp là các yếu
tố của Q Sau đó, tương ứng với "các trạng thái" S và ký hiệu đầu vào a (để tập hợp của tất cả các cặp (p, a) cho mỗi p S), có một "trạng thái" đúng mà kết quả: kết hợp của các tập hợp δ(p, a) cho p S Một cách đột ngột, không đơn định dường như đã biến mất, và kết quả tính toán của máy mô phỏng thiết bị gốc một cách rõ ràng, được cung cấp mà chúng ta xác định các trạng thái đầu tiên và cuối cùng chính xác Một tên thích hợp cho kỹ thuật này là việc xây dựng tập hợp con: Các trạng thái trong ôtômat hữu hạn là tập con của trạng thái thiết lập của ôtômat hữu hạn không đơn định.
Trang 9Định lý 4.1 Cho bất kỳ ôtômat hữu hạn không đơn định M = (Q, Σ, q0, A, δ) chấp nhận ngôn ngữ L Σ* , có một ôtômat hữu hạn M1 = (Q1, Σ, q1, A1, δ1) cũng chấp nhận L.
Chứng minh: Q1 được định nghĩa như sau:
Sự kiện mà M1 chấp nhận cùng ngôn ngữ như M cho phép từ sự kiện mà cho bất kỳ x Σ*,
δ1*(q1, x) = δ*(q0, x)
Bây giờ chúng ta bằng cách chứng minh theo quy nạp trên x Chú ý rằng chức năng δ1* và δ* được định nghĩa theo nhiều cách khác nhau: δ* trong định nghĩa 4.3, từ M là một ôtômat hữu hạn không đơn định, và δ1* trong định nghĩa 3.3,
Chứng minh quy nạp với giả thuyết rằng x là một chuỗi thoả mãn δ1*(q1, x) =
δ*(q0, x), và chúng ta muốn chứng minh rằng cho bất kỳ a Σ, δ1*(q1, xa) = δ*(q0, xa).
δ1*(q1, xa) = δ1(δ1*(q1, x), a) (bằng định nghĩa của δ1*)
= δ1(δ*(q0, x), a) (bằng chứng minh quy nạp với giả thuyết )
= U δ(p, a) (bằng định nghĩa của δ1)
p δ * (q 0 , x)
= δ*(q0, xa) (bằng định nghĩa của δ*)
M và M1 thừa nhận cùng ngôn ngữ thì bây giờ dễ dàng nhận thấy Một chuỗi
x được cấp nhận bởi M1 nếu δ1*(q1, x) A1; bây giờ chúng ta có thể phát biểu rằng
Trang 10điều này đúng nếu và chỉ nếu δ*(q0, x) ∩ A ≠ ø Trong trường hợp khác, x dược chấp nhận bởi M1 nếu và chỉ nếu x được chập nhận bởi M.
Điều quan trọng là thực hiện việc chứng minh của định lý đưa ra một thuật toán(xây dựng tập hợp con) cho sự loại bỏ không đơn định từ một ôtômat hữu hạn không đơn định Cho chúng ta minh hoạ thuật toán bằng cách trở lại ôtômat hữu hạn không đơn định trong ví dụ 4.2.
Ví dụ 4.3 Bảng trong ví dụ 4.2 trình bày chức năng dịch chuyển của ôtômat hữu hạn không đơn định trình bày hình 4-2 Xây dựng tập hợp con có thể trình diễn một ôtômat hữu hạn bằng 16 trạng thái, từ Q có 16 tập hợp con Tuy nhiên, chúng
ta có thể nhận được bởi một vài nếu chúng ta đi theo như phương pháp trong ví dụ 3.16 và chỉ dùng những trạng thái đó có thể chấp nhận được từ trạng thái đầu Chức năng dịch chuyển trong ôtômat hữu hạn của chúng ta là δ1, và chúng ta bắt đầu tính toán một vài gia strị của nó Tại mỗi thời điểm một trạng thái mới S xuất hiện trong việc tính toán cảu chúng ta, chúng ta phải thực hiện tính toán bao gồm δ1(S, 0) và
δ1(S, 1).
δ1 ({p}, đúng hơn δq0}, 0) = {p}, đúng hơn δq0}
δ1 ({p}, đúng hơn δq0}, 1) = {p}, đúng hơn δq0, q1}
δ1 ({p}, đúng hơn δq0, q1}, 0) = δ ({p}, đúng hơn δq0}, 0) δ({p}, đúng hơn δq1}, 0) = {p}, đúng hơn δq0} {p}, đúng hơn δq2} = {p}, đúng hơn δq0, q2}
δ1 ({p}, đúng hơn δq0, q1}, 1) = δ ({p}, đúng hơn δq0}, 1) δ({p}, đúng hơn δq1}, 1) = {p}, đúng hơn δq0, q1} {p}, đúng hơn δq2} = {p}, đúng hơn δq0, q1, q2}
δ1 ({p}, đúng hơn δq0, q2}, 0) = δ ({p}, đúng hơn δq0}, 0) δ({p}, đúng hơn δq2}, 0) = {p}, đúng hơn δq0} {p}, đúng hơn δq3} = {p}, đúng hơn δq0, q3}
δ1 ({p}, đúng hơn δq0, q2}, 1) = {p}, đúng hơn δq0, q1} {p}, đúng hơn δq3} = {p}, đúng hơn δq0, q1, q3}
Nó hiện diện trong các tiến trình của việc tính toán, xuất hiện tám trạng thái riêng biệt Chúng ta đã được thảo luận trong ví dụ 3.14 mà tối thiểu việc này là hiển nhiên Về việc đó, mặc dù chúng ta sẽ không mong đợi việc xảy ra trong toàn bộ, việc tính toán kết quả trong trường hợp ôtômat hữu hạn với một vài trạng thái hợp
lý chấp nhận ngôn ngữ mệnh lệnh Được trình bày trong hình 4-3.
Ví dụ 4.4 Chúng ta bỏ qua phần này bằng cách quay lại ôtômat hữu hạn không đơn định ban đầu để xem xét, một chi tiết trong hình 4-1b với sự kiện, ôtômat hữu hạn đưa ra với thuật toán của chúng ta là một trong hình 4-1a; cho chúng ta thấy rằng làm thế nào để đạt được nó.
Nếu chúng ta bỏ qua việc tính toán theo thứ tự những ưu tiên đơn giản, các trạng thái riêng biệt của ôtômat hữu hạn là tất yếu, theo thứ tự mà chúng xuất hiện, sự xuất hiện là {p}, đúng hơn δq0}, {p}, đúng hơn δq4} {p}, đúng hơn δq1 q2}, ø, {p}, đúng hơn δq0, q3}, và {p}, đúng hơn δq0, q4} Bảng quả dịch chuyển được trình bày trang tiếp theo
Trang 114.2 Ô tô mat hữu hạn không đơn định với dịch chuyển -
Trong phần này, chúng tôi thực hiện thêm một bước nữa để khái quát chương trình Ô tô mathữu hạn bởi các quy tắc đơn giãn, để đơn giản hóa hơn nữa bằng cách đưa các biểu thức Ô tô mathữu hạn thông thường và tương đương với các biểu thức đã cho Chúng tôi minh họa cho tổngquát hơn nữa bằng một ví dụ mà gợi ý làm thế nào nó sẽ được sử dụng trong chứng minh
Ví dụ 4.5: Xem xét các biểu thức chính quy 0 * (01) * Hình 4-4a và 4-4b hiển thị các FA đơngiản tương ứng với hai biểu thức chính quy đang được nối với nhau
Trang 12q0, thiết bị sẽ đoán nhận như thế nào để giải quyết ký hiệu đầu vào 0 Có ba khả năng: sơ đồ cóthể giải quyết ký hiệu đầu vào là 0 tương ứng với chuổi 0* và có thể tiếp tục thêm vào các ký hiệu
0 tương ứng với chuổi 0*; cuối cùng là 0 tương ứng với chuổi 0*; hoặc như là ký hiệu đầu tiên 0của chuỗi 01 Trong hai trường hợp cuối cùng, bây giờ sơ đồ được chia nhỏ ra sử dụng cho bất kỳđầu vào tiếp theo để cố gắng kết hợp phần thứ hai trong biểu thức chính quy
Nó không phải là khó khăn để thuyết phục mình rằng NFA này chấp nhận các ngôn ngữ L.Tuy nhiên, trong kết hợp của hai FA đơn giản, một số cấu trúc đã bị che khuất; mủi tên () làcần thiết để kết hợp chúng; và hiển nhiên nó không phải là ngay lập tức mà các ký hiệu là nhãnmũi tên phù hợp với hai biểu thức chính quy Vì vậy, có lẽ một số nghi ngờ vào thời điểm này:như thế nào?, thậm chí có hay không?, cách tiếp cận này sẽ làm việc trong một tình huống tổngquát hơn Một cách để giữ sự đơn giản của hai FA riêng lẽ trong quá trình kết hợp chúng là đưa
ra các sơ đồ không xác định và ít tự do trong đoán nhận Chúng ta có thể cho phép nó, trong khi ởtrạng thái q0 để đoán rằng nó sẽ không nhận được nhiều đầu vào có thể kết hợp với 0* Trong việcđoán nhận này nó cam kết chính nó để tiến tới phần thứ hai trong biểu thức chính quy gốc; Nó cóthể làm điều này mà không có bất kỳ tham chiếu đến các cấu trúc thực tế của phần thứ hai; đặcbiệt, nó có thể làm điều này mà không nhận được bất kỳ tại đầu vào , nhiều thứ giống nhau chỉ
Trang 13với chuổi rỗng như đầu vào Biểu đồ kết quả được hiển thị trong hình 4-4d Lưu ý rằng mặc
dù q0 là một trạng thái thừa nhận cần thiết trong NFA (trong hình 4-4c), nhưng nó không bắt buộctrong hình 4-d, vì nó không thêm đầu vào để sơ đồ có thể di chuyển từ q0 đến một trạng thái chấpnhận
Tóm lại, sơ đồ ở hình 4-4d là tổng quát hơn nhiều so với một NFA là nó được phép thực hiện quá trình dịch chuyển, không chỉ trên các ký hiệu đầu vào từ bảng chữ cái, mà cũng ngày đầu vàonull
Định nghĩa 4.4 Một ôtômat hữu hạn không xác định với dịch chuyển - (viết tắt là NFA-
Một lần nữa, chúng tôi bắt đầu với một định nghĩa không đệ quy, đơn giản, phỏng theo địnhnghĩa 4.2a
Hình 4-5
Định nghĩa 4.5a ( định nghĩa ….không đệ quy cho một NFA- ): Cho FA - M = (Q, , q0
, A, ) với mọi p, q Q và với mọi chuổi
x= a1a2…an, ta nói M dịch chuyển từ p đến q bằng cách dịch chuyển tương ứng với x nếu tồn tại
một số nguyên m≥n, và một dãy ký tự b 1, b 2 …b m € ∑ U {p}, đúng hơn δA} thỏa mản b1b2 bm=x và mộtdãy các trạng thái p = p0, p1,…, pm =q với i € [1 m], pi (pi-1, bi)
Cho x ∑* và p Q, *(p,x) thì tập hợp tất cả các trạng thái q Q là một sự dịch chuyển liên tục của M theo chuổi x từ p đến q
Ví dụ: trong hình 4-5 tương ứng với sự dịch chuển liên tục theo chuổi 01
Từ q0 dến f ; có một sự dịch chuyển từ r đến t theo chuổi ; và cũng có một sự dich chuyển tưmột trạng thái bất kỳ đến chính nó theo chuổi (chuổi rổng)
Để đi đến một đinh nghĩa đệ quy là hơi khó khăn, phần định nghĩa đệ quy vẫn còn liên quan
đến định nghĩa …cho một chuổi với một ký hiệu a thêm vào bảng chử cái Tuy nhiên, nếu chúng
ta biểu thị tập tất cả các trạng thái S mà các sơ đồ trước a được xử lý, chúng ta có được các thiết lập mới bằng cách cho phép tất cả các chuyển dịch có thể từ các phần tử của S trên đầu vào a
cũng như tất cả các chuyển dich - tiếp theo Điều này cho thấy rằng chúng ta cũng muốn sửađổi một phần cơ bản của các định nghĩa đệ quy, do đó thiết lập … Không chỉ chứa q mà chứacác trạng thái bất kỳ mà NFA- có thể đạt được từ q bằng cách dùng dịch chuyển Cả hai sửađổi có thể được mô tả trong giới hạn kết thúc( -closure) của tập các trạng thái S điều này chúng
ta định nghĩa đệ quy định nghĩa trong 4.6, là tập hợp của tất cả các trạng thái có thể đạt được từcác phần tử của S bằng cách sử dụng các chuyển dịch-
Định nghĩa 4.6 ( ( - closure)kết thúc của tập các trạng thái )
0
( , , , , )
Trang 14Cho M= (Q, , q0, A, ) là một NFA - và S là một tập con bất kỳ của Q - kết thúc (
- closure) của S là tập (S) định nghĩa như sau:
1 mọi phần tử của S là một phần tử của (S)
2 cho bất kỳ q (S), mổi phần tử của (q,) là trong (S)
3 không có các phần tử khác của Q trong (S)
Định nghĩa này khác với hầu hết cá định nghĩa đệ quy trước đâylà hữu hạn Kết quả là,chúng ta có thể chuyển định nghia đệ quy sang thuật toán để tính toán (S) ( xem bài tập 2.50)
Thuật toán để tính (S) : bắt đầu với T=S, tại mổi bước xem xét tất cả các tập (q,) , q
T, và thêm vào T phần tử bất kỳ không có trong T dừng lại khi không thay đổi được T Tập
(S) là tập giá trị cuối cùng của T
-kết thúc ( - closure) của một tập là thành phần thêm vào chúng ta cần phải định nghĩa
hàm đệ quy * Nếu *(q,y) là một tập tất cả các trạng thái cần đạt được từ q, sử dụng các kýhiệu y như là một dịch chuyển-, lúc đó:
Là tập tất cả các trạng thái mà chúng ta cần đạt được trong nhiều bước bằng cách sử dụng ký hiệu
a -kết thúc (- closure) của tập này gồm vài trạng thái khác mà chúng ta có thể đạt được nếu
chúng ta cho phép dịch chuyển tiếp theo trong khi thêm
Định nghĩa 4.5b( định nghĩa đệ quy của * cho một NFA- ):
Cho M= (Q, , q0, A, ) là một NFA- Hàm dich chuyển mở rộng được định nghĩa như sau:
Giả sử rằng chúng ta lấy S để được tập hợp {p}, đúng hơn δs}, sau lần thực hiện thứ nhất T là {p}, đúng hơn δs, w}, sau
lần thực hiện thứ hai thì T là {p}, đúng hơn δs, w, q 0 } , sau lần thực hiện thứ ba thì T là {p}, đúng hơn δs, w, q 0 , p, t}; và trong
những lần thực hiện tiếp theo nó không thay đổi ({p}, đúng hơn δS}) cho nên T là {p}, đúng hơn δs, w, q 0 , p, t}.
chúng ta sử dụng định nghĩa đệ quy để tính toán *(q0,010) tập này đã được định nghĩa trong
sự giới hạn của *(q0,01) đó là định nghĩa trong sự giới hạn của *(q0,0)
Do đó chúng tôi tính toán từ dưới lên, tính *(q0,), *(q0,0) rồi tính *(q0,01)
và cuối cùng là tính *(q0,010)
Trang 15* 0
( , ) 0
( ,0) ( , 0)
( ( ,0) ( ,0) ( , 0)) ( {p}, đúng hơn δ } {p}, đúng hơn δ })
({p}, đúng hơn δ , }) {p}, đúng hơn δ , }
*0
q
q
r r
Trang 16* 0
*0
( ,01)
0
( ( ,0)) ({p}, đúng hơn δ }) {p}, đúng hơn δs,w, , , }
q
q
r r
Bởi vì *(q*,010) chứa w và w là một phần tử của A cho nên 010 được chấp nhận Nhìn vào hình
4-6 bạn có thể chỉ rỏ theo dòng nay, thay vì chuổi 010 giống như chuổi 010, ta có sơ đồ sau của sự dich chuyển:
Định lý 4.2: Nếu L * là một ngôn ngữ được chấp nhận bởi NFA- M= (Q, ,
q0, A, ) thì có một NFA M= (Q1, , q1, A1, 1) chấp nhận ngôn ngữ L
Chứng minh: trong chứng minh của định lý 4.1 chúng tôi bắt đầu với một NFA và loại bỏ tất cả
các trường hợp không đơn định bằng cách thay thế trạng thái là một ký hiệu không đơn định
Ví dụ: cho các dich chuyển trong M như sau:
0
p q r
Lúc đó, bắt đầu từ p ta đưa vào ký tự 0 thì nó cho phép chúng ta hoặc đến q hoặc đến r M1 là ô tômat không đơn định, chúng ta có thể loại ra các dịch chuyển mà không làm thay đổi các trạngthái bằng cách thêm vào các dịch chuyển từ p đến r với ký tự vào 0
Đây là cách giải quyết tổng quát Chúng ta có thể dùng các trạng thái trong tập Q của M1 vàcác trạng thái đầu giống nhau Chúng ta phái định nghĩa được hàm dịch chuyển 1 do đó nếu Mcho phép chúng ta di chuyển từ p đến q bằng cách dùng các ký hiệu cùng với các dịch chuyển
thì M1 cho phếp chúng ta di chuyển từ p đến q bằng cách dùng các ký hiệu đó mà không có cácdịch chuyển
Thực ra, chúng ta đã có cách giải quyết mà kết quả là * cho NFA- M( định nghĩa
4.5b) đó là: cho một trạng thái q và một ký hiệu vào a
Trang 17Cuối cùng, có thay đổi nhỏ mà càn phải chỉ rỏ trong các trạng thái chấp nhận của M1 Nếu q0
của M là trạng thái không chấp nhận nhưng từ q0 có thể có được trạng thái chấp nhận bằng cáchdùng các dịch chuyển , lúc đó q0 phải tạo ra những trạng thái chấp nhận trong M1* (q0,) là {p}, đúng hơn δq0}bởi vì M1 là một NFA
Tóm lại, chúng ta phải chỉ ra rằng M1 sẽ là NFA, với bất kỳ qQ, a
A
) a , q ( )
Trong bươc quy nạp chúng ta giả sử rằng |y| 1và 1 (q,y) = *(q,y) với bất kỳ q Q chúng ta muốn chỉ ra rằng a , 1(q, ya) = * (q, ya) ta có: