Portafolio Unidad 4 [Lenguajes y autómatas] - Máquinas de Turing
1. INSTITUTO TECNOLÓGICO DE TEPIC
Ingeniería en Sistemas Computacionales
LENGUAJES Y AUTÓMATAS 1
UNIDAD 4, Máquina de Turing
PORTAFOLIO UNIDAD 4
Alumno: Luis Adrian Parra Avellaneda
Docente: Sonia Alvarado Mares
2. 1 | L u i s A d r i a n P a r r a A v e l l a n e d a
Introducción
En el universo de la computación, existen máquinas que sirven para realizar diversos algoritmos
computacionales, entre ellos validar ciertas cadenas o lenguajes, por ejemplo los autómatas
finitos. En este caso existe un modelo matemático que puede realizar infinidad de algoritmos, el
cual se llama máquina de Turing, este modelo se implementa actualmente en la computación
actual, los procesadores y diversos componentes, es tanta la infinidad de algoritmos que se
pueden ejecutar que hasta se puede simular una máquina de Turing dentro de otra máquina.
En este portafolio analizaremos este tema ya que es de gran importancia sobre todo para la teoría
de la computación y lenguajes, ya que en este caso utilizaremos la máquina con el propósito de
manipular y validar lenguajes
INDICE
Alan Turing.......................................................................................................................................... 2
La máquina de Turing......................................................................................................................... 2
Transiciones de la máquina de Turing......................................................................................... 3
La máquina de Turing en la teoría de autómatas ....................................................................... 4
Lenguajes reconocidos por la máquina de Turing......................................................................... 4
Validación de lenguajes.................................................................................................................. 4
Diagrama de transiciones de una máquina de Turing................................................................. 6
Validación de un lenguaje no regular.......................................................................................... 6
Conversión de un lenguaje a otro ............................................................................................... 9
Construcción modular de una máquina de Turing...................................................................... 10
ANEXOS............................................................................................................................................. 12
Tarea 1, validación de lenguajes:.................................................................................................. 12
Tarea2. Validación de lenguaje ..................................................................................................... 13
Tarea 3: Validación de lenguajes con más nivel de dificultad....................................................... 14
Tarea 4. Conversión entre lenguajes............................................................................................. 16
Conclusiones..................................................................................................................................... 22
Referencias y bibliografía................................................................................................................. 22
3. 2 | L u i s A d r i a n P a r r a A v e l l a n e d a
Alan Turing
Alan Turing nos relata Vilso(2002) fue un matemático
inglés que vivió durante la primera mitad del siglo XX.
Aunque fue un matemático brillante en muchos campos,
destacando especialmente en criptografía, su principal
interés se centraba en la lógica, que en aquellos
momentos se encontraba en plena ebullición gracias al
intento de David Hilbert de hallar una formulación de las
matemáticas sobre una base estricta de lógica formal. La
Máquina de Turing, o Máquina de Computación
Lógica como la llamaba él, fue quizás la mayor aportación
de Alan Turing a esta tarea y con seguridad su
descubrimiento de mayor transcendencia, ya que abrió el
camino de la ciencia de la Computación, que a su vez nos
lleva al computador que en estos momentos se utiliza. En
definitiva, Alan Turing fue uno de los científicos más importantes de la primera mitad del siglo XX
y, sin duda, una de las mentes que más influyó en la manera actual que tenemos de ver el mundo
e interactuar con él.
La máquina de Turing
Una Máquina de Turing es un modelo matemático que consiste en un autómata capaz de
implementar cualquier problema matemático expresado por medio de un algoritmo. Agrega
Vilso(2002) la máquina de Turing consiste en una cinta teóricamente infinita con una cabeza
lectora que se puede mover a la izquierda, derecha o no realizar ningún movimiento, un control
finito de estados, concuerdan la mayoría de los autores que la máquina puede escribir caracteres,
por lo tanto sirve para realizar infinidad de algoritmos de computadora
Nos dice Isasi(1997) y Brookshear(1989) que las Máquinas de Thring son el autómata más general,
capaz de reconocerlos lenguajes generados por las gramáticas menos restrictivas
Elementos de una máquina de Turing
Los elementos de una máquina de Turing son:
Conjunto de estados: Los estados son importantes en la máquina de Turing, ya que son
necesarios para realizar las transiciones entre los elementos
Estado inicial: Semejante a un autómata finito, es el estado con el que iniciamos el proceso
4. 3 | L u i s A d r i a n P a r r a A v e l l a n e d a
Estado final: A diferencia de los autómatas finitos, en una máquina de Turing solo hay un
estado final, en este estado terminamos el proceso
Alfabeto de entrada Σ: Es el alfabeto de nuestra cadena
Alfabeto de la cinta Γ: Consiste en el alfabeto de entrada y el alfabeto de escritura
Conjunto de transiciones: Son las transiciones para recorrer la cinta
Funcionamiento de una máquina de Turing
Según Vilso(2002) el funcionamiento básico consiste en
1. La máquina cambia de estado
2. Imprime un símbolo en la celda, reemplazando el símbolo anterior
3. Mueve la cabeza a la izquierda o derecha dependiendo de la transición
Transiciones de la máquina de Turing
Para hacer un programa para máquina de Turing se deben de poner las respectivas transiciones,
en este portafolio la estructura de la transición será:
Δ (estado actual , carácter )→ (estado siguiente, carácter que escribe, lado al que va )
el lado es derecho=r, o izquierdo =l
5. 4 | L u i s A d r i a n P a r r a A v e l l a n e d a
La máquina de Turing en la teoría de autómatas
Una de las aplicaciones de la máquina de Turing menciona Louden(2004) es la validación de
lenguajes, y conversión de estos.
Una máquina de Turing a diferencia de un autómata finito puede validar cualquier lenguaje, ya
que puede escribir, borrar y moverse en ambos lados de la cinta
Lenguajes reconocidos por la máquina de Turing
Nos menciona Isasi(1997) que una palabra es reconocida por la máquina si la cabeza lectora se
encuentra en el primer símbolo, y del estado inicial la máquina llega al estado final y llegar a
detenerse.
Por tanto, el lenguaje aceptado por una MT es el conjunto de palabras que son reconocidas, según
la definición anterior.
Validación de lenguajes
Veamos un ejemplo de la validación de un lenguaje
𝐿 = 𝑎 𝑛
𝑏 𝑚
𝑛, 𝑚 > 0}
Δ (q0 , a )→ (q1, a, r )
Si iniciamos con q0, el estado tiene que iniciar con una [a], ya que tiene que tener 0 o mas [a], si
inicia con otra letra no llegará al estado final. Si inicia con una [a] cambia de estado a q1
Δ (q1 , a )→ (q1, a, r )
Δ (q1 , b )→ (q2, b, r )
q1 puede toparse con [a] o [b], pero si topa con b tiene que cambiar de estado a q2
Δ (q2 , b )→ (q2, b, r )
ahora solo se pueden tener *b+ o *β+ (blanco), pero no *a+, sino no llega al estado final
Δ (q2 , β )→ (q3, β, l )
Si llega a un β blanco, nos recorremos a la izquierda, escribimos el blanco y llegamos al estado final
6. 5 | L u i s A d r i a n P a r r a A v e l l a n e d a
Ilustremos con una cadena válida
aaabbbb
Los elementos de la máquina son:
Estados: Q= ,q0…q3-
Estado inicial: S=q0
Estado final: E=q3
Alfabeto de entrada: Σ ={a, b}
Alfabeto de la cinta: Γ ={a, b, β-
Probemos con una cadena inválida
aaa
Como vemos no hay transición de q1 con blanco, por lo tanto no llega al estado final y la
cadena es inválida
7. 6 | L u i s A d r i a n P a r r a A v e l l a n e d a
Diagrama de transiciones de una máquina de Turing
Basándonos en el ejemplo anterior haremos el diagrama de transición, es parecido al de
un autómata finito, solo que en las transiciones ponemos la letra que encuentra; letra que
escribe, lado. Observemos:
Validación de un lenguaje no regular
Una máquina de Turing también puede validar lenguajes que no parten de una expresión regular
nos dice Kelly(2003), a diferencia de los autómatas finitos los cuales no pueden validarlos. Para eso
vamos a escribir ciertos caracteres con otros símbolos para usarlos como referencia
𝐿 = 𝑎 𝑛
𝑏 𝑛
𝑛 > 0}
Lógica para resolverlo
Para esto se plantea recorrer de extremo a extremo escribiendo 1 donde van las letras [a] y 2
donde van las [b], si queda una letra sin marcar entonces no es valida
Transiciones
𝛥 (𝑞0 , 𝑎 ) → (𝑞1, 1, 𝑟 )
𝛥 (𝑞1 , 𝑎 ) → (𝑞1, 𝑎, 𝑟 )
𝛥 (𝑞1 , 𝑏 ) → (𝑞1, 𝑏, 𝑟 )
𝛥 (𝑞1 , 𝛽 ) → (𝑞2, 𝛽, 𝑙 )
𝛥 (𝑞1 , 2 ) → (𝑞2, 2, 𝑙 )
𝛥 (𝑞2 , 𝑏 ) → (𝑞3, 2, 𝑙 )
𝛥 (𝑞3 , 𝑏 ) → (𝑞3, 𝑏, 𝑙 )
𝛥 (𝑞3 , 𝑎 ) → (𝑞3, 𝑎, 𝑙 )
𝛥 (𝑞3 , 1 ) → (𝑞0, 1, 𝑟 )
𝛥 (𝑞0 , 2 ) → (𝑞4, 2, 𝑙 )
𝛥 (𝑞4 , 2 ) → (𝑞4, 2, 𝑙 )
𝛥 (𝑞4 , 1 ) → (𝑞4, 1, 𝑙 )
𝛥 (𝑞4 , 𝛽 ) → (𝑞5, 𝛽, 𝑟 )
𝛥 (𝑞5 , 1 ) → (𝑞5, 𝑎, 𝑟 )
𝛥 (𝑞5 , 2 ) → (𝑞5, 𝑏, 𝑟 )
8. 7 | L u i s A d r i a n P a r r a A v e l l a n e d a
𝛥 (𝑞5 , 𝛽 ) → (𝑞ℎ, 𝛽, 𝑙 )
𝛥 (𝑞0 , 𝛽 ) → (𝑞ℎ, 𝛽, 𝑟 )
Diagrama de transición
9. 8 | L u i s A d r i a n P a r r a A v e l l a n e d a
Ejemplo con la cadena válida aaabbb
10. 9 | L u i s A d r i a n P a r r a A v e l l a n e d a
Ahora comprobemos con una cadena inválida, en esta cadena no tendrá que llegar al estado final
qh, la cadena será aab
Como se puede observar no existe transición de q2 con un 1, por lo tanto el proceso se detiene y
no se llega al estado final
Características de la máquina:
Estados: Q= {q0, q1, q2, q3, q4, q5, qh}
Estado inicial: S=q0
Estado final: E=qh
Alfabeto de entrada: Σ ={a, b}
Alfabeto de la cinta: Γ ={a, b, 1, 2, β-
Conversión de un lenguaje a otro
Con una máquina de Turing también podemos convertir de un lenguaje a otro, veamos un ejemplo
Convertiremos de este lenguaje L a L1
𝐿 = 𝑎𝑏 𝑛
𝑛 ≥ 0}
𝐿1 = 𝑎 𝑛
𝑏 𝑛 ≥ 0}
Para el proceso de validación y conversión son las siguientes transiciones:
𝛥(𝑞0, 𝑎) → (𝑞1, 𝑎, 𝑟)
𝛥(𝑞1, 𝑏) → (𝑞1, 𝑏, 𝑟)
𝛥(𝑞1, 𝛽) → (𝑞2, 𝛽, 𝑙)
𝛥(𝑞2, 𝑏) → (𝑞2, 𝑎, 𝑙)
𝛥(𝑞2, 𝑎) → (𝑞3, 𝛽, 𝑟)
11. 10 | L u i s A d r i a n P a r r a A v e l l a n e d a
𝛥(𝑞3, 𝑎) → (𝑞3, 𝑎, 𝑟)
𝛥(𝑞3, 𝛽) → (𝑞4, 𝑏, 𝑟)
𝛥(𝑞4, 𝛽) → (𝑞5, 𝛽, 𝑙)
Ilustramos el proceso de conversión
Convertiremos la cadena abbb
Construcción modular de una máquina de Turing
Menciona Brookshear(1989) y Kelly(2003), que la construcción modular de una máquina de Turing
consiste en armar una máquina de Turing compleja a partir de máquinas de Turing sencillas.
La construcción de maquinas de Turing se lleva a cabo mediante los diagramas de transición y
combinarlos de manera parecida a lo que se realiza en la formación de la unión y concatenación
de los autómatas finitos.
Pasos para la construcción de una máquina de Turing
a) Eliminar las características de inicio de los estados iniciales de las maquinas, excepto la de
aquel donde iniciara la maquina compuesta.
b) Eliminar las características de detención de los estados de parada de todas la maquinas e
introduzca un nuevo estado de parada que nos se encuentre en ninguno de los diagramas que se
combinan.
c) Para cada uno de los antiguos estados de parada p y cada x en y.
Los pequeños bloques de la máquina son
12. 11 | L u i s A d r i a n P a r r a A v e l l a n e d a
Como resultado al unirlos tenemos:
13. 12 | L u i s A d r i a n P a r r a A v e l l a n e d a
ANEXOS
Tarea 1, validación de lenguajes:
Tarea 2: Validación de lenguajes
L = {x^n y^m | n,m>0}
Δ (q0 , x )→ (q1, x, r )
Δ (q1 , x )→ (q1, x, r )
Δ (q1 , y )→ (q2, y, r )
Δ (q2 , y )→ (q3, y, r )
Δ (q3 , β )→ (q4, β, l )
Q= ,q0…q4-
S=q0
E=q4
Alf={x, y}
Alf Cinta={x, y, β-
L1={x^n y^m | n>=0,m>0}
Δ (q0 , x )→ (q0, x, r )
Δ (q0 , y )→ (q1, y, r )
Δ (q1 , y )→ (q2, y, r )
Δ (q2 , y )→ (q2, y, r )
Δ (q2 , β )→ (q3, β, l )
Q= ,q0…q3-
S=q0
E=q3
Alf={x, y}
Alf Cinta={x, y, β-
L2={x^n y^m | n>0,m>=0}
Δ (q0 , x )→ (q1, x, r )
Δ (q1 , x )→ (q1, x, r )
Δ (q1 , y )→ (q2, y, r )
Δ (q2 , y )→ (q2, y, r )
Δ (q1 , β )→ (q3, β, l )
Δ (q2 , β )→ (q3, β, l )
Q= ,q0…q3-
S=q0
E=q3
Alf={x, y}
Alf Cinta={x, y, β-
L3={x^n y^m | n,m>=0}
Δ (q0 , x )→ (q0, x, r )
Δ (q0 , y )→ (q1, y, r )
Δ (q1 , y )→ (q1, y, r )
Δ (q0 , β )→ (q2, β, l )
Δ (q1 , β )→ (q2, β, l )
Q= ,q0…q2-
S=q0
E=q2
Alf={x, y}
Alf Cinta={x, y, β-
14. 13 | L u i s A d r i a n P a r r a A v e l l a n e d a
Tarea2. Validación de lenguaje
𝐿 = 𝑤 𝑤 ∈ 0,1 ∗}
Δ (q0 , 0 )→ (q0, 0, r )
Δ (q0 , 1 )→ (q0, 1, r )
Δ (q0 , β )→ (q1, β, l )
Q= {q0, q1}
S=q0
E=q1
Alf={a, b}
Alf Cinta={a, b, β-
15. 14 | L u i s A d r i a n P a r r a A v e l l a n e d a
Tarea 3: Validación de lenguajes con más nivel de dificultad
16. 15 | L u i s A d r i a n P a r r a A v e l l a n e d a
17. 16 | L u i s A d r i a n P a r r a A v e l l a n e d a
Tarea 4. Conversión entre lenguajes
18. 17 | L u i s A d r i a n P a r r a A v e l l a n e d a
19. 18 | L u i s A d r i a n P a r r a A v e l l a n e d a
20. 19 | L u i s A d r i a n P a r r a A v e l l a n e d a
21. 20 | L u i s A d r i a n P a r r a A v e l l a n e d a
22. 21 | L u i s A d r i a n P a r r a A v e l l a n e d a
23. 22 | L u i s A d r i a n P a r r a A v e l l a n e d a
Conclusiones
A través de esta unidad trabajamos con un nuevo modelo matemático, en las actividades no solo
validamos lenguajes regulares, sino que también se puede validar un lenguaje no regular, solo que
en este caso necesitamos viajar a los 2 lados y escribir ciertos caracteres. Además observamos que
también se pueden convertir lenguajes, y realizar otros algoritmos como la conversión de binario a
decimal, suma de números, etc.
Al realizar las transiciones que indicaban ciertas instrucciones, observamos que es semejante a
una programación en un nivel muy bajo, por eso entendemos que una máquina de Turing es la
base para la computación actual.
Referencias y bibliografía
Hopcroft, Ullman (1993). Introducción a la teoría de autómatas, lenguajes y computación.
Editorial CECSA
Isasi, Martínez, Borrajo (1997). Lenguajes, gramáticas y autómatas, un enfoque práctico.
México. Editorial Addison-wesley
Brookshear(1989). Teoría de la Computación, Lenguajes Formales, Autómatas y
Complejidad. Addison Wesley.
Viso (2002). Teoría de la computación. México. Facultad de Ciencias UNAM
Kelly(2003) Teoría de Automatas y Lenguajes Formales. Prentice Hall.
Louden (2004). Construcción de compiladores, principios y práctica.