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={un−1…u0∣u0…un−1∈L}
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 SMnSM′MnnSM′A={a,b}M′=A∗S 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
Đảo ngược nó mang lại một NFA nhận ra .LRn=(a|b)∗a(a|b)n
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 = a và v k = b .LRn2n+12n+1u,v∈An+1k ). Không mất tính tổng quát, hãy giả sử bạn kuk≠vkuk=avk=b và v b k ∉ L R n ( b k là một phần mở rộng phân biệt cho u và v ). Nếu u và 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à v b kubk∈LRnvbk∉LRnbkuvuvLRnubkvbk, đ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 .