Cómo mapear las cintas de una máquina de Turing de “cinta k” en la cinta simple de una máquina de Turing de “1 cinta”

11

Estoy leyendo Sipser y me resulta difícil entender cuál es el proceso, de modo que si me das k máquinas Turing con k cintas, puedo escupir una máquina Turing equivalente con una sola cinta. Un ejemplo sería bueno. En realidad, lo que realmente estoy buscando es un ejemplo resuelto que muestre cómo pasar de TM que tiene cintas a una que tiene 1 cinta. No he podido encontrar uno hasta ahora. Tampoco estoy buscando ninguna prueba.k

usuario678392
fuente
¿Qué quieres decir con "una máquina equivalente"? ¿Cuál es la entrada y cuál es la salida? (¿Quizás quiso decir una máquina de Turing con cintas?)k
Yuval Filmus
Si. Una máquina de torneado con k cintas.
user678392

Respuestas:

17

Una respuesta descaradamente copiada de mí mismo :

Una máquina de Turing de varias cintas es casi igual a una máquina de una sola cinta, excepto que tenemos una función de transición extendida donde es el número de cintas. Entonces, en cada estado, la función de transición lee el contenido de cada cinta, se mueve a un nuevo estado, (tal vez) escribe algo en cada cinta y mueve cada cabeza, como un TM normal, excepto que ahora tenemos más cosas para leer, escribir y muévete. kQ×ΓkQ×Γk×{L,R}kk

Como su pregunta sugiere, una máquina de este tipo puede simular una máquina de una sola cinta . Aún mejor, se puede hacer con solo una desaceleración cuadrática (por lo tanto, para clases polinomialmente cerradas, es suficiente hablar de máquinas de una sola cinta).

La prueba de esto es algo complicada y está fácilmente disponible con una simple búsqueda en la web, por lo que esbozaré el mapeo clave de las cintas en una sola cinta.k

La idea básica es bastante sencilla; simplemente agregamos algunos símbolos nuevos y hacemos un seguimiento de cada cinta y encabezado uno tras otro. En cada paso de la computación solo podemos haber visitado una cantidad finita de cualquiera de las cintas, por lo que solo necesitamos almacenar tanta información sobre cada cinta. Por lo tanto, para cada agregamos un nuevo símbolo a que indicará dónde está la cabeza (para cada cinta) en cualquier punto del cálculo. También presentamos un carácter separador a que indicará el inicio y el final de las cintas "virtuales". Entrada dadaγ _ Γ # Γ ω = ω 1 ... ω n # ω 1 _ ... ω n # _ # _ # ... # _ # k  secciones, una por cinta...γΓγ_Γ#Γω=ω1ωn(podemos suponer que incluso en la máquina de cintas múltiples, toda la entrada está en la primera cinta, lo que demuestra por qué es un buen ejercicio) en la máquina de cintas múltiples, nuestra máquina de cinta única tendrá entrada

#ω1_ωn#_#_##_#k sections, one per tape

Luego usamos el estado de la máquina de cinta única para codificar en qué estado se encuentra la máquina de cinta múltiple y lo que están mirando los cabezales. La función de transición de la máquina de una sola cinta es una simulación de múltiples etapas de la función de transición multi-cinta, donde realizamos las diferentes acciones de cinta apropiadamente, ascender en la sola cinta a cada sección a su vez. Las únicas arrugas que quedan son cambiar todo cuando nos quedamos sin espacio en una sección (pero esa máquina secundaria es un ejercicio simple): nunca reducimos el tamaño de cada sección.k

Un ejemplo (con suerte) simple:

Digamos que tenemos un TM de 3 cintas, donde el alfabeto de entrada es solo , el alfabeto de cinta es y la entrada es . El estado inicial de la cinta de la máquina se ve así: El " " es para indicar dónde está el cabezal de lectura / escritura en cada cinta.Σ={0,1}Γ={0,1,}ω=10101

Tape 1:10101Tape 2:Tape 3:

Para construir la máquina combinada de una sola cinta, necesitamos agregar nuevos símbolos al alfabeto de la cinta:

  1. Necesitamos un símbolo que denote el inicio y el final de las cintas simuladas.
  2. Para cada símbolo en también necesitamos una versión que indique que el cabezal de la cinta simulada está en ese carácter en la cinta simulada.Γ

Entonces, para la máquina de una sola cinta, nuestro nuevo alfabeto de cinta es . El estado inicial de la cinta es: Observe la diferencia entre el cabezal de la máquina (la ) y los cabezales simulados de las 3 cintas simuladas (los caracteres subrayados). Por supuesto, la cinta se extiende infinitamente a la derecha como de costumbre. También he engañado ligeramente moviendo la cabeza de la cinta al primer carácter en la primera cadena; estrictamente debería comenzar en la celda más a la izquierda, pero este es un tecnicismo trivial.Γ={0,1,,0_,1_,_,#}

#1_0101#_#_#

Entonces tenemos tres secciones marcadas (entre las marcas ), que corresponderán a las 3 cintas de la máquina original.#

Ahora inventemos una acción para la máquina. Digamos que la máquina original lee desde la primera cinta, si ve un , escribe un en la segunda cinta, si ve un escribe un en la tercera cinta. En cada lectura o escritura, la cabeza se mueve hacia la derecha.1101

Entonces, después del primer "paso" (quizás requiriendo varios estados y transiciones en la máquina real), las cintas deben tener un en la segunda cinta, y el primer y el segundo cabezal se habrán movido a la derecha un paso:1

Tape 1:10101Tape 2:1Tape 3:

En la segunda vuelta, la primera cinta lee un , por lo que escribimos en la tercera cinta:0

Tape 1:10101Tape 2:1Tape 3:1

La máquina de cinta simple simula esto moviendo el subrayado (usando la versión alternativa de los caracteres en y escribiendo en la cinta simulada apropiada. Entonces, después del primer paso, la cinta combinada se ve así:Γ

#10_101#1_#_#

Después del segundo paso:

#101_01#1_#1_#

Por supuesto, esta es una vista de alto nivel del proceso: no he intentado explicar cómo construir los estados o cómo se alarga cada cinta simulada (para esto, necesita una pequeña rutina que verifique si se ha encontrado con el final de la cinta simulada, luego mueve todo a la derecha un paso y lo presiona en un nuevo espacio en blanco, es decir, solo agrega celdas de cinta simuladas cuando son necesarias).

Luke Mathieson
fuente
2
Alternativamente, use " pistas " separadas para escribir las cintas separadas una al lado de la otra en el mismo espacio. Sin embargo, eso implica la introducción de un nuevo alfabeto.
Hendrik Jan
2
@ user678392 Pasar por la construcción con todo detalle y escribirlo todo aquí tomaría al menos un par de horas. Si ni siquiera vas a explicar qué parte no entiendes, ¿por qué alguien debería hacer tanto trabajo en tu nombre? ¿Y si alguien lo hace? ¿Vas a decir: "No lo entiendo. Alguien más lo hace"?
David Richerby
1
@ user678392 Gracias. Y, solo para aclarar, ¿es el inglés con el que tiene dificultades (es decir, es probable que la reformulación ayude) o necesita más detalles en la explicación?
David Richerby
1
@ user678392, agregué un ejemplo de la vista de alto nivel de los primeros pasos de la conversión y la salida práctica en la (s) cinta (s). He evitado discutir cómo construir el nuevo conjunto de estados, ya que es muy complejo y no obtendrás una mejor explicación que lo que hay en Sipser o similar: es intrínsecamente complicado y matemático.
Luke Mathieson
1
@RomaKarageorgievich Parece que varias de las pruebas más claras han desaparecido en los últimos 5 años (no confíes en Internet: D). El más claro que he encontrado está aquí (¡advertencia, archivo .doc!). La prueba en "Introducción a los idiomas y la teoría de la computación" de Martin es bastante buena, si tiene acceso a ese libro (p. 244 en la 4ª Ed.). La prueba en la "Introducción a la teoría de la computación" de Sipser es suficiente (p. 177 en la 3ª Ed.).
Luke Mathieson