Un enumerador es una máquina de Turing con una impresora conectada. La máquina de Turing puede usar esa impresora como dispositivo de salida para imprimir cadenas de caracteres. Cada vez que la máquina de Turing desea agregar una cadena a la lista, la envía a la impresora. El enumerador es un tipo de variante de máquina de Turing y es equivalente a una máquina de Turing.
Definición formal
Un enumeradorpuede definirse como una máquina de Turing de 2 cintas ( Máquina de Turing de múltiples cintas donde) cuyo idioma es. Inicialmente,No recibe ninguna entrada y todas las cintas están en blanco (es decir, llenas de símbolos en blanco). Símbolo recién definidoes el delimitador que marca el final de un elemento de. La segunda cinta puede considerarse como la impresora, las cadenas en ella están separadas porEl idioma enumerado por un enumeradordenotado porse define como el conjunto de cadenas en la segunda cinta (la impresora).
Equivalencia entre máquinas de Turing y enumeradores
Un lenguaje sobre un alfabeto finito es Turing-reconocible si y solo si puede ser enumerado por un enumerador. Esto demuestra que los lenguajes Turing-reconocibles también son recursivamente enumerables.
Prueba
Un lenguaje reconocible por Turing puede ser enumerado por un enumerador.
Consideremos una máquina de Turing.y el idioma aceptado por él seaDado que el conjunto de todas las cadenas posibles sobre el alfabeto de entradaes decir, el cierre Kleenees un conjunto contable , podemos enumerar las cadenas en él comoetc. Luego, el enumerador enumera el lenguaje.seguirá los pasos:
1 para i = 1,2,3,... 2 carrerascon cadenas de entradapara- Paso 3 Si se acepta alguna cadena, entonces imprímala.
Ahora surge la pregunta de si cada cadena en el lenguajeserá impreso por el Enumerador que construimos. Para cualquier cadenaen el idiomala TMejecutará un número finito de pasos (seamospara) para aceptarlo. Luego en el-º paso del Enumeradorse imprimirá. Por lo tanto, el enumerador imprimirá cada cadenareconoce pero una sola cadena puede imprimirse varias veces.
Un lenguaje enumerable es reconocible por Turing.
Es muy fácil construir una máquina de Turing.que reconoce el lenguaje enumerablePodemos usar dos cintas. En una, tomamos la cadena de entrada y en la otra, ejecutamos el enumerador para enumerar las cadenas del lenguaje una tras otra. Una vez que se imprime una cadena en la segunda cinta, la comparamos con la entrada de la primera. Si coinciden, aceptamos la entrada; de lo contrario, continuamos. Cabe destacar que si la cadena no pertenece al lenguaje, la máquina de Turing nunca se detendrá, rechazando así la cadena.
Referencias
- Sipser, Michael (2012). Introducción a la teoría de la computación - Edición internacional . Cengage Learning. ISBN 978-1-133-18781-3.
- teoría de la computabilidad
- Teoría de la computación
- Esbozos de informática teórica