Sei sulla pagina 1di 38

II. PROGRAMA ANALTICO DE LA ASIGNATURA.

UNIDAD 1
INTRODUCCION
1.1. Introduccin .-
Teora de Lenguajes es una rama de la informtica que se encarga del diseo, implementacin, anlisis,
caracterizacin y clasificacin de lenguajes de programacin . Es un campo multi-disciplinar, dependiendo tanto
de (y en algunos casos afectando) matemticas, ingeniera del software, lingstica, e incluso ciencias cognitivas.
Es una rama bien reconocida de la informtica, y a fecha un rea activa de investigacin, con resultados
publicados en un gran nmero de revistas dedicadas a la PLT, as como en general en publicaciones de
informtica e ingeniera. La mayora de los programas de los estudiantes universitarios de informtica requieren
trabajar en este tema.
Un compilador .- Es el proceso de traduccin que convierte un programa fuente escrito en un
lenguaje de programacin de alto nivel a otro lenguaje de programacin, generando un programa
equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje
de mquina, pero tambin puede ser un cdigo intermedio (bytecode), o simplemente texto. Este
proceso de traduccin se conoce como compilacin.
Un compilador .-Es un programa que permite traducir el cdigo fuente de un programa en lenguaje
de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un
programador puede disear un programa en un lenguaje mucho ms cercano a cmo piensa un ser
humano, para luego compilarlo a un programa ms manejable por una computadora.
1.2. El Lenguaje de Programacin .-
Un lenguaje de programacin es un conjunto de instrucciones ordenadas
1.3. El Lenguaje .-
Llamamos lenguaje sobre el alfabeto V a cualquier subconjunto de V.
Especificacin de lenguajes:
Extensin lenguajes finitos!
L = fa; aa; aaag es un lenguaje sobre el alfabeto V = fag
L = faba; cab; aaabcg es un lenguaje sobre el alfabeto V = fa; b; cg
"omprensin lenguajes infinitos!
L = fa(bc)njn >= 1g
1.#. $ipos de $raductores .-
Desde los orgenes de la computacin, ha existido un abismo entre la forma en que las personas
expresan sus necesidades y la forma en que un ordenador es capaz de interpretar instrucciones. Los
traductores han intentado salvar este abismo para facilitarles el trabajo a los humanos, lo que ha llevado
1
Programa
fuente
Programa
Objeto
Mensaje
Compilador
Compilador
a aplicar la teora de autmatas a diferentes campos y reas concretas de la informtica, dando lugar a
los distintos tipos de traductores que veremos a continuacin.
2.%.1.$raductor de idiomas .-
Traducen de un idioma dado a otro, como por ejemplo del ingls al espaol.
Este tipo de traductores posee multitud de problemas, a saber:
Necesidad de inteligencia artificial y problema de las frases hechas. El problema de la inteligencia
artificial es que tiene mucho de artificial y poco de inteligencia, por lo que en la actualidad resulta casi
imposible traducir frases con un sentido profundo. Como ancdota, durante la guerra fra, en un intento
por realizar traducciones automticas del ruso al ingls y viceversa, se puso a prueba un prototipo
introduciendo el texto en ingls: "El espritu es fuerte pero la carne es dbil cuya traduccin al ruso se
pas de nuevo al ingls para ver si coincida con el original. Cual fue la sorpresa de los desarrolladores
cuando lo que se obtuvo fue: "El vino est bueno pero la carne est podrida (en ingls spirit significa
tanto espritu como alcohol). Otros ejemplos difciles de traducir lo constituyen las frases hechas como:
"Piel de gallina, "por si las moscas, "molar mazo, etc.
Difcil formalizacin en la especificacin del significado de las palabras.
Cambio del sentido de las palabras segn el contexto. Ej: "por decir aquello, se llev una
galleta.
En general, los resultados ms satisfactorios en la traduccin del lenguaje natural se han
producido sobre subconjuntos restringidos del lenguaje. Y an ms, sobre subconjuntos en
los que hay muy poco margen de ambigedad en la interpretacin de los textos: discursos
jurdicos, documentacin tcnica, etc.
2.%.2."ompiladores .-
Es aquel traductor que tiene como entrada una sentencia en lenguaje formal y como salida tiene un
fichero ejecutable, es decir, realiza una traduccin de un cdigo de alto nivel a cdigo mquina (tambin
se entiende por compilador aquel programa que proporciona un fichero objeto en lugar del ejecutable
final).
2.%.3.Interpretes .-
Es como un compilador, solo que la salida es una ejecucin. El programa de entrada se reconoce y ejecuta a la
vez. No se produce un resultado fsico (cdigo mquina) sino lgico (una ejecucin). Hay lenguajes que slo
pueden ser interpretados, como p.ej. SNOBOL (StriNg Oriented SimBOlyc Language), LSP (LISt Processing),
algunas versiones de BASC (Beginners All-purpose Symbolic Instruction Code), etc. Su principal ventaja es que
permiten una fcil depuracin. Entre los inconvenientes podemos citar, en primer lugar, la lentitud de ejecucin,
ya que al ejecutar a la vez que se traduce no puede aplicarse un alto grado de optimizacin; por ejemplo, si el
programa entra en un bucle y la optimizacin no est muy afinada, las mismas instrucciones se interpretarn y
ejecutarn una y otra vez, enlenteciendo la ejecucin del programa. Otro inconveniente es que durante la
ejecucin, el intrprete debe residir en memoria, por lo que consumen ms recursos. Adems de que la
traduccin optimiza el programa acercndolo a la mquina, los lenguajes interpretados tienen la caracterstica de
que permiten construir programas que se pueden modificar a s mismos.
Algunos lenguajes intentan aunar las ventajas de los compiladores y de los intrpretes y evitar sus desventajas;
son los lenguajes pseudointerpretados. En estos, el programa fuente pasa por un pseudocompilador que genera
un pseudoejecutable. Para ejecutar este pseudoejecutable se le hace pasar por un motor de ejecucin que lo
interpreta de manera relativamente eficiente. Esto tiene la ventaja de la portabilidad, ya que el pseudoejecutable
es independiente de la mquina en que vaya a ejecutarse, y basta con que en dicha mquina se disponga del
motor de ejecucin apropiado para poder interpretar cualquier pseudoejecutable. El ejemplo actual ms conocido
lo constituye el lenguaje Java; tambin son pseudointerpretadas algunas versiones de Pascal y de COBOL
(Common Bussiness Oriented Language). La figura 1.2 muestra los pasos a seguir en estos lenguajes para
obtener una ejecucin.
2
2.%.#.Procesadores .-
Permiten modificar el programa fuente antes de la verdadera compilacin.
Hacen uso de macroinstrucciones y directivas de compilacin. Por ejemplo, en lenguaje C, el
preprocesador sustituye la directiva #include Uno.c por el cdigo completo que contiene el fichero "Uno.c, de
manera que cuando el compilador comienza su ejecucin se encuentra con el cdigo ya insertado en el
programa fuente (la figura 1.3 ilustra esta situacin). Algunas otras directivas de preprocesamiento permiten
compilar trozos de cdigo opcionales (lenguajes C y Clipper): #fi, #ifdef, #define, #ifndef, etc.
Los preprocesadores suelen actuar de manera transparente para el programador, pudiendo incluso
considerarse que son una fase preliminar del compilador.
2.%.&.Interpretes de "omando .-
Un intrprete de comandos traduce sentencias simples a invocaciones a programas de una biblioteca. Se utilizan
especialmente en los sistemas operativos (la shell de Unix es un intrprete de comandos). Los programas
invocados pueden residir en el kernel (ncleo) del sistema o estar almacenados en algn dispositivo externo
como rutinas ejecutables que se traen a memoria bajo demanda.
Por ejemplo, si bajo MS-DOS se teclea el comando copy se ejecutar la funcin de copia de ficheros del sistema
operativo, que se encuentra residente en memoria.
2.%.'.Ensam(ladores ) microensam(ladores .-
Son los pioneros de los compiladores, ya que en los albores de la informtica, los programas se escriban
directamente en cdigo mquina, y el primer paso hacia los lenguajes de alto nivel lo constituyen los
ensambladores. En lenguaje ensamblador se establece una relacin biunvoca entre cada instruccin y una
palabra mnemotcnica, de manera que el usuario escribe los programas haciendo uso de los mnemotcnicos, y
el ensamblador se encarga de traducirlo a cdigo mquina puro. De esta manera, los ensambladores suelen
producir directamente cdigo ejecutable en lugar de producir ficheros objeto.
Un ensamblador es un compilador sencillo, en el que el lenguaje fuente tiene una estructura tan sencilla que
permite la traduccin de cada sentencia fuente a una nica instruccin en cdigo mquina. Al lenguaje que
admite este compilador tambin se le llama lenguaje ensamblador. En definitiva, existe una correspondencia uno
a uno entre las instrucciones ensamblador y las instrucciones mquina. Ej:
nstruccin ensamblador: LD HL, #0100
Cdigo mquina generada: 65h.00h.01h
Por otro lado, existen ensambladores avanzados que permiten definir macroinstrucciones que se pueden
traducir a varias instrucciones mquina. A estos programas se les llama macroensambladores, y suponen el
siguiente paso hacia los lenguajes de alto nivel. Desde un punto de vista formal, un macroensamblador puede
entenderse como un ensamblador con un preprocesador previo.
2.%.%."on*ersores fuente + fuente .-
Permiten traducir desde un lenguaje de alto nivel a otro lenguaje de alto nivel, con lo que se consigue
una mayor portabilidad en los programas de alto nivel. Por ejemplo, si un ordenador slo dispone de un
compilador de Pascal, y queremos ejecutar un programa escrito para otra mquina en COBOL, entonces un
3
conversor de COBOL a Pascal solucionar el problema. No obstante el programa fuente resultado puede
requerir retoques manuales debido a diversos motivos:
En situaciones en que el lenguaje destino carece de importantes caractersticas que el lenguaje
origen s tiene. Por ejemplo un conversor de Java a C, necesitara modificaciones ya que C no
tiene recolector de basura.
En situaciones en que la traduccin no es inteligente y los programas destino son altamente
ineficientes.
2.%.,."ompilador cru-ado .-
Es un compilador que genera cdigo para ser ejecutado en otra mquina. Se utilizan en la fase de desarrollo de
nuevos ordenadores. De esta manera es posible, p.ej., construir el sistema operativo de un nuevo ordenador
recurriendo a un lenguaje de alto nivel, e incluso antes de que dicho nuevo ordenador disponga siquiera de un
compilador.
Ntese tambin que, para facilitar el desarrollo de software de un nuevo ordenador, uno de los primeros
programas que se deben desarrollar para ste es, precisamente, un compilador de algn lenguaje de alto nivel.
1.&. Estructura de un $raductor.-
Un traductor divide su labor en dos etapas: una que analiza la entrada y genera estructuras intermedias y otra
que sintetiza la salida a partir de dichas estructuras.
Bsicamente los objetivos de la etapa de anlisis son:
a) controlar la correccin del programa fuente
b) generar las estructuras necesarias para comenzar la etapa de sntesis.
Para llevar esto a cabo, la etapa de anlisis consta de las siguientes fases:
.n/lisis lexicogr/fico . Divide el programa fuente en los componentes bsicos del lenguaje a
compilar. Cada componente bsico es una subsecuencia de caracteres del programa fuente, y
pertenece a una categora gramatical: nmeros, identificadores de usuario (variables,
constantes, tipos, nombres de procedimientos,...), palabras reservadas, signos de puntuacin,
etc.
.n/lisis sint/ctico . Comprueba que la estructura de los componentes bsicos sea correcta
segn las reglas gramaticales del lenguaje que se compila.
.n/lisis sem/ntico. Comprueba que el programa fuente respeta las directrices del lenguaje que
se compila (todo lo relacionado con el significado): chequeo de tipos, rangos de valores,
existencia de variables, etc.
Cualquiera de estas tres fases puede emitir mensajes de error derivados de fallos cometidos por el programador
en la redaccin de los textos fuente. Mientras ms errores controle un compilador, menos problemas dar un
programa en tiempo de ejecucin. Por ejemplo, el lenguaje C no controla los lmites de un array, lo que provoca
que en tiempo de ejecucin puedan producirse comportamientos del programa de difcil explicacin.
La etapa de sntesis construye el programa objeto deseado (equivalente semnticamente al fuente) a partir de
las estructuras generadas por la etapa de anlisis.
Para ello se compone de tres fases fundamentales:
0eneracin de cdigo intermedio. Genera un cdigo independiente de la mquina muy parecido al
ensamblador. No se genera cdigo mquina directamente porque as es ms fcil hacer pseudo-
compiladores y adems se facilita la optimizacin de cdigo independientemente del microprocesador.
4
0eneracin del cdigo m/1uina. Crea un bloque de cdigo mquina ejecutable, as como los bloques
necesarios destinados a contener los datos.
2ase de optimi-acin . La optimizacin puede realizarse sobre el cdigo intermedio (de forma
independiente de las caractersticas concretas del microprocesador), sobre el cdigo mquina, o sobre
ambos. Y puede ser una aislada de las dos anteriores, o estar integrada con ellas.
!"! .lgunos 34todos de 5emostracin .-
UNIDAD 2:
EL LENGUAJE ORMAL
A menudo queremos reconocer una estructura especfica escondida en una sucesin de smbolos. Por ejemplo, al
leer esta frase, la estructuramos automticamente por medio de nuestra comprensin del idioma Espaol. Por
supuesto, no cualquier secuencia de smbolos es una frase en Espaol, el idioma Espaol iguala al conjunto de
todas las oraciones gramaticalmente correctas en Espaol, y que una oracin consiste en una secuencia e palaras
en Espaol. Esta terminologa ha sido llevada a las ciencias de la computacin: el lenguaje de programacin Java
puede ser visto como el conjunto de todos los programas correctos en Java, mientras que un programa en java
puede ser visto como una secuencia de smbolos de Java, tales como identificadores, palabras reservadas,
operadores especficos, etc.
Lenguaje es un conjunto, posiblemente infinito de frases y las !"a#$# son secuencia de smbolos tomadas de
un conjunto finito.
As como establecemos que una oracin pertenece o no al idioma Espaol mediante la gramtica Espaola,
contamos con un formalismo gramatical para describir lenguajes artificiales.
Una diferencia con las gramticas para lenguajes naturales es que este formalismo gramatical es completamente
formal. Esta propiedad nos permite probar matemticamente que una frase pertenece a algn lenguaje, y a
menudo tales pruebas pueden ser construidas automticamente por una computadora en un proceso llamado
anlisis sintctico. Note que esta es bastante diferente de las gramticas para lenguajes naturales, donde uno
puede discrepar fcilmente sobre si algo es correcto en espaol o no. Sin embargo este enfoque
completamente formal tambin conlleva una desventaja; la expresividad de la clase de gramticas que vamos a
describir en este captulo es bastante limitada, y hay algunos lenguajes que uno podra querer describir pero
que no pueden ser descritos dadas las limitaciones del formalismo.
En textos tradicionales de matemticas no es raro encontrar una definicin de secuencia que tiene la siguiente
forma:
2.2 El .lfa(eto .-
67m(olo: Un "smbolo es una entidad abstracta que no definiremos, de la misma manera que los
conceptos "punto y "lnea, no se definen en geometra. Las letras y los dgitos son ejemplos de
smbolos usados con frecuencia.
.lfa(eto .- Un alfabeto es un conjunto finito y no vaco de elementos llamados smbolos o letras.
.lgunos ejemplos de alfa(eto son:
El alfabeto romano tradicional: {a,b,c,..z}
El alfabeto binario: {0,1}
El conjunto de palabras reservadas: {if,then,else}
El conjunto de caracteres t= {a,b,c,d,e,f,i,k,l,m,n,m,o,p,r,s,t,u,w,x}
El conjunto de palabras en espaol {curso, practica, ejercicio, examen}
Lenguaje 2ormal.- Es un conjunto de palabras (frases) de longitud finita formadas a partir de un alfabeto
(conjunto de todas las cadenas contribuidas a partir del alfabeto).
Lenguaje .- Es un subconjunto de T*, para algn alfabeto T.
5
La pala%"a &ac'a (esto es, la cadena de longitud cero) es permitida y frecuentemente denotada mediante (
o ).

.lgunos ejemplos de lenguaje son:
#$% &'el con(unto )acio*% { / } y T son lenguajes sobre el alfabeto T;
+l con(unto {curso, prctica, ejercicio, examen} es un lenguaje sobre el alfabeto de caracteres t y
examen es una frase de este.
La secuencia )ac,a representa la palabra )ac,a y la anotamos con .
2rase.- Es un elemento de un lenguaje.
Pala(ra.- Una palabra o cadena sobre un alfabeto T es una cadena finita de smbolos del alfabeto.
E#p$ci!icacin *$ l$n+,a-$#:
La pregunta que surge ahora es como especificar un lenguaje. Puesto que un lenguaje es un conjunto
inmediatamente podemos percibir tres enfoques:
Enumerar todos los elementos del conjunto explcitamente
Caracterizar los elementos del conjunto por medio de un predicado
Definir qu elementos pertenecen al conjunto por medio de la induccin
E./$n#in
L = {a; aa; aaa} es un lenguaje sobre el alfabeto V = {a}
L = {aba; cab; aaabc} es un lenguaje sobre el alfabeto V = {a; b; c}
L= {ab, ba, abab, ababba} es un lenguaje del alfabeto
L= { /, (, ), (), (()()), )())), ... } es un lenguaje del alfabeto
L= { /, 0, 0000, 010, 9980, ...} es un lenguaje del alfabeto
L= { /, a, b, c, d, abc, aab, dcba, ... } es un lenguaje del alfabeto
Ca"ac/$"i0a"
Los nmeros naturales pares {n n {0,1,.,9}*, n mod 2=0}
PAL, los palndromes, secuencia que se leen igualmente de atrs para adelante que de adelante para
atrs, sobre el alfabeto {a,b,c}: {s s {a,b,c}*, s=s
R
}, donde s
R
denota la secuencia s invertida.
Comp"$n#in
L = {a(bc)
n
n >= 1}
2.3 "adenas de "aracteres8 Pala(ra o 2rase .-
En matemticas, una ca*$na *$ ca"ac/$"$#, pala%"a o !"a#$ es una secuencia ordenada de longitud arbitraria
(aunque finita) de elementos que pertenecen a un cierto alfabeto.
Habitualmente se usan las letras w, x, y,... para referirnos a cadenas. Por ejemplo, si tenemos un alfabeto Z = {a,
b, c}, una cadena podra ser: x = aacbbcba.
En general, una ca*$na *$ ca"ac/$"$# es una sucesin de caracteres (letras, nmeros y/o determinados
signos).
Se utilizan en programacin, normalmente como un tipo de dato predefinido, para palabras, frases o cualquier
otra sucesin de caracteres.
Es muy habitual que se delimiten mediante comillas superiores ("). Para poder mostrar, por ejemplo, una comilla
(") dentro de la cadena y no tener problemas con las comillas que la delimitan, se usan secuencias de escape.
Esto se aplica a otros caracteres reservados o no imprimibles como el retorno de carro. No obstante, las
expresiones para producir estas secuencias de escape dependen del lenguaje de programacin que se est
usando.
Una forma comn, en muchos lenguajes, de escapar un carcter es anteponindole un \ (sin comillas), p. e.:
\" (sin comillas).
2.4 5efinicin de 9 .-
6
6ecuencia:
Sea : un conjunto. El conjunto de secuencias sobre :8 llamado :9, se define como sigue:
/ es una secuencia, llamada secuencia vaca
si .# es una secuencia y . es un elemento de :, entonces .:.# es tambin una secuencia
nada ms es una secuencia sobre :.
Hay dos cosas importantes que remarcar sobre esta definicin del conjunto :9:
Es una instancia de un patrn de definicin muy comn: es definida por in*,ccin, es decir, la
definicin del concepto refiere al propio concepto.
Corresponde casi exactamente a la definicin del /ipo 1.2 de listas de elementos de un tipo . en
Haskell, excepto para la clausula final ninguna otra cosa en una secuencia de elementos-3
2.& 5efinicin de Longitud .-
Se llama longitud de una palabra x, y se representa por |x|, al nmero de smbolos que la componen.
Sobre L= {a,b,c,d}
|/|=0
|a|=1
|abc|=3
2.' ;peraciones con Pala(ras.-
Conca/$nacin: unir dos cadenas de caracteres.
$pareja = "Luis"." y "."Carmen" # en Perl y PHP;
pareja = "Luis" & " y " & "Carmen" # en Visual Basic;
pareja = "Luis" + " y " + "Carmen"; # en C++ con el tipo string.
M,l/iplica" ,na ca*$na: repetir una cadena un nmero de veces
$puntos ="." x 5 # pone 5 puntos en Perl
5efinicin de "oncatenacin .-
Sean dos palabras x e y definidas sobre el alfabeto T. La concatenaci-n de x e y, denominada "xy, es una
palabra que contiene todos los smbolos (de derecha a izquierda) de x seguidos de los smbolos de y (de
derecha a izquierda).
Sean x=A1A2...An e y=B1B2...Bm con Ai, Bi T:
xy= A1A2...AnB1B2...Bm
_ E-$mplo#:
x =abc, y =da, definidos sobre T ={a,b,c,d}
xy=abcda ; |xy|=|x|+|y|=5
Propiedades:
Operaciones cerrada: #i Si . e 4 estn definidos sobre L entonces .4 esta
definido sobre L
Asociativa: si x(yz)=(xy)z
Elemento Nulo: x = x=x
Conmutatividad: no xy yx
5efinicin de Potencia de "adenas .-
Sea i un numero natural, y x una palabra. La potencia i-esima de x, denominada x
i
, es la operacin que
consiste en concatenarla consigo misma i veces.
E-$mplo#:
x=abc x1=abc
x2=abcabc
x3=abcabcabc
7
Propiedades:
i,j >0 xi+1=xxi=xix
xixj=xi+j
Se define x
0
= (palabra vacia)
Si i=0 x
0+1
=x
1
=x=x =xx
0
= x=x
0
x
Si i,j=0 x
i
x
j
=x
0
x
0
= = =x
0
=x
0+0
No/a = ; x=x; x =x
|x
i
|=i.|x|
5efinicin Pala(ra In*ersa.-
Sea x=A1A2.An con Ai L una palabra sobre el alfabeto L. se llama palabra refleja o inversa de x,
y se representa por x
-1
a la palabra AnAn-1...A1. Si x= entonces x
-1
=
E-$mplo#
x=abc x
-1
=cba
Propiedades:
|x
-1
|=|x|
2.% ;peraciones con Lenguajes.-
5efinicin Lenguaje Uni*ersal.-
Sea V un alfabeto. El lenguaje universal de V es el conjunto formado por todas las palabras que se
pueden formar con las letras de V. Representamos dicho lenguaje con L(V).
E-$mplo#:
V1= {a} L(V1)={ ,a,aa,aaa,..}
El lenguaje vacio pertenece a todos los lenguajes universales de todos los alfabetos posibles.
5efinicin Lenguaje.-
Sea un alfabeto V. Un lenguaje L sobre V es cualquier subconjunto de lenguaje universal L(V)
E-$mplo:
L1= {a}L(L1)={ ,a,aa,aaa,..}
L1= {a}

L(L1)
L2= { }

L(L1) (L2=)
L3= L1

L(L1)
L4= W(L1)

L(L1)
L 5= { }

L(L1) (Nota: V 5 V 2 )
L 6= { ,a,aaa,aaaaa}

L(L1)
L 7= { ,a,aaa,aaaaa,.}

L(L1)
Hay lenguajes finitos, infinitos y vacios
2., ;peraciones con Lenguajes 2ormales.-
5efinicin Unin de Lenguajes.-
Sea el alfabeto V y dos lenguajes L1

L(V) y L2

L(V). La uni-n de L1 y L2, L1U L2, es un lenguaje que


se define de la siguiente forma:
L 1U L 2={x|x s L 1 o x s L 2}.
Propiedades:
Operacin cerrada: L 1 U W(V), L 2 U W(V) L 1 U L 2 U W(V)
Asociativa: (L 1 U L 2) U L 3= L 1 U (L 2 U L 3)
8
Elemento neutro: N U L 1, N U L 1 = L 1 56,$ $# N7
Conmutativa: L 1 U L 2 = L 2 U L 1
dempotencia: L U L = L
Se define x0= (palabra vaca)
"oncatenacin.-
Sean dos lenguajes L 1, L 2. La concatenaci-n de L 1 y L 2, representado por L 1.L 2 (a veces por L 1. L 2), es un
lenguaje que se define de la siguiente forma:
L 1 L 2={xy | xs L 1 , ys L 2}.
E-$mplo#: 8={a,b,c}
L1 ={ab, ac, cb}; L2={b, bba} L1L2={abb,abbba,acb,acbba,cbb,cbbba}
L1 ={a, aa, aaa, ...}; L2={l, b, bb, bbb, ...} L1 L2=57
56,9 pa#a #i L1 o L2 $# /7
Propiedades:
Cerrada: L1

W(V), L2

W(V) L1L2

W(V)
Asociativa: (L1L2)L3 = L1(L2L3)
No es conmutativa: (L1, L2: L1L2=L2L1)
Elemento neutro({/}):
L1: L1{/}={ / }L1=L1
No es idempotente: ( L: LL=L)
Potencia.-
La potencia i-.sima de un lenguaje L consiste en el lenguaje resultante de concatenar el lenguaje consigo mismo
i veces.
L
i
= LLL...L (i veces)
E-$mplo#:
L1 = {/,ab, ac}
L1
2
={/,ab,ac,abab,abac,acab,acac}
L1
3
={/,ab,ac,abab,abac,acab,acac,ababab,ababac,abacab,abacac,acabab,acabac,acacab,acacac}
L2 = {a, aa, aaa, ...}
L2
2
=?
L2
3
=?
Propiedades:
Cerrada: L

W(V) Li

W(V)
L
i+1
= L
i
L = LL
i
(i>0)
L
i
L
j
= L
i+j
(i,j>0)
Qu pasa si i, j = 0?
Se define L0 = { / }
L
0+1
= L
1
= L = {/}L=L
0
L
L
0
L
0
= { / }{/} ={/}=L
0
= L
0+0
"lausura Positi*a.-
La clausura positi)a de un lenguaje L se define por: L
+
=
E-$mplo#:
L ={a,aa,aaa,aaaa,...} = {a
n
| n>1}
L2={ aa,aaa,aaaa,...} = {a
n
a
m
| n,m>1} = {a
n
| n>2}
9
L3={ aaa,aaaa,...} = {a
n
a
m
| n>1, m>2} = {a
n
| n>3}
L
+
= U

i=1 L
i
={a,aa,aaa,aaaa,...} = L
V ={a,b}, L es un lenguaje sobre V, ya que L

W(V)
U

i=1 L i ={a,b,aa,ab,ba,bb,aaa,...} = W(V) - {/}


No/a: Si L, entonces L+.
"lausura8 iteracin o cierre.-
La clausura de un lenguaje L se define por:
L*= U

i=1 L
i
No/a: L: L*, ya que {}=L0.
P"opi$*a*$# *$ la cla,#,"a:
Cerrada: LW() L+W() , L*W()
L*=L0( U

i=1 L
i
)= L0L+={}L
+

L
+
=LL*= L*L
<eflexin.-
Sea L un lenguaje. Se llama lengua(e in)erso 'lengua(e re/le(o* de L, y se representa por L
-1
al lenguaje:
L
-1
= {x
-1
|xL}.
E-$mplo#:
L = {ana,julio,jesus,norma} L
-1
={ana, oiluj,susej,amron}
L = {a,aa,aaa,...} L
-1
?
P"opi$*a*$# *$ la "$!l$.in:
Cerrada: LW() L-1W()
Interaccin.-
Sean dos lenguajes L1 y L2. La intersecci-n de L1 y L2, L1 L2, es el lenguaje que se define por:
L1 L2={x|x L1 y x L2}.
Propiedades:
Cerrada:
L1W() , L2W() L1L2W()
Asociativa:
(L1L2) L3=L1 (L2L3)
Conmutativa:
L1L2= L2L1
dempotencia:
LL=L
L=
"omplemento.-
Sea L un lenguaje sobre el alfabeto . El complemento de L, denotado con L (o con c(L)) es el siguiente
lenguaje:
L ={x|x W() y xL}
Propiedades:
Cerrada: L W(V) L W(V)
10
W(V) =0
L =L
5iferencia.-
Sean dos lenguajes L1 y L2. La di/erencia de L1 y L2, L1- L2 (o
L1\L2) es el lenguaje que se define por:
L1- L2={x|x L1 y x L2}.
Propiedades:
Cerrada:
L1W() , L2W() L1-L2W()
No es Asociativa:
( L1, L2: (L1-L2)-L3=L1-(L2-L3))
No es conmutativa:
( L1, L2: L1-L2=L2-L1)
No es idempotente:
L: L-L=
A-=A
L$4$# *$ D$ Mo"+an:
L1 L2= L1 L2
L1 L2= L1 L2
L$4$# *$ compl$m$n/o:
L L=
L L =W()
Di#/"i%,/i&i*a*:
L1(L2 L3)= (L1L2)( L1L3)
L1 (L2 L3)= (L1L2) ( L1L3)
L1 -L2=L1 L
2
= L1L2
11
UNIDAD :

E3PRESIONES REGULARES; AUT<MATAS DE ESTADOS INITOS = GRAMATICAS REGULARES
3.1. Expresiones <egulares
3.1.1 =ue es una Expresin <egular>
Las expresiones regulares constituyen un mecanismo bastante potente para realizar manipulaciones de cadenas
de texto.
Las expresiones regulares son de gran utilidad en editores de texto y aplicaciones para buscar y manipular
textos.
Una $.p"$#in "$+,la" es una forma de representar a los lenguajes regulares (finitos o infinitos) y se construye
utilizando caracteres del alfabeto sobre el cual se define el lenguaje.
Las expresiones regulares tambin permiten especificar lenguajes regulares. En la actualidad existe gran soporte
para el uso de expresiones regulares (Perl, PHP, bibliotecas Java, bibliotecas .NET, Shell Unix, etc.).
3.1.2 67m(olos de una Expresin <egular.-
> denota desde cero a n repeticiones
+ denota desde una a n repeticiones
{n} denota n repeticiones
{m; n} denota de m a n repeticiones
? denota elemento opcional
() para agrupaciones
3.1.3 <eglas de 2ormacin de una Expresin <egular.-
Sea 8 un alfabeto. Una expresin regular sobre 8 se define recursivamente con las siguientes reglas
(inductivas):
1.
a) es una expresin regular
b) s es una expresin regular
c) si o 8, entonces o es una expresin regular
2. si y son expresiones regulares, entonces tambin
a) . es una expresin regular (obviamos del punto muchas veces)
b) ( + ) es una expresin regular
3. si es una expresin regular, entonces tambin
a. ( ) es una expresin regular
( )* es una expresin regular
E-$mplo#:
Sea 8 = {a, b, c}. Posibles expresiones regulares son:
((a.b)* + b.c.(a)*) ((a.a.a + b.c) + (c.b)* (b)*)
12
00 es una expresin regular que representa {00}, la expresin (0+1)* denota todas las cadenas de 0 y 1s as que
(0+1)*00(0+1)* denota todas las cadenas de 0s y 1s con al menos dos ceros consecutivos.
Con eso hemos definido una sintaxis de expresiones regulares, pero cul ser su semntica?
Para cada expresin regular definimos un lenguaje correspondiente (basado en las reglas).
3.1.# ;peraciones con Expresiones <egulares
Si es una expresin regular, entonces { } es el conjunto descrito por la expresin regular . Tambin se
puede decir que denota el lenguaje de la cadena . Las expresiones regulares describen los lenguajes
regulares, luego sus operaciones correspondern a las indicadas para los lenguajes regulares.
a) Unin al/$"na/i&a: Si y son expresiones regulares, | es una expresin regular tal que:
{ |}= { } U {}.
Es decir que puede aparecer o indistintamente.
b) Conca/$nacin: Si y son expresiones regulares, es una expresin regular tal que:
{ }= { } {}.
c) Ci$""$ , op$"acin $#/"$lla: Si es una expresin regular, entonces * es una expresin regular que
denota: { }*. Es decir que denota las cadenas:
)



..
d) Ci$""$ Po#i/i&o: Si es una expresin regular, entonces
+
es una expresin regular que denota: { }
+
.
Es decir que denota las cadenas:



..
3.1.& Procedencia de las ;peraciones.-
Se permite el uso de parntesis para indicar la precedencia de las operaciones, pero cuando no se utilizan
parntesis para evaluar una expresin, hay que tener en cuenta el siguiente orden de precedencia.
1. Uso de parntesis.
2. Operacin cierre y cierre positivo.
3. Operacin concatenacin.
4. Alternativa.
3.1.' $eorema:
Dos expresiones regulares son iguales, si designan el mismo conjunto regular.
3.1.% Propiedades:
13
A partir del teorema anterior se puede enunciar las siguientes propiedades:
A#ocia/i&i*a*:
d(y) = (dy)
Di#/"i&,/i&i*a*:
d|dy = d(|y)
El$m$n/o n$,/"o:
d/ = / d
P"opi$*a*$# *$l op$"a*o" ci$""$
(d|)* = (d*|*)* = (d**)*
(d|/)* = (d*|/) = d*
dd*|/ = d*
/* = /
E-$mplo# simples
La expresin regular a.% (o simplemente a%) se lee a concatenado con b y representa al lenguaje L = {ab}
La expresin regular dada por a ? a% se lee a uni-n ab, es decir, a o ab y representa al lenguaje L = {a, ab}
El lenguaje de todas las palabras definidas sobre el alfabeto {a, b} que comienzan con a se puede
representar mediante la expresin regular a(a + b) *
O/"o# E-$mplo#:
1. Sea el alfabeto {a,b} y la expresin regular aa*bb*, indicar el lenguaje que denota y algunas cadenas de
dicho lenguaje.
ab
aab
aaab
abb
abbbb
aaaabbbbbb
2. Dada la expresin regular {a|b}*, el lenguaje que denota es el que se puede formar con todas las cadenas
compuestas por a y b incluida la cadena vaca:
aaa
bbb
aba
abaaaa
abaa
abbaa
14
3. Descripcin del lenguaje de las cadenas que empiezan por "a, continan con "b's y "c's y terminan
en "d
R.@ aA%BcC>*
4. Descripcin del lenguaje de las cadenas formadas por tro0os de cadena que pueden empezar (o no)
por una "a y continan con un nmero que tenga al menos un dgito; adems terminan siempre en
asterisco *
R.@ Aa71D@E2
?
C>F>
5. El lenguaje que describe es L= {las cadenas que comienzan con una a y continan con varias o ninguna a y
siguen con una b y continan con varias o ninguna b}
6. Sea el alfabeto {0,1}, la expresin regular 1(01)*, indicar el lenguaje que denota y algunas cadenas de dicho
lenguaje.
7. Sea el alfabeto {0,1}, la expresin regular (0|1)
+
, indicar el lenguaje que denota y algunas cadenas de dicho
lenguaje.
8. Sea el alfabeto {0,1, 2}, la expresin regular (0|1|2)
+
, denota el conjunto de nmeros en base 3, indicar el
lenguaje que denota y algunas cadenas de dicho lenguaje.
9. Sea el alfabeto {1, 2,3}, la expresin regular esta dado por (1|2)*3 definir las cadenas que componen
10. L1 = { (ab)
n
/ n > 1}
11. L2 = {a
n
b
m
/n > 4 y m > 3}
12. Todas las palabras que empiezan con a y terminen con o
13. Todas las palabras que empiecen con a ten!an una s y terminen con o
14. Todas las palabras que ten!an entre " y # letras
3.2 El l$n+,a-$ L( ) *$!ini*o po" ,na $.p"$#in "$+,la" se define:
1.
a) L() =
b) L(s) = { s }
c) si o s 8, entonces L(o) = { o }
2. si y son expresiones regulares, entonces
a) L( .) = L( ).L()
b) L(( + )) = L( ) U L()
3. si es una expresin regular
a) L(( )) = L( )
b) L(( )*) = (L( ))*
E-$mplo#: sobre V = {0, 1}:
El lenguaje que contiene una sub-cadena 11:
((0 + 1))*,1,1.((0 + 1))*
Todas las cadenas que alternan 0 y 1:
(((0,1)* + (0,1)*,0) + ((1,0)* + (1,0)*,1))
O tambin con la expresin
(1 + s).(0,1)*.(0 + s)
3.1., E1ui*alencia entre Expresiones <egulares
15
Dos expresiones regulares r y s son equivalentes si describen el mismo lenguaje, es decir, L(s)=
L(r). A partir de la definicin de equivalencia podemos comprobar las siguientes propiedades:
Propiedad 5efinicin
Asociativa (+) r+(s+t)=(r+s)+t
Conmutativa (+) r+s=s+r
Elemento neutro (+) +r=r+ =r
Asociativa (.) r.(s.t)=(r.s).t
Elemento neutro s (.) s .r=r. s =r
Distributiva a + (.) r.(s+t)=(r.s)+(r.t)
(s+t).r=(s.r)+(t.r)
EG,i&al$ncia $n/"$ $.p"$#ion$# "$+,la"$#:
s* = s
r = r =
* = s
r* r* = r*
r r* = r* r
(r*)* = r*
1!!2 3=ue genera una Expresin <egular4
Es de sealar que las expresiones regulares nos permiten comparar un texto con un patrn de bsqueda, para
ver si el texto contiene el patrn especificado.
Una expresin regular r tambin contendr caracteres del alfabeto, pero esos caracteres tendrn un significado
diferente: en una expresin regular todos los smbolos indican patrones
Las Expresiones Regulares son patrones que permiten buscar coincidencias con combinaciones de caracteres
dentro de cadenas de texto. Estos patrones pueden utilizarse con los mtodos $.$c y /$./ del objeto R$+E.p, y
con los mtodos ma/cH, "$plac$, #$a"cH y #pli/ del objeto S/"in+.
Las expresiones regulares se introducen para describir los lenguajes regulares, entonces los lenguajes regulares
son metalenguajes. Es decir las expresiones regulares son un metalenguaje para describir los lenguajes
regulares.
3.2. .U$;3.$.6 5E E6$.5;6 2I?I$;6.-
La palabra autmata evoca algo que pretende imitar las funciones propias de los seres vivos, especialmente
relacionados con el movimiento, por ejemplo, el tpico robot antropomorfo, en el campo de los traductores,
compiladores, procesadores e intrpretes, lo /undamental no es la simulaci-n del mo)imiento% sino la simulaci-n
de procesos para tratar in/ormaci-n! La informacin se codifica en cadena de smbolos, y un autmata es un
dispositivo que manipula cadenas de smbolos que se le presentan a su entrada, produciendo otras tiras o
cadenas de smbolos a su salida.
El autmata recibe los smbolos de entrada, uno detrs de otro, es decir secuencialmente, el smbolo de salida
que en un instante determinado produce un autmata, no solo depende del ltimo smbolo recibido a la entrada,
sino de toda la secuencia o cadena que ha recibido hasta ese instante.
16
Todo lo anterior conduce a definir un concepto fundamental, $#/a*o *$ ,n a,/ma/a; es toda la informacin
necesaria, en un momento dado para deducir, dado un smbolo de entrada en ese momento, cul ser el
smbolo de salida. Es decir conocer el estado de un autmata es conocer toda la historia de smbolos de
entrada, as como el estado inicial, estado en el que se encontraba el autmata al recibir el primero de los
smbolos de entrada.
El autmata tendr un determinado nmero de estados (pudiendo ser infinitos) y se encontrara en uno u otro
segn sea la historia de smbolos que le han llegado.
Se define configuracin de un autmata a su situacin en su instante, se define mo*imiento de un autmata
como el trnsito entre dos configuraciones. Si un autmata se encuentra en un estado determinado, recibe un
smbolo determinado, producir un smbolo de salida y efectuara un cambio o transicin a otro estado.
El campo de estudio de los traductores, procesadores e intrpretes son los lenguajes y las gramticas que los
generan. Los elementos del lenguaje son sentencias, palabras, etc. Formados a partir de un alfabeto o
vocabulario que no es otra cosa que un conjunto finito de smbolos, establecidas las reglas gramaticales, una
cadena de smbolos pertenecer al correspondiente lenguaje si tal cadena se ha formado obedeciendo esas
reglas. Entonces un autmata reconocedor de ese lenguaje, funciona de tal forma que cuando reciba a su
entrada una determinada cadena de smbolos indica si dicha cadena pertenece o no al lenguaje. Tambin se
mostrara como existe un tipo de autmata para reconocer cada uno de los tipos de lenguajes generados por las
correspondientes gramticas.
3.2.1 =u4 es un .utmata de Estados 2initos>
Un autmata finito o maquina de estado finito es un modelo matemtico de un sistema que recibe una cadena
constituida por smbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el autmata
reconoce.
Un autmata finito es capaz de reconocer un con(unto regular, es decir, un conjunto de cadenas denotado por
cualquier expresin regular. Recordemos que una expresin regular denota a un lenguaje regular.
3.2.2 5efinicin.-
Un a,/ma/a es una mquina terica que lee instrucciones en forma de smbolos y cambia de estado segn
stas.
5n aut-mata /inito es un reconocedor para un lengua(e, su programacin no es una tarea compleja, su
entrada es una cadena . y responde I#iJ si . es una sentencia del lenguaje, InoJ de otra manera.
3.2.3 <epresentacin.-
Un autmata es una representacin grfica A+"a!o *i"i+i*oC que muestra el proceso de reconocimiento de
una cadena de entrada. La simbologa utilizada es simple:
Un crculo representa un estado n, donde n es un nmero natural o bien una letra, generalmente.
Un arco representa la lectura de un smbolo a en la entrada. Transicin entre estados.
Estado de inicio #. # es generalmente 0 (cero).
Estado de aceptacin !.
a,b
a b
17
q
0
q
1
q2
n
0
F
reas de aplicacin de la teora de autmatas: Comunicaciones, Teora de Control, Circuitos secuenciales,
Reconocimiento de Patrones, Compiladores.
Los autmatas finitos se clasifican en:
a* 6etermin,sticos!
b* No 6etermin,sticos
I. .utmatas 2initos 5eterministicos:
Un a,/ma/a !ini/o *$/$"mini#/a (AFD) es una quntupla
M = (V,Q, , q0, F)
Donde:
V =es un alfabeto (sabemos s V)
Q =es un conjunto finito no vaco de estados, es decir, 0 < |Q| < .
=es una /unci-n de transicin:
: Q V Q; (q, ) = p
Es decir, si el autmata se encuentra en el estado q y 'lee' el smbolo va al estado p.
q0 =Q es el estado inicial.
F = Q es el conjunto de estados finales.
Podemos pensar de un autmata como un dispositivo que lee desde una cinta con smbolos y que realiza
cambios de estados internamente:
Un autmata finito deterministico es aquel que tiene a lo sumo una transaccin desde cada estado con cualquier
entrada y tiene por lo menos un estado de aceptacin.
Adems, un autmata finito deterministico AFD debe cumplir con las siguientes caractersticas:
a) Ningn estado tiene una transicin con s, es decir no hay transiciones con entrada s.
b) Para cada estado G y cada smbolo de entrada a, existe a lo ms un arco etiquetado por a saliendo de
G.
<epresentacin.-
Un autmata finito determinista se puede representar mediante:
Diagramas de transicin, es decir mediante grafos dirigidos.
a b
a b
AFD1
Dibujamos los autmatas como +"a!o# *i"i+i*o#, los estados representan los nodos del grafo y dibujamos una
arista atribuida con un smbolo entre dos nodos si existe una transicin correspondiente. Es decir el estado inicial
est marcado por una flecha y los estados finales estn marcados con doble crculo.
Tablas de transicin.
Estados Smbolos de entrada
A B
q0 q1 q0
q1 q1 q2
18
q
0
q
1
q2
q2 q2
Ejemplo Sea el AFD1 = ({a!" { q0q1 q2" # q0 {q2"$ donde # e%&'
de#inida por(
#(q0a$ = q1 #(q1!$ = q2
#(q1a$ = q1 #(q2!$ = q2
E-$mplo:
1. Un AFD que acepta la cadena de 0s y 1s donde el nmero de ceros y unos es par.
2. Verificar si el siguiente grafo reconoce la palabra: abbaaba
Formalmente w s {a,b}*
R.-
b
a a
b
:. (a|b)*abb
R.- b
b b
a
a b b
a
a a
#. Letra ' Letra 7 6ig 7 Sub * $
8!-
Letra
nicio Letra
6ig
Sub
K. Generar el grafo para el siguiente predicado: { W s {a,b}* / |W| a s 2 }, la palabra contenga par de as
R.-
b a
a
L. Generar el grafo para el siguiente predicado: { W s {a,b}* / W
1
,

W
1
=aba}, toda la combinacin de a y
b y que contenga la palabra aba
R.- a
b a

a b a

b b
M. Generar un AFD para cadenas que pertenecen al alfabeto {,0} y terminan con 0
19
)
0
)
1
)
0
)
1
)
2
)
3
)
4
)
0
)
3
)
0
)
1
)
0
)
2
)
3
)
4
N. Generar un AFD para cadenas que pertenecen al alfabeto {a,b} y que la palabra contienen exactamente 3 b
s.
R.-
a a a a

b b b

E. Generar un AFD para {a,b}, y acepta la palabra que contiene como longitud=6.
R.-

b b b b b b

a a a a a a
1D.Determinar el lenguaje reconocido por los siguientes autmatas de estados finitos deterministas.
a.
R (a).-
R (b).-
b.
11.Dado A = { a% b}, muestre que una cadena de entrada es aceptada por el autmata de estado finito dado por
la siguiente grfica:
S y slo s la cadena termina en a. Cul es la tabla de transicin de estados?
12.Muestre que una cadena de entrada, dado A = { a% b} es aceptada por el autmata de estado finito dado por
la siguiente grfica:
20
)
0
)
2
)
3
)
4
)
0
)
2
)
3
)
4
)
4
)
3
)
3
S y slo s la cadena termina en bb. Cul es la tabla de transicin de estados?
1:.Trace la grfica de un autmata de estado finito que acepte cadenas del conjunto A = { a% b} que posean:
a. Al menos dos a!
b. Exactamente dos a.
c. Contiene n letras a, donde n es un nmero mltiplo de 3.
a! E1ui*alencia entre Expresiones <egulares ) .utmatas 2initos.-
Se muestran equivalencias entre expresiones regulares simples y autmatas finitos expresados mediante el
diagrama.
E-$mplo:
E.p"$#in R$+,la": a

a

E.p"$#in R$+,la": a*
a

E.p"$#in R$+,la": a+
a
a

E.p"$#in R$+,la": (a|b)

a
b
E.p"$#in R$+,la": (a|b)*
a

b
E.p"$#in R$+,la": (ac|b)*
21
)
0
)
1
)4
)
0
)
1
)
0
)
1
)
0
b
a

c
E.p"$#in R$+,la": (acd|b)*
b
a c

c
E.p"$#in R$+,la": a
+
b
+
a b
a b


E.p"$#in R$+,la": a(b*|a*)ba* ==== a(b*b|a*b)a*
a a
a b

b
II. .utmatas 2initos ?o 5eterministicos:
Un a,/ma/a !ini/o no *$/$"mini#/a (AND) es un autmata finito que, a diferencia de los autmatas finitos
deterministas (AFD), posee al menos un estado 9 :, tal que para un smbolo a Z del alfabeto, existe ms de
una transicin (9, a) posible.
En un AFND puede darse cualquiera de estos dos casos:
Que existan transiciones del tipo (9, a)=91 y (9, a)=92, siendo 91 = 92;
Que existan transiciones del tipo (9, s), siendo 9 un estado no-final, o bien un estado final pero con
transiciones hacia otros estados.
Cuando se cumple el segundo caso, se dice que el autmata es un a,/ma/a !ini/o no *$/$"mini#/a con
/"an#icion$# &ac'a# o /"an#icion$# ( (abreviado AND@(). Estas transiciones permiten al autmata cambiar de
estado sin procesar ningn smbolo de entrada. Considrese una modificacin al modelo del autmata finito para
permitirle ninguna, una o ms transiciones de un estado sobre el mismo smbolo de entrada.
Un a,/ma/a !ini/o no@*$/$"mini#/a (AFND) es una quntupla
M O AP; 6; ;GD ; C donde :
P es un alfabeto.
6 es un conjunto finito no vacio de estados, es decir: 0<|Q|<
es (una de las dos definiciones, que entre si son equivalentes)
A6. PC.6 una relacin, es decir
22
)
0
)
1
)
0
)
1
)
1
)
1
)
1
)
0
)
1
)
1
)
0
: 6. APU(C QPA6C o una funcin es decir, siendo PA6C e conjunto de las partes de 6
q0 Q es el estado inicial.
6 es el conjunto de estados finales.
E./$n#in *$ a ca*$na# : 6 . P>Q26
q Q, x P>, a P
(q, /) = {q}
(q, xa) = U (p, a)
Lenguaje aceptado por un AFND
.plicacin.-
*l AF+D , el AFD %on eq-i.alen&e% en e%&o ,a q-e %i -n len/-a0e e% re1ono1ido por el AF+D &am!i2n
%er' re1ono1ido por -n AFD , .i1e.er%a. *l e%&a!le1imien&o de e%&a eq-i.alen1ia e% 3&il porq-e a .e1e%
la 1on%&r-11i4n de -n AF+D para re1ono1er -n len/-a0e de&erminado e% m'% #'1il q-e 1on%&r-ir -n AFD
para di15o len/-a0e. 6am!i2n e% impor&an&e porq-e el AF+D %e p-de -&ili7ar para red-1ir la
1omple0idad del &ra!a0o ma&em'&i1o ne1e%ario para e%&a!le1er m-15a% propiedade% impor&an&e% en la
&eor8a de la 1omp-&a1i4n.
E-$mplo# *$ A,/ma/a ini/o D$/$"mini#/ico:
. A = ({q0, q1, q2}, {a, b, c}, , q0, {q0, q1, q2})
T"an#icin
(q0, a)= {q0, q1, q2} (q1, a)=
(q0, b)= {q1, q2} (q1, b)= {q1, q2} _(q2, b)=
(q0, c)= {q2} (q1, c)= {q2} _(q2, c)= {q2}
(q2, a)=
Ta%la *$ /"an#icin
A R C
GD {q0, q1, q2} {q1, q2} { q2}
G1 {q1, q2} {q2}
G2 {q2}
G"a!o *i"i+i*o
a b c
a, b b, c



a, b, c
23
)1
)0
)2
No/a#
El resultado de la transicin puede ser el conjunto vacio (pares estado/smbolo terminal para que las que el
autmata no puede transitar) se suelen omitir estas entradas en las tablas de transiciones.
El autmata puede transitar sin leer ningn smbolo de entrada (q1, /) = {q0, q1}
E-$mplo: un AFND para el lenguaje
L= {w | w {0,1}*, w contiene dos Os y dos 1s}
II. E-$mplo
a,b,c
a a, b


III. E-$mplo
a,b a
b b



3.3.1 Proceso de $ransicin .-
El diagrama de transicin de estados de dicho autmata es el grafo que cumple las siguientes propiedades:
El conjunto de nodos del grafo es Q
El nodo correspondiente al estado inicial esta marcado con una flecha
Los f nodos correspondientes a los estados finales estn marcados mediante doble circulo
Existe un arco desde el nodo qi a qj etiquetado mediante el smbolo a si y solo si qj (qi,a)
Ejemplo:
0,1 /
0 1

/

3.3.2 "onfiguracin o 2uncionamiento .-
3.3.3 El Lenguaje 1ue .cepta un .2?5 .-
ntuitivamente, un AFND acepta todas las palabras para las que pueda transitar desde el estado inicial hasta a
un estado final.
E-$mplo
El AFND del ejemplo anterior acepta las palabras
{ x {0,1}* | x termina en 01}
Que palabras acepta el siguiente AFND
AND A S
QGD {q1,q4}
24
)1
)0
)2
)1
)0
)2
)1
)0
)2
G1 {q2}
G2 {q3}
>G:
GT {q5}
>GK {q4}
El siguiente autmata acepta la palabra a ya que acepta a)
AFND A B S
*p {q}
Q {q,r,s} {p,r} {s}
R {p,s} {r,s}
*S {r}
:ue lengua(e reconoce
Que lenguaje reconoce
3.3.# <elacin entre un .utmata de Estados 2initos 5eterministico ) un .utmata de Estados 2initos ?o
5eterministico.-
3.2. 0ram/ticas <egulares
5efinicin de 0ram/tica: La Gramtica es un ente formal para especificar, de una manera finita, el conjunto de
cadenas de smbolos que constituyen un lenguaje.
5efinicin de 0ram/tica <egular.-
El uso de +"amU/ica# es otra forma de describir un lenguaje en forma general y rigurosa.
Una gramtica es una cudrupla G = (N; T; S; P) donde:
25
N: Conjunto de smbolos no terminales del alfabeto
T: Conjunto de smbolos terminales.
S: es el smbolo inicial y se cumple que S ( T
P: es un conjunto finito de reglas de produccin.
Todas las cadenas del lenguaje definido por la gramtica estn formadas por smbolos del vocabulario terminal.
El &oca%,la"io A#'m%olo#C /$"minal se define se define por enumeracin de los smbolos terminales.
El &oca%,la"io A#'m%olo#C no /$"minal es el conjunto de smbolos introducidos como elementos auxiliares para
la definicin de la gramtica y que no figuran en las sentencias del lenguaje. El vocabulario se define por
enumeracin de los smbolos no terminales.
El #'m%olo inicial S es un smbolo no terminal a partir del cual se aplican las reglas de la gramtica para
obtener las distintas reglas de la gramtica.
Las Producciones son P son reglas que se aplican desde el smbolo inicial para obtener las cadenas del
lenguaje. El conjunto de producciones P se define por medio de enumeracin de las distintas producciones, en
forma de reglas o por medio de un metalenguaje por ejemplo RN (Backus Naur Form) o ERN (Extended
Backus Naur Form).
Una gramtica se dice que es regular si sus reglas de produccin son de la forma:
A uB A u
Sus producciones son de la forma:
1. Lin$al po" la *$"$cHa
AaB
Aa
donde A,BN , aT
S bA
AaaA
A b
S abaA
AaaB
A ab
A b
B abB
2. Lin$al po" la i0G,i$"*a:
ABa
Aa,
donde A,BN , aT
Se permiten producciones de la forma S/
Los lenguajes representados por este tipo de gramticas se denominan l$n+,a-$# "$+,la"$#.
Ejemplos:
26
Sea la Gramtica G(N,T,S,P) donde N={a,b}, T={S}, y el conjunto de producciones es:
Sab
SaSb
Sea la Gramtica G({u},{A,B},A,P) donde P son las producciones siguiente:
A uB
A u
AaL
L s
Que lenguaje genera dicha gramtica.
Sea la gramtica G({0,1},{A,B},A, {AB1|1,BA0}) generar las reglas de produccin para el lenguaje:
L1 = {1, 101, 10101, ... } = {1(01)
n
| n = 0, 1, 2, ...}
Generar la gramtica para el lenguaje: a>%
Dada la gramtica regular obtener su expresin regular:
SaS
SbA
A s
A cA
a*bc*
Gramtica lineal derecha:
G1 O AVD; 1W; VA; RW; A; VAQ1R B /; RQDA; RQDWC
3.3.1 Proceso de 5eri*acin
3.3.2 ?otacin @?2 @acAus ?our 2orm!.-
Se utiliza extensamente como notacin para las gramticas describir le los lenguajes de la computadora, de los
sistemas de comando y de los protocolos de comunicacin, as como una notacin para representar partes de
las gramticas de la lengua natural (por ejemplo, el metro en la poesa de Venpa). La mayora de los libros de
textos para la teora o la semntica del lenguaje de programacin documentan el lenguaje de programacin en
BNF.
Un lenguaje de programacin al igual que los lenguajes humanos, debe seguir las reglas sintcticas necesarias
para construir instrucciones u rdenes correctas en su estructura.
Para la definicin de dichas reglas utilizaremos la notacin BNF que se basa en la descripcin de cada elemento
gramatical en funcin de otros ms simples a partir de precisos esquemas definidos a partir de sus reglas de
produccin correspondientes.
La representacin de las reglas se hace por medio de la utilizacin de smbolos que a su vez utilizan otros
smbolos previos denominados meta-smbolos.
Dichos meta-smbolos son los siguientes:
27
de definicin (el esquema de la derecha desarrolla el elemento de la izquierda)
| de alternativa
() de Agrupacin
{ } de Repeticin
[ ] de Opcin
El$m$n/o no T$"minal.@ Cualquier elemento que necesita ser definido mediante la combinacin los meta-
smbolo junto con los elementos terminales o incluso otros no terminales. Siempre se encuentran a la izquierda
del meta-smbolo de asignacin.
El$m$n/o T$"minal.@ Constituyen los elementos propios del lenguaje y siempre deben estar definidos en la parte
derecha del meta-smbolo de asignacin.
E-$"cicio#:
Dada las siguientes reglas de produccin, elegir la opcin en la que todos nmeros reales sean
gramaticalmente correctos.
Digito 1|2|3|4|5|6|7|8|9|0
Sec_digito digito {digito}
V_entero [+|-] sec_digito
Escala e|E v_entero
Num_real [V_entero].[Sec_digito][esc]
aC +3.,-2.2 e-2,., .E2
%C 5.e1, 2.2, .0, .E
cC 8.-e1, -2.2, 0.0, 1.e
Dada la siguiente notacin BNF, cual es la correcta.
Expresion [letra*numero]
Letra [a|b]
numero [1|2]
aC +3.,-2.2 e-2,., .E2
%C 5.e1, 2.2, .0, .E
cC 8.-e1, -2.2, 0.0, 1.e
3.3.3 Lenguaje 1ue .cepta
3.3.# E1ui*alencia entres un .2 ) =ue es una 0ram/tica <egular>
Son equivalen a los AF pues tratan sobre el mismo tipo de lenguajes: los lenguajes regulares.
Las reglas de las GR tienen en la cabeza solo un variable y en su cuerpo o un smbolo
Terminal o un smbolo Terminal seguido de una Variable, por tanto son de la forma:
A a aB y A a a,
donde A,B en V y a en T
28
A partir de un AF que reconoce un lenguaje regular se puede obtener una GR que lo
genere. Por ejemplo para el L = (0 + 1)*10, el siguiente AFND lo reconoce:
El AFD equivalente sera:
Para obtener la GR a partir del anterior AFD se debe hacer las siguientes equivalencias:
V = Q = { q0, q1, f1 } que por conveniencia se etiquetaron como { A, B, C }
T = Z = { 0, 1 }
P, el conjunto de producciones se obtiene aplicando la siguiente transformacin: Para cada transicin del AFD
de la forma (q, a) = p, tal que q, p en Q y a en Z, se escribe la regla q ap, y si p en F entonces se agrega la
produccin q a, es decir como si p fuese s.
S = A = q0, es decir el smbolo inicial de la gramtica es el estado inicial del AFD Se esta forma se obtiene que
G = ({ A, B, C },{ 0, 1 }, P, A), donde P es el siguiente conjunto de producciones:
1. A 1B
2. A 0A
3. B 1B
4. B 0C
5. B 0
6. C 1B
7. C 0A
+(emplos;
a* Obtener un aut-mata /inito para la gram<tica regular = siguiente;
SaA
SbA
AaB
AbB
Aa
BaA
b*
UNIDAD T :
EL LENGUAJE REGULAR
#.1 El Lenguaje <egular.-
#.2 $eorema de E1ui*alencia entre un .utmata de Estados 2initos ) una Expresin
<egular.-
UNIDAD K:
AUT<MATAS DE PILA = GRAMATICAS LIRRES DE CONTE3TO
K.1 A,/ma/a# *$ Pila
&.1.1 B=u4 es un .utmata de Pila>.-
29
Un autmata de pila es un modelo matemtico de un sistema que recibe una cadena
constituida por smbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que
el autmata reconoce. El lenguaje que reconoce un autmata con pila pertenece al grupo de
los lenguajes libres de contexto en la clasificacin de la Jerarqua de Chomsky.
La diferencia con aquellos es que el smbolo ledo, x , tena en cuenta el estado de la mquina A,
donde se encontraba y la funcin de transicin ubicada en el par ordenado (A,x) nos daba el
destino del nuevo estado B. Utilizando el correspondiente grafo esta transicin se manifestaba
como
Las transiciones en los autmatas de pila se representan en cambio
A es el estado origen donde se encuentra la mquina. Si la tira en la celda seala por la cabeza
lectora tiene el smbolo al x, lee lo que tiene la pila en su cabeza si es c. Lo saca y graba en la
cabeza de la pila el elemento d.
Debemos agregar que al comienzo La primera celda de la cinta se coloca sobre la cabeza lectora
con la pila vaca.
Lo importante es el agregado a los autmatas finitos de un sistema de memoria interna en forma
de pila con lo que se incrementa considerablemente el potencial de procesamiento de lenguaje
del autmata.
Consideremos algunas caractersticas que se presentan
# es un smbolo de pila que suele usarse como elemento de control para detectar el fin de la pila.
La palabra vaca & juega de distinta manera segn las tres posiciones que puede ocupar en la
flecha de la transicin.
En primer lugar sobre la flecha significa que no se lee nada de la tira y la misma no avanza una
posicin,
En segundo lugar no extraemos nada de la pila
En tercer lugar no ponemos nada en la pila.
Vamos a dar un ejemplo de un autmata a pila que justamente reconoce las palabras del lenguaje
(xnyn/n es N) para el cual no existe autmata finito que lo reconociera.
K.2.1 D$!inicin.@
Un autmata de pila es formalmente una sxtupla de la forma AX; 8; P; *$l/a; D; C, donde
X Conjunto finito de estados.
8 Alfabeto de la mquina.
P Conjunto finito de smbolos de pila.
D$l/a Coleccin finita de transiciones.
D Estado inicial.
Conjunto de estados de aceptacin.
Esquemticamente:
30
SIMILITUD DIERENCIA
El autmata de pila analiza cadenas de la
misma manera que los autmatas finitos.
K.:.1 Con!i+,"acin o ,ncionami$n/o
K.T.1 Op$"acion$# con la Pila
5.5.1 El Lenguaje 1ue .cepta .- Se describe el proceso de aceptacin o rechazo de una palabra de Z*
mediante una sucesin de movimientos.
Un AP= (Z, F, Q, A0, q0, f, F) puede reconocer palabras del alfabeto de entrada de dos formas distintas:
- por estado final:
LF(AP) = {x | (q0, x, A0) [* (p, /, X), con pF, XF*}
- por vaciado de pila :
LV(AP) = { x | (q0, x, A0) [* (p, /, /) con pQ}
LF(AP) y LV(AP) representan a los lenguajes reconocidos por el autmata AP por estado final y por vaciado de
pila respectivamente.
Cuando la aceptacin se realiza por vaciado de pila, el conjunto de estados finales F es irrelevante.
E1ui*alencia: Dos autmata a pila (por vaciado de pila o por estado final), AP1 y AP2, son equivalentes, si
aceptan el mismo lenguaje, es decir, si L(AP1)=L(AP2).
K.1.1 R$p"$#$n/acin G"U!ica *$ ,n A,/ma/a *$ Pila
K.2 G"amU/ica# Li%"$# *$ Con/$./o
K.2.1 In/"o*,ccin.@
Puede que trabajar con conjuntos sea divertido, pero es complicado manipular conjuntos, y probar las
propiedades de conjuntos. Para estos propsitos introduciremos definiciones sintcticas de conjuntos,
llamadas gramticas. Esta seccin solo analizara las llamadas gramticas libres de contexto, un tipo de
gramticas que son convenientes para el procesamiento automtico, y que puede describir una gran clase de
lenguajes.
31
p q p
Si utilizamos todo el poder de los lenguajes libres de contexto obtenemos por lo general compiladores
ineficientes y que probablemente no son buenos en el manejo de entradas errneas. Puede que este ultimo
hecho no sea tan importante desde el punto de vista terico, pero si desde el punto de vista pragmtico. La
mayora de las invocaciones de compiladores tienen aun como su meta primaria el descubrir errores cometidos
cuando se transcribe un programa, y no tanto la generacin de cdigo real. Este aspecto esta aun ms presente
en lenguajes fuertemente tipados como Java y Hugs, donde el tipo de verificacin realizada por los
compiladores es una de las principales contribuciones al incremento de la eficiencia en el proceso de
programacin.
Al construir un reconocedor para un lenguaje descrito por una gramtica libre de contexto uno a menudo quiere
verificar si la gramtica tiene o no propiedades especificas deseables. Desafortunadamente para los humanos no
siempre es fcil, y a menudo es prcticamente imposible ver si estas propiedades son o no validas. Adems
puede que sea caro, esto ha llevado a toda una jerarqua de clases de las gramticas libres de contexto,
algunas de las cuales son ms potentes, y otras son ms fciles de verificar por maquina, y algunas que pueden
ser fcilmente verificadas por una simple inspeccin humana.
La observacin general es que cuanto ms precisa sea la respuesta a una pregunta especifica, mayor el
esfuerzo computacional requerido a cada vez menor la posibilidad de que la pregunta sea respondida por un ser
humano.
&.2.2 5efinicin
Gramtica Libre de Contexto G es una tupla de 4 elementos AT; N; R; SC donde
T: Conjunto finito de smbolos terminales.
N: Conjunto de smbolos no terminales.
S: es el smbolo inicial y se cumple que S ( N
P: es un conjunto finito de reglas de produccin. Cada produccin tiene la forma A % donde A es un no
terminal y es una secuencia de no terminales y terminales.
El adjetivo Libre de Contexto se debe a las reglas de produccin especficas que son consideradas: exactamente
un no terminal en el lado izquierdo. No todo lenguaje puede ser descrito mediante una gramtica libre de
contexto.
&.2.3 "on*enciones de ?otacin.-
Muchas reglas de produccin son escritas en una solo lnea. Puesto que esto ocupa mucho espacio y
ya que las reglas de produccin forman el corazn de cada gramtica, se tiene el siguiente esquema:
S
S
Unimos las dos producciones de S en una lnea utilizando el smbolo B
S |
De esta forma podemos reescribir cualquier cantidad de reglas de escritura para un no terminal. La
notacin que utilizaremos para gramticas es conocida como BNF Backus Naur Form en honor a estos
quienes fueron los primeros en utilizar esta gramtica.
Otra prctica de produccin tiene que ver con los nombres de producciones. Algunas veces quereos dar
nombres a las reglas de produccin. Los nombres sern escritos delante de la produccin, como por
ejemplo:
Alpha: S
Beta: S
&.2.# Proceso de 5eri*acin.-
Hay dos tipos de inferencias:
nferencia recursiva
Derivacin
1. 5eri*acin.-
32
Aplicacin de las producciones de una Gramtica para obtener una cadena de terminales. Consiste
en sustituir la variable de la cabeza por el cuerpo de la produccin. Smbolo empleado es: (un
paso de derivacin)
* Este smbolo indica mltiples pasos de derivacin
Por ejemplo de la GLC anterior
S / | 0 | 1 | 1S1 | 0S0
Una derivacin sera la siguiente:
S ==>4 1S1 ==>4 11S11 ==>2 110S011 ==>3 1101011 esta cadena es binaria palindrome
2. Cr(ol de 5eri*acin.-
ES un rbol formado a partir de la derivacin de una gramtica. Sirve para estudiar la ambigedad
(ms de un rbol de derivacin y por tanto de interpretaciones)
Ca"ac/$"'#/ica#:
- Cada nodo interior es variable.
- Cada nodo hoja es Terminal o
- Si existe una produccin A a X1X2 .. Xk, ver rbol de derivacin siguiente:
Ejemplo:
Por ejemplo, en la GLC anterior (binario palindromo), donde
G = ({S},{0,1},P,S), y P = { S / | 0 | 1 | 1S1 | 0S0 }
La derivacin anterior de la cadena 1101011, se obtiene el siguiente rbol de derivacin:
La derivacin:
S ==>4 1S1 ==>4 11S11 ==>2 110S011 ==>3 1101011
&.2.& Lenguaje de la 0ram/tica.-
Hemos visto como obtener una gramtica a partir de un lenguaje dado.
Si G es una GLC, G = (V, T, P, S) entonces
L (G) = { w esta en T* | S * w }
El lenguaje generado por una GLC G es el conjunto de cadenas formadas por smbolos terminales que tienen derivaciones
desde el smbolo inicial S de la gramtica.
&.2.' .r(oles de 5eri*acin.-
33
Para cualquier derivacin parcial, es decir una derivacin que contiene no terminales en su lado derecho, puede
haber varias producciones de la gramtica que pueden usarse para extender la derivacin parcial y por lo tanto,
se puede tener diferentes derivaciones para la misma frase:
Solo difieren el orden en el cual se eligen los pasos de derivacin. Todas estas derivaciones se
consideran equivalentes.
Se han elegido diferentes pasos de derivacin. Se considera que tales derivaciones son diferentes.
Ejemplo:
SSS
Ss

6
6 6

s 6 6
s s
lenguaje sss
6
6 6

6 6 s
s s
lenguaje sss
Pueden existir varios rboles de derivacin
&.2.% 6implificacin de 0ram/ticas Li(res de "ontexto
1- Eliminar producciones /
2- Eliminar producciones unitarias
3- Eliminar los smbolos intiles
1- Eliminar D producciones . a E !
Primero se revisa si el lenguaje contiene a la cadena vaca /:
Si / no est en L no necesitamos / producciones, por tanto aplicamos el algoritmo.
Si / en L, entonces generamos una GLC para L {/} y despus al final hacer que:
G' = ( V U {S'}, T, P', S') y V I S' = y P'= P U (S' a S |/)
Existe un algoritmo para detectar smbolos nulificables
A es nulificable si A

/
34
Si A / en P entonces A es nulificable
Si A en P y todos los smbolos de son nulificables A es nulificable
E-$mplo: Dada la GLC G = ({S,A,B,C,D},{a,b},P,S), eliminar sus producciones /
S ABCBD
A CD
B Cb
C a | /
D bD | /
S ABCBD | BCBD | ABCB | ABBD | ABB | BBD | BCB | BB
A CD | C | D
B Cb | b
C a
D bD | b
2C Elimina" p"o*,ccion$# ,ni/a"ia# AA a R C
Son producciones de la forma A a B, donde A y B en V
Definicin de "derivable de A:
Si A B es una produccin, entonces B es derivable de A.
Si C es derivable de A, C B es una produccin y B A, entonces B es derivable de A.
PRECONDCON = { La GLC G = (V, T, P, S) no contiene /-producciones }
1. P1= P
2. Para todos A en V = { B | B es derivable de A }
3. Para cada par (A, B) tal que B es derivable de A y cada produccin no unitaria B ,
aadir la produccin A a P1 sino esta presente ya en P1.
4. Eliminar todas las producciones unitarias de P1.
FN
Ejemplo: Tomamos el resultado del ejercicio anterior
1- P1= P = S ABCBD | BCBD | ABCB | ABBD | ABB | BBD | BCB | BB
A CD | C | D
B Cb | b
C a
D bD | b
2- S=
A= {C, D}
Prof. Hilda Contreras Teora de la Computacin (Pregrado) 9
B=
C=
D=
3- Pares (A, C), Como C a y A C entonces A a
(A, D), Como D bD y D b y A D entonces A bD y A b
A a A C
4- P' = P1 U AbD y A b - A D
35
Resultando la siguiente GLC:
S ABCBD | BCBD | ABCB | ABBD | ABB | BBD | BCB | BB
A CD | a | bD | b
B Cb | b
C a
D bD | b
:@ Elimina" #'m%olo# inY/il$#
Los smbolos tiles (smbolos generadores de terminales y alcanzables desde S).
Sea G = (V, T, P, S), X es un smbolo til si S

X

w para y en (V U T)* y en w T*
ALGORITMO pa"a $limina" &a"ia%l$# no +$n$"a*o"a#
VV: Variables Viejas
VN: Variables Nuevas
NCO
VV =
VN = { A | A w en P y w en T* }
MENTRAS VN VV HACER
VV = VN
VN = VV U { A | A en P y en (VV U T)* }
FNMENTRAS
V' = VN
P' = { A| A en V' y en (V' U T)* }
FN
Se eliminan todas las producciones en donde intervienen 1 o ms de los smbolos no generadores de
terminales. Las V' = VN son solo variables generadoras.
E-$mplo: Elimine las variables no generadoras de la siguiente GLC G = ({S,A},{a},P,S), con las
producciones P:
S AB | a
A a
(0)
VV = , T = {a}
VN = {A, S}
(1)
VV = {A, S}
VN = {A, S} U {A, S} = {A, S}
Parada (VV = VN) {A, S} = {A, S}
V'= {A, S}
P'= S a
A a
Decimos que X es "generador si X * w (con sucesivas derivaciones puede derivar una cadena de
terminales) para alguna cadena terminal w. Todo smbolo terminal es generador, ya que w puede ser
ese mismo smbolo terminal, que se deriva en cero pasos
36
&.2., Ejercicios
1. L = {0 n 1 n , n 1}
S 01 | 0S1
2. L = {0 n 1 n , n 0}
S / | 01 | 0S1
3. L = {0 n 1 m , n m}
S 0 | 0S | 0S1
E-$"cicio# pa"a ca#a:
Dar una gramtica libre de contexto para el conjunto de frases sobre el alfabeto 3 donde:
1. X={a}
2. Dar una gramtica para palndromes sobre el alfabeto {a,b}
3. Dar una gramtica para el lenguaje
L={s s
R
| s s {a,b}*}
Este lenguaje es conocido como lenguaje de palndromes espejo.
4. Una secuencia de paridad es una secuencia que consiste de ceros y unos que tiene una cantidad
par de unos. Dar una gramtica para secuencias de paridad.
5. Dar una gramtica para el lenguaje
L={ w | w s {a,b}* nr(a,w) = nr(b,w)}
&.2.F

UNIDAD L:
EL LENGUAJE LIRRE DE CONTE3TO
L.1 El lenguaje Li(re de "ontexto .-
'.2 2ormas ?ormales.-
'.3 E1ui*alencia entre un .utmata de Pila ) una 0ram/tica Li(re de "ontexto
'.# B"omo demostrar 1ue un Lenguaje es Li(re de "ontexto>
'.& Gerar1u7a de "HomsA)
UNIDAD M
LAS MA6UINAS DE TURING
%.1 B=u4 es una 3/1uina de $uring>
La mUG,ina *$ T,"in+ es un modelo computacional creado por Alan Turing con el cual l
afirmaba que se poda realizar cualquier cmputo.
La mquina de Turing, como modelo matemtico, consta de un cabezal lector/escritor y una cinta infinita en la
que el cabezal lee el contenido, borra el contenido anterior y escribe un nuevo valor.
Las operaciones que se pueden realizar en esta mquina se limitan a:
avanzar el cabezal lector/escritor para la derecha;
avanzar el cabezal lector/escritor para la izquierda.
37
%.2 5efinicin
%.3 <epresentacin 0r/fica de una 3/1uina de $uring
%.# $ipos de 3a1uinas de $uring
%.& 2unciones con Iarios Par/metros
%.' $esis de "HurcH
%.% Extensiones de una 3/1uina de $uring
III. RIRLIOGRAA.
BUTRAGO, BENJAMN H. IComp,/a%ili*a* 4 L$n+,a-$# o"mal$#J, 2000
HOPCROFT JHON y ULLMAN JEFFREY, In/"o*,c/ion /o A,/oma/a TH$o"4; Lan+,a+$# an*
Commp,/a/ion% 1992
LEWS, PAPADMTROU , El$m$n/# o! /H$ TH$o"4 o! Comp,/a/ion% 1996
MOLE , ARBB, KFOURY, An In/"o*,c/ion /o o"mal Lan+,a+$ TH$o"4% 1992
AHO ALFRED, SETH RAV y ULLMAN JEFFERY, "ompiladores Principios8 t4cnicas )
Herramientas! 1990
GRES, DAVD "onstruccin de "ompiladores. 1990
SNCHEZ, GONZALO, "ompiladores e Interpretes! 1992
WATT, DAVD. IP"o+"ammin+ Lan+,a+$J, 1991
38

Potrebbero piacerti anche