Vous êtes sur la page 1sur 19

7.

GRAFOS

Se consideran los rboles como una generalizacin del concepto de lista porque permiten que un
elemento tenga ms de un sucesor. Los grafos aparecen como una extensin del concepto de rbol, ya
que en este tipo de estructura cada elemento puede tener, adems de ms de un sucesor, varios
elementos predecesores. Esta propiedad hace a los grafos la estructura ms adecuada para representar
situaciones donde la relacin entre los elementos cambia segn el contexto.

El origen de la palabra grafo es griego y significa "trazar". Un grafo es con frecuencia la respuesta a
problemas de la vida cotidiana. Algunos ejemplos podran ser: un grfico de una serie de tareas a
realizar indicando su secuenciacin (un organigrama), grafos matemticos representando las relaciones
binarias, una red de carreteras o de trnsito, la red de enlaces ferroviarios o areos, la red elctrica de
una ciudad, sistemas de telecomunicaciones, circuitos impresos o redes de computadores. En muchos
casos un problema es conveniente representarlo grficamente como un conjunto de puntos (nodos o
vrtices) conectados por lneas (arcos) segn los requerimientos.

Hoy en da es rara la disciplina cientfica o humanstica que no utilice la teora de grafos. se puede citar
la sicologa en dinmica de grupos, la sociologa en los sociogramas, la fsica terica que emplea los
diagramas de Feynmann, donde se presenta mediante lneas las partculas elementales, en
programacin lineal e investigacin operativa el estudio de flujo en redes, los cambios de variables en

Figura 7.1 Ejemplo de un grafo.


el clculo diferencial,...

Los grafos son estructuras de datos dinmicas no-lineales, utilizadas comnmente en el anlisis de
redes, en diseo de circuitos elctricos, en estrategias de mercados, cartografa, mapas conceptuales,
matemtica, planificacin de procesos y muchas reas del conocimiento.
82
Definicin. Un grafo lineal (o simplemente un grafo), es una dupla G=(V,E), donde V={v1, v2, v3,
..., vn} es un conjunto de vrtices, y E={e1, e2, e3, ..., en} es un conjunto de arcos.

Los vrtices contendrn informacin referente a objetos, mientras que los arcos establecen
dependencia entre los objetos a los que relaciona directamente. Un arco queda determinado por los
vrtices a los que une. Cada arco ej esta identificado con un par de vrtices (vi, vi+1).

Ejemplo. En la figura 7.1 el arco e7 o V3V4 es enlace entre V3 y V4; el arco e6 o V2V4 es enlace entre
V2 y V4.

Notese que la definicin no inhibe que un par de vrtices tengan asociados dos o ms arcos diferentes
e7 y e10, en este caso se dice que los arcos son paralelos. El arco e9 en la figura 7.1 es llamado loop.

Si se desea representar mediante un grafo la red de vuelos de una compaa area entre diferentes
ciudades, tendramos el siguiente grafo G = {V, A}; V = {Bogot, Neiva, Cali, Medelln}; A =
{(Bogot, Neiva), (Bogot, Medelln), (Neiva, Medelln), (Cali, Medelln)}.

Figura 7.2 Puentes de Konigsberg.

Un grafo G es un conjunto en el que hay definida una relacin binaria, G=(V,R) tal que V es un
conjunto de objetos a los que se denominan vrtices o nodos y R 0VxV es una relacin cuyos
elementos se denominan arcos o enlaces.

Dados x, y en V, puede ocurrir que:


* (x,y) 0R, en cuyo caso se dir que x e y estn unidos mediante un arco.
* (x,y) _ 0R, en cuyo caso se dir que no lo estn.

La ms comn representacin de un grafo es por medio de una figura o diagrama en la cual los vrtices
se representan por puntos o crculos y los arcos por un segmento de lnea. Un grafo se usa para
representar situaciones fsicas envolviendo objetos discretos y relaciones entre ellos. Se usan en
ingeniera, en fsica, en ciencias biolgicas y sociales, en lingstica y numerosas reas.

Problema del puente KONIGSBERG

Es el mejor ejemplo de teora de grafos, fue solucionado por Leonard Euler (1707-1783) en 1736. Dos
islas C y B se hallan en el ro Pregel en Konigsberg (la capital del este de Prusia, pero llamada
Kaliningrad en el oeste de Rusia sovitica) fueron conectadas la una a la otra y a las orillas por siete
puentes (figura 7.2). El problema es iniciar en cualquiera de las reas A, B, C o D y caminar por cada

Luis Carlos Torres Soler


Estructuras de Datos 83
uno de los siete puentes exactamente una vez, y retornar al punto de partida.

Figura 7.3 Diagrama de los puentes de Konigsberg.

La figura 7.3 indica el diagrama respectivo. Se han considerado las reas de la figura 7.2 como nodos
en la figura 7.3, mientras que los puentes se representan por arcos o enlaces entre los nodos.

Problema de servicios

Hay 3 casas C1, C2, C3 cada una conectada con los tres servicios: Agua (A), Gas (G) y Electricidad
(E). Es posible hacer las conexiones sin sobreponer ninguna lnea?

Figura 7.4 Grafo del problema de los servicios.

La figura 7.4 muestra como este problema puede ser representado por un grafo. Los conductos son
mostrados como arcos, mientras que las casas y los servicios se muestran como nodos.

Problema de la red elctrica

Las propiedades de una red elctrica son funciones de solamente dos factores:

1. La naturaleza y valor de los elementos que forman la red, tales como resistencias, inductores,
transistores.

2. La manera como esos elementos se conectan, esto es, la topologa de la red.

Puesto que hay pocos tipos diferentes de elementos elctricos, la variacin en la red son
principalmente vistos en la variacin de la topologa. As, el anlisis de la red elctrica y la sntesis son
principalmente el estudio de la topologa de red.

Problema de asientos

Nueve miembros de un club se renen cada da a almorzar en una mesa redonda. Ellos deciden
sentarse de tal manera que cada miembro tenga diferentes vecinos cada da. Cundo vuelven a tener
un mismo ordenamiento? Esta situacin se representa en el grafo de la figura 7.5.

Facultad de Ingeniera
84
Pueden verse dos posibles ordenamientos 1 2 3 4 5 6 7 8 9 y 1 3 5 2 7 4 9 6 8 1. Demustrese que
hay slo otros dos ordenamientos 1 5 7 3 9 2 8 4 6 1 y 1 7 9 5 8 3 6 2 4 1.

En general, para n personas el nmero posible de ordenamientos es: (n-1)/2 si n es impar y (n-2)/2 si n
es par.

Figura 7.5 Grafo del problema generalizado de los asientos.

De aqu se podra deducir que un grafo es bsicamente un objeto geomtrico basado en un conjunto de
puntos (vrtices) y un conjunto de lneas que unen cada par de puntos (vrtices). Por otro lado, debido
a su generalidad y a la gran diversidad de formas que pueden usarse, resulta complejo tratar con todas
las ideas relacionadas con un grafo.

Definicin. Un grafo que no tiene arcos loop's, ni arcos paralelos se llama grafo simple.

Definicin. Un arco es incidente en un vrtice, si una de sus puntas llega a ese vrtice.

En la figura 7.1, e2 y e1, son incidentes del vrtice v1.

Dos arcos no paralelos se dicen son adyacentes si son incidentes en un vrtice comn, por ejemplo, e2
y e8, son adyacentes en la figura 7.1.

En algunos casos es necesario imponer un sentido a los enlaces, por ejemplo, al representar la red vial
de una ciudad con sus inevitables orientaciones, as que, el estudio de los grafos podra dividirse en
dos grandes bloques; grafos dirigidos y grafos no dirigidos, pueden ser considerados un caso particular
de los anteriores.

Definicin. Un grafo dirigido o digrafo, es aquel grafo en el que sus arcos tienen una orientacin1.

Un grafo dirigido es simtrico si para todo arco (x,y) 0A tambin aparece el arco (y,x) 0A y es
antisimtrico si dado un arco (x,y) 0A implica que (y,x) _ 0A.

Proposicin. En un grafo simple el nmero mximo de arcos que puede contener es de n(n-1)/2,
donde n es el nmero de vrtices del grafo. En un grafo dirigido el nmero mximo de arcos es n(n-1).

1
Un ejemplo de grafo dirigido lo constituye la red de aguas de una ciudad ya que cada tubera slo admite que el
agua la recorra en un nico sentido, por el contrario, la red de carreteras de un pas representa en general un
grafo no dirigido, puesto que una misma carretera puede ser recorrida en ambos sentidos.
Luis Carlos Torres Soler
Estructuras de Datos 85
Se prueba por induccin.
Sea n=1 (un nodo), luego el nmero de arcos sera: 1(1-1)/2=0.
Sea n=2 (dos nodos), el nmero de arcos es: 2(2-1)/2=1.
Sea n=3 (tres nodos), el nmero de arcos es: 3(3-1)/2=3.
Se considera que n=k es vlido, es decir, arcos=k(k-1)/2
Sea n=k+1, arcos= (k+1)((k+1)-1)/2 = (k+1)k/2
Es decir, se cumple la condicin.

Figura 7.6 Ejemplo de un grafo.

Proposicin. A todo grafo no dirigido se puede asociar un grafo denominado dual construido de la
siguiente forma: G (V, A) ------> G' (V', A' )

Donde A' se construye de la siguiente forma: si e1,e2 A son adyacentes => (e1,e2) A' con e1,e2 V;
en definitiva, para construir un grafo dual se cambian vrtices por arcos y viceversa.

Definicin. Si un grafo dispone de todos los posibles arcos entre sus vrtices entonces se denomina
completo.

Definicin. Dos vrtices que son extremos de un arco se denominan adyacentes.

Un grafo puede tener diferentes diagramas. El grafo es determinado por la incidencia de los arcos y los
vrtices (figura 7.6).2

Figura 7.7 Diagramas o figuras de un grafo.

2
En un grafo, algunos arcos pueden mostrar interseccin para un punto que no representa un vrtice, debe
Facultad de Ingeniera
86
Un grafo tambin es llamado un lineal complejo, 1-complejo, o unidimensional complejo. Un vrtice
es referenciado como un nodo, una juncion, un punto, 0-celda, 0-simple. Trminos usados para un arco
son: lnea, 1-celda, 1-simple.

Figura 7.9 Diagramas de grafos infinitos.

Figura 7.10 Grafos regulares.

En ciertos casos es necesario asociar informacin a los arcos del grafo. Esto se logra mediante una
etiqueta que contenga informacin til, como el nombre, peso, coste o un valor de cualquier tipo de
datos dado. En este caso se habla de grafos etiquetados. La etiqueta podra significar el tiempo que se
tarda el vuelo entre dos ciudades o indicar cules son los parmetros de entrada y de salida en la
llamada a un subprograma. Un grafo no etiquetado es un grafo donde los arcos no tienen etiquetas. En
el caso del grafo que representa el sentido del trfico se pueden etiquetar los arcos con el nombre de las
calles. Tanto a los arcos como a los vrtices se les puede asociar informacin.

Grafos finitos e infinitos

En la definicin de un grafo, ni el conjunto de vrtices V, ni el conjunto de arcos E, necesitan ser


finitos, en muchas aplicaciones y en la teora esos conjuntos son finitos. Un grafo con un nmero de
vrtices y arcos finito, es llamado grafo finito, de otra forma es infinito.

Definicin. El nmero de arcos incidentes en un vrtice vk (un loop se cuenta dos veces) es llamado el
grado G(vk), del vrtice vk. En la figura 7.1, G(v1)=3. El grado de un vrtice es en algunas veces
tambin referido como valencia.

Considerando un grafo G con m arcos e1, e2, ..., em y n vrtices v1, v2, ..., vn. Dado que cada arco
contribuye con 2 grados, la suma de los grados de todos los vrtices en G es dos veces el nmero de
arcos, esto es G(vi) = 2m

Teorema 1. El nmero de vrtices de grado impar en un grafo es siempre par.

mejorarse el diagrama.
Luis Carlos Torres Soler
Estructuras de Datos 87
Dem. Considerando los vrtices con grados par e impar por separado, se tiene que:

G(vi) = G(vj) + G(vl) (1) con l impares, j pares

Puesto que el lado izquierdo de (1) es par y el primer elemento de la suma en (1) es par, el segundo
elemento debe ser tambin par, es decir: G(vl) = 2m1 (2)

Como en (2), cada g(vl) es impar, el total de trminos de la suma debe ser par para que la suma sea par.

Un grafo en la cual todos los vrtices tienen igual grado se llama grafo regular.

Vrtices aislados, pendientes y grafo nulo

Un vrtice que no tiene arcos de incidencia es llamado vrtice aislado. En otras palabras, un vrtice
aislado tienen grado cero.

Un vrtice con grado 1 se llama vrtice pendiente o vrtice final.

Dos arcos adyacentes se dicen estn en serie si el vrtice en comn es de grado 2.

Figura 7.11 Diagramas de grafos.

En la definicin de grafo G=(V,E), es posible que el conjunto E de arcos sea vaco, en tal caso, se dice,
es un grafo nulo3. En otras palabras, todo vrtice en un grafo nulo es un vrtice aislado. El conjunto V
de vrtices nunca puede ser vaco, si lo es, no hay grafo. En otras palabras, un grafo debe tener al
menos un vrtice.

Definicin. Dos grafos son equivalentes (isomorfos) si tienen idntico funcionamiento y similares
propiedades.

Dos grafos G y G' se dicen son isomorfos si hay una correspondencia uno-uno entre sus vrtices, entre
sus arcos, y tal que las relaciones de incidencia se preservan. En otras palabras, supongamos que el
arco ai es incidente en los vrtices vi1 y vi2 en G; entonces, el correspondiente arco ai en G' debe ser

3
El nmero de elementos de V se denomina orden del grafo, un grafo nulo es un grafo de orden cero.
Facultad de Ingeniera
88
incidente en los vrtices vi1' y vi2' que corresponden a vi1 y vi2 respectivamente.

En los grafos de la figura 7.11 existe la correspondencia:


a4 ~ v1 x6 ~ e6
a3 ~ v2 x2 ~ e5

Figura 7.12 Diagramas de grafos isomorfos.


a5 ~ v5 x1 ~ e3
a1 ~ v4 x4 ~ e4
a2 ~ v3 x5 ~ e1
x3 ~ e2

Excepto los nombres de los vrtices y arcos, grafos isomorfos, son el mismo grafo. (figura 7.12)

Subgrafos

Un grafo H, se dice que es un subgrafo de G, si todos los vrtices y todos los arcos de H estn en G y
cada arco de H tiene el mismo vrtice final en H como en G.

Obviamente al considerar un subgrafo, el grafo original no debe ser alterado al identificar los vrtices o
adicionando nuevos arcos o vrtices.

Las siguientes observaciones pueden ser hechas inmediatamente:

1. Todo grafo es as mismo un subgrafo.


2. Un subgrafo K de un subgrafo H de G, es a la vez un subgrafo de G.
3. Un vrtice en un grafo G es un subgrafo de G.
4. Un arco en G, con sus vrtices, es un subgrafo de G.

Definicin. Dos subgrafos G1 y G2 de un grafo G, se dicen disjuntos en arcos, si G1 y G2 no tienen


arcos en comn. Similarmente, si dos subgrafos no tienen vrtices comunes se dicen son disjuntos en
vrtices. Si no tienen ni vrtices, ni arcos comunes, se dicen son disjuntos.

Camino y circuito

Se define cadena como una secuencia alternada de vrtices y arcos empezando y finalizando con
vrtice y tal que cada arco es incidente con el vrtice precedente y siguiente.

Luis Carlos Torres Soler


Estructuras de Datos 89
Ningn arco puede aparecer ms de una vez en la cadena. (un vrtice, sin embargo, puede aparecer
ms de una vez).

El conjunto de vrtices y arcos constituyendo la cadena es un subgrafo claramente. Los vrtices con
los cuales inicia y termina la cadena son llamados vrtices terminales.

Si una cadena inicia y termina en el mismo vrtice, es cerrada, es un bucle o simplemente ciclo.

Una cadena en la cual ningn vrtice aparece ms de una vez es llamado camino.

El nmero de arcos en el camino, indica la longitud del camino.

Una cadena cerrada en la cual ningn vrtice (excepto el inicial y final) aparecen ms de una vez se
llama circuito.

Un nodo N se dice alcanzable desde un nodo M, si y slo si, existe un camino desde M hasta N.

Ms formalmente, un nodo N se dice alcanzable desde un nodo M si:


1) N y M son el mismo nodo.
2) N es alcanzable desde algn nodo que sea sucesor de M.

Para cada nodo de un grafo existe un conjunto de nodos alcanzables desde ese nodo, denominado
conjunto alcanzable.

Un nodo N se dice directamente alcanzable desde un nodo M, si y slo si, son adyacentes y N es el
sucesor de M.

Definicin. Un grafo se dice conexo si desde cualquier vrtice puede llegarse a todos los dems.

Se llama componente conexa a un conjunto de vrtices de un grafo tal que entre cada par de vrtices
hay al menos un camino y si se aade algn otro vrtice esta condicin deja de verificarse.
Matemticamente se puede ver que la conexin es una relacin de equivalencia que descompone a V
en clases de equivalencia, cada uno de los subgrafos a los que da lugar cada una de esas clases de
equivalencia constituira una componente conexa4.

Definicin. Un digrafo se dice fuertemente conexo si desde cualquier vrtice puede llegarse a todos los
dems.

Definicin. Un grafo o digrafo se dice que es dbilmente conexo, si por lo menos existe un vrtice
desde el cual no puede llegarse a los dems.

Definicin. Un grafo es disconexo si por lo menos existe un punto aislado o existe un conjunto de
vrtices a los cuales no puede visitarse nunca.

4
Un grafo se dice conexo, si slo existe una componente conexa que coincide con todo el grafo.
Facultad de Ingeniera
90
Teorema. Un grafo G es disconexo, si y slo si, su conjunto de vrtices V puede ser particionado en
dos conjuntos no vacos V1 y V2, tal que no existe arco alguno ex en G cuyos vrtices a1 y a2, se de que
a1 este en V1 y a2 en V2.

Un grafo conexo acclico no dirigido es un rbol libre. Un rbol libre puede convertirse en un rbol
general si se elige cualquier nodo deseado como raz y se orienta el cada arco desde l.

Los rboles libres tienen dos propiedades interesantes:

Figura 7.13 Grafo y su matriz de adyacencia.


1. Todo rbol libre con n nodos tiene exactamente n-1 arcos.
2. Si se agrega cualquier arco a un rbol libre, se genera un ciclo.

Definicin. Un grafo se dice que es un grafo de Euler si existe un camino cerrado que recorre todos los
arcos del grafo. Es decir, se pueden visitar todos los vrtices (cuantas veces sea necesario), recorriendo
una sola vez los arcos.

Definicin. Un grafo se dice que es un grafo de Hamilton si existe un circuito que recorra todos
vrtices del grafo. Es decir, se visitan todos los vrtices una nica vez.

Definicin. Un grafo se dice que es completo si cada vrtice tiene un grado igual a n-1, donde n es el
nmero de vrtices que componen el grafo.

Se denomina grado de entrada de un vrtice x al nmero de arcos incidentes en l, se denota ge(x).

Se denomina grado de salida de un vrtice x al nmero de arcos adyacentes a l, se denota gs(x).

Para grafos no dirigidos tanto el grado de entrada como el de salida coinciden y se habla simplemente
de grado y lo notamos por g(x).

Bsqueda de caminos mnimos en grafos

Supongamos que se tiene un grafo dirigido sencillo etiquetado G = {V, A} de grado n, V ={1,..., n} y
Luis Carlos Torres Soler
Estructuras de Datos 91
con etiquetas en los arcos no negativas.

Bsqueda entre un vrtice y todos los dems vrtices del grafo.

Se plantea el problema: dado un vrtice, determinar el camino de costo mnimo de ese vrtice a todos
los dems vrtices de V.

Para resolver el problema se aplica un algoritmo debido a Dijkstra que esencialmente parte de un
conjunto S de vrtices (S V) cuya distancia ms corta desde el origen es conocida y en cada paso se
agrega un nuevo vrtice vi a S cuya distancia a su vez desde el origen siga siendo la ms corta posible.
Si la suposicin hecha de que las etiquetas son siempre no negativas se cumple, puede comprobarse
que siempre es posible encontrar un camino ms corto desde el origen y un vrtice v que slo pase a
travs de los vrtices de S (camino "inherente"). Si se utiliza adems un vector D donde se almacena
las longitudes de los caminos inherentes ms cortos a cada vrtice, una vez que S incluya a todos los
vrtices, todos los caminos son inherentes de forma que D contendr la distancia ms corta del origen a
cada vrtice.

Notacin:

* Origen = vrtice 1 (obviamente esto no es una condicin)


* Sea S un vector de n componentes representando el conjunto de vrtices cuya distancia ms
corta desde el origen ya es conocida.
* D es un vector de n componentes donde D[i] indica en cada paso la distancia ms corta entre
el origen y el vrtice i:
a. Por el camino directo si existe el arco (i,j).
b. A travs de los vrtices de S (de los que se conoce su distancia ms corta al
origen).

Al final D contendr el costo del camino mnimo entre el origen y cada vrtice.

* C es la matriz de costos del grafo. C [1,i] representa el costo del arco (1,i). Si el arco no
existe, se le asigna un valor fuera de rango ( )
* P es un vector de dimensin n a travs del cual se reconstruir el camino ms corto del origen
al resto de los vrtices. As P[i] contiene el vrtice inmediato anterior a i en el camino ms
corto.

Inicialmente es evidente que S = {1} y D[i] = C[1,i] con P[i]=1

Facultad de Ingeniera
92

Figura 7.15 Grafo para el ejemplo.

Con estas premisas el algoritmo de Dijkstra se puede esquematizar as:

Algoritmo Dijkstra()

1. S = {1}
2. Para (i = 2; i<=n; i++)
{ D[i] = C[I,i]
P[i] = 1
}
3. MQ (S V)
{ elegir w V-S / D[w] sea mnimo
S= S U {w}
PC (vrtice v V-S)
SI (D[v] > D[w] + C[w, v])
{ D[v] = D[w] + C[w, v]
P[v] = w
}
}

Un ejemplo del algoritmo. Sea que se desea encontrar el camino mnimo del vrtice 1 al resto en el
grafo de la figura 7.15:

En principio:

* S= {1}
* D[2]=60; D[3]=10; D[4]=100; D[5]=
* P[i]=1 _ i

Iteracin 1:
V -S = {2,3,4,5}, w =3 -> S = {1,3} -> V -S = {2,4,5}
D[2] = min(D[2], D[3] + C[3,2]) = min(60, 50) = 50 -> P[2] = 3
D[4] = min(D[4], D[3] + C[3,4]) = min(100, 40) = 40 -> P[4] = 3
D[5] = min(D[5], D[3] + C[3,5]) = min ( , )=

Luis Carlos Torres Soler


Estructuras de Datos 93
As D[2]=50; D[4]=40; D[5]= ; P[2]=3; P[4]=3; P[5]= 1

Iteracin 2:
V -S = {2,4,5}, w = 4 -> S = {1,3,4} -> V- S = {2,5}
D[2] = min(D[2], D[4] + C[4,2]) = min(50, ) = 50 -> P[2]=3
D[5] = min(D[5], D[4] + C[4,5]) = min( ,60) = 60 -> P[5]=4
As D[2]=50; D[5]=60; p[2]=3; P[5]=4

Iteracin 3:
V -S = {2,5}, w = 2 -> S = {1,3,4,2} -> V- S = {5}
D[5] = min(D[5], D[2] + C[2,5]) = min(60, 58) = 58 -> P[5]=2
As D[5]=58; P[5]=2

Finalmente w = 5 -> S = {1,3,4,2,5} -> FIN DEL ALGORlTMO

Para reconstruir el camino ms corto del origen a cada vrtice, se asignan los predecesores en orden
inverso. Por ejemplo, si se quiere conocer el camino desde el origen al vrtice S, se tiene que:

P[5]=2-+ P[2]=3-+P[3]=1 siendo por tanto el camino (1,3,2,5) con costo 58.

Aunque la implementacin de este algoritmo es simple al realizarla con base a una matriz de
adyacencia, en la prctica se utiliza normalmente una implementacin con base a listas de adyacencia.
La razn de esta eleccin es que en la primera la eficiencia es O(n2) para cualquier grafo; sin embargo,
la mayora de los grafos encontrados en la prctica tiene un nmero de arcos bastante pequeo (grafos
que pueden denominarse dispersos o no densos) y por tanto el uso de listas de adyacencia se presenta
como una solucin ms eficiente. Para conseguir una mejor eficiencia en la implementacin del
algoritmo de Dijkstra se ha echado mano de una estructura de datos formada por un APO que tiene
como etiqueta los vrtices del grafo y como clave el coste de ir desde el vrtice inicial en el problema a
ese vrtice de tal forma que obtener el vrtice con mnimo coste sera O(log n).

Bsqueda entre cada par de vrtices del grafo.

En lugar de buscar los caminos mnimos de un vrtice a los dems podemos plantear, buscar el camino
ms corto entre cualquier par de vrtices, es decir, dado un grafo dirigido etiquetado G = {V, A} en el
que las etiquetas son no negativas encontrar el camino de longitud ms corta entre dos vrtices
cualesquiera de ese grafo.

Podra pensarse, para resolver el problema, en aplicar el algoritmo de Dijkstra n veces, una por vrtice,
pero en lugar de eso, se aplica un nuevo algoritmo creado por Floyd que va encontrando los caminos
de forma iterativa.

Notacin:

* V = {1, ..., n} conjunto de vrtices.


* A es una matriz de tamao n x n en la que se calcular en cada Aij la longitud ms corta del
Facultad de Ingeniera
94
camino que va de i a j.
* P es una matriz de tamao n x n que se utiliza para recuperar los caminos ms cortos.
* C es una matriz de dimensin n x n conteniendo los costos de los arcos. Si no existe arco de
un vrtice i a otro j el correspondiente valor C[i,j]=?

Inicialmente A[i,j] = {C[i,j] si ij, 0 si i=j}.

A continuacin se itera sobre A n veces de forma que tras hacer la iteracin k, A[i,j] tiene un valor
correspondiente a la longitud ms pequea de cualquier camino de i a j que no pase por un vrtice de
ndice mayor que k, es decir, cualquier vrtice intermedio entre i y j (extremos del camino) ha de ser
menor o igual que k. Por tanto, en cada iteracin k se usar la siguiente frmula:

Ak[i,j] = min(Ak-1[i,j] ,Ak-1[i,k] +Ak-1l[k,j])3, es decir, cada Ak[i,j] se obtiene comparando


Ak-1[i,j], el coste de ir de i a j sin pasar por k o cualquier vrtice de ndice mayor, con
Ak-1[i,k] +Ak-1[k,j], el costo de ir primero de i a k y despus de k a j sin pasar por un vrtice de ndice
mayor que k de forma que si el paso por el vrtice k produce un camino i ms corto que el indicado
por Ak-1[i,j], se elige ese coste para Ak[i,j]. As mismo, cada iteracin P[i,j] contendr el vrtice k que
permiti al algoritmo de Floyd encontrar el valor ms pequeo de A[i,j]. Inicialmente P[i,j]=0, puesto
que inicialmente el camino ms corto de i a j es el propio arco.

Algoritmo Floyd()

1. Para (i = 1; i <= n; i++)


Para (j = 1; j <=n ; j++)
{
A[i,j]= C[i,j]
P[i,j]= 0
}
2. Para (i = 1; i <= n; i++)
A[i,i]= 0
3. Para (k = 1; k <= n; k++)
Para (i = 1; i <= n; i++)
Para (j = l; j <=n ; j++)
SI ((ij) && (A[i,k]+A[k,j] < A[i,j]))
{ A[i,j]= A[i, k]+A[k,j]
P[i,j]= k
}

Luis Carlos Torres Soler


Estructuras de Datos 95
Veamos un ejemplo con el grafo de la figura 7.16.

07* 5* 0 0 0 0 0
* 0 2 * _6 0 0 0 0 _0
A0 = 5 * 0 * * P0 = 0 0 0 0 0
** 30 8 0 0 0 0 0
* * 7 * _0 0 0 0 0 _0

07* 5* 0 0 0 0 0
+ 0 2 _* 6 0 0 0 0 _0

A1 = 5 [12] 0 [10] * P1 = 0 [1] 0 [1] 0


+* 3 0* 0 0 0 0 0
+* 7 * 0 0 0 0 0 _0

Figura 7.16 Grafo para el ejemplo.

Facultad de Ingeniera
96
0 7 [9] 5 [13] 0 0 [2] 0 2
+ 0 _2 * 6 0 0 0 0 _0
A2 = 5 12 0 10 18 P1 = 0 1 0 1 [2]
+ * 3 0 _* 0 0 0 0 0
+* 7 * 0 0 0 0 0 _0

0 7 9 5 [13] 0 0 2 0 2
[7] 0 2 [12] 6 3 0 0 3 _0
A3 = 5 12 0 10 18 P1 = 0 10 12
[8] [15] 3 0 _ [21] [3] [3] 0 0 [3]
[12] [19] 7 [17] 0 [3] [3] 0 _ [3] 0
0 7 [8] 5 13 0 0 [4] 0 2
7 0 2 12 6 3 0 0 3 _0
A4 = 5 12 0 10 18 P1 = 0 10 12
8 15 3 0 _ 21 3 30 0 3
12 19 7 17 0 3 3 0 3 _0

0 7 8 5 13 0 0 4 0 2
7 0 2 _12 6 3 0 0 3 _0
A5 = 5 12 0 10 18 P1 = 0 1 0 1 2
8 15 3 0 21 3 30 0 3
12 19 7 17 0 3 3 0 3 _0

A5=A4 con lo que el algoritmo termina.

Con el objeto de recuperar los caminos de cualquier vrtice i a cualquier otro j puede usarse el
siguiente algoritmo:

Algoritmo recuperar_camino (i, j de tipo vrtice)

Luis Carlos Torres Soler


Estructuras de Datos 97
1. k= P[i,j]
2. SI (k 0)
{
recuperar_camino (i, k)
escribir (k)
recuperar_camino (k, j)
}

Por ejemplo, el camino ms corto entre los vrtices 2 y 4 se determinara llamando a:


recuperar-camino (2,4)

k = 3 -> recuperar-camino (2,3) -> 0


[3]
recuperar-camino (3,4) -> k = 1 -> recuperar-camino (3,1) -> 0
[1]
recuperar-camino (1,4) -> 0
con la que el camino es (2,3,1,4) con costo 12.

Existen diversas representaciones de naturaleza muy diferente que resultan adecuadas para manejar un
grafo, y en la mayora de los casos no se puede decir que una sea mejor que otra siempre ya que cada
una puede resultar ms adecuada dependiendo del problema concreto al que se desea aplicar, as, si
existe una representacin que es peor que otra para todas las operaciones excepto una es posible que
an as nos decantemos por la primera porque precisamente esa operacin es la nica en la que
tenemos especial inters en que se realice de forma eficiente.

Matriz de adyacencia

La matriz de adyacencia, es una matriz en que cada elemento M(i,j), se le asigna un 1 si el vrtice i es
adyacente del vrtice j, y un 0 en caso contrario. Las filas y las columnas de la matriz son los vrtices
del grafo5.

Matriz de incidencia

La matriz de incidencia, es una matriz en que cada elemento M(i,j), representa la relacin incidencia
que existe entre el arco i y el vrtice j, se le asigna un 1 si el arco i incide en el vrtice j, y un 0 en caso
contrario (es la matriz de adyacencia para digrafos).

La principal desventaja de la matriz de adyacencia es la cantidad de elementos que quedan


desaprovechados si el grafo a representar dispone de gran cantidad de vrtices y pocos arcos; los
algoritmos que tengan que inspeccionar la totalidad de la matriz debern acceder a n2-n elementos,
siendo n el nmero de vrtices del grafo.

5
En el caso de digrafos, la adyacencia se expresa desde o hacia.
Facultad de Ingeniera
98

Figura 7.17 Digrafo y su matriz de incidencia.

Si el grafo es etiquetado, entonces, tanto bi,j como bi,j representan al coste o valor asociado al arco (i,j)
y se suelen denominar matrices de coste. Si el arco (i,j) no pertenece a A entonces se asigna bi,j o bi,j un
valor que no puede ser utilizado como una etiqueta valida.

La principal ventaja de la matriz de adyacencia es que el orden de eficiencia de las operaciones de


obtencin de etiqueta de un arco o ver si dos vrtices estn conectados son independientes del nmero
de vrtices y de arcos, por el contrario, existen dos grandes inconvenientes:

* Es una representacin orientada hacia grafos que no modifica el nmero de sus vrtices ya
que una matriz no permite que se le o supriman filas o columnas.
* Se puede producir un gran derroche de memoria en grafos poco densos (con gran nmero de
vrtices y escaso nmero de arcos).

Operaciones en grafos

Como en el caso de muchas entidades matemticas, es conveniente considerar un gran grafo como la
combinacin de uno o ms subgrafos y derivar sus propiedades de ellos.

Sean los grafos G1=(V1,A1) y G2=(V2,A2)

G = G1 G2 = (V1 V2, A1 A2)


G = G1 G2 = (V1 V2, A1 A2)

Si G1 y G2, son disjuntos-arcos, entonces G1 G2 = grafo nulo.

Si G1 y G2, son disjuntos-vrtices, entonces G1 G2 es vaco.

Un grafo G se dice que puede ser descompuesto en dos subgrafos g1 y g2 si, g1 g2 = G y, g1 g2 =


grafo nulo.

Definicin. Un rbol es un grafo conexo sin circuitos.

Teorema. Un rbol con n vrtices tiene n-1 arcos.


Luis Carlos Torres Soler
Estructuras de Datos 99
En 1987, Arthur Cayley descubri rboles mientras contaba el nmero de isomeros estructurales de
hidrocarburos saturados CkH2k+2. Se usa un grafo conexo para representar la molcula CkH2k+2.
correspondiendo a su valencia qumica, un carbono puede ser representado por un vrtice de grado 4 y
el hidrgeno por un vrtice de grado 1. El nmero total de vrtices en tal grafo es n=3k+2, y el nmero
de arcos es 1/2(suma de grados)=1/2(4k+2k+2)=3k+1.

As el problema de conteo de isomeros estructurales de un hidrocarburo es contar rboles. La primera


pregunta de Cayley; Cul es el nmero de diferentes rboles que se pueden construir con n distintos
vrtices?

Teorema. El nmero de rboles marcados con n vrtices (n>=2) es nn-2.

Cubo unitario y su grafo

Figura 7.18 Diagrama de Q1, Q2 y Q3.


Considrese un conjunto de m variables x1, x2, ..., xm. Cada xi puede tomar los valores 0 o 1. Por tanto
se pueden formar 2m distintas m-tuplas. Cada una de esas m-tuplas puede ser representada por un
vrtice de un cubo unitario m-dimensional.

Los arcos y vrtices de un m-dimensional cubo unitario forman un grafo con 2m vrtices. Cada vrtice
es marcado con una secuencia binaria distinta de m-bits tal que dos vrtices son adyacentes, si y
solamente si, ellos difieren en exactamente un bit. Tal grafo es llamado un m-cubo y es designado por
Qm.

Algunas propiedades de un m-cubo Qm

1. Hay exactamente m distintas marcas que difieren en una posicin. Por tanto cada vrtice en
Qm es de grado m. As Qm es un grafo regular de n=2m vrtices y m*2m-1 arcos.

2. La distancia d(vi,vj) entre dos vrtices vi y vj, en un m-cubo, es igual al nmero de posiciones
en que los labels de vi y vj difieren.

3. La mxima distancia posible entre dos vrtices en un m-cubo es m.

Facultad de Ingeniera

Vous aimerez peut-être aussi