Vous êtes sur la page 1sur 5

Grafos

Grafo modelo para representar relaciones entre elementos de un conjunto. Grafo: (V ,E), V es un conjunto de vrtices o nodos, con una relacin entre ellos; E es un conjunto de pares (u,v), u,v V, llamados aristas o arcos. Grafo dirigido: la relacin sobre V no es simtrica. Arista par ordenado (u,v). Grafo no dirigido: la relacin sobre V es simtrica. Arista par no ordenado {u,v}, u,v V y u v

Grafo dirigido G(V , E). V = {1,2,3,4,5,6} E={(1,2),(1,4),(2,5),(3,5),(3,6),( 4,2), (5,4),(6,6)} Grafo no dirigido G(V , E). V = {1,2,3,4,5} E= {{1,2},{1,5},{2,3},{2,4},{2,5},{3,4},{4,5}} V es adyacente a U si existe una arista (u,v) E. en un grafo no dirigido, (u,v) E incide en los nodos u, v. en un grafo dirigido, (u,v) E incide en v, y parte de u. En grafos no dirigidos el grado de un nodo es el nmero de arcos que inciden en l. En grafos dirigidos existen el grado_out es el nmero de arcos que parten de l y el grado_in es el nmero de arcos que inciden en l. El grado del vrtice ser la suma de los grados de entrada y de salida. Grado de un grafo: mximo grado de sus vrtices. Camino desde u V a v V : secuencia v , v ,. . , v tal que u = v , v = v , y (v 1, v ) E, para i = 2,.. ,k.

Longitud de un camino: nmero de arcos del camino. Camino simple: camino en el que todos sus vrtices, excepto, tal vez, el primero y el ltimo, son distintos. Ciclo: camino desde v , v ,. . , v tal que v = v . El ciclo es simple si el camino es simple.

Bucle: ciclo de longitud 1

Grafo acclico: grafo sin ciclos.

Un grafo es conexo si entre cada dos nodos hay un camino. Un bosque es un grafo acclico. Un rbol libre es un bosque conexo (un rbol es un rbol libre en el que un nodo se ha designado como raz). Sea G un grafo no dirigido con n vrtices y m arcos, entonces v G deg(v) = 2*m Siempre: m (n*(n-1))/2 Si G conexo: m n-1 Si G rbol: m = n-1 Si G bosque: m n-1 Un grafo es completo si existen aristas uniendo todos los pares posibles de vrtices. Es decir, todo par de vrtices (a, b) debe tener una arista e que los une. Un , es decir, grafo completo de vrtices tiene exactamente aristas.

Vpertenece V y Epertenece E. G = (V, E) es un subgrafo de G = (V , E) si V Subgrafo inducido por V pertenece V : G = (V,E) tal que E = {(u,v)pertenece E | (u,v) pertenece V}.

Fig. a

Fig. b Subgrafo

Fig. c Subgrafo inducido

V es alcanzable desde U, , si existe un camino de U a V. Un grafo no dirigido es conexo si existe un camino desde cualquier vrtice a cualquier otro. Un grafo dirigido con esta propiedad se denomina fuertemente conexo:

Si un grafo dirigido no es fuertemente conexo, pero el grafo subyacente (sin sentido en los arcos) es conexo, el grafo es dbilmente conexo. En un grafo no dirigido, una componente conexa es un subgrafo conexo tal que no existe otra componente conexa que lo contenga. Es un subgrafo conexo maximal maximal. Un grafo no dirigido es no conexo si est formado por varias componentes conexas. En un grafo dirigido, una componente fuertemente conexa conexa, es el mximo subgrafo fuertemente conexo. Un grafo dirigido es debilmente conexo si est formado por varias componentes fuertemente conexas.

Un grafo ponderado, pesado o con costos: : cada arco o arista tiene asociado un valor o etiqueta. Representaciones Matriz de Adyacencias G =(V ,E): matriz A de dimensin |V ||V |.

Costo espacial: O (|| ) Es til para grafos con nmero de vrtices pequeo, o grafos densos (|E||V||V|) Comprobar si una arista (u,v) pertenece a E consultar posicin A(u,v) Costo de tiempo T(|V|,|E|) = O(1) Representacin aplicada a Grafos pesados El peso de (i,j) se almacena en A (i, j).

Lista de Adyacencias G =(V ,E): vector de tamao |V|. Posicin i puntero a una lista enlazada de elementos (lista de adyacencia). Los elementos de la lista son los vrtices adyacentes a i. Si G es dirigido, la suma de las longitudes de las listas de adyacencia ser |E|. Si G es no dirigido, la suma de las longitudes de las listas de adyacencia ser 2|E|. Costo espacial, sea dirigido o no: O (|V|+|E|) . Representacin apropiada para grafos con |E| menor que |V| . Desventaja: si se quiere comprobar si una arista (u,v) pertenece a E buscar v en la lista de adyacencia de u. Costo temporal T (|V|,|E|) ser O (Grado G) pertenece a O (|V|). Representacin aplicada a Grafos pesados El peso de (u,v) se almacena en el nodo de v de la lista de adyacencia de u.

DFS Partir de un vrtice determinado v. Cuando se visita un nuevo vrtice, explorar cada camino que salga de l. Hasta que no se haya finalizado de explorar uno de los caminos no se comienza con el siguiente. Un camino deja de explorarse cuando se llega a un vrtice ya visitado. Si existan vrtices no alcanzables desde v el recorrido queda incompleto; entonces, seleccionar alguno como nuevo vrtice de partida, y repetir el proceso. El recorrido depende del orden en que aparecen los vrtices en las listas de adyacencia. Tiempo de Ejecucion O (|V|+|E|) Si el grafo es conexo: un recorrido desde cualquier vrtice. Visitar a TODOS los vrtices del grafo Si no lo es: partiendo de un vrtice, tendremos una componente conexa conjunto de vrtices recorrido Para descubrir otras: repetir recorrido desde un vrtice no visitado hasta que todos los vrtices hayan sido visitados BFS Partir de algn vrtice u, visitar u y, despus, visitar cada uno de los vrtices adyacentes a u. Repetir el proceso para cada nodo adyacente a u, siguiendo el orden en que fueron visitados. Costo T(|V|,|E|) es de O(|V|+|E|). Sort topolgico La ordenacin topolgica es una permutacin v , v ,. . , v de los vrtices, tal que si (vi,vj) E, vi vj, entonces vi precede a vj en la permutacin. La ordenacin no es posible si G es cclico. La ordenacin topolgica no es nica. Una ordenacin topolgica es como una ordenacin de los vrtices a lo largo de una lnea horizontal, con los arcos de izquierda a derecha. Aplicando BFS: Este algoritmo utiliza un arreglo Grado_in en el que se almacenan los grados de entradas de los vrtices. Pasos generales: 1. Seleccionar un vrtice v con grado de entrada cero 2. Visitar v 3. Eliminar v, junto con sus aristas salientes

4. Repetir el paso 1 hasta seleccionar todos los vrtices 1, 3, 2, 7, 6, 5, 4, 10, 9, 8, 12, 11, 13 1, 2, 4, 8, 5, 9, 11, 3, 6, 10, 7, 12, 13

Aplicando DFS: Se realiza un recorrido DFS, marcando cada vrtice en post-orden, es decir, una vez visitados todos los vrtices a partir de uno dado, ste es marcado con un nmero antes de retroceder en el recorrido. Se listan los nmeros segn sus nmeros de post-orden de mayor a menor. El marcado de los vrtices en post-orden puede implementarse colocando los vrtices en una pila P, luego se listan empezando por el tope. Camino de costo mnimo Sea G=(V,A) un grafo dirigido y pesado, el costo c(i,j) est asociado a la arista v(i,j). Dado un camino: v , v ,. . , v El costo del camino es: C= c(i, i + 1) Este valor tambin se llama longitud del camino pesado. El camino de costo mnimo desde un vrtice vi a otro vrtice vj es aquel en que la suma de los costos de las aristas es mnima. Grafos con pesos positivos Algoritmo de Dijkstra Pasos: o Dado un vrtice origen s, elegir el vrtice v que est a la menor distancia de s, dentro de los vrtices no procesados o Marcar v como procesado o Actualizar la distancia de w adyacente a v Para cada vrtice v mantiene la siguiente informacin: o Dv : distancia mnima desde el origen (inicialmente para todos los vrtices excepto el origen con valor 0) o Pv : vrtice por donde paso para llegar o Conocido : dato booleano que me indica si est procesado (inicialmente todos en 0) La actualizacin de la distancia de los adyacentes w se realiza con el siguiente criterio: Se compara Dw con Dv + c(v,w) (Dw distancia de s a w sin pasar por v y Dv + c(v,w) la distancia de s a w, pasando por v) Se actualiza si Dw > Dv + c(v,w) Sin usar una heap para buscar el vrtice a menor distancia el costo total del algoritmo es (|V| + |E|) es O(|V| ) El costo total del algoritmo es (|V| log|V|+ |E| log|V|) es O(|E| log|V|) porque el buscar vrtice desconocido de menor distancia es O(|V|log|V|) Grafos con pesos positivos y negativos Pasos: Encolar el vrtice origen s. Procesar la cola: o Desencolar un vrtice. o Actualizar la distancia de los adyacentes Dw siguiendo el mismo criterio de Dijkstra. o Si w no est en la cola, encolarlo. El costo total del algoritmo es O(|V| |E|) rbol de expansin mnima Dado un grafo G=(V , E) no dirigido y conexo. El rbol de expansin mnima es un rbol formado por las aristas de G que conectan todos los vrtices con un costo total mnimo.

Prim Construye el rbol hacindolo crecer por etapas En cada etapa: - elige un vrtice como raz - le agrega al rbol una arista y un vrtice asociado (se selecciona la arista (u,v) de mnimo costo que cumpla: u

rbol y v rbol)
La implementacin es muy similar al algoritmo de Dijkstra se modifica la forma de actualizar la distancia de los adyacentes: Se compara Dw con c(v,w). Se actualiza si Dw > c(v,w). Si se implementa con una tabla secuencial el costo total del algoritmo es O(||). Si se implementa con heap el costo total del algoritmo es O(|E| log|V|). Kruskal Selecciona las aristas en orden creciente segn su peso y las acepta si no originan un ciclo. El invariante que usa me indica que en cada punto del proceso, dos vrtices pertenecen al mismo conjunto si y slo s estn conectados Si dos vrtices u y v estn en el mismo conjunto, la arista (u,v) es rechazada porque al aceptarla forma un ciclo. Inicialmente cada vrtice pertenece a su propio conjunto. |V| conjuntos con un nico elemento. Al aceptar una arista se realiza la unin de dos conjuntos. Las aristas se organizan en una heap, para ir recuperando la de mnimo costo en cada paso. Se organizan las aristas en una heap, para optimizar la recuperacin de la arista de mnimo costo El tamao de la heap es |E|, y extraer cada arista lleva O(log |E|) El tiempo de ejecucin es O(|E |log|E|) Dado que |E| |V|2, log |E| 2 log |V|, el costo total del algoritmo es O(|E |log|V|)

Vous aimerez peut-être aussi