¿Cómo mostrar dos modelos de cálculo equivalentes?

21

Estoy buscando una explicación sobre cómo se podría probar que dos modelos de cálculo son equivalentes. He estado leyendo libros sobre el tema, excepto que se omiten las pruebas de equivalencia. Tengo una idea básica sobre lo que significa que dos modelos de computación sean equivalentes (la vista de autómatas: si aceptan los mismos idiomas). ¿Hay otras formas de pensar acerca de la equivalencia? Si pudiera ayudarme a comprender cómo demostrar que el modelo de máquina de Turing es equivalente al cálculo lambda, eso sería suficiente.

saadtaame
fuente
Supongo que has elegido los libros equivocados.
Raphael
@Raphael ¿Qué es un buen libro sobre el tema?
saadtaame
Me gustaría decir "cualquier libro sobre autómatas", pero aparentemente eso es cierto. Lamentablemente, no tengo libros en inglés a la mano, lo siento.
Raphael
1
Un libro sobre autómatas no será suficiente.
reinierpost
¿Qué libros estás usando?
saadtaame

Respuestas:

20

Muestras que cualquiera de los modelos puede simular al otro, que tiene una máquina en el modelo A, muestra que hay una máquina en el modelo B que calcula la misma función. Tenga en cuenta que esta simulación no tiene que ser computable (pero generalmente lo es).

Considere, por ejemplo, autómatas pushdown con dos pilas (2-PDA). En otra pregunta , se resumen las simulaciones en ambas direcciones. Si hiciera esto formalmente, tomaría una máquina de Turing general (una tupla) y construiría explícitamente cuál sería el 2-PDA correspondiente, y viceversa.


Formalmente, tal simulación puede verse así. Dejar

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

ser una máquina de Turing (con una cinta). Luego,

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

ΣO=ΣO.{$}δ

(q1,a,hl,hr)δ(q1,ahl,hr)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)qQhlΣO
(q,ε,$,hr)δ(q,$,a)(q,hr)δ(q,a,L)qQ
(q,ε,hl,hr)δ(q,ahl,ε)(q,hr)δ(q,a,R)qQ,hlΣO
(q,ε,hl,$)δ(q,hl,$)qQhlΣO
(q,ε,hl,hr)δ(q,hl,a)(q,hr)δ(q,a,N)qQ,hlΣO

ΣO$ΣO(q,a,hl,hr)δ(q,l1li,r1rj)AMunaq a q y actualiza las pilas así:

actualización de la pila
[ fuente ]

Queda por demostrar que UNAMETRO entra en un estado final en XΣyo si y solo si METROlo hace Esto es bastante claro por construcción; formalmente, tienes que traducir aceptando carreras enMETRO en aceptar carreras en UNAMETRO y viceversa.

Rafael
fuente
@frabala Tenías razón, tenía los estados iniciales al revés. Reparado ahora, gracias!
Raphael
4

Al comienzo de los sistemas de comunicación y móviles: el cálculo Pi de Robin Milner, hay una introducción sobre los autómatas y cómo pueden simularse entre sí para que no puedan distinguirse: Bisimulación . (cf Bisimulación en wikipedia)

No recuerdo bien, debería volver a leer el capítulo, pero hubo un problema con la simulación y la bisimulación que los hizo insuficientes para las equivalencias computacionales.

Así, Robin Milner presenta su Pi-Calculus y lo expone para el resto del libro.

En última instancia, en su último libro The Space and Motion of Communicating Agents , podría echar un vistazo a Bigraphs de Robin Milner. Pueden modelar autómatas, redes de Petri, cálculo de Pi y otras metodologías computacionales.

Stephane Rolland
fuente
2

Hasta donde yo sé, la única (o al menos más común) forma de hacerlo es comparar los idiomas que aceptan las máquinas / modelos. Ese es el objetivo de la teoría de Autómatas: toma el concepto vago de un problema o algoritmo y lo convierte en un conjunto matemático concreto (es decir, un lenguaje) sobre el que podemos razonar.

La manera más fácil de hacer esto es, dada una máquina / función arbitraria de un modelo, construir una máquina a partir del segundo modelo que calcule el mismo lenguaje. Lo más probable es que use inducción en la longitud de la expresión, estados en la máquina, reglas en la gramática, etc.

No he visto esto hecho con Lambda y TM (aunque estoy 99% seguro de que es posible), pero definitivamente he visto este tipo de cosas para probar la equivalencia de NFA y expresiones regulares. Primero muestra un NFA que puede aceptar cualquier átomo, luego, usando la inducción, crea NFA que acepta la unión / concatenación / estrella de Kleene de cualquier NFA más pequeño.

Luego haces lo contrario, para encontrar un RE para cualquier NFA.

jmite
fuente