Come mostrare due modelli di calcolo sono equivalenti?


21

Sto cercando una spiegazione su come si possa dimostrare che due modelli di calcolo sono equivalenti. Ho letto libri sull'argomento, tranne per il fatto che le prove di equivalenza sono state omesse. Ho un'idea di base su cosa significhi che due modelli di calcolo siano equivalenti (la vista degli automi: se accettano le stesse lingue). Esistono altri modi di pensare all'equivalenza? Se tu potessi aiutarmi a capire come dimostrare che il modello della macchina di Turing è equivalente al calcolo lambda, sarebbe sufficiente.


Immagino tu abbia scelto i libri sbagliati.
Raffaello

@Raphael Che cos'è un buon libro sull'argomento?
Saadtaame

Vorrei dire "qualsiasi libro sugli automi", ma a quanto pare ora è vero. Sfortunatamente, non ho libri inglesi adatti a portata di mano, scusa.
Raffaello

1
Un libro sui soli automi non sarà sufficiente.
reinierpost,

Che libri stai usando?
Saadtaame,

Risposte:


20

Si mostra che uno dei due modelli può simulare l'altro, a cui viene data una macchina nel modello A, si mostra che esiste una macchina nel modello B che calcola la stessa funzione. Si noti che questa simulazione non deve essere calcolabile (ma di solito lo è).

Si consideri, ad esempio, automi pushdown con due stack (2-PDA). In un'altra domanda , vengono descritte le simulazioni in entrambe le direzioni. Se lo facessi formalmente, prenderesti una macchina Turing generale (una tupla) e costruiresti esplicitamente quale sarebbe il corrispondente 2-PDA, e viceversa.


Formalmente, una simile simulazione può assomigliare a questa. Permettere

M=(Q,ΣI,ΣO,δ,q0,QF)

essere una macchina di Turing (con un nastro). Poi,

AM=(Q{q1,q2},ΣI,ΣO,δ,q1,QF)

con e dati daΣO=ΣO.{$}δ

(q1,a,hl,hr)δ(q1,ahl,hr) per tutti e , per tutti , per tutti con , per tutti ,aΣIhr,hlΣO
(q1,ε,hl,hr)δ(q2,hl,hr)hr,hlΣO
(q2,ε,hl,hr)δ(q2,ε,hlhr)hr,hlΣOhl$
(q2,ε,$,hr)δ(q0,$,hr)hrΣO
(q,ε,hl,hr)δ(q,ε,hla)(q,hr)δ(q,a,L)per tutti e , per tutto ,qQhlΣO
(q,ε,$,hr)δ(q,$,a)(q,hr)δ(q,a,L)qQ
(q,ε,hl,hr)δ(q,ahl,ε)(q,hr)δ(q,a,R) per tuttoqQ,hlΣO ,
(q,ε,hl,$)δ(q,hl,$) per tuttiqQ eeper tuttihlΣO
(q,ε,hl,hr)δ(q,hl,a)(q,hr)δ(q,a,N)qQ,hlΣO

è un equivalente 2-PDA. Qui, supponiamo che la macchina di Turing usi come simbolo vuoto, entrambe le pile iniziano con un marcatore (che non viene mai rimosso) e significa che consuma input , cambia gli stati da a e aggiorna le pile in questo modo:ΣO$ΣO(q,a,hl,hr)δ(q,l1li,r1rj)AMaqq

aggiornamento dello stack
[ fonte ]

Resta da dimostrare che entra in uno stato finale su se e solo se fa. Questo è abbastanza chiaro dalla costruzione; formalmente, devi tradurre accettando le corse su in accettando le corse su e viceversa.AMxΣIMMAM


@frabala Avevi ragione, avevo gli stati iniziali nel modo sbagliato. Risolto ora, grazie!
Raffaello

4

All'inizio dei sistemi comunicanti e mobili: il Pi-Calculus di Robin Milner, c'è un'introduzione sugli automi e su come possono simularsi a vicenda in modo che non possano essere distinti: la bisimulazione . (cfr Bisimulazione su Wikipedia)

Non ricordo bene, dovrei rileggere il capitolo, ma c'era un problema con la simulazione e la bisimulazione che li rendeva non sufficienti per le equivalenze computazionali.

Così Robin Milner presenta il suo Pi-Calculus e lo espone per il resto del libro.

Alla fine, nel suo ultimo libro The Space and Motion of Communicating Agents , potresti dare un'occhiata ai Bigraphs di Robin Milner. Possono modellare Automata, reti di Petri, Pi-Calculus e altre metodologie computazionali.


2

Per quanto ne so, l'unico (o almeno il più comune) modo per farlo è confrontare le lingue accettate dalle macchine / dai modelli. Questo è il punto centrale della teoria degli automi: prende il vago concetto di problema o algoritmo e lo trasforma in un insieme matematico concreto (cioè un linguaggio) su cui possiamo ragionare.

Il modo più semplice per farlo è, data una macchina / funzione arbitraria da un modello, per costruire una macchina dal secondo modello che calcola la stessa lingua. Le probabilità sono che utilizzerai l'induzione nella lunghezza dell'espressione, negli stati nella macchina, nelle regole nella grammatica, ecc.

Non ho visto questo fatto con Lambda e TM (anche se sono sicuro al 99% è possibile), ma ho sicuramente visto questo tipo di cose per dimostrare l'equivalenza di NFA ed espressioni regolari. Prima mostri un NFA che può accettare qualsiasi atomo, quindi usando l'induzione, crei NFA che accettano l'unione / concatenazione / Kleene-star di qualsiasi NFA più piccolo.

Quindi fai il contrario, per trovare un RE per qualsiasi NFA.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.