Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MCIC
SEMESTRE B12
TEORIA DE AUTOMATAS
INTRODUCCIÓN
Empezaremos por decir que existen problemas que se pueden interpretar como un programa
hecho en algun lenguaje, dentro de estos programas se puede hacer la pregunta si son decidibles
o indecidibles, si se toman encuenta problemas que no solo se puedan llevar a algun lenguaje de
programacion, como lo son las frase, predicados, entonces se llega a otra clasificación como son
los problemas intratables, a lo largo de la historia de la computacion se ha intentado hacer un
modelo que describa estos problemas es aquí donde surge la maquina de Turing.
Un programa indecidible es aquel que no se puede predecir su salida en base a una determinada
entrada, por ejemplo en un programa que imprime hola mundo solo msi encuntra numeros que
satisfagan la ecuacion X2+y2=z2 , se necesita construir un programa que analice al programa en
cuestion, y de salida tenga si o no imprime la palabra hola mundo, sin embargo este programa no
podria saber si se imprime o no hola mundo con certeza por que ya que si si imprime la salida
debera ser si, pero si es si entonces no imprimiria hola mundo por que se habria cambiado el
codigo para poder hacer esto.
En resumen esto nos quiere decir que todos los programas son indecidibles puesto que se tienen
infinitas entradas para ser asignadas a elementos de procesamiento finitos, es decir no se podria
saber con certeza, recordar que la maquina tiene la limitante de la memoria, y por ende seria
imposible asignarle infinitos estados a infinitas entradas.
Los problemas que pudieran ser decidibles en un rango acotado (puesto que aunque los
programas son indecidibles, para entradas infinitas no tiene ningun caso analizar ese rango infinito
solo las entradas que nos importan) pero que son dificiles o tardan mucho tiempo en resolverse se
les llama intratables esto trajo como consecuencia que algunos precursores de la computacion
trataran de solucionar o dar un modelo para estos problemas.
HILBERT
A finales del siglo XX, el matemático D. Hilbert se pregunto si era posible encontrar un algoritmo
para determinar la verdad o falsedad de cualquier proposición matemática. En particular se
preguntó si exixtía una forma de determinar si cualquier fórmula de cálculo de predicadosde
primer orden, aplicada a enteros, era verdadera. Dado que el calculo de predicados de primer
orden sobre los enteros es suficientemente potente para expresar proposiciones como “esta
gramatica es ambigua ” o “este programa es indecidible”; si hilbert hubiera encontrado este
algoritmo, entonces sabriamos las computadoras tomarian otro rumbo.
Conrrespecto a hilbert se puede decir que propuso e intento resolver el cual se resume en el
anterior texto,en enunciado dice:
Dada una ecuación diofántica con cualquier número de incógnitas y con coeficientes numéricos
racionales enteros:
Idear un proceso de acuerdo con el cual pueda determinarse, en un número finito de operaciones,
si la ecuación es resoluble en números racionales enteros.
K. GODEL.
En 1931, K. Godel publicó su famoso teorema de la incompletitud. Construyo una formula para el
cálculo de predicados aplicada a los enteros, que afirmaba que la propia fórmula no podía ser ni
demostrada ni refutada dentro del cálculo de predicados.
Reconocido como uno de los más importantes lógicos de todos los tiempos, el trabajo de Gödel ha
tenido un impacto inmenso en el pensamiento científico y filosófico del siglo XX. Gödel, al igual
que otros pensadores como Bertrand Russell, A. N. Whitehead y David Hilbert intentó emplear la
lógica y la teoría de conjuntos para comprender los fundamentos de la matemática. A Gödel se le
conoce mejor por sus dos teoremas de la incompletitud, publicados en 1931 a los 25 años de
edad, un año después de finalizar su doctorado en la Universidad de Viena.
Como el cálculo de predicados no era solo la idea que tenian los matematicos de la computación,
tambien las funciones recursivas parciales. Asi en 1936 Alan Turing, propuso la máquina de Turing
como modelo de cualquier posible computación. La cual no es vista solo como un programa si no
como una computadora, aun antes de que se construyeran las primeras computadoras
electronicas o electromecanicas.
Alan Mathison Turing nació en Londres, Reino Unido, en 1912. Su infancia la vivió lejos de sus
padres, destinados por el gobierno británico en la India. Se licenció en matemáticas en el King’s
College de Cambridge (1931), destacando por su extraordinaria capacidad intelectual y por su
creatividad, al tiempo que mostraba excelentes condiciones en las competiciones atléticas.
Prosiguió estudios en la norteamericana Universidad de Princeton, donde se doctoró con la tesis
‘Systems of Login Based on Ordinals’ (1938). Durante su estancia en Estados Unidos, trabajó como
becario de John von Neumann en el Institut for Advanced Studies.
Sus primeras publicaciones científicas aparecen cuando aún no había cumplido los 25 años, y en
ellas se concibe ya un proyecto de máquina autómata, un constructo abstracto de una
computadora. En uno de sus trabajos, en el que trataba de resolver el problema formulado por
Hilbert a principios de siglo –el Entscheidungsproblem- sobre la existencia de un algoritmo de
respuesta universal, sienta las bases teóricas de la moderna computación.
En 1939, de regreso al Reino Unido, trabajó para el Gobierno de Londres en los más avanzados
proyectos de criptografía, destinados a descifrar los mensajes codificados por la máquina 'Enigma'
del ejército nazi, lo que le llevó a desarrollar la máquina descifradora 'Bombe' y varias
computadoras 'Colossus', que fueron de una gran utilidad para los aliados y le supusieron a Turing
la Orden del Imperio Británico (1946). Posteriormente, dirigió el proyecto Automatic Computing
Engine (ACE), que llegó a desarrollar la máquina de computación más avanzada del momento y le
permitió concebir la idea de 'red neuronal'. Fue profesor de la Universidad de Manchester (1948).
Una máquina de Turing es un dispositivo que manipula símbolos sobre una tira de cinta de
acuerdo a una tabla de reglas. A pesar de su simplicidad, una máquina de Turing puede ser
adaptada para simular la lógica de cualquier algoritmo de computador y es particularmente útil en
la explicación de las funciones de un CPU dentro de un computador
Descripción informal
La máquina de Turing modela matemáticamente a una máquina que opera mecánicamente sobre
una cinta. En esta cinta hay símbolos que la máquina puede leer y escribir, uno a la vez, usando un
cabezal lector/escritor de cinta. La operación está completamente determinada por un conjunto
finito de instrucciones elementales como "en el estado 42, si el símbolo visto es 0, escribe un 1; Si
el símbolo visto es 1, cambia al estado 17; en el estado 17, si el símbolo visto es 0, escribe un 1 y
cambia al estado 6; etc". En el artículo original ("Sobre números computables con una aplicación al
Entscheidungsproblem"), Turing no imagina un mecanismo, sino una persona a la que él llama la
"computadora", quien ejecuta servilmente estas reglas mecánicas deterministas (o como Turing
pone, "de una manera desganada").
Una cinta que se divide en celdas, una al lado de la otra. Cada celda contiene un símbolo de algún
alfabeto finito. El alfabeto contiene un símbolo especial llamado blanco (aquí escrito como 'B') y
uno o más símbolos adicionales. La cinta se supone que es arbitrariamente extensible hacia la
izquierda y hacia la derecha, es decir, la máquina de Turing siempre es suministrada con tanta
cinta como necesite para su computación. Las celdas que no se hayan escrito previamente se
asumen que están rellenas con el símbolo blanco. En algunos modelos la cinta tiene un extremo
izquierdo marcado con un símbolo especial; la cinta se extiende o es indefinidamente extensible
hacia la derecha.
Un cabezal que puede leer y escribir símbolos en la cinta y mover la cinta a la izquierda y a la
derecha una (y sólo una) celda a la vez. En algunos modelos el cabezal se mueve y la cinta es
estacionaria.
Un registro de estado que almacena el estado de la máquina de Turing, uno de los estados finitos.
Hay un especial estado inicial con que el registro de estado es iniciado. Turing escribe que estos
estados reemplazan el "estado de la mente" en que ordinariamente estaría una persona
realizando cálculos.
Una tabla finita de instrucciones (llamada ocasionalmente como tabla de acción o función de
transición). Las instrucciones son usualmente 5-tuplas: qiaj→qi1aj1dk, (a veces 4-tuplas), que,
dado el estado (qi) la máquina está actualmente en y el símbolo (aj) se está leyendo en la cinta (el
símbolo actualmente debajo del cabezal) le indica a la máquina hacer lo siguiente en secuencia
(para los modelos de 5-tupla):
Mueve el cabezal (que es descrito por dk y puede tener los valores: 'L' para un paso a la izquierda,
o 'R' para uno paso a la derecha, o 'N' para permanecer en el mismo lugar) y luego
Una máquina de Turing es un modelo computacional que realiza una lectura/escritura de manera
automática sobre una entrada llamada cinta, generando una salida en esta misma.
Este modelo está formado por un alfabeto de entrada y uno de salida, un símbolo especial llamado
blanco (normalmente b, o 0), un conjunto de estados finitos y un conjunto de transiciones entre
dichos estados. Su funcionamiento se basa en una función de transición, que recibe un estado
inicial y una cadena de caracteres (la cinta, la cual puede ser infinita) pertenecientes al alfabeto de
entrada. La máquina va leyendo una celda de la cinta en cada paso, borrando el símbolo en el que
se encuentra posicionado su cabezal y escribiendo un nuevo símbolo perteneciente al alfabeto de
salida, para luego desplazar el cabezal a la izquierda o a la derecha (solo una celda a la vez). Esto se
repite según se indique en la función de transición, para finalmente detenerse en un estado final o
de aceptación, representando así la salida.
Una máquina de Turing con una sola cinta puede definirse como una 7-tupla
En la imagen se ve la cabeza de la cinta que lee o escribe un nuevo simbolo de cinta, manejada por
la unidad de control.
donde:
es un conjunto finito de símbolos distinto del espacio en blanco, denominado alfabeto
de máquina o de entrada.
Ejemplo:
Nos queda lo siguiente: M = ({q0, q1, q2, q3, q4}, {0, 1}, {0, 1, X, Y, B}, δ, q0, B, {q4})
XXY Y Bq4B
Diagrama de transici´on:
BIBLIOGRAFIA