Pokazujesz, że każdy model może symulować drugi, którym jest maszyna w modelu A, pokazujesz, że istnieje maszyna w modelu B, która oblicza tę samą funkcję. Zauważ, że ta symulacja nie musi być obliczalna (ale zwykle jest).
Rozważmy na przykład automaty wypychające z dwoma stosami (2-PDA). W innym pytaniu przedstawiono symulacje w obu kierunkach. Jeśli zrobiłbyś to formalnie, wziąłbyś ogólną maszynę Turinga (krotkę) i wyraźnie skonstruowałbyś, co odpowiadałby 2-PDA, i odwrotnie.
Formalnie taka symulacja może wyglądać następująco. Pozwolić
M.= ( Q , Σja, ΣO, δ, q0, Qfa)
być maszyną Turinga (z jedną taśmą). Następnie,
ZAM.= ( Q ∪ { q∗1, q∗2)} , Σja, Σ′O, δ′, q∗1, Qfa)
z i podane przezΣ′O= ΣO∪.{ $ }δ′
( q∗1, a , hl, hr) →δ′( q∗1, Hl, hr) dla wszystkich i , dla wszystkich , dla wszystkich z , dla wszystkich , ∈ Ď Ia ∈ Σjahr, hl∈ ΣO
( q∗1, ε , hl, hr) →δ′( q∗2), hl, hr)hr, hl∈ ΣO
( q∗2), ε , hl, hr) →δ′( q∗2), ε , hlhr)hr, hl∈ ΣOhl≠ $
( q∗2), ε , $ , hr) →δ′( q0, $ , hr)hr∈ ΣO
( q, ε , hl, hr) →δ′( q′, ε , hla )⟺( q, hr) →δ( q′, a , L ) q ∈ Q h l ∈ Σ Odla wszystkich i , dla wszystkich , dla wszystkich , dla wszystkich i oraz dla wszystkichq∈ Qhl∈ ΣO
( q, ε , $ , hr) →δ′( q′, $ , □ a )⟺( q, hr) →δ( q′,a,L)q∈Q
(q,ε,hl,hr)→δ′(q′,ahl,ε)⟺(q,hr)→δ(q′,a,R)q∈Q,hl∈Σ′O
(q,ε,hl,$)→δ′(q,hl,□$)q∈Qhl∈Σ′O
(q,ε,hl,hr)→δ′(q′,hl,a)⟺(q,hr)→δ(q′,a,N)q∈Q,hl∈Σ′O
jest równoważnym 2-PDA. Zakładamy, że maszyna Turinga używa jako pusty symbol, oba stosy zaczynają się od znacznika (który nigdy nie jest usuwany) i oznacza, że zużywa wejście , przełącza stany z na i aktualizuje stosy w następujący sposób:□∈ΣO$∉ΣO(q,a,hl,hr)→δ′(q′,l1…li,r1…rj)AMaqq′
[ źródło ]
Pozostaje pokazać, że wchodzi w stan końcowy na tylko i tylko wtedy, gdy zrobi. Jest to całkiem jasne z konstrukcji; formalnie musisz przełożyć akceptowanie przebiegów na na akceptowanie przebiegów na i odwrotnie.AMx∈Σ∗IMMAM