Está en la página 1de 63

Unidad I: Teora de Grafos

La teora de grafos tiene un inicio preciso: comenz con la publicacin de un artculo en 1736 por el matemtico 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 mnimo de viajar de una ciudad a otra, bsqueda de la informacin, representacin de las estructuras qumicas, diagramas de flujo, etc. Los grafos son mdulos naturales para representar tales relaciones. En general, la teora de grafos proporciona herramientas poderosas para resolver problemas que son modelados por grafos. En general, existen grafos para ser aplicados en tareas tales como: Investigacin de Operaciones. Diseo, anlisis de circuitos en Ingeniera Elctrica. Identificacin de estructuras moleculares en la Qumica Orgnica. Segmentacin de Programas en Ciencias de la Computacin. Telecomunicaciones. Etc. 1. Definiciones En esta seccin se darn a conocer los conceptos bsicos para la comprensin 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 vrtices o nodos y E un conjunto finito de lados. Cada arco lado perteneciente a E corresponde a un par ordenado de vrtices <u, v> donde u y v son llamados cola y cabeza respectivamente.

Cuando no importa la direccin 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.

Para grafos no dirigidos el conjunto E se puede definir como una relacin que es simtrica e irrefleja sobre V. En el caso contrario cuando s importa la direccin 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 sucesin de arcos adyacentes (v0,v1), (v1,v2)...(vk-1,vk) denotado usualmente por (v0,v1,v2,...,vk). El nmero de arcos en un camino es llamado longitud del camino. Un camino es llamado ciclo, circuito camino cerrado si el primero y el ltimo vrtice en el camino son el mismo. En caso contrario el camino es abierto. Un grafo se dice acclico 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 ningn vrtice del camino x-y se presenta ms de una vez, el camino es un camino simple x-y. El trmino ciclo se usa para describir un camino simple cerrado x-x. 1.1 Arcos de un Grafo Arco <A,B>

En la figura se sealan 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 Vrtices de un Grafo

Vrtice

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

1.3 Camino de un Grafo

En la figura se puede observar que un camino es una sucesin de arcos adyacentes. El camino que se seala es el camino de el vrtice A al vrtice 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 expresin se obtiene el funcin de los vrtices. 1.4 Ciclo de un Grafo

De la figura se puede deducir que un ciclo es un camino con la caracterstica especial de que en el camino el vrtice de inicio y final es el mismo. El camino que se seala es el camino de el vrtice 1 al vrtice 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 expresin se obtiene el funcin de los vrtices. 1.5 Componentes de un Arco

En la figura se sealan la cabeza y cola de un arco. La cola es el vrtice de donde sale el arco y la cabeza es el vrtice donde llega el arco. Cola del arco = vrtice u. Cabeza del arco = vrtice v.

2. Subgrafos, Complementos e Isomorfismos A continuacin presentaremos algunas caractersticas 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 vaco y E1 es subconjunto de E, donde cada arista de E1 es incidente con los vrtices de V1. Ejemplo:

La figura permite observar dos grafos no dirigidos, G es un grafo que posee 4 vrtices 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.

La figura permite observar dos grafos no dirigidos, G es un grafo que posee 4 vrtices 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 vrtices. 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 ms simple, un grafo G se dice completo si todos los vrtices u, v pertenecientes a V se tiene que <u, v> pertenece a E.

El tamao de un grafo completo se determina de acuerdo al nmero de vrtices que posee el grafo.

2.4 Grafo Complementario Sea G un grafo no dirigido sin lazos con n vrtices. El grafo complementario de G, es el subgrafo formado por los n vrtices de G y las aristas que no estn en G. Si el grafo complementario tiene n vrtices y ninguna arista se le llama a este grafo: grafo nulo.

El grafo complementario G' del grafo original G, est compuesto por todos los vrtices de G y las aristas que no estn 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 vrtices de los grafos tal que todo par de vrtices que son adyacentes en un grafo si y slo si el correspondiente par de vrtices son adyacentes en el otro grafo.

Se puede decir que dos grafos son isomorfos si existe una correspondencia uno a uno entre los vrtices de los grafos tal que para todo par de vrtices que son adyacentes en un grafo si y slo si el correspondiente par de vrtices 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 continuacin se dan algunas herramientas para poder analizar los grafos desde el punto de vista de su recorrido. 3.1 Grado de un vrtice Sea G un grafo no dirigido. Para cualquier vrtice v de g, el grado de v, que se denota g(v), es el nmero de aristas en G que son incidentes con v. En este caso, un lazo en un vrtice 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 vrtice perteneciente al grafo. Debemos recordar que el grado de un vrtice es el nmero de arcos incidentes al vrtice. En la figura el grado de cada vrtice esta representado por el nmero que se encuentra en el vrtice. Teorema : Se define el grado o valencia de v como el nmero de vrtices incidentes a v. Dado que cada arco debe ser incidente a 2 vrtices se tiene el siguiente teorema:

2 Donde E = Nmero de lados del grafo y v = vrtice del grafo.

g (v) = 2 * E
v V

V E = v

g (v)

Corolario : Para cualquier grafo no dirigido, el nmero de vrtices de grado impar debe ser par. 3.2 Circuito Euleriano Sea G un grafo no dirigido sin vrtices 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 lnea punteada de color amarillo muestra el circuito euleriano para este grafo. 3.3 Grado de entrada y salida de un vrtice Sea G=(V, E) un grafo dirigido, para todo v perteneciente a V: El grado de entrada de v es el nmero de aristas de G que llegan a v y se denota ge(v). El grado de salida de v es el nmero de aristas de G que parten de v y se denota gs(v).

Observar que el arco <1,3> o <3,1> representa un arco perteneciente a un grafo no dirigido, los dems arcos son del tipo perteneciente a grafo dirigidos (digrafos). Teorema : Sea G = (V, E) un grafo dirigido. G tiene un circuito euleriano si y slo si G es conexo y ge(v)=gs(v) para todo v perteneciente a V. 4.Caminos y Ciclos Hamiltoneanos En 1859, el matemtico irlands Sir William Rowan Hamilton(1805-1865) desarroll un juego que vendi a un particular de juguetes en Dubln. El juego era un dodecaedro regular de madera con 20 esquinas(vrtices) en las que aparecan nombres de ciudades importantes. El objetivo era encontrar un ciclo alrededor de las aristas del slido, de modo que cada ciudad estuviera en el ciclo exactamente una vez.

4.1 Ciclo Hamiltoneano Si 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 vrtice de V.

Ejemplo Ciclo Hamiltoneano = { <1,4>,<4,3>,<3,2>,<2,1> } Orden vrtices visitados = = { 1, 4, 3, 2 ,1 } El ciclo hamiltoneano es un camino que recorre todos los vrtices del grafo, con la caracterstica de que el vrtice inicial y final es el mismo. 4.2 Camino Hamiltoneano Un camino hamiltoneano es un camino simple (y no un ciclo) de G que contiene todos los vrtices

. Ejemplo Ciclo Hamiltoneano = { <1,4>,<4,2>,<2,3> } Orden vrtices visitados = = { 1, 4, 2 ,3 }

Un camino hamiltoneano es un camino con la caracterstica de que recorre todos los vrtices del grafo. No es necesario que el camino sea un ciclo. Teorema : Sea G un digrafo completo, es decir tiene n vrtices y para cualquier par de vrtices 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) vrtices. 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 Representacin de un Grafo Un tema que es muy importante para el uso y la comprensin de grafos, es conocer y dominar por completo las diversas formas de representar un grafo. En esta seccin se podr conocer las formas de representar un grafo. Existen dos representaciones grficas para grafos: Matrices. Listas. 5.1 Matrices de adyacencia : La matriz de adyacencia de un grafo G=(V, E) es una matriz lgica 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 simtrica. La matriz de adyacencia contiene |E| 1 para un grafo dirigido y 2|E| para un grafo no dirigido.

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 vrtice 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 vrtices 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.

5.3 Listas : Es una forma de mostrar los arcos, representados como par de vrtices. Las listas de adyacencia, las cuales corresponden a vrtices V y una lista de vrtices U tal que U y V son adyacentes.

6. Grafos Ponderados 6.1 Optimizacin y emparejamiento Con gran frecuencia se desea modelar problemas prcticos utilizando grafos en los que se asocia a las aristas un entero no negativo llamado peso o costo, dichos nmeros se asocian con informacin como la cantidad de material que puede embarcarse de un vrtice a otro a lo largo de una arista la cual puede representar una carretera o ruta area, o hallar la forma de conectar todos los vrtices al menor costo, en el caso de un circuito elctrico por ejemplo. Estas tcnicas surgen en el rea de las matemticas llamadas Investigacin de Operaciones. Comenzaremos con un grafo dirigido conexo sin arcos G = (V,E), donde: V conjunto finito no vaco, es el conjunto de vrtices y sea E VxV el conjunto de pesos . A cada arista e = (a, b) de este grafo le asignamos un nmero 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 vrtice e(x, y), se define p(a, b) = . Para Cualquier e = (a, b) E, p(e) podra representar:

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 estn : Hallar el camino ms corto entre un vrtice dado V0 y cada uno de los dems vrtices de un grafo dirigido conexo sin lazos. Hallar el rbol de expansin mnimo asociado a un grafo dado, donde la sumas de los pesos de las aristas del rbol sea minimal. 6.2 El rbol de expansin mnima Se aborda este concepto a partir del siguiente problema: "Hay que construir una red de cmputo con un acoplamiento vago para un sistema de siete computadores. El grafo G de la figura es un modelo de la situacin. Los computadores se representan mediante los vrtices del grafo, las aristas representan Lneas de transmisin que se tienen en cuanta para enlazar ciertos pares de computadores. Asociamos a cada arista e de G un nmero real positivo p(e), el peso de e. En este ejemplo, el peso de una arista indica el costo previsto para la construccin de esa lnea de transmisin particular. El objetivo es enlazar todos los computadores minimizando el costo total de la construccin."

Para hacer esto, se necesita un rbol de expansin T, tal que la suma de los pesos de las aristas en T sea mnima. La construccin de dicho rbol de expansin ptimo se puede realizar por medio de los algoritmos de: Joseph Kruskal.y Robert Prim. 6.2.1 Algoritmo de Kruskal

A continuacin se analiza el Algoritmo Kruskal para la construccin del rbol de expansin minimal Como el algoritmo de Dijkstra, este es un algoritmo ptimo; al usarlo en cada paso se hace una eleccin ptima (en este caso minimal) de los datos disponibles restantes. Lo que parece la eleccin ptima localmente es tambin la mejor opcin globalmente, de ac que el algoritmo finaliza en una solucin ptima. Anlisis Sea G=(V,E) un grafo no dirigido conexo sin ciclos tal que |V| = n y cada arista e tiene asignado un nmero real positivo p(e). Para encontrar un rbol de expansin 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 pequeo 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 ms pequeo posible y (b) el subgrafo de G determinado por las aristas e1,e2,....,ei,ei+1 (y los vrtices 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 vrtices y n-1aristas, y es un rbol recubridor ptimo para G. Si i<n-1, regresar al paso 2. 6.2.2 Aplicacin del algoritmo de Kruskal Inicializacin: (i=1) Puesto que solo existe una arista (a saber, {e,g}) de peso mnimo 1, comenzamos con T ={ {e,g}}. (Al principio T es un rbol con una arista, y despus de cada iteracin crece hasta ser un rbol ms grande o un bosque. Despus de la ultima iteracin, el subgrafo T es un rbol recubridor ptimo para el grafo dado G.) Primera iteracin: 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 iteracin Dos 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 enva de regreso al paso 2. Tercera iteracin

Entre las aristas de G que no estn en T, la arista {f,g} tiene un peso minimal 2. Sin embargo, si aadimos 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 iteracin T= {{e,g},{d,f},{d,e},{c,e},{b,e}}; i aumenta a 5 Quinta Iteracin T= {{e,g},{d,f},{d,e},{c,e},{b,e},{a,b}}; el contador i toma el valor 6 = (nmero de vrtices de G)-1. Por lo tanto es un rbol ptimo para el grafo G y tiene peso 1+2+2+3+4+5=17

6.2.3 Algoritmo de Prim Rober Prim desarroll una segunda tcnica para la construccin de un rbol ptimo. En este algoritmo voraz, los vrtices del grafo se dividen en dos conjuntos: procesados y no procesados. Al principio, slo hay un vrtice en el conjunto P de los vrtices procesados y los dems estn en el conjunto N de vrtices por procesar. Cada iteracin del algoritmo incrementa el conjunto P en un vrtice, mientras que el tamao 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 vrtice 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. Aadimos a T la arista ms corta (la arista de peso minimal) de G que conecta un vrtice x en P con un vrtice 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 vrtices 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:

Inicializacin i=1; P={a}; N={b,c,d,e,f,g}; T= . Primera iteracin :T={{a,b}}; P={a,b}; N={c,d,e,f,g}; i=2. Segunda iteracin :T={{a,b},{b,e}}; P={a,b,e};N={c,d,f,g};i=3. Tercera iteracin :T={{a,b},{b,e},{e,g}}; P={a,b,e,g};N={c,d,f};i=4. Cuarta iteracin :T={{a,b},{b,e},{e,g},{d,e}}; P={a,b,e,g,d};N={c,f};i=5. Quinta iteracin :T={{a,b},{b,e},{e,g},{d,e},{f,g}}; P={a,b,e,g,d,f};N={c};i=6. Sexta iteracin :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 continuacin:

6.3 Problemas de camino ms corto Entre los problemas de camino ms corto se presentan el de camino ms corto con un solo origen, que est asociado al algoritmo de Dijkstra y el de camino ms corto entre todos los pares, asociado al algoritmo de Floyd. Camino ms corto con un solo origen. Camino ms corto entre todos los pares.

6.3.1 Camino ms Corto con un solo Origen Supngase un grafo dirigido ponderado G=(V,E), donde un vrtice se especifica como origen. El problema es determinar el costo del camino ms corto del origen a todos los dems vrtices 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 vrtices cuya distancia ms corta desde el origen ya es conocida. En principio, S contiene slo el vrtice de origen; en cada paso, se agrega algn vrtice restante v a S, cuya distancia desde el origen es la ms corta posible. Suponiendo que todos los arcos tienen costo no negativo, siempre es posible encontrar un camino ms corto entre el origen y v, que pasa slo a travs de los vrtices de S, y que se llama especial. En cada paso del algoritmo, se utiliza un arreglo D para registrar la longitud del camino especial ms corto a cada vrtice. Una vez que S incluye todos los vrtices, todos los caminos son especiales, por lo tanto D contiene la distancia ms corta del origen a cada vrtice. 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 vrtices para el que se conoce el camino ms corto y ampliar T hasta que T=V. Para ello etiquetamos cada vrtice z con t(z) que es la longitud del camino ms corto ya encontrado. Inicializacin: Sea T={s}, t(s)=d(s,s)=0, t(z)=w(sz) para zs. Iteracin: Elegir el vrtice v T con etiqueta mnima. Aadir v a T. Analizar cada arista vz con zT y actualizar la etiqueta de z a min{t(z), t(v) +w(vz)} La iteracin continua hasta que T=V(G) o hasta que t(z)= para cada vrtice zT Ejemplo: Sea el Grafo G=(V,E)

a 0

b 3 3

c 1

d 5 5 5 5 5

e f g 5 3 5 3 9 5 9 4 9 8 8

h 5 5 5

T c b e g d h f

arista ac ab ce eg ad eh df

6.3.2 Camino ms corto entre todos los pares Algoritmo de Floyd Este algoritmo intenta resolver el problema de encontrar el camino ms corto entre todos los pares de nodos o vrtices de un grafo. Esto es similar a construir una tabla con todas las distancias mnimas 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 vrtices (v,w) el camino ms 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

Ak[i,j] significa el costo del camino ms corto que va de i a j y que no pasa por algn vrtice mayor que k. El objetivo es calcular An[i,j]

Ejemplo A0[i,j] = 1 0 1 8 1 2 1 0 3 4 3 3 0 4 1 0

1 2 3 4

k=1 A1[i,j] = 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)

k=2 A2[i,j] = 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) k=3 A3[i,j] = 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)

k=4 A4[i,j] = 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)

7 PERT 7.1 Aplicacin de la teora de grafos al PERT La tcnica de anlisis de grafos, puede convertirse en un til instrumento al servicio de muy variados mbitos. Ahora se propone su aplicacin a la confeccin de los PERT (Project Evaluation and Review Technique), que constituyen el eje vertebrado de la planificacin y serie de tomas de decisiones en implementacin y evaluacin de programas de intervencin. Un proyecto puede esquematizarse grficamente usando un grafo, donde los arcos del grafo indican las actividades, y los vrtices, los sucesos. Las flechas irn 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 vrtice 1 es el suceso inicial de la actividad A, y el vrtice 2 es su suceso final; adems, 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 irn 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 elaboracin del grafo PERT de un programa implica la construccin 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.

Ejemplo Se 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:

Actividad Tiempo A 6 B 4 C 2 D 1 E 3 F 4 G 2 El cuadro de prelaciones ser: Actividad A B C D E F G Anteriores B A A A C, F Operacin Aplicando a) Aplicando a) Aplicando c) Aplicando b) Aplicando b) Aplicando b) Aplicando d)

De acuerdo con lo indicado, los sucesivos pasos de construccin del PERT sern:

Paso 1 del PERT, en que se dibuja el suceso inicio y las dos actividades de partida A la actividad A le seguirn 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:

Paso 2 del PERT, en donde se contempla como a la Actividad A le seguirn 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 aadiendo una actividad ficticia , por ejemplo, detrs de la D, resultando finalmente el grafo, en donde se numeran los nodos:

7.2. Optimizacin del PERT mediante la teora de grafos Se lleva a cabo mediante dos importantes apoyos estadsticos, que son el clculo de los tiempos temprano y retardado, por una parte, y, por otra, la incidencia de las holguras en el camino crtico. 7.2.1. Clculo 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 continuacin, se colocarn en cada nodo, de la siguiente forma.

A) El tiempo "early" o tiempo "rpido" 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 numeracin 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) = mx [t(i) + t(i,j)] siendo t(i,j) el tiempo de la actividad (i,j), y por esto i<j. El tiempo mnimo del programa, que indica la duracin 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 = 6 Nodo 3: t(3) = t(1) + t(1,3) = 0 + 4 = 4 Nodo 4: t(4) = t(2) + t(2,4) = 6 + 1 = 7 En el suceso 5 concurren dos flechas; por tanto Nodo 5: t(5)= mx [t(2)+t(2,5),t(3)+t(3,5)] = mx [6+4, 4+2] = mx [10,6] = 10 (actividad F1) (actividad C) Finalmente, en el suceso 6 concurren tres flechas, por lo que Nodo 6: t(6) = mx [t(4)+t(4,6),t(2)+t(2,6),t(5)+t(5,6)]=mx [7+0,6+3,10+2]=mx [7,9,12]=12
(actividad F1) (actividad E) (actividad G)

Por tanto, la duracin total del programa es t(6) = 12.

B) El tiempo "last" o tiempo "lento" es el mayor tiempo que se puede emplear hasta llegar a ese suceso para que la duracin 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 numeracin, 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) = mn [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 = 10 Nodo 4: t'(4) = t'(6) - t(4,6) = 12 - 0 = 12 Nodo 3: t'(3) = t'(5) - t(3,5) = 10 - 2 = 8 Del suceso 2 parten tres actividades, por lo que Nodo2: t'(2)=mn [t'(4)-t(2,4), t'(6)-t(2,6), t'(5)-t(2,5)] = mn [12-1,12-3,10-4] = mn [11,9,6]=6

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

Finalmente, para el suceso 1, tenemos Nodo 1: t'(1)= mn [t'(2)-t(1,2),t'(3)- t(1,3)] = mn [6 - 6,8 - 4] = mn [0,4] = 0
(actividad A) (Actividad B)

7.2.2. Incidencia de las holguras en el camino crtico Al aplicar el PERT se considerarn las holguras de tiempo que veremos a continuacin, teniendo en cuenta que una determinada actividad se representar como se muestra a continuacion: t(i) = tiempo early del suceso inicial t'(i) = tiempo last del suceso inicial t(j) = tiempo early del suceso final t'(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)

Esta holgura indica el tiempo que se puede retrasar su realizacin 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 crticas. El camino crtico, que va del suceso inicio del programa hasta el suceso fin, viene determinado por aquellas actividades que sean crticas. Esto significa que las actividades crticas son la clave para que el programa total no se retrase. Puede haber ms de un camino crtico. 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 crtico 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. Aplicndolo al ejemplo que desarrollamos, resulta:

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. Nombre t(i,j) i - j 1 2 A 6 1 3 B 4 2 4 D 1 2 5 F 4 2 6 E 3 3 5 C 2 4 6 F1 0 5 6 G 2 t(i) 0 0 6 6 6 4 7 10 t(j) 6 4 7 10 12 10 12 12 t'(i) 0 0 6 6 6 8 10 12 t'(j) 6 8 12 10 12 10 12 12 H(i) 0 0 0 0 0 4 5 0 H(j) 0 4 5 0 0 0 0 0 HT 0 4 5 0 3 4 5 0 HL 0 0 0 0 3 4 5 0 HI 0 0 0 0 3 0 0 0 Situacin Crtica Crtica

Crtica

Vemos como el tiempo mnimo es 12. Las posibilidades que brinda el PERT han permitido que la implementacin de programas se llevase a cabo con mayor sistematizacin y de acuerdo con el plan previsto, lo cual facilita indudablemente no slo la evaluacin del programa sino su anlisis econmico. La aproximacin al PERT desde el anlisis de grafos dota a este instrumento de mayores ventajas, y su uso racional y minucioso es altamente favorable a la precisin que cada vez con mayor intensidad est caracterizando a la evaluacin

Unidad II: Autmatas y Lenguajes Formales


Una parte importante de estos lenguajes son los de programacin. A lo largo de esta unidad se estudiarn con detalle los lenguajes formales, las gramticas (que son objetos matemticos para la formalizacin de los lenguajes) y las relaciones entre ellos. Informalmente, se puede entender por dispositivo de cmputo aqul que es capaz de recibir una entrada, realizar una operacin con su informacin y producir un resultado. A lo largo del curso se estudiarn diferentes dispositivos de este tipo a los que se suele dar el nombre genrico de autmatas y tambin se los relacionar con los lenguajes que son capaces de manipular. 1.- Conceptos Bsicos 1.1.- Smbolo Unidad bsica relacionada con lenguajes y gramticas y que formaliza lo que las letras (o las palabras) representan en los lenguajes naturales. Por ejemplo, Si se trata de nmeros, podran considerarse los siguientes smbolos: 0,1,2,3,4,5,6,7,8,9 Si se trata de valores lgicos, podran considerarse los siguientes: 0,1 Si se trata de palabras del idioma espaol podran 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.- Alfabeto Es un conjunto finito no vaco de smbolos Notacin Para referirse a un alfabeto cualquiera en general, se utilizar el smbolo: Ejemplos El alfabeto de los dgitos en base 10:

10

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

El alfabeto binario:
2

={0,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}

El alfabeto espaol:

1.3.- Secuencia de elementos Es una coleccin ordenada de elementos o smbolos Notacin y ejemplos Usaremos un ndice para indicar la posicin de cada elemento de una secuencia Para localizar el elemento que ocupa la posicin i-sima en la coleccin S puede utilizarse la expresin Si Cuando, en lugar de representar la secuencia como una unidad, se desea resaltar su contenido, pueden escribirse explcitamente los elementos que la componen. Por ejemplo, la secuencia s compuesta por los siguientes elementos enumerados segn 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 representacin con subndices y la anterior, por ejemplo s= s1s2s3s4 donde s1=a, s2=1, s3=b y s4 =3 1.4.- Palabra Es una secuencia finita de smbolos tomados de un alfabeto. Tambin se las suele llamar cadenas o cadenas de smbolos. Ejemplos Con el alfabeto de los dgitos 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 espaol: 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

2. Dispositivos capaces de computar Los autmatas que veremos necesitan almacenar el programa y disponer de cierto almacenamiento auxiliar. Esquema grfico de los autmatas.

Dependiendo del almacenamiento auxiliar se estudiarn los siguientes tipos: 2.1.- Autmatas finitos No disponen de ningn tipo de memoria auxiliar. Esquema grfico de los autmatas finitos.

2.2.- Autmatas a pila: Disponen de una pila auxiliar con las operaciones push y pop. Esquema grfico de los autmatas a pila.

2.3.- Mquinas de Turing Disponen de una memoria auxiliar compuesta por gran cantidad de espacios capaces de almacenar datos a los que se puede acceder directamente proporcionando la posicin que ocupan.
Esquema grfico de las mquinas de Turing.

3 Clasificacin segn el determinismo Otra de las caractersticas que permite clasificar los autmatas es el concepto de determinismo. Se llamarn deterministas a aquellos autmatas que en un momento dado slo puedan estar en un estado. Se llamarn no deterministas a aquellos que puedan estar en ms de un estado. Para ello es imprescindible que exista alguna entrada tal que, cuando el autmata se encuentra en cierto estado, pueda transitar a ms de una situacin diferente. Todos los tipos de autmata anteriores pueden clasificarse a su vez utilizando este criterio. 4 Conceptos Bsicos 4.1 Lenguaje universal sobre un alfabeto Lenguaje universal sobre un alfabeto es el conjunto de todas las palabras que se pueden formar con smbolos de Notacin: El conjunto universal de un alfabeto S se representa como

*
4.2 Lenguajes Lenguaje sobre un alfabeto S es cualquier subconjunto del lenguaje universal sobre Notacin: Por lo tanto, se puede decir de cualquier lenguaje L sobre el alfabeto

L *

Por lo tanto, un lenguaje no es ms que un conjunto de palabras. Como en teora de conjuntos, hay dos maneras muy frecuentemente utilizadas para la definicin de conjuntos: Mediante la enumeracin de sus elementos: Posible slo si el conjunto es finito. Por ejemplo: el siguiente lenguaje L1.

= {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} L1 ={petacas, chozas, jefe}

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

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 nmero de smbolos que tiene Notacin: La longitud de cualquier palabra * se representa como | | b) Palabra vaca Es la nica palabra que tiene 0 smbolos Ejemplos 1 Considrese el siguiente alfabeto a ={a} Parece claro que a* tiene que incluir todas las palabras de longitud 1 formadas por smbolos a: a a* Y tambin las de longitud 2, 3, etc... {aa, aaa, ... } a* Pero, reflexionando respecto a las posibles longitudes, tambin se puede formar con smbolos de a la palabra que no tiene ningn smbolo, es decir: a* Y, por tanto: a*={ , a, aa, aaa, ... } Ejemplos 2 Considrese el siguiente alfabeto ab ={a,b} Parece claro que ab* tiene que incluir todas las palabras de longitud 1 formadas por smbolos a o b: {a, b} ab* Y tambin las de longitud 2, etc... {aa, ab, ba, bb} ab* Pero, reflexionando respecto a las posibles longitudes, tambin se puede formar con smbolos de ab la palabra que no tiene ningn smbolo, es decir: ab*

Y, por tanto: ab*={ , a, b, aa, ab, ba, bb, ...} Propiedad Las reflexiones anteriores permiten enunciar la siguiente propiedad

*
Es decir la palabra vaca pertenece al lenguaje universal sobre cualquier alfabeto posible c) Lenguaje vaco es el que no contiene ninguna palabra. Corresponde, en lenguajes, al conjunto vaco. d) Lenguaje { } es el lenguaje que slo contiene la palabra vaca ( ) Son dos conjuntos importantes que son diferentes como se deduce del hecho de que tienen distinto cardinal. |{ }|=1 | |=0

5. Autmatas finitos deterministas 5.1 Introduccin A continuacin se analizar exhaustivamente un caso ms sencillo, un interruptor, que facilitar la presentacin de la definicin formal de este tipo de autmatas. Resulta claro que el interruptor puede encontrarse en dos situaciones distintas: apagado o encendido. El interruptor slo puede recibir un estmulo exterior: que se pulse su botn. Cuando el interruptor est apagado, si se pulsa el botn pasa a estar encendido, en otro caso sigue apagado. Cuando el interruptor est encendido, si se pulsa el botn 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 grficamente la situacin.

5.1.1 Estados, entradas y transiciones El anlisis del comportamiento del autmata del interruptor sugiere dividir la descripcin formal del mismo en dos partes: Entradas (externas), o Que representan los estmulos del exterior a los que puede reaccionar el autmata. Estados (internos) y transiciones, o Los estados representan las diferentes situaciones en las que se puede encontrar el autmata. En el caso del interruptor: encendido y apagado o Las Transiciones representan el cambio del autmata de un estado a otro debido a las entradas.

5.2.- Definicin formal Un autmata finito determinista se puede definir como una quntupla A = (Q, , , q0, F) Donde: Q es un conjunto finito no vaco de estados. es el alfabeto de entrada. :Q Q es la funcin de transicin que, a cada pareja de estados y smbolos de entrada (q,a), le asigna un nuevo estado q = (q,a). q0Q es el estado inicial del autmata. F Q es el conjunto de estados de finalizacin del autmata. Los estados del autmata Tienen como objetivo recordar la historia del sistema. La cantidad de estados posibles es finita y se recuerda slo lo relevante. El hecho de que sea finita permitir que se escriban algoritmos para simular los autmatas finitos con una cantidad de recursos acotada, es decir, los algoritmos no necesitarn 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 situacin en la que se encuentra el autmata inicialmente. Los estados finales Representan las situaciones en las que, de llegar el autmata a ellas, se considera que su funcionamiento ha finalizado satisfactoriamente. Las entradas Representan los estmulos que pueden llegar desde el exterior y afectar el comportamiento del autmata. Las transiciones entre estados del autmata asociadas a una entrada Representan la manera en la que los estmulos externos modifican el comportamiento del autmata. Ejemplo 1 A continuacin se muestra la formalizacin del ejemplo del interruptor: A1=(Q1, 1, 1, 0, ) Donde El conjunto de estados representa encendido con 1 y apagado con 0.

Q1={0, 1} El alfabeto de entrada representa pulsar con p. 1={p} El estado inicial q0 es que est apagado (0).
En este autmata no se indican estados finales ( es el conjunto vaco). La funcin de transicin se muestra mediante la notacin habitual en teora de conjuntos.

A continuacin se muestra la formalizacin del ejemplo del interruptor:

La funcin de transicin suele representarse utilizando otras notaciones formales, en algn sentido, ms cmodas. Las ms usadas son las siguientes: Diagrama de transiciones::Consiste en disponer la informacin en forma de grafo Tabla de transiciones: Consiste en disponerla en forma de tabla.

5.3.- Diagrama de transicin El diagrama de transicin para una funcin de transicin d es un grafo dirigido que se define de la siguiente manera: Nodos: Hay uno para cada estado (qQ) y se representan mediante un valo que contiene el nombre del estado:

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 lnea del valo de los estados finales (qF) es doble:

Arcos: Se etiquetan con los smbolos del alfabeto de entrada (a ). Existe un arco del nodo p al q con la etiqueta a si y slo si (p,a)=q. Se representan mediante una flecha que sale del nodo p y llega al q.

Diagrama de transicin: ejemplo 1 A continuacin se muestra el diagrama de la funcin de transicin del ejemplo 1.

5.4.- Tabla de transicin La tabla de transicin para una funcin de transicin d se define de la siguiente manera: Filas: Tantas como estados haya (|Q|) Es necesario Marcar la del estado inicial (por ejemplo mediante el smbolo ) Marcar la de los estados finales (por ejemplo mediante el smbolo *)

Columnas: Tantas columnas como entradas haya (| |) Contenido de las celdas: La casilla de la fila q y columna a contiene (q,a) Diagrama de transicin: ejemplo 1 A continuacin se muestra la tabla de la funcin de transicin del ejemplo 1.

5.5.- Aplicaciones: Reconocimiento de palabras Una aplicacin muy importante de los autmatas finitos es su capacidad de reconocer palabras. El autmata reconocer una palabra si, tras procesar la secuencia de sus smbolos 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 autmata ha terminado de forma exitosa, realmente indica que la palabra tratada por l ha sido reconocida.

Ejemplo 2 Se desea disear un autmata 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 autmata 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 slo 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 aadir los estados correspondientes a pep y a pepe. Cuando se llega a este ltimo estado, puede afirmarse que el autmata ha reconocido la palabra completa por lo que ser final. A continuacin se muestra parte del diagrama de la funcin de transicin del ejemplo.

Esta primera parte del ejemplo permite extraer una tcnica de diseo generalizable A continuacin se muestra la tabla correspondiente a la situacin estudiada.

Esto no es suficiente para definir por completo el autmata. La funcin de transicin debe especificar estados para todas las combinaciones posibles de estados y smbolos de entrada. La tabla mostraba 6 casillas vacas: Cuando el autmata 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 situacin es la misma para las casillas (pe,e) y (pep,p). Desde el estado final, ya que el autmata slo est interesado en reconocer la palabra pepe, y no las palabras que comiencen con pepe, cualquier otro smbolo que la siga debe implicar que el autmata no termina con xito.

Se puede aadir un estado de error (qe) que recoja los descritos anteriormente: Este estado recoge las transiciones no exitosas de los dems. Tambin es necesario especificar qu pasa cuando desde este estado, se reciben smbolos de entrada: resulta claro que, producida una situacin de error, no hay ningn smbolo que pueda hacer que el autmata termine con xito. A continuacin se muestra el diagrama de la funcin de transicin del ejemplo 2.

Esta primera parte del ejemplo permite extraer una tcnica de diseo generalizable A continuacin se muestra la tabla de transicin correspondiente a la situacin estudiada.

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 funcin de transicin 2 es tabla de transicin.

5.6.- Extensin de a palabras Definicin: La funcin de transicin describe el comportamiento del autmata frente a un smbolo. Este concepto puede formalizarse de la siguiente manera. Dada una funcin de transicin :Q Q, se define de la siguiente manera la ^ funcin de transicin extendida (a palabras) o :

Ejemplo Dado el autmata 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 grfica.

Se puede comprobar que

Para afirmar, respectivamente, que La cadena eppe es reconocida por el autamata A5. La cadena eepe no es reconocida por el autmata A5.

5.7 Lenguaje de un Autmata Finito Determinista Se llama lenguaje del autmata A, L(A) al lenguaje aceptado por A. Se llama lenguaje rechazado por A, L(A) al lenguaje no aceptado por A.

5.8 Diseo de Autmatas Finitos Ejemplos 1 Se desea disear un autmata finito determinista que reconozca el lenguaje de las palabras que no contienen la cadena 001. Es decir, el autmata

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 aceptacin 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 situacin anterior a comenzar la identificacin de la cadena 001. Mientras reciba smbolos 1, con seguridad no habr comenzado todava esa cadena por lo que (q0, 1)= q0 El estado 0 representa la situacin en la que se ha identificado slo el primer carcter de la cadena 001. Hay que especificar su transicin con el

smbolo 1. En este caso, al recibir 1 se puede afirmar que la cadena, por el momento, no comparte ningn smbolo con 001. Es decir, hay que transitar a un estado de aceptacin que represente una situacin previa al reconocimiento de la cadena 001. No es necesario crear un nuevo estado porque el inicial representa esa situacin:

(q0, 1)= q0
El estado 00 representa la situacin en la que slo queda por recibir el smbolo 1 para completar la cadena 001. Hay que especificar su transicin con el smbolo 0. En este caso, un 0 ms no cambia la situacin ya que se sigue estando a falta de un smbolo 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 funcin de transicin x es la del siguiente diagrama:

Ejercicio 2 Se desea disear un autmata finito determinista que reconozca el lenguaje L={, ab, abba}. Ya que , L es necesario que el estado inicial sea tambin final:

De ejemplos anteriores, es fcil deducir el diagrama de estados para reconocer ab:

Y lo mismo ocurre para abba. Como ab es comn se pueden reutilizar esos estados:

Que se debe completar con las transiciones que imposibilitaran la finalizacin con xito.

Por lo que formalmente:

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


Donde la funcin de transicin x es la del diagrama anterior.

Ejemplo 3 Se desea disear un autmata finito determinista que reconozca el lenguaje L={pe, ba}. Es fcil disear las transiciones para cada una de las palabras: Para la cadena pe.

Y para la cadena ba.

Y slo 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 funcin de transicin x es la de diagrama anterior.

Ejemplo 4 Se desea disear un autmata finito determinista que reconozca el lenguaje que contiene palabras que comiencen con una secuencia de cualquier nmero de letras a o ninguna, seguida de una letra b. La cadena ms corta que puede reconocer el autmata es b:

Pero hay que admitir que cualquier nmero de letras a precedan a la b. Eso se puede conseguir si no se sale del estado inicial mientras lleguen smbolos a.

Se deben aadir las transiciones que imposibilitaran la finalizacin con xito.

Por lo que formalmente:

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


Donde la funcin de transicin x es la del diagrama anterior.

Ejemplo 5 Se desea disear un autmata finito determinista que reconozca el lenguaje de las cadenas compuestas por cualquier nmero 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 tambin final.

Es fcil aadir las transiciones asociadas a la cadena 100.

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

tambin 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 funcin de transicin x es la del ltimo diagrama de la pgina anterior.

Ejemplo 6

Se desea disear un autmata finito determinista que reconozca el lenguaje de las cadenas compuestas por una o ms repeticiones de la cadena 100.

Por lo que formalmente:

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


Ejemplo 7 Se desea disear un autmata finito determinista que reconozca el lenguaje de las cadenas del lenguaje del ejemplo anterior, precedidas por un smbolo a y seguidas por un smbolo b.

Por lo que formalmente:

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

Ejemplo 7 Se desea disear un autmata finito determinista que reconozca el lenguaje de las cadenas que contengan cualquier secuencia de smbolos a o b siempre que comiencen y terminen por a.

Por lo que formalmente: Ax=({q0,

q1, q2, qe}, {a, b}, x, q0, {q2})

6-. Autmatas finitos no determinsticos (NFA) Un autmata finito no determinstico 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 transformacin de Q x a 2Q. (donde 2Q es el conjunto de potencias de Q, el conjunto de todos los subconjuntos de Q). Obsrvese que puesto que es una relacin para todo par (q, ) compuesto por el estado actual y el smbolo de la entrada, (q, ), es una coleccin de cero o ms estados [es decir, (q, )Q]. Esto indica que, para todo estado q1 se pueden tener cero o ms alternativas a elegir como estado siguiente, todas para el mismo smbolo de entrada. Generalmente el trmino autmata finito no determinstico se abrevia como NFA de sus siglas en ingls Nondeterministic Finite Automaton. Si M es un NFA, definiremos el lenguaje aceptado por M por medio de: L(M)={w es una cadena aceptada por M} w 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 transicin de la siguiente figura a q0 a b q3 b q4 a b q2

q1

El NFA descrito anteriormente acepta el lenguaje formado por cualquier nmero (incluyendo el cero) de as, concatenadas a una b una a concatenada a cualquier numero (incluyendo el cero) de bs . 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 transicin.

. Estados q0 q1 q2 q3 q4
Q3

a {q1, q4} {q1}

b {q3} {q2} { q4}

Obsrvese que en el contenido de las celdas de la tabla de transicin son conjuntos. El hecho de que existan celdas con , indica que no existe ninguna transicin desde el estado actual mediante la entrada correspondiente. Que para un par (estado actual, entrada) exista ms de un posible estado siguiente indica que se puede elegir entre las distintas posibilidades. En el modelo no existe nada que determine la eleccin. Por esta razn, se dice que el comportamiento del autmata es no determinista. Veamos otro ejemplo. Consideremos el NFA M={ Q, , q0, F, } que acepta el lenguaje formado por cadenas que tienen cero o ms 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 transicin.

Estados q0 q1 q2
Q3

a {q1} {q0} a b

b {q0, q2}

q0

q1

q2

7. Autmatas finitos no determinsticos con movimiento (nfa- ). Un autmata finito no determinstico con movimiento (entrada vaca) es como la quinta tupla ( Q, , , q0, F) con todos sus componentes igual que a un NFA, con excepcin de , la funcin de transicin, que ahora transforma Q x ( { }) a 2Q; para incluir transiciones de un estado a otro que no dependan de ninguna entrada. Se puede aadir 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 -transicin que cicla en ese estado. Observe el ejemplo del diagrama de transicin de la figura, que acepta el lenguaje consistente en cualquier nmero (incluyendo el cero) de 0s seguidos por cualquier nmero de 1s seguido, a su vez, por cualquier nmero de 2s y cuya tabla de transicin es mostrada por la figura 2.10. 0 q0 1 q1 2 q2

Estados q0 q1 q2
Q3

0 {q0}

1 {q1}

2 {q2}

{q1} {q2}

Veamos otro ejemplo con el diagrama de transicin que acepta el lenguaje formado por cadenas que tienen cero o ms ocurrencias de ab aba. a q0 a, q1

q2

La figura tendra la tabla de transicin . Estados q0 q1 q2


Q3

a {q1} {q0}

b {q2}

{q0}

8. Expresiones regulares. Los lenguajes aceptados por un autmata finito se describen con facilidad mediante expresiones simples llamadas expresiones regulares. Sea un alfabeto. La expresin regular sobre y los conjuntos que denotan se definen de manera recursiva como sigue: 1. es una expresin regular y denota al conjunto vaco. 2. es una expresin regular y denota al conjunto { }. 3. Para cada a , a es una expresin 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 expresin regular que denota a los conjuntos R S. (r) es una expresin regular que denota al conjunto R. rs es una expresin regular que denota a los conjuntos RS. r* es una expresin regular que denota al conjunto R*. r+ es una expresin regular que denota al conjunto R+. ri es una expresin regular que denota al conjunto Ri. Ejemplo de Autmatas con sus expresiones regulares El lenguaje del autmata de la figura esta formado por cualquier cadena de 1s, incluyendo . 1 q0

La expresin regular del autmata es: 1* El lenguaje del autmata de la figura esta formado por todas las cadenas de as de longitud par, incluyendo . a q0 a La expresin regular del autmata es: (aa)* q1

El lenguaje del autmata de la figura esta formado por cadenas de cero ms as seguidas de cero ms bs.

a b q0

b a q1

a, b q2

Figura 2.15. La expresin regular del autmata 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 + r 2. (rs)t = r(st) 3. (r + s)t = rt + st 4. (r*)* = r* 5. r(s + t) = rs + rt 9. Lenguajes regulares. Los lenguajes regulares pueden ser usados en la construccin de analizadores lxicos - programas que analizan un texto y extraen los lexemas ( o unidades lxicas) que hay en el mismo -. El conjunto de los lenguajes regulares sobre un alfabeto esta formado por el lenguaje vaco, los lenguajes unitarios incluido { } y todos los lenguajes obtenidos a partir de la concatenacin, unin y cerradura de estrella de lenguajes. Ejemplo de lenguajes regulares: Expresin Regular Lenguaje Regular 10 L={La cadena de 10} 1+0 1* (00)* 0*1* 1(1 + 0)* L={Una cadena de 0 una cadena de 1} L={Cualquier cadena de 1s incluyendo } L={Cadenas de 0s de longitud par, incluyendo } L={Cadenas de ninguno o ms 0s concatenadas a cadenas de ninguno o ms 1s} L={Todas las cadenas sobre el alfabeto {1, 0} que empiecen con 1}

(1 + 0)*00 (1 + 0)*00(1 + 0)*

L={Todas las cadenas sobre el alfabeto {1, 0} que terminen en 00} L={Cualquier combinacin de 0s 1s que contengan al menos dos ceros consecutivos}

Cuando sea necesario distinguir entre una expresin 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. Tambin se puede usar rs en el caso de que L(r) L(s).