Vous montrez que l'un ou l'autre modèle peut simuler l'autre, auquel est attribuée une machine dans le modèle A, montrez qu'il existe une machine dans le modèle B qui calcule la même fonction. Notez que cette simulation n'a pas besoin d'être calculable (mais l'est généralement).
Considérons, par exemple, les automates pushdown avec deux piles (2-PDA). Dans une autre question , les simulations dans les deux sens sont décrites. Si vous le faisiez formellement, vous prendriez une machine de Turing générale (un tuple) et construiriez explicitement ce que serait le 2-PDA correspondant, et vice versa.
Formellement, une telle simulation peut ressembler à ceci. Laisser
M= ( Q , Σje, ΣO, δ, q0, QF)
être une machine de Turing (avec un ruban). Alors,
UNEM= ( Q ∪ { q∗1, q∗2} , Σje, Σ′O, δ′, q∗1, QF)
avec Σ′O= ΣO∪.{ $ } et δ′ donnés par
(q∗1,a,hl,hr)→δ′(q∗1,ahl,hr) pour touta∈ΣI ethr,hl∈ΣO ,
(q∗1,ε,hl,hr)→δ′(q∗2,hl,hr) pour touthr,hl∈ΣO ,
(q∗2,ε,hl,hr)→δ′(q∗2,ε,hlhr) for all hr,hl∈ΣO with hl≠$,
(q∗2,ε,$,hr)→δ′(q0,$,hr) for all hr∈ΣO,
(q,ε,hl,hr)→δ′(q′,ε,hla)⟺(q,hr)→δ(q′,a,L) for all q∈Q and hl∈ΣO,
(q,ε,$,hr)→δ′(q′,$,□a)⟺(q,hr)→δ(q′,a,L) for all q∈Q,
(q,ε,hl,hr)→δ′(q′,ahl,ε)⟺(q,hr)→δ(q′,a,R) for all q∈Q,hl∈Σ′O,
(q,ε,hl,$)→δ′(q,hl,□$) for all q∈Q and hl∈Σ′O, and
(q,ε,hl,hr)→δ′(q′,hl,a)⟺(q,hr)→δ(q′,a,N) for all q∈Q,hl∈Σ′O
is an equivalent 2-PDA. Here, we assume that the Turing machine uses □∈ΣO as blank symbol, both stacks start with a marker $∉ΣO (which is never removed) and (q,a,hl,hr)→δ′(q′,l1…li,r1…rj) means that AM consumes input a, switches states from q to q′ and updates the stacks like so:
[source]
It remains to show that AM enters a final state on x∈Σ∗I if and only if M does so. This is quite clear by construction; formally, you have to translate accepting runs on M into accepting runs on AM and vice versa.