Làm thế nào để chứng minh rằng các DFA từ NFA có thể có số lượng trạng thái theo cấp số nhân?


20

Tất cả các automata hữu hạn không xác định có thể được biến thành automata hữu hạn xác định tương đương. Tuy nhiên, một automata hữu hạn xác định chỉ cho phép một mũi tên trên mỗi biểu tượng chỉ từ một trạng thái. Do đó, các quốc gia của nó phải là thành viên của tập hợp các trạng thái của NFA. Điều này dường như chỉ ra rằng số lượng trạng thái của DFA có thể mở rộng theo cấp số nhân theo số lượng trạng thái của NFA. Tuy nhiên, tôi đã tự hỏi làm thế nào để thực sự chứng minh điều này.


7
Đó là một câu hỏi hợp lý, và việc xây dựng không hoàn toàn rõ ràng, nhưng nó vẫn có thể là một câu hỏi bài tập về nhà. Vì vậy, sẽ rất hữu ích khi nghe lý do tại sao bạn muốn biết.

Có một số công trình ở đây nhưng có vẻ như nó phải ở trong một tờ giấy ở đâu đó. không biết về một ref. Ngoài ra, tôi nghĩ rằng có một cấu trúc sao cho NFA đếm nhị phân ở trạng thái hoạt động và chỉ chấp nhận sau khoảng chuyển đổi ...? 2n
vzn

Câu trả lời:


15

Một thao tác biến NFA thành NFA khác nhưng không làm như vậy đối với DFA là đảo ngược (chỉ tất cả các mũi tên theo cách khác và hoán đổi trạng thái ban đầu bằng trạng thái chấp nhận). Các ngôn ngữ được công nhận bởi các automaton biến là đảo ngược ngôn ngữ .LR={un1u0u0un1L}

Do đó, một ý tưởng là tìm kiếm một ngôn ngữ có cấu trúc bất đối xứng. Đi về phía trước, ngôn ngữ này phải được nhận ra bằng cách kiểm tra ký hiệu đầu tiên , chỉ yêu cầu trạng thái n + O ( 1 ) . Đi ngược lại, cần phải giữ một bộ nhớ của n trạng thái cuối cùng , trong đó yêu cầu A n + O ( 1 ) trạng thái trong đó A là kích thước bảng chữ cái.nn+O(1)nAn+O(1)A

Chúng tôi đang tìm kiếm một ngôn ngữ của hình thức nơi M n bao gồm các từ có độ dài n , S là một tập hợp con không tầm thường của bảng chữ cái, và M ' không cung cấp bất kỳ hạn chế hơn nữa. Chúng tôi cũng có thể chọn đơn giản nhất bảng chữ cái A = { một , b } (một bảng chữ cái singleton sẽ không làm, bạn không nhận được NFAs nhỏ có) và M ' = A * . Một SMnSMMnnSMA={a,b}M=AS có nghĩa là . Đối vớiS={a} , chúng tôi yêu cầu nó không tương quan với S (để DFA cho ngôn ngữ đảo ngược sẽ cần giữ bộ nhớ của S ): lấy M n = A n .MnSSMn=An

Như vậy chúng ta hãy . Nó được công nhận bởi một DFA đơn giản với n + 2 trạng thái.Ln=(a|b)na(a|b)n+2

dfa

Đảo ngược nó mang lại một NFA nhận ra .LnR=(a|b)a(a|b)n

nfa

Các DFA tối thiểu mà công nhận có ít nhất 2 n + 1 tiểu bang. Điều này là do tất cả các từ có độ dài 2 n + 1 phải đạt các trạng thái riêng biệt trong DFA. (Nói cách khác, chúng thuộc các lớp tương đương Myhill-Nerode riêng biệt .) Để chứng minh điều này, hãy lấy hai từ riêng biệt u , v A n + 1 và đặt k là một vị trí mà chúng khác nhau ( u k = av k = b .LnR2n+12n+1u,vAn+1k ). Không mất tính tổng quát, hãy giả sử bạn kukvkuk=avk=b v b kL R n ( b k là một phần mở rộng phân biệt cho u v ). Nếu u v dẫn đến tình trạng tương tự trong một DFA nhận L R n sau đó như vậy sẽ u b k v b kubkLnRvbkLnRbkuvuvLnRubkvbk, điều này là không thể vì một cái dẫn đến trạng thái chấp nhận và cái kia thì không.

Lời cảm ơn: ví dụ này đã được trích dẫn trong Wikipedia mà không cần giải thích. Bài báo đưa ra một tham chiếu đến một bài báo mà tôi chưa đọc, nó có ràng buộc chặt chẽ hơn:
Leiss, Ernst (1981), "Đại diện ngắn gọn cho các ngôn ngữ thông thường của Boolean automata", Khoa học máy tính lý thuyết 13 (3): 323 doi: 10.1016 / S0304-3975 (81) 80005-9 .


Trả lời hợp lý: Các trạng thái trong DFA được sử dụng làm bộ nhớ (để lưu trữ một số thông tin như công tắc quạt bật tắt), do đó, những gì có thể được biểu thị ở trạng thái đơn trong DFA có thể được biểu diễn bằng cách sử dụng kết hợp các trạng thái trong NFA tương đương. Đó là lý do NFA có ít trạng thái hơn so với DFA tương đương. Bây giờ nếu bạn có trạng thái trong một tập hợp Q thì tập hợp tất cả các kết hợp có thể có của Qtập hợp sức mạnh2 n , vì vậy nếu chúng ta đảo ngược một NFA của n trạng thái thành DFA tương đương, thì DFA sẽ bao gồm tối đa 2 n tiểu bang. - Nó có ý nghĩa không? nQQ2nn2n
Grijesh Chauhan

1
@GrijeshChauhan Đây không phải là câu hỏi. Có, thật dễ dàng để thấy rằng với mỗi NFA có trạng thái thì có một DFA có tối đa 2 n trạng thái. Nhưng ở đây chúng tôi muốn thấy rằng giới hạn đã đạt được, tức là với bất kỳ n nào cũng có NFA n -state sao cho DFA tương đương nhỏ nhất có ít nhất 2 n trạng thái (hoặc gần đó, ở đây tôi chứng minh ràng buộc 2 n - 1 ). n2nnn 2n2n1
Gilles 'SO- đừng trở nên xấu xa'

hmm ... sau khi đọc câu trả lời của bạn hai lần và từ bình luận "Nhưng ở đây chúng tôi muốn thấy rằng ràng buộc đã đạt được" bây giờ tôi có thể hiểu được. Cảm ơn.
Grijesh Chauhan

8

Hãy xem xét các gia đình sau các ngôn ngữ: Ln={x1,x2,,xk#xk+1:i{1,,k} with xi=xk+1}

Bảng chữ cái của { # , 1 , ... , n } .Ln{#,1,,n}

Có một NFA với các trạng thái nhận ra ngôn ngữ L n . Nó có n bản sao. Trong bản sao thứ i, chúng tôi đoán rằng chữ cái cuối cùng sẽ là i và kiểm tra dự đoán của chúng tôi. Thật đơn giản để xây dựng một bản sao như vậy với 3 trạng thái. Sự không xác định duy nhất là ở trạng thái ban đầu.O(n)Lnnii3

Tuy nhiên, không có DFA nào nhận ra có ít hơn 2 trạng thái O ( n ) bởi vì, theo trực giác, một DFA phải nhớ các tập hợp con của { 1 , Lỗi , n } .Ln2O(n){1,,n}

Tôi khá chắc chắn rằng cuốn sách của Sipser có ví dụ này.


Cấu trúc trong cuốn sách của Siper tạo ra một DFA với chính xác 2 ^ n trạng thái. Nếu NFA có bộ trạng thái Q, thì bộ trạng thái của DFA là Pow (Q) để mô phỏng tất cả các trạng thái 'song song' có thể có trong một di chuyển NFA. (Chỉnh sửa để thêm ý kiến ​​về phạm vi câu hỏi) Cho rằng xây dựng được sử dụng cho điều này trong một văn bản tiêu chuẩn cho thấy rõ khả năng của một số trạng thái theo cấp số nhân, đối với tôi, đây dường như không phải là cấp độ nghiên cứu. Có thể phù hợp như một yêu cầu tham khảo mặc dù.
Logan Mayfield

8

Một ví dụ khác là ngôn ngữ của tất cả các từ bỏ lỡ một biểu tượng của bảng chữ cái. Nếu bảng chữ cái có kích thước , thì NFA có thể "đoán" trạng thái bắt đầu và do đó chấp nhận ngôn ngữ với n trạng thái. Mặt khác, sử dụng định lý Nerode, dễ dàng thấy rằng kích thước của DFA tối thiểu cho ngôn ngữ này là 2 n .nn2n

Ví dụ này cũng cho thấy rằng các NFA có thể phải chịu một cú đánh theo cấp số nhân dưới sự bổ sung. Thật vậy, người ta biết rằng bất kỳ NFA (hoặc thậm chí ngữ pháp không ngữ cảnh) cho ngôn ngữ của tất cả các từ có chứa tất cả các ký hiệu của bảng chữ cái phải có số lượng trạng thái theo cấp số nhân.


1
Trong trường hợp bất cứ ai bên cạnh tôi lúc đầu hiểu sai nó, "lời mà bỏ lỡ một biểu tượng của bảng chữ cái" có nghĩa là . (Không phải: các từ có chứa mọi chữ cái trừ một hoặc các từ liệt kê các chữ cái theo thứ tự và bỏ qua một chữ cái.)σΣ(Σσ)
6005

Đó là một chút của một ví dụ lẻ vì kích thước của không được tổ chức liên tục cho gia đình các ví dụ. Nếu chúng ta giả sử một bảng chữ cái nhị phân cố định, chúng ta có thể điều chỉnh ví dụ bằng cách mã hóa n chữ cái trong nhị phân, nhưng kết quả hơi khác một chút. Giả sử tôi đã không phạm sai lầm, trong trường hợp đó chúng ta có thể nhận được NFA có kích thước O ( n 2 ) và DFA phải có kích thước ít nhất là 2 n 2 n . ΣnO(n2)2n2n
6005

Điểm của ví dụ này là blowup khớp chính xác với cấu trúc bộ nguồn. Có tồn tại một ví dụ nhị phân với cùng một vụ nổ, nhưng nó phức tạp hơn.
Yuval Filmus

Đúng, đó là một ví dụ hay.
6005

1
O(nlogn)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.