Máquina de Turing
Una cinta infinita, un cabezal y una tabla de reglas. El modelo más simple que puede hacer todo lo que hace una computadora, y por eso el que se usa para decidir qué no se puede hacer.
Para este tema conviene tener claro:Gramáticas libres de contexto y autómatas de pila
Turing no diseñó una máquina para construirla: la diseñó para poder demostrar que ciertos problemas no tienen solución. Para eso hacía falta un modelo tan simple que nadie pudiera discutirlo, y tan potente que no se le escapara ningún cómputo posible.
Tres piezas: cinta, cabezal y control
El modelo tiene tres piezas: una cinta infinita dividida en celdas, un cabezal que lee y escribe una celda por vez y se mueve un lugar a izquierda o derecha, y un conjunto finito de estados con una tabla de reglas.
Cada regla dice: estando en tal estado y leyendo tal símbolo, escribir esto, moverse para allá y pasar a tal estado. Nada más. La máquina se detiene cuando llega a un estado de aceptación o rechazo, y puede no detenerse nunca.
La cinta arranca con el número 1011 escrito y el cabezal parado en el último dígito.
Antes de seguir, predecí
Qué agrega la cinta que el autómata no tenía
La diferencia con un autómata finito es la cinta: memoria ilimitada a la que se puede volver. Con eso ya se puede contar, comparar dos mitades de la entrada y simular estructuras arbitrarias.
Y la diferencia con un autómata de pila es el acceso: la pila sólo se toca por un extremo, la cinta se recorre en las dos direcciones. Ese cambio es lo que convierte un modelo restringido en uno que abarca todo lo computable.
Agregarle cosas no le da más poder
Lo notable es que agregarle cosas no le da más poder. Varias cintas, cinta infinita en las dos direcciones, un alfabeto más grande, no determinismo: todas esas variantes se simulan con la máquina básica, con una pérdida de eficiencia pero sin ganar capacidad.
El no determinismo es el caso más llamativo. Una máquina determinista puede simularlo explorando todos los caminos en anchura; tarda exponencialmente más, pero resuelve exactamente lo mismo. Esa robustez del modelo es lo que le da autoridad a sus resultados negativos.
La máquina universal: el programa como dato
La idea con más consecuencias es la máquina universal. Una máquina de Turing se puede codificar como una cadena, y entonces existe una máquina que recibe la descripción de otra máquina más su entrada, y simula su ejecución.
Eso es exactamente una computadora de programa almacenado: el programa es un dato. La misma codificación de máquinas como cadenas es lo que después habilita los argumentos diagonales, y con ellos las demostraciones de imposibilidad.
Decidible y reconocible no son lo mismo
Con este modelo se separan dos nociones que en la práctica se confunden. Un lenguaje es decidible si hay una máquina que siempre se detiene y responde bien. Es reconocible si hay una máquina que acepta las cadenas del lenguaje, pero sobre las que no pertenecen puede quedarse colgada para siempre.
Hay lenguajes reconocibles y no decidibles, y esa brecha es el corazón de la computabilidad: se puede confirmar un sí, nunca descartar con certeza.
Para qué sirve si nadie la programa
Nadie programa una máquina de Turing, y ese no es el punto. El punto es que si algo no se puede hacer en este modelo, no se puede hacer en ningún lenguaje ni con ningún hardware, porque todos se simulan mutuamente.
De ahí sale el término “Turing completo”, que se aplica a lenguajes de programación y a cosas que no pretendían serlo: las plantillas de C++, las hojas de cálculo, las reglas de algunos motores de configuración. Ser Turing completo también implica heredar la indecidibilidad: sobre esos sistemas no se puede decidir automáticamente si un cálculo termina.
Para qué sirve un modelo tan incómodo
| Modelo | Qué agrega | ¿Más poder? |
|---|---|---|
| Máquina de Turing básica | — | — |
| Varias cintas | comodidad | no: se simula con una, más lento |
| Cinta infinita en dos direcciones | comodidad | no |
| No determinismo | adivinar el camino correcto | no: se explora en anchura, exponencialmente más lento |
| Oráculo para la parada | responder algo indecidible | sí, y por eso no es una máquina real |
Más a fondo · nivel seniorLa tesis fuerte, que sí puede fallar
La tesis de Church-Turing dice que todo lo calculable mecánicamente lo calcula una máquina de Turing, y nadie encontró un contraejemplo en noventa años. La versión fuerte dice algo más: que cualquier modelo razonable lo hace además con a lo sumo una pérdida polinomial de eficiencia.
Ésa es la que está en discusión. La computación cuántica no viola la tesis original —no puede calcular nada incomputable— y sí parece violar la fuerte: el algoritmo de Shor factoriza en tiempo polinomial y no se conoce ningún algoritmo clásico que lo haga.
La distinción importa para no exagerar: una computadora cuántica no va a resolver el problema de la parada ni los NP-completos en general. Lo que puede cambiar es la eficiencia de ciertos problemas específicos, y uno de ellos sostiene buena parte de la criptografía actual.
Cierre
Cinta, cabezal y tabla de reglas: con eso alcanza para todo lo computable, y agregarle piezas no cambia lo que puede hacer. La máquina universal convierte programas en datos, y la distinción entre decidible y reconocible marca dónde empieza lo que no tiene solución.
Autoevaluación
¿Lo entendiste?
Práctica