Być może możesz zbudować język w DPSACE (n), który nie może być rozpoznany przez MPA z używając argumentu diagonalizacji (prawdopodobnie pomysł jest podobny do tego w odpowiedzi Bena, ale nie zagłębiłem się w to):k=1
Załóżmy, że nad alfabetem kodujesz MPA przy użyciu listy przejść:Σ={0,1}
s,a,p→s′,p′,L|R;...#
gdzie to aktualny stan, to aktualny symbol, to status kamyka, to nowy stan, to nowy stan kamyka, to kierunek ruchu, to znacznik końcowy).saps′p′L|R#
Maszyna Turinga na wejściu może sprawdzić, czy jest poprawnym opisem i symulować go na wejściu dla kroków, używając komórki, rozciągając dane wejściowe w ten sposób:MxMPAxx4|x|6|x|+log|x|
MPA description # MPA tape # curr_state # counter #
Gdzie:
- Opis MPA to oryginalny ciąg wejściowy (ma długość );x|x|
- Taśma MPA jest reprezentacją taśmy MPA: dla każdej komórki możemy użyć 3 bitów do przechowywania flagi głowy, flagi kamyka i (stałej) zawartości taśmy (ma długość );3|x|
- curr_state przechowuje bieżący stan MPA (ma długość );log|x|
- counter jest licznikiem kroków symulacji, który jest aktualizowany po każdym kroku symulacji (ma długość ).2|x|
Jeśli zatrzymuje się w wówczas TM wypisuje coś przeciwnego (jeśli nie zatrzymuje wyjść 0).MPAx4|x|MM
Dla wystarczająco dużą , gdy etapy symulacji są większe niżktóra jest większa niż długość pełnego opisu konfiguracji ; w ten sposób, jeśli nie zatrzyma się w krokach, jesteśmy pewni, że zapętli się na zawsze.x>x04|x|2|x|+2|x|log|x|MPAxMPAx4|x|
Załóżmy, że istnieje który decyduje o tym samym języku z , a następnie zawsze zatrzymuje się i możesz zbudować „większy” który decyduje o tym samym języku, używając (wystarczy dodać stany dum).MPAyLMMPAy′y′>x0
Z konstrukcji mamy, co jest sprzecznością.MPAy′(y′)=1−M(y′)=1−MPAy′(y′)