62483033 teoria de grafos y automatas

63
Unidad I: Teoría de Grafos La teoría de grafos tiene un inicio preciso: comenzó con la publicación de un artículo en 1736 por el matemático suizo Leonhard Euler (1707-1783). La base en que se apoya su trabajo surgió de un problema ahora muy popular, conocido como los siete puentes de Koningsberg. Existe una variedad de problemas en la vida real que a menudo necesitan ser representadas. Por ejemplo, el costo mínimo de viajar de una ciudad a otra, búsqueda de la información, representación de las estructuras químicas, diagramas de flujo, etc. Los grafos son módulos naturales para representar tales relaciones. En general, la teoría de grafos proporciona herramientas poderosas para resolver problemas que son modelados por grafos. En general, existen grafos para ser aplicados en tareas tales como: Investigación de Operaciones. Diseño, análisis de circuitos en Ingeniería Eléctrica. Identificación de estructuras moleculares en la Química Orgánica. Segmentación de Programas en Ciencias de la Computación. Telecomunicaciones. Etc. 1. Definiciones En esta sección se darán a conocer los conceptos básicos para la comprensión de temas relacionados con grafos. Es necesario conocer estos conceptos antes de abordar cualquier otro tema. Un grafo dirigido ó no dirigido es un conjunto G=(V, E), donde V es un conjunto de vértices o nodos y E un conjunto finito de lados. Cada arco ó lado perteneciente a E corresponde a un par ordenado de vértices <u, v> donde u y v son llamados cola y cabeza respectivamente. Cuando no importa la dirección de las aristas, la estructura G=(V, E), donde E es ahora un conjunto de pares no ordenados sobre V, es un grafo no dirigido.

Upload: hector-castillo

Post on 29-Nov-2015

46 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 62483033 Teoria de Grafos y Automatas

Unidad I: Teoría de Grafos

La teoría de grafos tiene un inicio preciso: comenzó con la publicación de un artículo en 1736 por el matemático suizo Leonhard Euler (1707-1783).

La base en que se apoya su trabajo surgió de un problema ahora muy popular, conocido como los siete puentes de Koningsberg.

Existe una variedad de problemas en la vida real que a menudo necesitan ser representadas.

Por ejemplo, el costo mínimo de viajar de una ciudad a otra, búsqueda de la información, representación de las estructuras químicas, diagramas de flujo, etc.

Los grafos son módulos naturales para representar tales relaciones. En general, la teoría de grafos proporciona herramientas poderosas para resolver problemas que son modelados por grafos.

En general, existen grafos para ser aplicados en tareas tales como:• Investigación de Operaciones. • Diseño, análisis de circuitos en Ingeniería Eléctrica. • Identificación de estructuras moleculares en la Química Orgánica. • Segmentación de Programas en Ciencias de la Computación. • Telecomunicaciones. • Etc.

1. Definiciones

En esta sección se darán a conocer los conceptos básicos para la comprensión de temas relacionados con grafos. Es necesario conocer estos conceptos antes de abordar cualquier otro tema.

Un grafo dirigido ó no dirigido es un conjunto G=(V, E), donde V es un conjunto de vértices o nodos y E un conjunto finito de lados. Cada arco ó lado perteneciente a E corresponde a un par ordenado de vértices <u, v> donde u y v son llamados cola y cabeza respectivamente.

Cuando no importa la dirección de las aristas, la estructura G=(V, E), donde E es ahora un conjunto de pares no ordenados sobre V, es un grafo no dirigido.

Page 2: 62483033 Teoria de Grafos y Automatas

Para grafos no dirigidos el conjunto E se puede definir como una relación que es simétrica e irrefleja sobre V.

En el caso contrario cuando sí importa la dirección de las arcos, la estructura G=(V, E), donde E es ahora un conjunto de pares ordenados sobre V, se conoce como grafo dirigido ó digrafo.

Un camino en un grafo es una sucesión de arcos adyacentes (v0,v1),(v1,v2)...(vk-1,vk) denotado usualmente por (v0,v1,v2,...,vk).

El número de arcos en un camino es llamado longitud del camino. Un camino es llamado ciclo, circuito ó camino cerrado si el primero y el último vértice en el camino son el mismo. En caso contrario el camino es abierto. Un grafo se dice acíclico si no contiene ciclos.

Si no se repite ninguna arista en el camino x-y, entonces el camino es un recorrido x-y. Un recorrido x-x cerrado es un circuito. Cuando ningún vértice del camino x-y se presenta más de una vez, el camino es un camino simple x-y. El término ciclo se usa para describir un camino simple cerrado x-x.

1.1 Arcos de un Grafo

En la figura se señalan los arcos que pertenecen al grafo. El grafo que se observa tiene el siguiente conjunto de arcos:

El conjunto de arcos es E = {<A,B>,<B,C>,<C,D>,<D,E>,<E,A>}.

1.2 Vértices de un Grafo

En la figura se observan 5 vértices pertenecientes al grafo. El conjuntos de vértices es V = {A, B, C, D}.

Arco <A,B>

Vértice

Page 3: 62483033 Teoria de Grafos y Automatas

1.3 Camino de un Grafo

En la figura se puede observar que un camino es una sucesión de arcos adyacentes. El camino que se señala es el camino de el vértice A al vértice D. El camino que se obtiene es el siguiente:

Camino de A a D = { <A,B>,<B,C>,<C,D> } ó bien {A,B,C,D}, esta última expresión se obtiene el función de los vértices.

1.4 Ciclo de un Grafo

De la figura se puede deducir que un ciclo es un camino con la característica especial de que en el camino el vértice de inicio y final es el mismo. El camino que se señala es el camino de el vértice 1 al vértice 1.El camino que se obtiene es el siguiente :

Camino de 1 a 1 = { <1,2>,<2,5>,<5,4>,<4,3>,<3,1> }ó bien {1,2,5,4,3,1}, esta última expresión se obtiene el función de los vértices.

1.5 Componentes de un Arco

En la figura se señalan la cabeza y cola de un arco. La cola es el vértice de donde sale el arco y la cabeza es el vértice donde llega el arco.

• Cola del arco = vértice u. • Cabeza del arco = vértice v.

Page 4: 62483033 Teoria de Grafos y Automatas

2. Subgrafos, Complementos e Isomorfismos

A continuación presentaremos algunas características que puede presentar un grafo, ya sea generando otros grafos a partir de él mismo, etc.

2.1 Subgrafo

Si G=(V, E) es un grafo dirigido o no, entonces G1=(V1, E1) es un subgrafo de G si V1 es distinto del conjunto vacío y E1 es subconjunto de E, donde cada arista de E1 es incidente con los vértices de V1.

Ejemplo:

La figura permite observar dos grafos no dirigidos, G es un grafo que posee 4 vértices y 6 arcos, en este caso es el grafo original; mientras G' es el subgrafo de G. Como podemos observar G' cumple todas las condiciones de subgrafo, es decir, V' es subconjunto de V y E' es subconjunto de E.

2.2 Subgrafo Recubridor o Grafo Expandido

Dado G=(V,E) es un grafo dirigido o no, sea G1=(V1,E1) un subgrafo de G. Si V1=V, entonces G1 es un subgrafo recubridor ó grafo expandido de G.

Page 5: 62483033 Teoria de Grafos y Automatas

La figura permite observar dos grafos no dirigidos, G es un grafo que posee 4 vértices y 6 arcos, en este caso es el grafo original; mientras G' es el subgrafo de G, pero en este caso es un subgrafo expandido. Como podemos observar G' cumple todas las condiciones de subgrafo, es decir, V' es subconjunto de V con la particularidad de que V' debe ser igual a V y E' es subconjunto de E.

2.3 Grafo Completo

Sea V un conjunto de n vértices. El grafo completo sobre V es aquel grafo no dirigido sin lazos tal que para todos u, v pertenecientes a V, con u distinto de v, existe una arista <u, v>. En forma más simple, un grafo G se dice completo si todos los vértices u, v pertenecientes a V se tiene que <u, v> pertenece a E.

El tamaño de un grafo completo se determina de acuerdo al número de vértices que posee el grafo.

Page 6: 62483033 Teoria de Grafos y Automatas

2.4 Grafo Complementario

Sea G un grafo no dirigido sin lazos con n vértices. El grafo complementario de G, es el subgrafo formado por los n vértices de G y las aristas que no están en G. Si el grafo complementario tiene n vértices y ninguna arista se le llama a este grafo: grafo nulo.

El grafo complementario G' del grafo original G, está compuesto por todos los vértices de G y las aristas que no están en G. De ahí el nombre de grafo complementario.

2.5 Grafos Isomorfos

Dos grafos, G y G’, son isomorfos si existe una correspondencia uno a uno entre los vértices de los grafos tal que todo par de vértices que son adyacentes en un grafo si y sólo si el correspondiente par de vértices son adyacentes en el otro grafo.

Page 7: 62483033 Teoria de Grafos y Automatas

Se puede decir que dos grafos son isomorfos si existe una correspondencia uno a uno entre los vértices de los grafos tal que para todo par de vértices que son adyacentes en un grafo si y sólo si el correspondiente par de vértices son adyacentes en el otro grafo.

3. Recorrido y Circuito Euleriano

Un aspecto que debemos considerar con respecto a grafos es la forma de recorrerlos y que conclusiones podemos obtener. A continuación se dan algunas herramientas para poder analizar los grafos desde el punto de vista de su recorrido.

3.1 Grado de un vértice

Sea G un grafo no dirigido. Para cualquier vértice v de g, el grado de v, que se denota g(v), es el número de aristas en G que son incidentes con v. En este caso, un lazo en un vértice v se considera como dos aristas incidentes en v.

Ejemplo

La figura presenta un grafo no dirigido, en el cual se observa claramente el grado de cada vértice perteneciente al grafo. Debemos recordar que el grado de un vértice es el número de arcos incidentes al vértice. En la figura el grado de cada vértice esta representado por el número que se encuentra en el vértice.

Teorema :Se define el grado o valencia de v como el número de vértices incidentes a

v. Dado que cada arco debe ser incidente a 2 vértices se tiene el siguiente teorema:

EvgVv

*2)( =∑∈

ó 2

)(∑∈= Vv

vgE

Donde E = Número de lados del grafo y v = vértice del grafo.

Page 8: 62483033 Teoria de Grafos y Automatas

Corolario :

Para cualquier grafo no dirigido, el número de vértices de grado impar debe ser par.

3.2 Circuito Euleriano

Sea G un grafo no dirigido sin vértices aislados. Entonces G tiene un circuito euleriano si existe un circuito en G que recorre cada arista del grafo exactamente una vez. Si existe un recorrido abierto de u a v en G que recorre cada arista de G exactamente una vez, este recorrido se llamará recorrido euleriano.

El circuito euleriano es aquel donde se realiza un recorrido sobre el grafo pasando solamente una vez por cada arco del grafo. La línea punteada de color amarillo muestra el circuito euleriano para este grafo.

3.3 Grado de entrada y salida de un vértice

Sea G=(V, E) un grafo dirigido, para todo v perteneciente a V:El grado de entrada de v es el número de aristas de G que llegan a v y se

denota ge(v). El grado de salida de v es el número de aristas de G que parten de v y se

denota gs(v).

Page 9: 62483033 Teoria de Grafos y Automatas

Observar que el arco <1,3> o <3,1> representa un arco perteneciente a un grafo no dirigido, los demás arcos son del tipo perteneciente a grafo dirigidos (digrafos).

Teorema :Sea G = (V, E) un grafo dirigido. G tiene un circuito euleriano si y sólo si G

es conexo y ge(v)=gs(v) para todo v perteneciente a V.

4.Caminos y Ciclos Hamiltoneanos

En 1859, el matemático irlandés Sir William Rowan Hamilton(1805-1865) desarrolló un juego que vendió a un particular de juguetes en Dublín. El juego era un dodecaedro regular de madera con 20 esquinas(vértices) en las que aparecían nombres de ciudades importantes. El objetivo era encontrar un ciclo alrededor de las aristas del sólido, de modo que cada ciudad estuviera en el ciclo exactamente una vez.

Page 10: 62483033 Teoria de Grafos y Automatas

4.1 Ciclo HamiltoneanoSi G=(V, E) un grafo con |V|>=3, se dice que G tiene un ciclo

hamiltoneano si existe un ciclo en G que contenga cada vértice de V.

Ejemplo• Ciclo Hamiltoneano = { <1,4>,<4,3>,<3,2>,<2,1> }• Orden vértices visitados = = { 1, 4, 3, 2 ,1 }

El ciclo hamiltoneano es un camino que recorre todos los vértices del grafo, con la característica de que el vértice inicial y final es el mismo.

4.2 Camino HamiltoneanoUn camino hamiltoneano es un camino simple (y no un ciclo) de G que

contiene todos los vértices

. Ejemplo

• Ciclo Hamiltoneano = { <1,4>,<4,2>,<2,3> }• Orden vértices visitados = = { 1, 4, 2 ,3 }

Page 11: 62483033 Teoria de Grafos y Automatas

Un camino hamiltoneano es un camino con la característica de que recorre todos los vértices del grafo. No es necesario que el camino sea un ciclo. Teorema :Sea G un digrafo completo, es decir tiene n vértices y para cualquier par de vértices x e y, x distinto de y; exactamente una de las aristas <x, y> ó <y, x> esta en G. Este grafo (llamado torneo) tiene siempre un camino hamiltoneano (dirigido).

Teorema :Sea G=(V, E) un grafo sin lazos, |V|=n, con n>=2. Si grad(x)+grad(y)>=n-1 para todo x, y pertenecientes a V(x distinto de y) entonces G tiene un camino hamiltoneano.

Corolario :Sea G=(V, E) un grafo sin lazos con n(>=2) vértices. Si grad(v)>=(n-1)/2 para todo v perteneciente a V entonces G tiene un camino hamiltoneano.

Teorema :Sea G=(V, E) un grafo no dirigido sin lazos, con |V|=n, con n>=3. Si grad(x)+grad(y)>=n para todo x, y pertenecientes a V no adyacentes entonces G tiene un ciclo hamiltoneano.

Corolario :Si G=(V, E) un grafo no dirigido sin lazos, con |V|=n, con n>=3 y si grad(v)>=n/2 para todo v perteneciente a V entonces G tiene un ciclo hamiltoneano.

Corolario :Si G=(V, E) un grafo no dirigido sin lazos, con |V|=n, con n>=3 y |E|>=(n-1/2)+2 entonces G tiene un ciclo hamiltoneano.

5. Formas de Representación de un Grafo

Un tema que es muy importante para el uso y la comprensión de grafos, es conocer y dominar por completo las diversas formas de representar un grafo. En esta sección se podrá conocer las formas de representar un grafo.

Existen dos representaciones gráficas para grafos:• Matrices. • Listas.

5.1 Matrices de adyacencia :La matriz de adyacencia de un grafo G=(V, E) es una matriz lógica A=(aij)

de orden VxV donde aij=1 sí el arco (vi, vj) pertenece a E, sino aij=0.Si G es un grafo no dirigido entonces la matriz A es simétrica. La matriz de

adyacencia contiene |E| 1 para un grafo dirigido y 2|E| para un grafo no dirigido.

Page 12: 62483033 Teoria de Grafos y Automatas

En general, una matriz de adyacencia requiere al menos VxV bits de almacenamiento.

5.2 Matrices de incidencia de un grafo no dirigido :

Es una matriz A=(aij) VxE donde aij=1, si el arco ej es incidente a un vértice vi sino aij=0.

Para grafos dirigidos aij=-1 si ej es incidente desde vi. Por otro lado, aij=1 si vij es incidente a vi sino aij=0.

Todo arco tiene dos vértices de incidencia. Luego la matriz contiene exactamente dos entradas no ceros en cada columna.

En general, una matriz de incidencia requiere al menos VxE bits de almacenamiento para grafos dirigidos y al menos 2|V||E| para grafos no dirigidos.

Page 13: 62483033 Teoria de Grafos y Automatas

5.3 Listas :

Es una forma de mostrar los arcos, representados como par de vértices.Las listas de adyacencia, las cuales corresponden a vértices V y una lista

de vértices U tal que U y V son adyacentes.

6. Grafos Ponderados

6.1 Optimización y emparejamientoCon gran frecuencia se desea modelar problemas prácticos utilizando

grafos en los que se asocia a las aristas un entero no negativo llamado peso o costo, dichos números se asocian con información como la cantidad de material que puede embarcarse de un vértice a otro a lo largo de una arista la cual puede representar una carretera o ruta aérea, o hallar la forma de conectar todos los vértices al menor costo, en el caso de un circuito eléctrico por ejemplo. Estas técnicas surgen en el área de las matemáticas llamadas Investigación de Operaciones.

Comenzaremos con un grafo dirigido conexo sin arcos G = (V,E), donde: V conjunto finito no vacío, es el conjunto de vértices y sea E ⊆ VxV el conjunto de pesos .

A cada arista e = (a, b) de este grafo le asignamos un número real positivo llamado el peso de e, y se denotara por p(a, b). Si x, y ∈ V pero (x, y) ∉ E, es decir no hay un peso asociado al vértice e(x, y), se define p(a, b) = ∞.

Para Cualquier e = (a, b) ∈ E, p(e) podría representar:

Page 14: 62483033 Teoria de Grafos y Automatas

• La longitud de una carretera de a hasta b. • El tiempo que toma recorrer esta carretera. • El costo del viaje de a hasta b por esta carretera.

Al denotar el grafo con las asignaciones de peso descritas, se habla de grafo ponderado.

Entre los problemas analizados están : • Hallar el camino más corto entre un vértice dado V0 y cada uno de

los demás vértices de un grafo dirigido conexo sin lazos. • Hallar el árbol de expansión mínimo asociado a un grafo dado, donde

la sumas de los pesos de las aristas del árbol sea minimal.

6.2 El árbol de expansión mínimaSe aborda este concepto a partir del siguiente problema:

"Hay que construir una red de cómputo con un acoplamiento vago para un sistema de siete computadores. El grafo G de la figura es un modelo de la situación. Los computadores se representan mediante los vértices del grafo, las aristas representan Líneas de transmisión que se tienen en cuanta para enlazar ciertos pares de computadores. Asociamos a cada arista e de G un número real positivo p(e), el peso de e. En este ejemplo, el peso de una arista indica el costo previsto para la construcción de esa línea de transmisión particular. El objetivo es enlazar todos los computadores minimizando el costo total de la construcción."

Para hacer esto, se necesita un árbol de expansión T, tal que la suma de los pesos de las aristas en T sea mínima.La construcción de dicho árbol de expansión óptimo se puede realizar por medio de los algoritmos de: Joseph Kruskal.y Robert Prim.

6.2.1 Algoritmo de Kruskal

Page 15: 62483033 Teoria de Grafos y Automatas

A continuación se analiza el Algoritmo Kruskal para la construcción del árbol de expansión minimal

Como el algoritmo de Dijkstra, este es un algoritmo óptimo; al usarlo en cada paso se hace una elección óptima (en este caso minimal) de los datos disponibles restantes. Lo que parece la elección óptima localmente es también la mejor opción globalmente, de acá que el algoritmo finaliza en una solución óptima.

AnálisisSea G=(V,E) un grafo no dirigido conexo sin ciclos tal que |V| = n y cada

arista e tiene asignado un número real positivo p(e). Para encontrar un árbol de expansión óptimo (minimal) aplicamos el siguiente algoritmo

Paso1 : Hacemos el contador y=1 y seleccionamos una arista e1 en G tal que p(e1) sea lo mas pequeño posible.

Paso2 : Para 1<=i<=n-2, si hemos seleccionado las aristas e1,e2,....,en, entonces seleccionamos la arista ei+1 de las aristas restantes en G de modo que (a) p(ei+1) sea lo más pequeño posible y(b) el subgrafo de G determinado por las aristas e1,e2,....,ei,ei+1 (y los vértices incidentes) no tengan ciclos.

Paso 3: Reemplazamos i con i+1.Si i=-1, el subgrafo de G determinado por las aristas e1,e2,....,en-1 es conexo con n vértices y n-1aristas, y es un árbol recubridor óptimo para G.Si i<n-1, regresar al paso 2.

6.2.2 Aplicación del algoritmo de Kruskal

Inicialización:(i=1) Puesto que solo existe una arista (a saber, {e,g}) de peso mínimo 1, comenzamos con T ={ {e,g}}. (Al principio T es un árbol con una arista, y después de cada iteración crece hasta ser un árbol más grande o un bosque. Después de la ultima iteración, el subgrafo T es un árbol recubridor óptimo para el grafo dado G.)

Primera iteración:Entre las aristas restantes de G, tres de ellas tienen el siguiente peso menor,2. Seleccionamos {d,f}, la cual satisface las condiciones del paso 2. Ahora T es el bosque {{e,g},{d,f}} e incrementamos ia2. Como i=2<6, regresamos al paso 2.

Segunda iteraciónDos de las aristas restantes tienen peso 2. Seleccionamos {d,e}. Ahora, T es el arbol {{e,g},{d,f},{d,e}} e i toma el valor 3. Como 3<6, el algoritmo nos envía de regreso al paso 2.

Tercera iteración

Page 16: 62483033 Teoria de Grafos y Automatas

Entre las aristas de G que no están en T, la arista {f,g} tiene un peso minimal 2. Sin embargo, si añadimos esta arista a T, el resultado contiene un ciclo, lo que destruye la estructura de árbol que se busca.En consecuencia se analizan las aristas {c,e},{c,g} y {d,g}. La arista {d,g} produce un ciclo. pero {c,e} o {c,g} satisfacen las condiciones del paso 2. Seleccionamos {c,e}. T crece a {{e,g}, {d,f}, {d,e}, {c,e}} e i aumenta a 4. Regresamos al paso 2 y vemos que las iteraciones cuarta y quinta nos proporcionan los siguientes resultados.

Cuarta iteraciónT= {{e,g},{d,f},{d,e},{c,e},{b,e}}; i aumenta a 5

Quinta IteraciónT= {{e,g},{d,f},{d,e},{c,e},{b,e},{a,b}};el contador i toma el valor 6 = (número de vértices de G)-1. Por lo tanto es un árbol óptimo para el grafo G y tiene peso 1+2+2+3+4+5=17

Page 17: 62483033 Teoria de Grafos y Automatas

6.2.3 Algoritmo de Prim

Rober Prim desarrolló una segunda técnica para la construcción de un árbol óptimo. En este algoritmo voraz, los vértices del grafo se dividen en dos conjuntos: procesados y no procesados. Al principio, sólo hay un vértice en el conjunto P de los vértices procesados y los demás están en el conjunto N de vértices por procesar. Cada iteración del algoritmo incrementa el conjunto P en un vértice, mientras que el tamaño del conjunto N decrece en uno. El algoritmo se resume como sigue.Sea G = (V, E) un grafo ponderado no dirigido, conexo y sin lazos. Para obtener un árbol óptimo para G, aplicamos el siguiente procedimiento.

Pasos del Algoritmo

Paso 1: Hacemos el contador i=1 y colocamos un vértice arbitrario v1 ∈ V en el conjunto P. Definimos N = V – { v1} y T = ∅.

Paso 2: Para 1<=i<=n-1, donde |V| = n, sean P = { v1, v2, vi }, T = {e1,e2,...,ei-1}, y N = V - P. Añadimos a T la arista más corta (la arista de peso minimal) de G que conecta un vértice x en P con un vértice y(=vi+1) en N. Colocamos y en P y lo eliminamos de N.

Paso 3: Incrementamos el contador en 1.Si i = n, el subgrafo de G determinado por las aristas e1,e2,...,en-1 es conexo, con n vértices y n-1 aristas y es un árbol óptimo para G.Si i<n, regresamos al paso 2.

Para el grafo de la figura el algoritmo de Prim genera un árbol óptimo de la siguiente forma:

Page 18: 62483033 Teoria de Grafos y Automatas

Inicialización i=1; P={a}; N={b,c,d,e,f,g}; T= ∅ .

Primera iteración :T={{a,b}}; P={a,b}; N={c,d,e,f,g}; i=2.

Segunda iteración :T={{a,b},{b,e}}; P={a,b,e};N={c,d,f,g};i=3.

Tercera iteración :T={{a,b},{b,e},{e,g}}; P={a,b,e,g};N={c,d,f};i=4.

Cuarta iteración :T={{a,b},{b,e},{e,g},{d,e}}; P={a,b,e,g,d};N={c,f};i=5.

Quinta iteración :T={{a,b},{b,e},{e,g},{d,e},{f,g}}; P={a,b,e,g,d,f};N={c};i=6.

Sexta iteración :T={{a,b},{b,e},{e,g},{d,e},{f,g},{c,g}}; P={a,b,e,g,d,f,c}=V;

N=∅; i=7=|V|.

Por lo tanto, T es un árbol recubridor óptimo de peso 17 para G, como se ve a continuación:

Page 19: 62483033 Teoria de Grafos y Automatas

6.3 Problemas de camino más cortoEntre los problemas de camino más corto se presentan el de camino más corto con un solo origen, que está asociado al algoritmo de Dijkstra y el de camino más corto entre todos los pares, asociado al algoritmo de Floyd.

• Camino más corto con un solo origen. • Camino más corto entre todos los pares.

6.3.1 Camino más Corto con un solo OrigenSupóngase un grafo dirigido ponderado G=(V,E), donde un vértice se especifica como origen.

El problema es determinar el costo del camino más corto del origen a todos los demás vértices de V, donde la longitud de un camino es la suma de los costos de los arcos del camino.

Para resolver este problema se utiliza un algoritmo conocido como Algoritmo de Dijkstra, que opera a partir de un conjunto S de vértices cuya distancia más corta desde el origen ya es conocida. En principio, S contiene sólo el vértice de origen; en cada paso, se agrega algún vértice restante v a S, cuya distancia desde el origen es la más corta posible. Suponiendo que todos los arcos tienen costo no negativo, siempre es posible encontrar un camino más corto entre el origen y v, que pasa sólo a través de los vértices de S, y que se llama especial. En cada paso del algoritmo, se utiliza un arreglo D para registrar la longitud del camino especial más corto a cada vértice. Una vez que S incluye todos los vértices, todos los caminos son especiales, por lo tanto D contiene la distancia más corta del origen a cada vértice.

El peso de la arista uv se indica por w(uv), poniendo w(uv)=∞ si uv no es arista. (Las aristas tienen pesos no negativos)

Clave: Mantener el conjunto T de vértices para el que se conoce el camino más corto y ampliar T hasta que T=V. Para ello etiquetamos cada vértice z con t(z) que es la longitud del camino más corto ya encontrado.

Inicialización: Sea T={s}, t(s)=d(s,s)=0, t(z)=w(sz) para z≠s.

Iteración: Elegir el vértice v ∉ T con etiqueta mínima. Añadir v a T.

• Analizar cada arista vz con z∉T y actualizar la etiqueta de z a min{t(z), t(v)+w(vz)}

• La iteración continua hasta que T=V(G) o hasta que t(z)=∞ para cada vértice z∉T

Ejemplo: Sea el Grafo G=(V,E)

Page 20: 62483033 Teoria de Grafos y Automatas

6.3.2 Camino más corto entre todos los pares

Algoritmo de Floyd

Este algoritmo intenta resolver el problema de encontrar el camino más corto entre todos los pares de nodos o vértices de un grafo. Esto es similar a construir una tabla con todas las distancias mínimas entre pares de ciudades de un mapa, indicando la ruta a seguir para ir de la primera ciudad a la segunda.

Esto puede verse de la siguiente manera:

• Sea G=(V,A) un digrafo en el cual cada arco tiene asociado un costo no negativo. El problema es hallar para cualquier par de vértices (v,w) el camino más corto de v a w.

• G=(V,A), V={1,...,n} y C[i,j] es el costo del arco que va de i a j. • El algoritmo calcula la serie de matrices

a b c d e f g h T arista0 3 1 5 ∞ ∞ 5 ∞ c ac

3 5 3 ∞ 5 ∞ b ab5 3 9 5 ∞ e ce5 9 4 5 g eg5 9 5 d ad

8 5 h eh8 f df

Page 21: 62483033 Teoria de Grafos y Automatas

• Ak[i,j] significa el costo del camino más corto que va de i a j y que no pasa por algún vértice mayor que k.

• El objetivo es calcular An[i,j]

Ejemplo

A0[i,j] =

k=1

A(1,1)+A(1,1)>=A(1,1)A(2,1)+A(1,1)>=A(2,1)A(3,1)+A(1,1)>=A(3,1)A(4,1)+A(1,1)>=A(4,1)

A(1,1)+A(1,2)>=A(1,2)A(2,1)+A(1,2)>=A(2,2)A(3,1)+A(1,2)>=A(3,2)A(4,1)+A(1,2)<A(4,2)

A(1,1)+A(1,3)>=A(1,3)A(2,1)+A(1,3)>=A(2,3)A(3,1)+A(1,3)>=A(3,3)A(4,1)+A(1,3)>=A(4,3)

A(1,1)+A(1,4)>=A(1,4)A(2,1)+A(1,4)<A(2,4)A(3,1)+A(1,4)<A(3,4)A(4,1)+A(1,4)>=A(4,4)

A1[i,j] =

1 2 3 41 0 1 ∞ 12 1 0 3 ∞3 8 3 0 ∞4 1 4 ∞ 0

Page 22: 62483033 Teoria de Grafos y Automatas

k=2

A(1,2)+A(2,1)>=A(1,1)A(2,2)+A(2,1)>=A(2,1)A(3,2)+A(2,1)<A(3,1)A(4,2)+A(2,1)>=A(4,1)

A(1,2)+A(2,2)>=A(1,2)A(2,2)+A(2,2)>=A(2,2)A(3,2)+A(2,2)>=A(3,2)A(4,2)+A(2,2)>=A(4,2)

A(1,2)+A(2,3)<A(1,3)A(2,2)+A(2,3)>=A(2,3)A(3,2)+A(2,3)>=A(3,3)A(4,2)+A(2,3)<A(4,3)

A(1,2)+A(2,4)>=A(1,4)A(2,2)+A(2,4)>=A(2,4)A(3,2)+A(2,4)<A(3,4)A(4,2)+A(2,4)>=A(4,4)

A2[i,j] =

k=3

A(1,3)+A(3,1)>=A(1,1)A(2,3)+A(3,1)>=A(2,1)A(3,3)+A(3,1)>=A(3,1)A(4,3)+A(3,1)>=A(4,1)

A(1,3)+A(3,2)>=A(1,2)A(2,3)+A(3,2)>=A(2,2)A(3,3)+A(3,2)>=A(3,2)A(4,3)+A(3,2)>=A(4,2)

A(1,3)+A(3,3)>=A(1,3)A(2,3)+A(3,3)>=A(2,3)A(3,3)+A(3,3)>=A(3,3)A(4,3)+A(3,3)>=A(4,3)

A(1,3)+A(3,4)>=A(1,4)A(2,3)+A(3,4)>=A(2,4)A(3,3)+A(3,4)>=A(3,4)A(4,3)+A(3,4)>=A(4,4)

A3[i,j] =

Page 23: 62483033 Teoria de Grafos y Automatas

k=4

A(1,4)+A(4,1)>=A(1,1)A(2,4)+A(4,1)>=A(2,1)A(3,4)+A(4,1)>=A(3,1)A(4,4)+A(4,1)>=A(4,1)

A(1,4)+A(4,2)>=A(1,2)A(2,4)+A(4,2)>=A(2,2)A(3,4)+A(4,2)>=A(3,2)A(4,4)+A(4,2)>=A(4,2)

A(1,4)+A(4,3)>=A(1,3)A(2,4)+A(4,3)>=A(2,3)A(3,4)+A(4,3)>=A(3,3)A(4,4)+A(4,3)>=A(4,3)

A(1,4)+A(4,4)>=A(1,4)A(2,4)+A(4,4)>=A(2,4)A(3,4)+A(4,4)>=A(3,4)A(4,4)+A(4,4)>=A(4,4)

A4[i,j] =

Page 24: 62483033 Teoria de Grafos y Automatas

7 PERT

7.1 Aplicación de la teoría de grafos al PERTLa técnica de análisis de grafos, puede convertirse en un útil instrumento al servicio de muy variados ámbitos.Ahora se propone su aplicación a la confección de los PERT (Project Evaluation and Review Technique), que constituyen el eje vertebrado de la planificación y serie de tomas de decisiones en implementación y evaluación de programas de intervención.

Un proyecto puede esquematizarse gráficamente usando un grafo, donde los arcos del grafo indican las actividades, y los vértices, los sucesos. Las flechas irán de izquierda a derecha indicando que se avanza en el tiempo. La longitud de las flechas no precisa ser dibujada a escala.

El grafo que representa un proyecto será siempre un grafo sin circuitos. Así, el vértice 1 es el suceso inicial de la actividad A, y el vértice 2 es su suceso final; además, éste sirve de suceso inicial para la actividad B, y así sucesivamente.

Una vez construido el grafo completo del programa se numeran cada uno de los sucesos. Para ello, si el grafo está bien dibujado por niveles, se irán numerando sus nodos desde 1 en adelante, de izquierda a derecha, y en un mismo nivel de arriba a abajo, de modo que si para una actividad el suceso inicial es el i y el final es el j, se cumple siempre que i<j:

La elaboración del grafo PERT de un programa implica la construcción del cuadro de prelaciones formado por dos columnas:

• En la primera, se indican todas las actividades una a una.• En la segunda, se indican las actividades inmediatamente anteriores a ésta.

EjemploSe proponen siete actividades {A,B,C,D,E,F,G}, que cumplen lo siguiente:

a) A y B se inician a la vez.b) D,E y F empiezan tras haber finalizado A.c) C empieza al terminar B.d) G se inicia al acabar C y F.

Los tiempos previstos para cada uno de ellos son:

Page 25: 62483033 Teoria de Grafos y Automatas

Actividad TiempoA 6B 4C 2D 1E 3F 4G 2

El cuadro de prelaciones será:

Actividad Anteriores OperaciónA - Aplicando a)B - Aplicando a)C B Aplicando c)D A Aplicando b)E A Aplicando b)F A Aplicando b)G C, F Aplicando d)

De acuerdo con lo indicado, los sucesivos pasos de construcción del PERT serán:

Paso 1 del PERT, en que se dibuja el suceso inicio y las dos actividades de partida

A la actividad A le seguirán las actividades que tengan A en la columna Anteriores, que en nuestro caso son D, E y F. De igual modo a la actividad B le seguirá la C:

Page 26: 62483033 Teoria de Grafos y Automatas

Paso 2 del PERT, en donde se contempla como a la Actividad A le seguirán las actividades que tengan "A" en la columna "anteriores", en nuestro caso D, E y F. De igual modo, a la actividad B le seguirá la C.

Paso 3 del PERT. La actividad G sigue a las actividades F y C.

Y finalmente, puesto que D, E y G no aparecen en la columna "anteriores", son las actividades que terminan en el suceso final del programa:

Pero el grafo anterior presenta dos actividades paralelas, la D y la E, lo que podemos solucionar añadiendo una actividad ficticia , por ejemplo, detrás de la D, resultando finalmente el grafo, en donde se numeran los nodos:

Page 27: 62483033 Teoria de Grafos y Automatas

7.2. Optimización del PERT mediante la teoría de grafos

Se lleva a cabo mediante dos importantes apoyos estadísticos, que son el cálculo de los tiempos temprano y retardado, por una parte, y, por otra, la incidencia de las holguras en el camino crítico.

7.2.1. Cálculo de los tiempos temprano (early) y retardado (last)

Llamaremos t(i,j) al tiempo de la actividad que une el suceso i y el suceso j. Si en el grafo colocamos los tiempos de cada actividad y tenemos en cuenta que en la actividad ficticia F1 el tiempo será nulo al no consumir ninguno, resulta el PERT siguiente.

Los tiempos early y last, a los que nos referiremos a continuación, se colocarán en cada nodo, de la siguiente forma.

Page 28: 62483033 Teoria de Grafos y Automatas

A) El tiempo "early" o tiempo "rápido" es el menor tiempo que se puede emplear para llegar a este suceso.

El suceso inicio del programa tendrá tiempo early nulo. Para los restantes sucesos, siguiendo el orden de su numeración será el valor mayor de entre todas las actividades que en él converjan, y es la resultante de sumar el tiempo inicial de la actividad al tiempo de esa actividad.

Podemos así decir que el tiempo early de un suceso j es el siguiente:

t(j) = máx [t(i) + t(i,j)]

siendo t(i,j) el tiempo de la actividad (i,j), y por esto i<j.

El tiempo mínimo del programa, que indica la duración total de éste, viene dado por el valor del tiempo early (o del tiempo last) del suceso final del proyecto.

Así, los tiempos early del PERT son:

El tiempo del suceso inicio del programa es nulo:

Nodo 1: t(1) = 0

A los sucesos siguientes solamente les llega una flecha a cada uno:

Nodo 2: t(2) = t(1) + t(1,2) = 0 + 6 = 6Nodo 3: t(3) = t(1) + t(1,3) = 0 + 4 = 4Nodo 4: t(4) = t(2) + t(2,4) = 6 + 1 = 7

En el suceso 5 concurren dos flechas; por tanto

Nodo 5: t(5)= máx [t(2)+t(2,5),t(3)+t(3,5)] = máx [6+4, 4+2] = máx [10,6] = 10 ↑ ↑

(actividad F1) (actividad C)

Finalmente, en el suceso 6 concurren tres flechas, por lo queNodo 6: t(6) = máx [t(4)+t(4,6),t(2)+t(2,6),t(5)+t(5,6)]=máx [7+0,6+3,10+2]=máx [7,9,12]=12

↑ ↑ ↑ (actividad F1) (actividad E) (actividad G)

Por tanto, la duración total del programa es t(6) = 12.

Page 29: 62483033 Teoria de Grafos y Automatas

B) El tiempo "last" o tiempo "lento" es el mayor tiempo que se puede emplear hasta llegar a ese suceso para que la duración del programa no se retrase.

El suceso final del programa tendrá tiempo last igual a su tiempo early calculado.

Para los restantes nodos, y siguiendo el orden decreciente de su numeración, se calculará tomando el menor valor de entre todas las actividades que de él salgan, resultantes de restar al tiempo del suceso final de cada actividad el tiempo de dicha actividad.

El tiempo last de un suceso i es:

t'(i) = mín [t'(j) - t(i,j)]

Al final, en el suceso de inicio de proyecto, deberá resultar siempre que

t(1) = t'(1) = 0

Por tanto, los tiempos last del PERT son:

El tiempo last del suceso fin del programa es igual a su tiempo early:

Nodo 6: t'(6) = 12

De los sucesos siguientes solamente sale una flecha de cada uno:

Nodo 5: t'(5) = t'(6) - t(5,6) = 12 - 2 = 10Nodo 4: t'(4) = t'(6) - t(4,6) = 12 - 0 = 12Nodo 3: t'(3) = t'(5) - t(3,5) = 10 - 2 = 8

Del suceso 2 parten tres actividades, por lo que

Nodo2:t'(2)=mín [t'(4)-t(2,4), t'(6)-t(2,6), t'(5)-t(2,5)] = mín [12-1,12-3,10-4] = mín [11,9,6]=6

Page 30: 62483033 Teoria de Grafos y Automatas

↑ ↑ ↑(actividad D) (actividad E) (actividad F)

Finalmente, para el suceso 1, tenemosNodo 1: t'(1)= mín [t'(2)-t(1,2),t'(3)- t(1,3)] = mín [6 - 6,8 - 4] = mín [0,4] = 0

↑ ↑ (actividad A) (Actividad B)

7.2.2. Incidencia de las holguras en el camino crítico

Al aplicar el PERT se considerarán las holguras de tiempo que veremos a continuación, teniendo en cuenta que una determinada actividad se representará como se muestra a continuacion:

t(i) = tiempo early del suceso inicialt'(i) = tiempo last del suceso inicialt(j) = tiempo early del suceso finalt'(j) = tiempo last del suceso final

A) La holgura de un suceso es la diferencia entre el tiempo last y el tiempo early de dicho suceso. Es decir,

H(i) = t'(i) - t(i)H(j) = t'(j) - t(j)

Page 31: 62483033 Teoria de Grafos y Automatas

Esta holgura indica el tiempo que se puede retrasar su realización sin retrasar el programa:. Si H(i) = 0 indica que no se puede retrasar el comienzo de la actividad. Si H(j) = 0 indica que no se puede retrasar el final de esa actividad

B) La holgura de actividad puede ser de tres tipos:

1. Holgura total de una actividad es igual al tiempo last del suceso final menos el tiempo early inicial menos el tiempo de la actividad:

HT(i,j) = t'(j) - t (i) - t(i,j)

Indica el tiempo que puede retrasarse una actividad determinada sin retrasar el programa. Las actividades cuya holgura total es cero se llaman actividades críticas. El camino crítico, que va del suceso inicio del programa hasta el suceso fin, viene determinado por aquellas actividades que sean críticas. Esto significa que las actividades críticas son la clave para que el programa total no se retrase. Puede haber más de un camino crítico.

Si la holgura total de una actividad es nula, deben ser nulas las holguras de su suceso inicial y final, pero la inversa no tiene por qué ser cierta. Es decir, si

HT (i j) = 0 => H(i)=0 H(j)=0

Si solamente deseamos determinar el camino crítico bastará realizar los siguientes pasos:

a) Marcar los nodos cuyo tiempo early sea igual a su tiempo last, es decir, aquellos cuya holgura de suceso sea nula.b) Investigar los posibles caminos que puedan unir los nodos anteriores, marcando aquellas actividades cuya holgura total sea nula.

Aplicándolo al ejemplo que desarrollamos, resulta:

Page 32: 62483033 Teoria de Grafos y Automatas

b. Holgura libre es igual al tiempo early del suceso final menos el tiempo early inicial menos el tiempo de la actividad:

HL(i,j) = t(j) - t(i) - t(i,j)

Esta holgura indica qué parte de la holgura total se puede consumir sin afectar a las actividades posteriores.

c. Holgura independiente es igual al tiempo early del suceso final menos el tiempo last inicial menos el tiempo de la actividad:

HI(i,j) = t(j) - t'(i) - t(i,j)

Esta holgura corresponde a cuando la actividad anterior ha terminado en su tiempo last, y la posterior a la que se considera que empieza en su tiempo early. Puede ser negativa.

De cualquier modo las tres holguras cumplen las relaciones siguientes:

HT(i,j) ≥ HL(i,j) ≥ HI(i,j)

Finalmente se construye la siguiente tabla:

Activ.i - j

Nombre t(i,j) t(i) t(j) t'(i) t'(j) H(i) H(j) HT HL HI Situación

1 2 A 6 0 6 0 6 0 0 0 0 0 Crítica1 3 B 4 0 4 0 8 0 4 4 0 02 4 D 1 6 7 6 12 0 5 5 0 02 5 F 4 6 10 6 10 0 0 0 0 0 Crítica2 6 E 3 6 12 6 12 0 0 3 3 33 5 C 2 4 10 8 10 4 0 4 4 04 6 F1 0 7 12 10 12 5 0 5 5 05 6 G 2 10 12 12 12 0 0 0 0 0 Crítica

Vemos como el tiempo mínimo es 12.

Las posibilidades que brinda el PERT han permitido que la implementación de programas se llevase a cabo con mayor sistematización y de acuerdo con el plan previsto, lo cual facilita indudablemente no sólo la evaluación del programa sino su análisis económico.

La aproximación al PERT desde el análisis de grafos dota a este instrumento de mayores ventajas, y su uso racional y minucioso es altamente favorable a la precisión que cada vez con mayor intensidad está caracterizando a la evaluación

Page 33: 62483033 Teoria de Grafos y Automatas

Unidad II: Autómatas y Lenguajes Formales

Una parte importante de estos lenguajes son los de programación.A lo largo de esta unidad se estudiarán con detalle los lenguajes formales, las gramáticas (que son objetos matemáticos para la formalización de los lenguajes) y las relaciones entre ellos.

Informalmente, se puede entender por dispositivo de cómputo aquél que es capaz de recibir una entrada, realizar una operación con su información y producir un resultado.

A lo largo del curso se estudiarán diferentes dispositivos de este tipo a los que se suele dar el nombre genérico de autómatas y también se los relacionará con los lenguajes que son capaces de manipular.

1.- Conceptos Básicos

1.1.- SímboloUnidad básica relacionada con lenguajes y gramáticas y que formaliza lo que las letras (o las palabras) representan en los lenguajes naturales.

Por ejemplo,• Si se trata de números, podrían considerarse los siguientes símbolos:

0,1,2,3,4,5,6,7,8,9• Si se trata de valores lógicos, podrían considerarse los siguientes:

0,1• Si se trata de palabras del idioma español podrían considerarse los

siguientes:a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z

1.2.- AlfabetoEs un conjunto finito no vacío de símbolos

NotaciónPara referirse a un alfabeto cualquiera en general, se utilizará el símbolo: Σ

EjemplosEl alfabeto de los dígitos en base 10:

Σ 10 ={0,1,2,3,4,5,6,7,8,9}

El alfabeto binario:

Σ 2 ={0,1}

El alfabeto español:

Σ ñ = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z}

Page 34: 62483033 Teoria de Grafos y Automatas

1.3.- Secuencia de elementosEs una colección ordenada de elementos o símbolos

Notación y ejemplosUsaremos un índice para indicar la posición de cada elemento de una secuencia

Para localizar el elemento que ocupa la posición i-ésima en la colección S puede utilizarse la expresión Si

Cuando, en lugar de representar la secuencia como una unidad, se desea resaltar su contenido, pueden escribirse explícitamente los elementos que la componen. Por ejemplo, la secuencia s compuesta por los siguientes elementos enumerados según su orden: a, 1, b y 3 puede representarse de la siguiente manera: s=a1b3

Se puede separar los elementos con comas si es necesario. Por ejemplo, la secuencia x está compuesta por los elementos a, 11, 1, b y ab y se puede representar de la siguiente manera: x = a,11,1,b, ab.

En caso de querer resaltar su estructura pero no el valor concreto de sus elementos puede combinarse la representación con subíndices y la anterior, por ejemplo s= s1s2s3s4 donde s1=a, s2=1, s3=b y s4 =3

1.4.- PalabraEs una secuencia finita de símbolos tomados de un alfabeto. También se las suele llamar cadenas o cadenas de símbolos.

EjemplosCon el alfabeto de los dígitos en base 10: S10 ={0,1,2,3,4,5,6,7,8,9} se pueden formar las siguientes palabras:

101 034 0 8 99

Con el alfabeto binario: S2 ={0,1}

0 11101 1

Con el alfabeto español: Sñ = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z}

petacas chozas jefe

Page 35: 62483033 Teoria de Grafos y Automatas

2. Dispositivos capaces de computar

Los autómatas que veremos necesitan almacenar el programa y disponer decierto almacenamiento auxiliar.

Esquema gráfico de los autómatas.

Dependiendo del almacenamiento auxiliar se estudiarán los siguientes tipos:

2.1.- Autómatas finitosNo disponen de ningún tipo de memoria auxiliar.

Esquema gráfico de los autómatas finitos.

Page 36: 62483033 Teoria de Grafos y Automatas

2.2.- Autómatas a pila: Disponen de una pila auxiliar con las operaciones push y pop.

Esquema gráfico de los autómatas a pila.

2.3.- Máquinas de TuringDisponen de una memoria auxiliar compuesta por gran cantidad de espacios capaces de almacenar datos a los que se puede acceder directamente proporcionando la posición que ocupan.

Esquema gráfico de las máquinas de Turing.

Page 37: 62483033 Teoria de Grafos y Automatas

3 Clasificación según el determinismo

Otra de las características que permite clasificar los autómatas es el concepto de determinismo.

Se llamarán deterministas a aquellos autómatas que en un momento dado sólo puedan estar en un estado.Se llamarán no deterministas a aquellos que puedan estar en más de un estado.Para ello es imprescindible que exista alguna entrada tal que, cuando el autómata se encuentra en cierto estado, pueda transitar a más de una situación diferente.

Todos los tipos de autómata anteriores pueden clasificarse a su vez utilizando estecriterio.

4 Conceptos Básicos

4.1 Lenguaje universal sobre un alfabetoLenguaje universal sobre un alfabeto Σ es el conjunto de todas las palabras que se pueden formar con símbolos de Σ

Notación: El conjunto universal de un alfabeto S se representa como

Σ *

4.2 LenguajesLenguaje sobre un alfabeto S es cualquier subconjunto del lenguaje universal sobre Σ

Notación: Por lo tanto, se puede decir de cualquier lenguaje L sobre el alfabeto ΣL⊆Σ *

Por lo tanto, un lenguaje no es más que un conjunto de palabras.

Como en teoría de conjuntos, hay dos maneras muy frecuentemente utilizadas para la definición de conjuntos:

Mediante la enumeración de sus elementos:• Posible sólo si el conjunto es finito.• Por ejemplo: el siguiente lenguaje Lñ1.

Σ ñ = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z}Lñ1 ={petacas, chozas, jefe}

Mediante una propiedad que cumplan todos sus elementos:• Por ejemplo: el siguiente lenguaje Lpar.

Page 38: 62483033 Teoria de Grafos y Automatas

Σ 10 ={0,1,2,3,4,5,6,7,8,9}Lpar ={x∈Ν | x=2k,, k∈Ν }

4.3 Lenguajes y palabras

a) Longitud de una palabra |·|Es el número de símbolos que tiene

Notación: La longitud de cualquier palabra α∈ Σ * se representa como |α |

b) Palabra vacía λEs la única palabra que tiene 0 símbolos

Ejemplos 1• Considérese el siguiente alfabeto

Σ a ={a}

• Parece claro que Σ a* tiene que incluir todas las palabras de longitud 1 formadas por símbolos a:

a ∈ Σ a*

• Y también las de longitud 2, 3, etc...{aa, aaa, ... } ⊆ Σ a*

• Pero, reflexionando respecto a las posibles longitudes, también se puedeformar con símbolos de Σ a la palabra que no tiene ningún símbolo, es decir:

λ ∈ Σ a*

• Y, por tanto:Σ a*={λ , a, aa, aaa, ... }

Ejemplos 2• Considérese el siguiente alfabeto

Σ ab ={a,b}

• Parece claro que Σ ab* tiene que incluir todas las palabras de longitud 1 formadas por símbolos a o b:

{a, b} ⊆ Σ ab*

• Y también las de longitud 2, etc...{aa, ab, ba, bb} ⊆ Σ ab*

• Pero, reflexionando respecto a las posibles longitudes, también se puedeformar con símbolos de Σ ab la palabra que no tiene ningún símbolo, es decir:

λ ∈ Σ ab*

Page 39: 62483033 Teoria de Grafos y Automatas

• Y, por tanto:Σ ab*={λ , a, b, aa, ab, ba, bb, ...}

Propiedad• Las reflexiones anteriores permiten enunciar la siguiente propiedad

λ∈ Σ * ∀Σ

• Es decir la palabra vacía pertenece al lenguaje universal sobre cualquier alfabeto posible

c) Lenguaje vacío Φ es el que no contiene ninguna palabra. Corresponde, en lenguajes, al conjunto vacío.

d) Lenguaje {λ } es el lenguaje que sólo contiene la palabra vacía (λ )

Son dos conjuntos importantes que son diferentes como se deduce del hecho de que tienen distinto cardinal.

|{λ }|=1 |Φ |=0

Page 40: 62483033 Teoria de Grafos y Automatas

5. Autómatas finitos deterministas

5.1 Introducción

A continuación se analizará exhaustivamente un caso más sencillo, un interruptor, que facilitará la presentación de la definición formal de este tipo de autómatas.

• Resulta claro que el interruptor puede encontrarse en dos situaciones distintas: apagado o encendido.• El interruptor sólo puede recibir un estímulo exterior: que se pulse su botón.• Cuando el interruptor esté apagado, si se pulsa el botón pasa a estar encendido, en otro caso sigue apagado.• Cuando el interruptor esté encendido, si se pulsa el botón pasa a estar apagado, en otro caso sigue encendido.• Es frecuente que inicialmente el interruptor esté apagado.• En este caso la salida del sistema puede considerarse que es el funcionamiento del dispositivo que controle (una bombilla, por ejemplo).

La siguiente figura muestra gráficamente la situación.

5.1.1 Estados, entradas y transiciones

El análisis del comportamiento del autómata del interruptor sugiere dividir la descripción formal del mismo en dos partes:

• Entradas (externas), o Que representan los estímulos del exterior a los que puede

reaccionar el autómata.• Estados (internos) y transiciones,

o Los estados representan las diferentes situaciones en las que se puede encontrar el autómata. En el caso del interruptor: encendido y apagado

o Las Transiciones representan el cambio del autómata de un estado a otro debido a las entradas.

Page 41: 62483033 Teoria de Grafos y Automatas

5.2.- Definición formal

Un autómata finito determinista se puede definir como una quíntupla

A = (Q, Σ , δ , q0, F)Donde:

• Q es un conjunto finito no vacío de estados.• Σ es el alfabeto de entrada.• δ :Q⋅ Σ→ Q es la función de transición que, a cada pareja de estados y

símbolos de entrada (q,a), le asigna un nuevo estado q’ =δ (q,a).• q0∈Q es el estado inicial del autómata.• F ⊆Q es el conjunto de estados de finalización del autómata.

Los estados del autómata• Tienen como objetivo recordar la historia del sistema.• La cantidad de estados posibles es finita y se recuerda sólo lo relevante.• El hecho de que sea finita permitirá que se escriban algoritmos para

simular los autómatas finitos con una cantidad de recursos acotada, es decir, los algoritmos no necesitarán una cantidad creciente de recursos (por ejemplo memoria) que puedan hacer que el programa falle por agotamiento de los mismos.

El estado inicial• Recoge la situación en la que se encuentra el autómata inicialmente.

Los estados finales• Representan las situaciones en las que, de llegar el autómata a ellas, se

considera que su funcionamiento ha finalizado satisfactoriamente.

Las entradas• Representan los estímulos que pueden llegar desde el exterior y afectar el

comportamiento del autómata.

Las transiciones entre estados del autómata asociadas a una entrada• Representan la manera en la que los estímulos externos modifican el

comportamiento del autómata.

Ejemplo 1

A continuación se muestra la formalización del ejemplo del interruptor:

A1=(Q1, Σ 1, δ 1, 0, Φ )

Donde• El conjunto de estados representa encendido con 1 y apagado con 0.

Page 42: 62483033 Teoria de Grafos y Automatas

Q1={0, 1}El alfabeto de entrada representa pulsar con p.

Σ 1={p}

El estado inicial q0 es que esté apagado (0).

En este autómata no se indican estados finales (Φ es el conjunto vacío).

La función de transición se muestra mediante la notación habitual en teoría de conjuntos.

A continuación se muestra la formalización del ejemplo del interruptor:

La función de transición suele representarse utilizando otras notaciones formales, en algún sentido, más cómodas.Las más usadas son las siguientes:Diagrama de transiciones::Consiste en disponer la información en forma de grafoTabla de transiciones: Consiste en disponerla en forma de tabla.

5.3.- Diagrama de transiciónEl diagrama de transición para una función de transición d es un grafo dirigido que se define de la siguiente manera:

Nodos:• Hay uno para cada estado (q∈Q) y se representan mediante un óvalo que

contiene el nombre del estado:

Page 43: 62483033 Teoria de Grafos y Automatas

• Al que contiene el estado inicial (q0), se le marca de una manera especial, habitualmente mediante un arco sin origen y sin etiqueta que termina en él:

• La línea del óvalo de los estados finales (q∈F) es doble:

Arcos:• Se etiquetan con los símbolos del alfabeto de entrada (a∈Σ ).• Existe un arco del nodo p al q con la etiqueta a si y sólo si δ (p,a)=q.• Se representan mediante una flecha que sale del nodo p y llega al q.

Diagrama de transición: ejemplo 1A continuación se muestra el diagrama de la función de transición del ejemplo 1.

Page 44: 62483033 Teoria de Grafos y Automatas

5.4.- Tabla de transición

La tabla de transición para una función de transición d se define de la siguientemanera:

Filas:• Tantas como estados haya (|Q|)• Es necesario• Marcar la del estado inicial (por ejemplo mediante el símbolo )• Marcar la de los estados finales (por ejemplo mediante el símbolo *)

Columnas:• Tantas columnas como entradas haya (|Σ |)

Contenido de las celdas:• La casilla de la fila q y columna a contiene δ (q,a)

Diagrama de transición: ejemplo 1A continuación se muestra la tabla de la función de transición del ejemplo 1.

5.5.- Aplicaciones: Reconocimiento de palabras

Una aplicación muy importante de los autómatas finitos es su capacidad de reconocer palabras.El autómata reconocerá una palabra si, tras procesar la secuencia de sus símbolos en el mismo orden en el que aparece, termina en un estado final.En este sentido el conjunto de estados finales, que indica que el funcionamiento del autómata ha terminado de forma exitosa, realmente indica que la palabra tratada por él ha sido reconocida.

Page 45: 62483033 Teoria de Grafos y Automatas

Ejemplo 2

Se desea diseñar un autómata finito determinista que reconozca la palabra pepe:El alfabeto de entrada contendrá lo siguiente {p, e}Se puede analizar su funcionamiento determinando la parte relevante de su historia que tiene que corresponder a estados:

• El autómata necesita un estado inicial (q0)• El único cambio relevante en el estado inicial es que se reciba una letra p,

en este caso debe transitarse a un estado que lleve cuenta de que de la palabra pepe sólo se ha recibido la primera letra (qp o simplemente p)

• En este estado el único cambio relevante es la presencia en la entrada de la letra e; con ella debe transitarse a un estado que lleve cuenta de que se han recibido las dos primeras letras de la palabra (pe)

• Este mismo razonamiento se aplica para añadir los estados correspondientes a pep y a pepe.

• Cuando se llega a este último estado, puede afirmarse que el autómata ha reconocido la palabra completa por lo que será final.

A continuación se muestra parte del diagrama de la función de transición del ejemplo.

Esta primera parte del ejemplo permite extraer una “técnica de diseño generalizable”

A continuación se muestra la tabla correspondiente a la situación estudiada.

Page 46: 62483033 Teoria de Grafos y Automatas

Esto no es suficiente para definir por completo el autómata. La función de transición debe especificar estados para todas las combinaciones posibles de estados y símbolos de entrada. La tabla mostraba 6 casillas vacías:

• Cuando el autómata se encuentra en el estado inicial, si recibe la letra e, puede afirmar que no va a poder reconocer la palabra pepe porque empieza por una letra (p) distinta a la recibida.

• Lo mismo pasa cuando se está en el estado p y se recibe otra p, no se podrá terminar con éxito ya que pepe no comienza por pp.

• Y la situación es la misma para las casillas (pe,e) y (pep,p).• Desde el estado final, ya que el autómata sólo está interesado en reconocer

la palabra pepe, y no las palabras que comiencen con pepe, cualquier otro símbolo que la siga debe implicar que el autómata no termina con éxito.

Se puede añadir un estado de error (qe) que recoja los descritos anteriormente:• Este estado recoge las transiciones no exitosas de los demás.• También es necesario especificar qué pasa cuando desde este estado, se

reciben símbolos de entrada: resulta claro que, producida una situación de error, no hay ningún símbolo que pueda hacer que el autómata termine con éxito.

A continuación se muestra el diagrama de la función de transición del ejemplo 2.

Esta primera parte del ejemplo permite extraer una “técnica de diseño generalizable”

A continuación se muestra la tabla de transición correspondiente a la situación estudiada.

Page 47: 62483033 Teoria de Grafos y Automatas

Por lo que el ejemplo completo se describe formalmente de la siguiente forma:

A2=(Q2, Σ 2, δ 2, q0, {pepe})Donde

• El conjunto de estados: Q2={q0, p ,pe ,pep ,pepe ,qe}• El alfabeto de entrada: Σ 2={p, e}• La función de transición δ 2 es tabla de transición.

5.6.- Extensión de δ a palabras

Definición: La función de transición describe el comportamiento del autómata frente a un símbolo.

Este concepto puede formalizarse de la siguiente manera.

Dada una función de transición δ :Q⋅ Σ→ Q, se define de la siguiente manera la

función de transición extendida (a palabras) o δ :^

Page 48: 62483033 Teoria de Grafos y Automatas

EjemploDado el autómata siguiente, que reconoce las cadenas que comienzan por ep.

A5=(Q5={qi, e, qe, ep}, Σ ñ, δ 5, qi, {ep})

Donde δ 5 se deduce de la siguiente gráfica.

Se puede comprobar que

Page 49: 62483033 Teoria de Grafos y Automatas

Para afirmar, respectivamente, que

• La cadena eppe es reconocida por el autóamata A5.• La cadena eepe no es reconocida por el autómata A5.

Page 50: 62483033 Teoria de Grafos y Automatas

5.7 Lenguaje de un Autómata Finito Determinista

• Se llama lenguaje del autómata A, L(A) al lenguaje aceptado por A.

• Se llama lenguaje rechazado por A, L(A) al lenguaje no aceptado por A.

5.8 Diseño de Autómatas Finitos

Ejemplos 1Se desea diseñar un autómata finito determinista que reconozca el lenguaje de las palabras que no contienen la cadena 001. Es decir, el autómata

Es útil, en estos casos, descubrir que las transiciones asociadas con la cadena excluida (001) tienen que llevar a un estado sumidero:

Pero en este caso, el papel de los estados de aceptación se invierte, todos los intermedios deben ser finales y el asociado con 001 no:

• Y ahora hay que completar las transiciones pendientes de forma coherente:

• El estado inicial representa la situación anterior a comenzar la identificación de la cadena 001. Mientras reciba símbolos 1, con seguridad no habrá comenzado todavía esa cadena por lo que

δ (q0, 1)= q0

• El estado 0 representa la situación en la que se ha identificado sólo el primer carácter de la cadena 001. Hay que especificar su transición con el

Page 51: 62483033 Teoria de Grafos y Automatas

símbolo 1. En este caso, al recibir 1 se puede afirmar que la cadena, por el momento, no comparte ningún símbolo con 001. Es decir, hay que transitar a un estado de aceptación que represente una situación previa al reconocimiento de la cadena 001. No es necesario crear un nuevo estado porque el inicial representa esa situación:

δ (q0, 1)= q0

• El estado 00 representa la situación en la que sólo queda por recibir el símbolo 1 para completar la cadena 001. Hay que especificar su transición con el símbolo 0. En este caso, un 0 más no cambia la situación ya que se sigue estando a falta de un símbolo 1 para completar la cadena 001.

δ (00, 0)= 00

• Por lo que formalmente:Ax=({q0, 0, 00, 001}, {0 ,1}, δx, q0, {q0, 0, 00})

Donde la función de transición δx es la del siguiente diagrama:

Ejercicio 2

Se desea diseñar un autómata finito determinista que reconozca el lenguaje L={λ, ab, abba}.

• Ya que , λ∈L es necesario que el estado inicial sea también final:

• De ejemplos anteriores, es fácil deducir el diagrama de estados para reconocer ab:

Page 52: 62483033 Teoria de Grafos y Automatas

• Y lo mismo ocurre para abba. Como ab es común se pueden reutilizar esos estados:

• Que se debe completar con las transiciones que imposibilitarían la finalización con éxito.

Por lo que formalmente:

Ax=({q0, a ,ab ,abba ,qe}, {a ,b}, δx, q0, {ab, abba})

• Donde la función de transición δx es la del diagrama anterior.

Ejemplo 3

Se desea diseñar un autómata finito determinista que reconozca el lenguaje L={pe, ba}.

Es fácil diseñar las transiciones para cada una de las palabras:• Para la cadena pe.

Y para la cadena ba.

Page 53: 62483033 Teoria de Grafos y Automatas

Y sólo hay que completar las transiciones de forma coherente:• Los dos estados iniciales son realmente el mismo.• Es necesario un sumidero para las entradas incompatibles con las dos

palabras:

Por lo que formalmente:

Ax=({q0, p, pe, b, ba, qe}, {p, e, b, a}, δx, q0, {pe, ba})

• Donde la función de transición δx es la de diagrama anterior.

Ejemplo 4

Se desea diseñar un autómata finito determinista que reconozca el lenguaje quecontiene palabras que comiencen con una secuencia de cualquier número de letras a o ninguna, seguida de una letra b.

• La cadena más corta que puede reconocer el autómata es b:

• Pero hay que admitir que cualquier número de letras a precedan a la b. Eso se puede conseguir si no se sale del estado inicial mientras lleguen símbolos a.

Page 54: 62483033 Teoria de Grafos y Automatas

• Se deben añadir las transiciones que imposibilitarían la finalización con éxito.

Por lo que formalmente:Ax=({q0, q1,qe}, {a ,b}, δx, q0, {q1})

• Donde la función de transición δx es la del diagrama anterior.

Ejemplo 5Se desea diseñar un autómata finito determinista que reconozca el lenguaje de las cadenas compuestas por cualquier número de repeticiones, incluso ninguna, de la cadena 100.

• Se admite que no aparezca ninguna vez la cadena 100, por lo que el estado inicial debe ser también final.

• Es fácil añadir las transiciones asociadas a la cadena 100.

• Pero, tras una aparición de la cadena 100, no se tiene que terminar el proceso; realmente este vuelve a empezar, como el estado inicial es

Page 55: 62483033 Teoria de Grafos y Automatas

también final, puede utilizarse para indicar que se ha encontrado el final de la cadena

• Ahora es suficiente completar de manera coherente las transiciones de las cadenas que no pertenecen al lenguaje con un estado sumidero:

Por lo que formalmente:

Ax=({q0, 1, 10, qe}, {1, 0}, δx, q0, {q0})

Donde la función de transición δx es la del último diagrama de la página anterior.

Ejemplo 6

Page 56: 62483033 Teoria de Grafos y Automatas

Se desea diseñar un autómata finito determinista que reconozca el lenguaje de las cadenas compuestas por una o más repeticiones de la cadena 100.

Por lo que formalmente:Ax=({q0, 1, 10, 100, qe}, {1, 0}, δx, q0, {100})

Ejemplo 7Se desea diseñar un autómata finito determinista que reconozca el lenguaje de las cadenas del lenguaje del ejemplo anterior, precedidas por un símbolo a y seguidas por un símbolo b.

Por lo que formalmente:

Ax=({q0, a, 1, 10, 100, .b, qe}, {a, b, 1, 0}, δx, q0, {.b})

Page 57: 62483033 Teoria de Grafos y Automatas

Ejemplo 7Se desea diseñar un autómata finito determinista que reconozca el lenguaje de las cadenas que contengan cualquier secuencia de símbolos a o b siempre que comiencen y terminen por a.

Por lo que formalmente:

Ax=({q0, q1, q2, qe}, {a, b}, δx, q0, {q2})

Page 58: 62483033 Teoria de Grafos y Automatas

6-. Autómatas finitos no determinísticos (NFA)

Un autómata finito no determinístico es una quintatupla ( Q, Σ , q0, δ , F) en donde Q, Σ , q0 y F (estados, entradas, estado inicial y estados finales) poseen el mismo significado que para un DFA, pero en este caso δ es una transformación de Q x Σ a 2Q. (donde 2Q es el conjunto de potencias de Q, el conjunto de todos los subconjuntos de Q). Obsérvese que puesto que δ es una relación para todo par (q, σ ) compuesto por el estado actual y el símbolo de la entrada, δ (q, σ ), es una colección de cero o más estados [es decir, δ (q, σ )⊆Q]. Esto indica que, para todo estado q1 se pueden tener cero o más alternativas a elegir como estado siguiente, todas para el mismo símbolo de entrada.

Generalmente el término autómata finito no determinístico se abrevia como NFA de sus siglas en inglés Nondeterministic Finite Automaton. Si M es un NFA, definiremos el lenguaje aceptado por M por medio de:

L(M)={w w es una cadena aceptada por M}

Donde una cadena w es aceptada por M, si M pasa de su estado inicial a su estado final al recorrer w (w es consumida en su totalidad).

Observe ahora el diagrama de transición de la siguiente figura

El NFA descrito anteriormente acepta el lenguaje formado por cualquier número (incluyendo el cero) de a’s, concatenadas a una “b” ó una “a” concatenada a cualquier numero (incluyendo el cero) de b’s . Se representa de la siguiente forma:

Q={q0, q1, q2, q3, q4}F={q2, q3, q4}q0=q0

Σ ={a, b}Y δ dada por la tabla de transición.

b

a

q0

a

q1

b

q2

b

q3

q4

a

Page 59: 62483033 Teoria de Grafos y Automatas

.

Obsérvese que en el contenido de las celdas de la tabla de transición son conjuntos. El hecho de que existan celdas con ∅, indica que no existe ninguna transición desde el estado actual mediante la entrada correspondiente. Que para un par (estado actual, entrada) exista más de un posible estado siguiente indica que se puede elegir entre las distintas posibilidades. En el modelo no existe nada que determine la elección. Por esta razón, se dice que el comportamiento del autómata es no determinista.

Veamos otro ejemplo. Consideremos el NFA M={ Q, Σ , q0, F, δ } que acepta el lenguaje formado por cadenas que tienen cero o más ocurrencias de “ab” ó “aba” y esta dado por:

Q={q0, q1, q2}Σ ={a, b}q0=q0 F={q0}Y δ dada por la tabla y el diagrama de transición.

q0

q1

q2

a

b

a

b

Estados a b

q0 {q1, q4} {q3}

q1 {q1} {q2}

q2 ∅ ∅

q3 ∅ ∅

q4 ∅ { q4}Q3

Estados a b

q0 {q1} ∅

q1 ∅ {q0, q2}

q2 {q0} ∅Q3

Page 60: 62483033 Teoria de Grafos y Automatas

7. Autómatas finitos no determinísticos con movimiento ε (nfa- ε ).

Un autómata finito no determinístico con movimiento ε (entrada vacía) es como la quinta tupla ( Q, Σ , δ , q0, F) con todos sus componentes igual que a un NFA, con excepción de δ , la función de transición, que ahora transforma Q x (Σ ∪{ε }) a 2Q; para incluir transiciones de un estado a otro que no dependan de ninguna entrada. Se puede añadir una columna en la tabla de δ para colocar los pares de la forma (qi, ε ). Cuando hay ε -transiciones en un NFA es conveniente suponer que cada estado tiene una ε -transición que cicla en ese estado.

Observe el ejemplo del diagrama de transición de la figura, que acepta el lenguaje consistente en cualquier número (incluyendo el cero) de 0’s seguidos por cualquier número de 1’s seguido, a su vez, por cualquier número de 2’s y cuya tabla de transición es mostrada por la figura 2.10.

Veamos otro ejemplo con el diagrama de transición que acepta el lenguaje formado por cadenas que tienen cero o más ocurrencias de “ab” ó “aba”.

La figura tendría la tabla de transición

.

q0

q1

q2

a, ε

a

b

Estados 0 1 2 ε

q0 {q0} ∅ ∅ {q1}

q1 ∅ {q1} ∅ {q2}

q2 ∅ ∅ {q2} ∅Q 3

Estados a b ε

q0 {q1} ∅ ∅

q1 ∅ {q2} ∅

q2 {q0} ∅ {q0}Q3

q0

q1

εq

2

0

ε

1 2

Page 61: 62483033 Teoria de Grafos y Automatas

8. Expresiones regulares.

Los lenguajes aceptados por un autómata finito se describen con facilidad mediante expresiones simples llamadas expresiones regulares.

Sea Σ un alfabeto. La expresión regular sobre Σ y los conjuntos que denotan se definen de manera recursiva como sigue:1. ∅ es una expresión regular y denota al conjunto vacío.

2. ε es una expresión regular y denota al conjunto {ε }.3. Para cada a ∈ Σ , a es una expresión regular y denota al conjunto {a}.4. Si r y s son expresiones regulares que denotan a los lenguajes R y S.;

respectivamente, entonces tenemos lo siguiente:r+s es una expresión regular que denota a los conjuntos R ∪ S.(r) es una expresión regular que denota al conjunto R.rs es una expresión regular que denota a los conjuntos RS.r* es una expresión regular que denota al conjunto R*.r+ es una expresión regular que denota al conjunto R+.ri es una expresión regular que denota al conjunto Ri.

Ejemplo de Autómatas con sus expresiones regulares El lenguaje del autómata de la figura esta formado por cualquier cadena de

1’s, incluyendo ε .

La expresión regular del autómata es: 1*

El lenguaje del autómata de la figura esta formado por todas las cadenas de a’s de longitud par, incluyendo ε .

La expresión regular del autómata es: (aa)*

1

q0

a

q0

q1

a

Page 62: 62483033 Teoria de Grafos y Automatas

El lenguaje del autómata de la figura esta formado por cadenas de cero ó más a’s seguidas de cero ó más b’s.

Figura 2.15. La expresión regular del autómata es: a*b*.

Existen muchas equivalencias con respecto a expresiones regulares basadas en las correspondientes igualdades de lenguajes. Por ejemplo sean r, s y t expresiones regulares sobre el mismo alfabeto Σ . Entonces:

1. r + s = s + r2. (rs)t = r(st)3. (r + s)t = rt + st4. (r*)* = r*5. r(s + t) = rs + rt

9. Lenguajes regulares.

Los lenguajes regulares pueden ser usados en la construcción de analizadores léxicos - programas que analizan un texto y extraen los lexemas ( o unidades léxicas) que hay en el mismo -.

El conjunto de los lenguajes regulares sobre un alfabeto Σ esta formado por el lenguaje vacío, los lenguajes unitarios incluido {ε } y todos los lenguajes obtenidos a partir de la concatenación, unión y cerradura de estrella de lenguajes.

Ejemplo de lenguajes regulares:Expresión Regular Lenguaje Regular

10 L={La cadena de 10}

1 + 0 L={Una cadena de 0 ó una cadena de 1}

1* L={Cualquier cadena de 1’s incluyendo ε }

(00)* L={Cadenas de 0’s de longitud par, incluyendo ε }

0*1* L={Cadenas de ninguno o más 0’s concatenadas a cadenas de ninguno o más 1’s}

1(1 + 0)* L={Todas las cadenas sobre el alfabeto {1, 0} que empiecen con 1}

b

a

a

b a, b

q0

q1

q2

Page 63: 62483033 Teoria de Grafos y Automatas

(1 + 0)*00 L={Todas las cadenas sobre el alfabeto {1, 0} que terminen en 00}

(1 + 0)*00(1 + 0)* L={Cualquier combinación de 0’s ó 1’s que contengan al menos dos ceros consecutivos}

Cuando sea necesario distinguir entre una expresión regular r y el lenguaje denotado por la misma, usaremos L(r) para denotar el lenguaje. En cualquier caso, si se afirma que w ∈ r, ello equivale a decir que w ∈ (r). Si r y s son expresiones regulares sobre el mismo alfabeto y si L(r)= L(s), entonces se dice que r y s son equivalentes. En el caso de que r y s sean equivalentes se puede escribir r= s. También se puede usar r⊆s en el caso de que L(r) ⊆L(s).