Está en la página 1de 3

Universidad Nacional de Salta – Sede Regional Orán

Carrera: Licenciatura en Análisis de Sistemas (LAS)


Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2019

TP04: Máquinas de Turing

SECCIÓN 1: Introducción – Definiciones básicas


1.1 Construir una máquina de Turing que analice una cadena sobre { a, b }+ desplazándose
por la cinta de izquierda a derecha y que reemplace todas las bes que aparezcan por
una c. La máquina de Turing debería comenzar con la cabeza sobre el primer símbolo
(el que está más a la izquierda) de la cadena y terminar con la cabeza sobre el blanco
final (el blanco que sigue a la a o la c que esté más a la derecha en la cadena
transformada).
1.2 Construir una máquina de Turing que pare cuando se le presente una cadena de

L = { anbm|n, m ≥ 0 y los dos no son cero a la vez }

Comenzar el procesamiento con la cabeza situada sobre el primer símbolo (el que está
más a la izquierda) de la cadena.

SECCIÓN 2: Máquinas de Turing como aceptadores de lenguajes


2.1 Sea la máquina de Turing que acepta el lenguaje regular a* sobre 𝛴 = { a, b }.
Comenzando con el símbolo que está más a la izquierda en una cadena, realizaremos
un análisis hacia la derecha, leyendo cada símbolo y comprobando que es una a; si lo
es, realizamos un desplazamiento hacia la derecha. Si encontramos un blanco (b) sin
que se haya leído ningún símbolo que no fuera a, paramos y aceptamos la cadena. Si,
por otro lado, encontramos un símbolo que no es ni a ni b, podemos parar en un
estado que no es de aceptación.
Sea 𝒬 = { q1, q2 }, s = q1 y F = { q2 }, y sea 𝛿 definida por

𝛿 (q1, a) = ( q1, a, R )

𝛿 (q1, b) = ( q2, b, R )

Obsérvese que esta máquina de Turing para en el estado q2, sólo si se analiza una
cadena de cero ó más aes.

Transformar la máquina de Turing para que, cuando reciba una cadena que deba
aceptar, pare en un estado de aceptación con la cabeza de lectura/escritura sobre el
primer blanco que tenga la cadena.

2.2 Construir una máquina de Turing que acepte el lenguaje { a2n|n ≥ 0 } sobre 𝛴 = { a, b }.

2.3 Mostrar la ejecución de la máquina de Turing que acepte el lenguaje { anbn|n ≥ 1 } (ver
teoría), cuando se parte de cada una de las siguientes configuraciones: (q1, aabb), (q1,
aab) y (q1, aabbb).

2.4 Diseñar una máquina de Turing que acepte el lenguaje { anbn|n ≥ 0 }. Obsérvese que,
además de tener en cuenta lo visto en el ejercicio 2.3), debemos comprobar la cadena

Página 1 de 3
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2019

vacía. Transformar la máquina de Turing para que no pare si se encuentra una cadena
no aceptable.

2.5 Diseñar una máquina de Turing que acepte el lenguaje { anbn|n ≥ 1 } por medio de la
eliminación de las aes y bes que están en los extremos opuestos de la cadena. Es decir,
usando nuevamente c y d, la cadena aaabbb sería primero transformada en caabbd,
después en ccabdd y, por último, en cccddd.

2.6 Diseñar una máquina de Turing que acepte el lenguaje { anbncn|n ≥ 0 }.

2.7 Construir las máquinas de Turing que acepten los siguientes lenguajes sobre 𝛴 = {a, b}:

i. aba*b
ii. { w|la longitud de w es par }
iii. { anbm|n ≥ 1 y m ≠ n }
iv. { w|w contiene el mismo número de aes que de bes }
v. { anbman + m|n ≥ 0 y m ≥ 1 }
vi. { anb2n|n ≥ 1 }
vii. { w|w = wI }

SECCIÓN 3: Máquinas de Turing como generadora de lenguajes

3.1 Construir una MT que genera cadenas con un número par de aes sobre Σ = { a }, L = {
a2i : i ≥ 0 }

3.2 Construir una máquina de Turing que enumere todos los enteros binarios, en orden
numérico sobre su cinta cuando comience con (q1, 0b). Es decir, la máquina de Turing
podría ejecutarse de esta forma:
(q1, 0b) ⊢* (q1, 1b) ⊢* (q1, 10b) ⊢* (q1, 11b) ⊢* …

Obsérvese que esta máquina nunca parará.

SECCIÓN 4: Máquinas de Turing como calculadoras o ejecutoras de una función entera

4.1 Para todo número natural, ya sea par o impar, construir una máquina de Turing que
calcule la función de paridad de los números naturales, es decir, que compute

0, si 𝑛 𝑒𝑠 𝑝𝑎𝑟
𝑓(𝑛) = {
1, 𝑠𝑖 𝑛 𝑒𝑠 𝑖𝑚𝑝𝑎𝑟

4.2 Supongamos que tenemos 𝛴 = { a, b } y que representamos los enteros positivos


mediante cadenas de aes. Así, el entero positivo n estaría representado por an. La
función suma f(n, m) = n + m podría ser implementada mediante la transformación de

Página 2 de 3
Universidad Nacional de Salta – Sede Regional Orán
Carrera: Licenciatura en Análisis de Sistemas (LAS)
Cátedra: Teoría de la Computación I (uno) 2do.año – 1er. cuatrimestre Año: 2019

anbam en an+mb. Podríamos obtener una máquina de Turing apropiada para la suma,
que estaría representada por M = ( 𝓠, 𝜮, 𝜞, s, b, F, 𝜹 ),donde

𝓠 = { q1, q2, q3, q4, q5 }, F = { q5 } y 𝜹 dada por las siguientes


transformaciones:

𝛿 (q1, a) = ( q1, a, R ), 𝛿 (q3, a) = ( q4, b, L )

𝛿 (q1, b) = ( q2, a, R ), 𝛿 (q4, a) = ( q4, a, L )

𝛿 (q2, a) = ( q2, a, R ), 𝛿 (q4, b) = ( q5, b, R )

𝛿 (q2, b) = ( q3, b, L )

Esta máquina de Turing simplemente desplaza la b hacia el final, a la derecha de an+m.


Para ello, se crea una a extra. La máquina de Turing “recordará” que se ha creado una
a al pasar al estado q2 una vez que se ha encontrado la b, y entonces se escribirá una b
sobre la a que está al final de la cadena. Obsérvese, también, que cuando termina, la
máquina de Turing sitúa su cabeza de lectura/escritura sobre la a que se encuentra
más a la izquierda.

Ejecutar la máquina de Turing sobre las entradas a2ba3 y a2b. ¿Cómo se comportará
esta máquina de Turing cuando se sume 2 + 0?.

4.3 La sustracción de números naturales no está definida para todos los pares puesto que
la diferencia puede ser negativa. Definir la operación resta modificada como

𝑛 − 𝑚, si 𝑛 ≥ 𝑚
𝑛−𝑚 = {
0, 𝑠𝑖 𝑛 < 𝑚

Construir una máquina de Turing que compute n – m (la máquina de Turing) debería
tomar banbamb y devolver ban-mb).

Página 3 de 3

También podría gustarte