Tôi không có thời gian để viết điều này trước đây nhưng tôi đã tìm thấy câu trả lời. Đây là những gì tôi đã làm:
Đặt là gốc . Chúng tôi sẽ xây dựng một mới , gọi nó là ( là viết tắt của sửa đổi).OPDAPDAMM
Để tìm phần bù của , chúng ta có thể lật các trạng thái cuối cùng thành trạng thái không cuối cùng và ngược lại. Đây là quy trình tương tự như đối với máy tự động hữu hạn. Tuy nhiên, có một sự tinh tế. Vấn đề chính là trong PDA gốc , đầu vào có thể dẫn đến trạng thái không phải là trạng thái cuối cùng nhưng có thể thực hiện và sang trạng thái chấp nhận . Các trạng thái lật như đã đề cập ở trên, sẽ khiến kết thúc bằng với đầu vào sẽ là trạng thái cuối cùng (khiến chấp nhận chấp nhận đầu vào) ngay cả khi sau đó nó sẽ tạo ra một đếnOOwSϵ−moveS′S w M ϵ - m o v e S ′ O M w S S ′ S ϵ - m o v eMSwMϵ−moveS′, một trạng thái không chấp nhận. Do đó, cả và sẽ chấp nhận . Một cái gì đó tương tự xảy ra nếu là trạng thái cuối cùng và là trạng thái không cuối cùng có thể tiếp cận được từ thông qua một động tác .OMwSS′Sϵ−move
Để khắc phục vấn đề này, chúng tôi phải đảm bảo rằng tất cả -move xảy ra trước khi chúng tôi đọc biểu tượng tiếp theo. Đó là, chúng tôi sẽ chỉ vào trạng thái đọc khi có đường dẫn của -move và chúng tôi đạt đến trạng thái không có -move. Chúng tôi gọi các trạng thái sau này là các trạng thái đọc , vì chúng cần một biểu tượng thực tế để thực hiện chuyển đổi mới.ε εϵϵϵ
Xác định các trạng thái của là các bộ dữ liệu có dạng trong đó ( là tập hợp các trạng thái của gốc ) và .< q , n > q ∈ Q Q P D A n ∈ { 1 , 2 , 3 , 4 }M<q,n>q∈QQPDAn∈{1,2,3,4}
Nếu trong , hãy để trong nếu .O δ ( < q , 3 > , ε , X ) = < < q ' , 2 > , α > M q ∈ F Oδ(q,ϵ,X)=<q′,α>Oδ(<q,3>,ϵ,X)=<<q′,2>,α>Mq∈FO
Nếu trong , hãy cho trong nếu .O δ ( < q , 3 > , ε , X ) = < < q ' , 3 > , α > M q ∉ F Oδ(q,ϵ,X)=<q′,α>Oδ(<q,3>,ϵ,X)=<<q′,3>,α>Mq∉FO
Nếu trong , hãy để trong .O δ ( < q , 2 > , ε , X ) = < < q ' , 2 > , α > Mδ(q,ϵ,X)=<q′,α>Oδ(<q,2>,ϵ,X)=<<q′,2>,α>M
Nếu được trong , trongu n d e f i n e d O δ ( < q , 2 > , ε , X ) = < < q , 1 > , X > Mδ(q,ϵ,X)undefinedOδ(<q,2>,ϵ,X)=<<q,1>,X>M
Nếu được trong , trongu n d e f i n e d O δ ( < q , 3 > , ε , X ) = < < q , 4 > , X > Mδ(q,ϵ,X)undefinedOδ(<q,3>,ϵ,X)=<<q,4>,X>M
Trong các định nghĩa đó, chúng tôi cho phép các trạng thái có dạng và tiêu thụ -move bắt chước -move của cho đến khi không còn nữa. Sau đó, thực hiện chuyển sang trạng thái đọc. Bây giờ cho các trạng thái đọc,< q , 3 > ε ε O ε<q,2><q,3>ϵϵOϵ
- Nếu trong , hãy trong .O δ ( < q , 1 > , một , X ) = δ ( < q , 4 > , một , X ) = < < q ' , 3 > , α > Mδ(q,a,X)=<q′,α>Oδ(<q,1>,a,X)=δ(<q,4>,a,X)=<<q′,3>,α>M
Bằng cách đưa ra định nghĩa này, chúng tôi sử dụng một biểu tượng của đầu vào và chuyển sang trạng thái có dạng để bắt đầu một loạt -move mới.ε<q,3>ϵ
Cuối cùng, làm cho các trạng thái có dạng được chấp nhận trạng thái của nếu . Ngoài ra, hãy tình trạng ban đầu của nếu là tình trạng ban đầu của .M q ∉ F O < q 0 , 3 > M q 0 O<q,4>Mq∉FO<q0,3>Mq0O
Những gì chúng tôi đã làm là như sau:
Tạo 4 "tầng" trạng thái (yếu tố thứ hai của bộ dữ liệu ở trạng thái xác định chúng ta ở tầng nào). Tầng 3 bắt chước -moves của có thể đạt đến một trạng thái chấp nhận của . Nếu đó là trường hợp, chúng tôi chuyển sang tầng 2; mặt khác, chúng tôi vẫn ở tầng 3. Khi không còn -move để theo , chúng tôi xác định -move của để đạt đến trạng thái đọc. Tầng 1 và 4 tương ứng với trạng thái đọc. Nếu chúng tôi ở tầng 3, chúng tôi lên tầng 4. Nếu chúng tôi ở tầng 2, chúng tôi đạt đến tầng 1. Chỉ các bang (tiểu bang ở tầng 4) mới chấp nhận trạng thái củaϵ O q O ϵ O ϵ M < q , 4 > M q OMϵOqOϵOϵM<q,4>M , với điều kiện là không phải là một nhà nước chấp nhận của .qO
Xin vui lòng cho tôi biết nếu tôi đã viết một lỗi đánh máy khi viết này. Tôi có thể dễ dàng nhầm lẫn. Ngoài ra, tiếng Anh của tôi không tốt lắm nên cứ thoải mái chỉnh sửa và viết lại những thứ tốt hơn.