El documento introduce conceptos fundamentales de teoría de autómatas y lenguajes formales como lenguajes formales, alfabetos, gramáticas y autómatas. También resume brevemente la historia del campo, incluyendo contribuciones clave de figuras como Turing, Chomsky y Kleene. Finalmente, establece la correspondencia entre los tipos de lenguajes, gramáticas y autómatas en la jerarquía de Chomsky.
4. 1.1 Definiciones
• Lenguaje:
– Forma de representar información basada en un conjunto
finito de signos o símbolos
• Alfabeto:
– Conjunto de símbolos que forman parte de un lenguaje
• Sentencia o palabra o fórmula bien formada:
– Secuencia de símbolos correcta.
• Lenguaje formal:
– Lenguaje descrito mediante un formalismo matemático
5. 1.1 Definiciones
• Computar:
– Procesar información
• Modelo de computación
– Máquina abstracta que toma como entrada una secuencia
de símbolos y los procesa
– Dependiendo del modelo, el resultado del cómputo
puede ser :
• Una secuencia de acciones
• Una salida expresada en un cierto lenguaje
• Una respuesta de aceptación o rechazo de la entrada
6. 1.1 Definiciones
• Autómata:
– Modelo de computación
– Maquina de estados
– El funcionamiento de la máquina se basa en transiciones
de estados
– Las transiciones están provocadas por la lectura de los
símbolos de entrada
7. 1.1 Definiciones
• Informática:
– Ciencia aplicada que abarca el estudio y aplicaciones del
tratamiento automático de la información
• Informática teórica:
– Disciplina que estudia las capacidades de los modelos de
computación y sus límites, así como el tipo de problemas que pueden
tratar y la eficiencia con la que pueden ser tratados.
9. 1.2 Un poco de historia
• Lógica matemática
Friedrich Ludwig Gottlob Frege
– Nacido en Wismar (Alemania) en 1848
– Muerto en Bad Kleinen en 1945
– Profesor en la Universidad de Jena
– En 1879 publicó Conceptografía (Begriffsschrift)
– Desarrollo de la lógica de primer orden
(operadores and, or, not, implicación, para-todo, existe)
– La notación que utilizaba era bastante complicada
10. 1.2 Un poco de historia
• Lógica matemática
Giuseppe Peano
– Nacido en Spinetta (Italia) en 1858
– Muerto en Turín e 1932
– Profesor en la Universidad de Turín
y en la Academia Militar Real
– Matemático y filósofo, propuso la notación actual de la
lógica y estudió los principios de la matemática.
– Formulario, enciclopedia con todas las fórmulas y
teoremas conocidos en matemáticas
11. 1.2 Un poco de historia
• Lógica matemática
Bertrand Russell (1872-1970)
– Conoce a Peano en el congreso de Filosofía
de París (1900)
– Publica Principia Mathematica en 1910, 1912,
1913.
Alfred North Whitehead (1861-1947)
– Profesor en las universidades de Londres,
Cambridge y Harvard
– Fue profesor de Russell y escribió con él los
Principia Mathematica
Teoría de Autómatas y Lenguajes Formales
12. 1.2 Un poco de historia
• Lógica matemática
David Hilbert (1862 – 1943)
– Profesor en la Universidad de Gottingen
– El matemático más importante del s. XX.
– Trabajos en análisis funcional, geometría,
fundamentos de física cuántica y de relatividad
general, lógica…
– Axiomatización de la geometría. Problemas de Hilbert.
– Publica en 1928 Principios de lógica teórica
– Problema de la decisión: descubrir un método general para
decidir si una fórmula lógica es verdadera o falsa
13. 1.2 Un poco de historia
• Lógica matemática
Kurt Gödel (1906 – 1978)
– Profesor en Viena y en Princeton
– Publica en 1931 el artículo Sobre proposiciones
formalmente indecidibles de Principia Mathematica y
sistemas relacionados
– Teorema de incompletitud:
“En cualquier formalización consistente de las matemáticas
que sea lo bastante fuerte para definir el concepto de números
naturales, se puede construir una afirmación que ni se puede
demostrar ni se puede refutar dentro de ese sistema.”
14. 1.2 Un poco de historia
• Computabilidad
Alan Mathison Turing (1912 – 1954)
– Estudia en Cambridge y en Princeton (con A. Church)
– Profesor en Cambridge y U. Manchester
– Participa en la ruptura del cifrado de la máquina
Enigma
– Publica en 1936 el artículo Los números computables, con
una aplicación al Entscheidungsproblem. Nacimiento de
la Informática Teórica
– Inventa las máquinas de Turing
15. 1.2 Un poco de historia
• Computabilidad
Alonzo Church (1903 – 1995)
– Profesor en Princeton
– Desarrolla el cálculo lambda, basado en funciones
recursivas. (Base de los lenguajes funcionales)
– En 1936 demuestra la existencia de problemas
indecidibles para el cálculo lambda.
– Entre 1938 y 1939 trabaja con A. Turing
– Tesis de Church-Turing: cualquier modelo computacional
existente tiene las mismas capacidades algorítmicas, o un
subconjunto, de las que tiene una máquina de Turing.
16. 1.2 Un poco de historia
• Computabilidad
Stephen Kleene (1909 - 1994)
– Profesor de la U. Wisconsin
– Discípulo de A. Church. Estudia la teoría de
funciones recursivas.
– Desarrolla las expresiones regulares
– Numerosos estudios en Teoría de Autómatas
17. 1.2 Un poco de historia
• Teoría de autómatas
Claude Elwood Shannon (1916 – 2001)
– Estudia en la U. Michigan. Profesor en el Instituto
de Tecnología de Massachusetts (MIT)
– En 1938 publica A Symbolic Analysis of Relay and
Switching Circuits. Aplicación de la lógica
matemática a los circuitos electrónicos.
– En 1948 publica Una Teoría Matemática de la
Comunicación. Nacimiento de la Teoría de la
Información
– En 1956 edita, junto a McCarthy, Automata Studies,
sobre máquinas secuenciales y autómatas finitos.
18. 1.2 Un poco de historia
• Teoría de autómatas
Autómatas Finitos Deterministas
– D. A. Huffman, The synthesis of sequential switching circuits, J.
Franklin Inst., vol. 257, (1954)
– G. H. Mealy, A method for synthesizing sequential circuits, Bell
System Technical Journal vol. 34 (1955)
– E.F. Moore, Gedanken experiments on sequential machines, en
Automata Studies (1956)
Autómatas Finitos No Deterministas
– M.O. Rabin y D. Scott, Finite automata and their decision problems,
IBM J. Research and Development, vol. 3 (1959)
19. 1.2 Un poco de historia
• Lingüística
Noam Chomsky (1928 - )
– Profesor del Massachusetts Institute of
Technology (MIT)
– Conocido por su activismo político
– Doctorado en 1955 en la U. Harvard con la tesis Estructura
lógica de la teoría lingüística (que no se publicó hasta 1975)
– En 1957 publica Estructuras sintácticas en el que aparece la
clasificación de gramáticas (Jerarquía de Chomsky)
20. 1.2 Un poco de historia
• Teoría de autómatas
Autómatas de Pila
– A. G. Oettinger, Automatic syntactic analysis and the pushdown
store, Proc. Symposia on Applied Math. (1961).
– M.P. Schutzenberger, On context-free languages and pushdown
automata, Information and Control, vol. 6 (1963)
– P.C. Fisher, On computability by certain classes of restricted Turing
machines, Proc. 4th Annl. Symposium on Switching Circuit
Theory and Logical Design (1963)
– D.E. Knuth, On the translation of languages from left to right,
Information and Control, vol. 8 (1965).
23. 1.3 Lenguajes, Gramáticas y
Autómatas
Desde su nacimiento, la teoría de autómatas ha encontrado
aplicación en muy diversos campos. Esto se debe a que resulta muy
natural considerar, tanto los autómatas como las máquinas
secuenciales, sistemas capaces de transmitir (procesar) información.
En definitiva, esto es equiparable a cualquier sistema existente en la
naturaleza, que recibe señales de su entorno, reacciona ante ellas y
emite así nuevas señales al ambiente que le rodea.
24. 1.3 Lenguajes, Gramáticas y
Autómatas
• Algunos de los campos donde ha encontrado aplicación la teoría de
autómatas son:
• Teoría de la Comunicación
• Teoría de Control
• Lógica de los circuitos secuenciales
• Ordenadores
• Teoría lógica de los sistemas evolutivos y auto-reproductivos
• Reconocimiento de patrones
• Fisiología del sistema nervioso
• Traducción automática de lenguajes
• etc
25. 1.3 Lenguajes, Gramáticas y
Autómatas
Chomsky clasificá los lenguajes formales de acuerdo a una
jerarquía de cuatro niveles, conteniendo cada uno de todos
los siguientes.
– El lenguaje más general será, pues, de tipo 0, y no posee
restricción alguna. Este conjunto engloba el conjunto de todos
los lenguajes posibles.
– En el segundo nivel aparecen los lenguajes de tipo 1, también
llamados lenguajes “sensibles al contexto”, al permitir que el
“papel” de las palabras dependa de la posición en que
aparezcan (es decir, del contexto). La mayor parte de los
lenguajes de ordenador pertenecen a este tipo.
26. 1.3 Lenguajes, Gramáticas y
Autómatas
– En tercer lugar aparecen los lenguajes de tipo 2, o lenguajes
“independientes del contexto”. En ellas el significado de una
palabra es independiente del lugar que ocupa en la frase.
– Finalmente, los lenguajes de tipo 3, o lenguajes regulares, son los
que presentan una estructura más sencilla.
27. 1.3 Lenguajes, Gramáticas y
Autómatas
• Cada uno de estos tipos de máquinas es capaz de resolver
problemas cada vez más complicados, hasta llegar a las máquinas de
Turing.
Como descubrió Turing, existen una serie de problemas que no son
computacionalmente abordables y que reciben el nombre de
“problemas no enumerables”.
Lenguajes Tipo 0
Lenguajes Tipo 1
Lenguajes Tipo 2
Lenguajes Tipo 3
Máquinas de Turing
Autómatas acotados
linealmente
Autómatas a pila
Autómatas finitos
Problemas recursivamente
enumerables
Expresiones regulares
• Resulta curioso observar como paralelamente a la jerarquía de
lenguajes aparece otra de máquinas abstractas equivalentes, como se
observa en el esquema siguiente :
Problemas no
enumerables
28. 1.3 Lenguajes, Gramáticas y
Autómatas
• La relación estrecha entre la Teoría de Lenguajes Formales y
la Teoría de Autómatas se pone de manifiesto en este tema.
Se establece un isomorfismo entre ambas, estableciendo una
conexión entre la clase de lenguajes generados por ciertos
tipos de gramáticas y la clase de lenguajes reconocibles por
ciertas máquinas.
29. 1.1 Definiciones
• Lenguaje:
– Forma de representar información basada en un conjunto
finito de signos o símbolos
• Alfabeto:
– Conjunto de símbolos que forman parte de un lenguaje
• Sentencia o palabra o fórmula bien formada:
– Secuencia de símbolos correcta.
• Lenguaje formal:
– Lenguaje descrito mediante un formalismo matemático
30. Gramáticas Lenguajes Máquinas
Sin restricciones o
De Tipo0
Sin restricciones o
De Tipo0
Máquina de Turing
Sensible al contexto
O de Tipo1
Sensible al contexto
O de Tipo1
Autómata
Linealmente acotado
Libre de contexto o
De Tipo2
Libre de contexto o
de Tipo2
Autómata con pila
Regular o de Tipo3 Regular o de Tipo3 Autómata Finito
1.3 Lenguajes, Gramáticas y
Autómatas
31. 1.3 Lenguajes, Gramáticas y
Autómatas
• Gran parte del temario se basará en problemas que tienen que ver con el
procesamiento del lenguaje, por tanto, se repasa la terminología y algunos de los
conceptos asociados al proceso de traducción.
– Se establecen los términos de lenguaje formal, definidos por reglas preestablecidas,
y de lenguaje natural, no cuentan con reglas gramaticales formales.
– Así, el estudio de los lenguajes se reduce al análisis de la estructura de las frases
(Gramática) y del significado de las mismas (Semántica).
– A su vez, la Gramática puede analizar las formas que toman las palabras (Morfología),
su combinación para formar frases correctas (Sintaxis), y las propiedades del lenguaje
hablado (Fonética) (única no aplicable a los lenguajes de ordenador).
– Para realzar el papel de la gramática en el proceso de traducción se indican los
componentes básicos de que consta compilador para un determinado lenguaje de
programación: análisis léxico, análisis sintáctico y generación de código.
32. Teoría de Autómatas y Lenguajes formales es un “repaso” a la
informática teórica.
La informática teórica: se ha desarrollado con base a la confluencia de
campos en aparencia muy distintos:
Investigación acerca de Fundamentos Matemáticos,
Teoría de Máquinas,
Lingüística, …
Ciencia multidisciplinar que se apoya en que los mismos fenómenos
pueden actuar y servir de fundamento en áreas totalmente
desconectadas (aparentemente).
33. Un autómata puede describir de forma formal el funcionamiento
de un sistema
Ejemplo: interruptor
off oninicio
pulsar
pulsar
1.4 Autómatas / Máquinas secuenciales
34. Un autómata es un modelo abstracto de una computadora digital
• Lee símbolos en la entrada
• Produce símbolos en la salida
• Tiene una unidad de control que puede estar en uno de sus
posibles estados internos
• Puede cambiar de los estados internos en función de la entrada
• Puede tener algún tipo de memoria
Autómatas transductores / generadores / aceptadores
Salida
Memoria
Unidad de
Control
1.4 Máquinas secuenciales
Entrada
35. Cualquier comunicación se realiza mediante cadenas de símbolos
que corresponden a un lenguaje.
Lenguajes son conjuntos de cadenas de símbolos (palabras,
oraciones, textos o frases)
El estudio de los lenguajes se reduce, básicamente, a:
Sintaxis: (gramática)
define las secuencias de símbolos que forman cadenas válidas de
un lenguaje
Gramática: Descripción formalizada de las oraciones de un lenguaje.
Una gramática genera o describe un lenguaje.
Semántica:
significado de las cadenas que componen un lenguaje
1.5 Lenguajes y Gramáticas
36. Ejemplo 1:
Semántica:
A es un número natural.
Diferente sintaxis en diferentes lenguajes:
A is a natural number.
A : Natural;
0100000100000001
1.5 Lenguajes y Gramáticas
37. 1.5 Lenguajes y Gramáticas
Ejemplo 2:
Sintaxis:
if_statement ::= if condition then sequence_of_statement {elsif
condition then sequence_of_statements} [else
sequence_of_statements] end if;
Semántica:
Si se cumple <condition> entonces haz lo que viene definido por
<sequence_of_statements>. En caso contrario ...
Cadena del lenguaje:
if Line_Too_Short then raise Layout_Error; elsif Line_Full then
New_Line; Put(Item); else Put(Item); end if;
38. 1.5 Lenguajes y Gramáticas
La Teoría de Lenguajes Formales resultó tener una relación inmediata y
directa con la Teoría de Máquinas Abstractas.
Se establecieron correspondencias (isomorfismos) entre ellas.
Se puede describir el funcionamiento de sistemas mediante
gramáticas → lenguajes de programación
Chomsky clasificó de las gramáticas en diferentes tipos:
Lenguajes del mismo tipo tienen propiedades en común
Según el tipo de lenguaje, existen diferentes algoritmos que permiten
comprobar la sintaxis de textos.
39. 1.1 Definiciones
• Computar:
– Procesar información
• Modelo de computación
– Máquina abstracta que toma como entrada una secuencia
de símbolos y los procesa
– Dependiendo del modelo, el resultado del cómputo
puede ser :
• Una secuencia de acciones
• Una salida expresada en un cierto lenguaje
• Una respuesta de aceptación o rechazo de la entrada
40. ¿Cómo se puede formalizar el concepto de realizar un cálculo?
1937 – Alan Mathison Turing: “On computable numbers with an application to
the Entscheidungsproblem”
Definición de la Máquina de Turing como dispositivo matemático abstracto de
cálculo que introduce el concepto de “algoritmo”.
Origen “oficial” de la informática teórica.
Precursora abstracta de las máquinas de calcular automáticas.
La Máquina de Turing es un modelo abstracto de los ordenadores actuales.
Demuestra la existencia de problemas irresolubles, los que ninguna máquina de
Turing (y ningún ordenador) puede resolver o calcular. (Teoría de la
Computabilidad).
1.5 Máquinas abstractas y algoritmos
41. Lenguajes Formales y Gramáticas
Lenguajes regulares
Autómatas Finitos
Lenguajes Independientes del Contexto
Autómatas a Pila
Máquinas de Turing
Computabilidad
Actividad 1: Conceptos básicos
42. 1.¿ Qué es un lenguaje de programación ?
2.Abstracciones
3.Paradigmas de computación
4.Definición del lenguaje
5.Traducción del lenguaje
6.Historia
7.Preguntas
43. 1.6 ¿QUÉ ES UN LP?
Computación
Máquina Turing, tesis de Church
Legibilidad por parte de la máquina
Legibilidad por parte del ser humano
Definición: Un lenguaje de programación es un
sistema notacional para describir computaciones de
una forma legible tanto para la máquina como para el
ser humano.
44. 1.6 CONCEPTOS
Los Lenguajes de programación son aplicaciones
específicas diseñadas para crear otras aplicaciones o
programas. Son programas para crear programas.
Se basan en un sistema de instrucciones preestablecidas
que indican al ordenador lo que debe realizar
Son códigos integrados compuestos por un vocabulario,
con una sintaxis y una semántica que permite elaborar
infinitas secuencias válidas de tareas e instrucciones
45. Los lenguaje de programación permiten crear
programas específicos que ofrezcan solución a
programas particulares
Para llevar a cabo cualquier tarea, el ordenador necesita
tener información sobre la tarea y un método para
ejecutarla
1.6 CONCEPTOS
46. Instrucción: Expresión formada por números, operaciones y letras que
indica, en un computador, la operación que debe realizar y los datos
correspondientes.
Algoritmo: Conjunto ordenado y finito de operaciones que permite hallar la
solución de un problema.
Programa: Conjunto de instrucciones en un lenguaje dado que indica a un
ordenador cómo resolver un problema. De manera más informal:
Algoritmo: Secuencia de instrucciones no ambigua que resuelve una tarea concreta
en un tiempo finito.
Programa: Codificación de uno o más algoritmos en un lenguaje de programación.
Procesar: Someter datos a una serie de operaciones programadas.
Al proceso de traducir o codificar un algoritmo a forma de programa se le
conoce con el nombre de implementación.
47. Proceso de desarrollo de software: Proceso de trabajo que debe
seguir un programador a la hora de construir un programa o
aplicación que resuelva cierto problema.
Se divide en:
Definición del problema. Implica el desarrollo y clarificación exacta de las
especificaciones del problema, de los datos de entrada y de los datos de salida.
Diseño del algoritmo. Describe la secuencia ordenada de pasos que conducen a la
solución de un problema dado.
Implementación. Codificar el algoritmo como un programa en un lenguaje de
programación.
Ejecución y validación del programa en el ordenador.
Documentación. Tanto la definición del problema como el algoritmo y el programa
deben formar parte de la documentación. Su contenido dependerá de a quién va
dirigida.
Mantenimiento del programa. Los programas pueden quedarse anticuados,
debiendo ser revisados, ampliados y modificados.
48. 2. Lenguajes de Programación
Lenguaje de Programación: Conjunto de reglas, símbolos
y palabras especiales utilizados para construir un
programa de forma que pueda ser entendido por el
ordenador.
Se clasifican en:
Lenguajes Máquina.
Lenguajes de Bajo Nivel o Ensambladores.
Lenguajes de Alto Nivel.
49. Lenguaje Máquina.
Es aquél que entiende directamente el ordenador ya que sus instrucciones son
secuencias binarias. También se le conoce como código binario.
Dificultad de desarrollo, verificación y puesta a punto de programas.
El código desarrollado no es portable.
Lenguajes de Bajo Nivel o Ensamblador.
Está compuesto por las instrucciones del lenguaje máquina escritas mediante
nemotécnicos. Es más fácil de utilizar que el anterior.
El programa sigue siendo dependiente de la máquina.
Requiere una fase de traducción del código fuente al programa objeto.
Lenguajes de Alto Nivel.
Son los más utilizados por los programadores.
Mayor facilidad en el desarrollo, verificación y mantenimiento de los
programas.
Los programas desarrollados son portables.
Requiere una fase de traducción del código fuente al programa objeto.
50. 1.1 Definiciones
• Autómata:
– Modelo de computación
– Maquina de estados
– El funcionamiento de la máquina se basa en transiciones
de estados
– Las transiciones están provocadas por la lectura de los
símbolos de entrada
51. 1.1 Definiciones
• Autómata:
– Modelo de computación
– Maquina de estados
– El funcionamiento de la máquina se basa en transiciones
de estados
– Las transiciones están provocadas por la lectura de los
símbolos de entrada
52. 1.1 Definiciones
• Autómata:
– Modelo de computación
– Maquina de estados
– El funcionamiento de la máquina se basa en transiciones
de estados
– Las transiciones están provocadas por la lectura de los
símbolos de entrada
53. 1.1 Definiciones
• Autómata:
– Modelo de computación
– Maquina de estados
– El funcionamiento de la máquina se basa en transiciones
de estados
– Las transiciones están provocadas por la lectura de los
símbolos de entrada
54. 1.1 Definiciones
• Autómata:
– Modelo de computación
– Maquina de estados
– El funcionamiento de la máquina se basa en transiciones
de estados
– Las transiciones están provocadas por la lectura de los
símbolos de entrada
55. 1.1 Definiciones
• Autómata:
– Modelo de computación
– Maquina de estados
– El funcionamiento de la máquina se basa en transiciones
de estados
– Las transiciones están provocadas por la lectura de los
símbolos de entrada
56. 1.1 Definiciones
• Autómata:
– Modelo de computación
– Maquina de estados
– El funcionamiento de la máquina se basa en transiciones
de estados
– Las transiciones están provocadas por la lectura de los
símbolos de entrada
57. 1.1 Definiciones
• Autómata:
– Modelo de computación
– Maquina de estados
– El funcionamiento de la máquina se basa en transiciones
de estados
– Las transiciones están provocadas por la lectura de los
símbolos de entrada
58. 1.13 PREGUNTAS
Clasifica los siguientes lenguajes (C, Ada, C++, Java, LISP,
Prolog, Visual Basic, JavaScript, C#, PHP) con base a :
Paradigma
tipos de traductor (compilador, interprete, seudointérprete)
Propiedades estáticas y dinámicas
Eficiencia
Extraed conclusiones de esta clasificación
59. Evalua los lenguajes del punto anterior respecto a las
características del punto 1.8 y 1.9
Extrae conclusiones de las dos clasificaciones