1. GRAFOS : CONCEPTOS BASICOS Sea V un conjunto finito no vacio y sea E V x V. El par (V, E) es un grafo no dirigido, donde V es un conjunto de vértices o nodos y E es un conjunto de aristas. Denotaremos el número de vértices del conjunto como |V|=n y el número de aristas del mismo como |E|=m. El grafo es dirigido si E es un conjunto de arcos, en lugar de ser un conjunto de aristas, es decir, si las aristas pertenecientes a E tienen dirección. En este caso, el grafo puede ser denominado dígrafo. Figura 1: (1) Grafo no dirigido. (2) Grafo dirigido Para cualquier arista, como por ejemplo, b-c (figura 1), decimos que la arista es incidente en los vértices b y c; b es adyacente a c y c es adyacente a b. Para cualquier arco, como puede ser g-f (figura 1), g es el origen o fuente de la arista (g, f) y el vértice f es el término o vértice terminal. Se denomina bucle o lazo a una arista o un arco que tiene como fuente y término el mismo nodo o vértice. Supondremos, mientras que no se especifique lo contrario, que el grafo G=(V, E) es no dirigido, y sean x e y vértices (no necesariamente distintos) del mismo. Un camino x-y es una sucesión alternada finita (sin lazos) , , , , , , …….., , , , , de vértices y aristas de G, que comienzan en el vértice x y termina en el vértice y, y que contiene las k-1 aristas , donde 0 ≤ i ≤ k-2. Si suponemos que el número de nodos es k, la longitud de un camino es k-1, es decir, el número de aristas que hay en ese camino. Si k = 1, no hay aristas, x es igual a y, y el camino se denomina trivial. Cualquier camino en el que x = y, siendo k>2, se denomina camino cerrado. En caso contrario, el camino es abierto. 16 Un camino puede repetir vértices y aristas. Si no se repite ninguna arista en el camino xy, entonces el camino es elemental. También se le denomina recorrido. Un recorrido cerrado se llama circuito. Si ningún vértice del camino se presenta más de una vez, el camino es simple. El término ciclo se usa para describir un camino simple cerrado. Decimos que el grafo es conexo si existe un camino simple entre cada par de vértices cualesquiera distintos de G. Un grafo que no es conexo es disconexo o no conexo. Denotaremos por C (G) al número de componentes de G. Así, C (G) será uno si el grafo es conexo. Diremos que un grafo regular es aquel en el cual todos los vértices tienen el mismo número de aristas incidentes, y aleatorio si sus aristas siguen una distribución aleatoria y, por tanto, no ha sido diseñado con ningún criterio concreto. Otros conceptos de gran importancia en un grafo son: • Distancia entre dos vértices: Longitud del camino más corto entre esos vértices. Denotaremos entonces la distancia mínima entre los vértices i y j como dij, si se suponen distancias reales y se consideran aspectos métricos, y uij si se suponen distancias unidad y se consideran, por tanto, aspectos topológicos. Esta magnitud se calcula realizando cualquier algoritmo de camino más corto como el algoritmo de Dijsktra (visto posteriormente) desde cada vértice al resto. • Excentricidad de un vértice v: La excentricidad de v є V se define como la distancia máxima desde v a cualquier otro vértice del grafo G siguiendo caminos de longitud mínima. Se denotará por ξ (v). • Diámetro: Longitud del camino más corto para unir los dos vértices más alejados de la red. También puede ser entendido como el máximo de las excentricidades de todos los vértices del grafo. A partir de ahora lo denotaremos con D. • Grado o valencia de un vértice: Número de aristas incidentes en el vértice. Se denotará con k. • Valor medio del grado o valencia de los nodos del grafo: 17 k k ∑ ; i = 1,…,n (1) donde ki es el grado correspondiente al nodo i. • Valor mínimo de grado o valencia: Número mínimo de aristas incidentes en un vértice de entre todos los vértices existentes en el grafo. Se denotará como kmín. • Valor máximo de grado o valencia: Número máximo de aristas que inciden en un vértice de entre todos los vértices del grafo. Se denotará como kmax. • Matriz de adyacencia: Matriz simétrica de orden n, donde n es el número de vértices del grafo. Compuesta por unos y ceros, se define como: . • 1 , si los vertices i y j son adyacentes 0 , en caso contrario (2) P(k): Distribución de probabilidad de que un nodo arbitrariamente seleccionado esté conectado con otros k nodos. Equivalentemente, también puede ser definida como la fracción de vértices de una red que tiene grado k. • h-entorno de un vértice v: Conjunto de vértices con una distancia mínima menor o igual a h desde v. Denotaremos la 1-entorno o 1-vecindad del vértice v como N (v). • N(Vi), N(Ei): Concepto similar a la h-vecindad. Denominaremos N(Vi) al conjunto de vértices adyacentes a los pertenecientes a Vi. Denominaremos N(Ei) al conjunto de vértices incidentes a las aristas pertenecientes a Ei . • Vértice de corte de un grafo: Vértice que cuando se elimina (esto supone la eliminación de todas las aristas incidentes en él) incrementa el número de componentes conexas del grafo, es decir, escinde el grafo en dos o varios subgrafos conexos. 18 • Arista de corte de un grafo: Arista que cuando se elimina incrementa el número de componentes conexas del grafo, es decir, escinde el grafo en dos o varios subgrafos conexos. • Corte de un grafo: Supresión de un conjunto de nodos o aristas en el grafo que produce el incremento en el número de componentes conexas del grafo. Si el grafo no es ponderado, el corte se considera mínimo cuando el número de nodos o aristas eliminados ha sido mínimo. Por el contrario, si el grafo es ponderado, el corte mínimo es aquel que suprime el conjunto de menor peso, siendo obtenido el peso del conjunto a partir de la suma de los pesos de las aristas y nodos considerados independientemente. El corte es equilibrado cuando el grafo se escinde en dos subgrafos que contienen aproximadamente el mismo número de vértices, a saber y . Por último, destacar o definir algunos tipos de grafos concretos: - Un grafo conexo y sin ciclos es lo que se denomina árbol. - Un grafo es completo (mallado total) si entre dos vértices cualesquiera de dicho grafo existe una arista en el caso de un grafo no dirigido y un arco en el caso de un grafo dirigido. - Un grafo bipartito es aquel cuyos vértices se pueden separar en dos subconjuntos disjuntos V1 y V2 y las aristas siempre unen vértices de un conjunto con vértices de otro. Se cumplen: 1. , 2. Φ 3. , siendo V el conjunto de todos los vértices del grafo. , , , no existe ninguna arista , ni , - Un grafo es fuertemente conexo si para cada par de vértices u y v, existe un camino desde u a v y otro desde v a u. Esta definición solo tiene sentido cuando el grafo es dirigido. 19 • Algoritmo de Dijsktra Sea un grafo ponderado, G= (V, E) con un nodo v1 є V, en el que hemos asignamos a cada arco aij un peso σij. Por tanto, el peso de un camino entre los nodos i y j , Γ ,…, Como γ , , ,…, , . El problema consiste en determinar el camino más corto desde v1 al resto de nodos de la red. Si llamamos gj al peso del camino más corto entre el nodo v1 y el j, el algoritmo sigue los siguientes pasos: 1. Inicializa: P={1} , T={2,3,4,…,n} , g1 = 0 , gj = si j si j є 1-vecindad(1), gj = ∞ 1-vecindad(1) 2. Designación de una etiqueta variable como fija: Determinar k . Hacer T tal que \ . Hacer . Mientras exista algún nodo dentro del conjunto T, continuamos este paso con el paso 3. Sino finalizamos el algoritmo. 3. Actualización: , 1- vecindad (k) min , y pero no contenido en la 1-vecindad (k), gj permanece con el mismo valor. Volvemos al paso 2. El coste del algoritmo es del orden de | | de vértices y |A| el número de aristas. • Ejemplo 20 | | | | , donde |V| es el número En este punto de la memoria, calcularemos todos estos conceptos definidos en este primer apartado sobre algún grafo sencillo. Con ello se pretende aclarar los conceptos y dudas que pudieran surgir en su lectura. El grafo tomado que se ha escogido como modelo es el mostrado en la figura 2. Figura 2: Nodos numerados (negro), aristas numeradas (verde), peso de cada arista (rojo). Este grafo, definido como G = (V,E), donde V = {1,2,3,4,5,6} y E = {1,2,3,4,5,6,7,8} es conexo, no completo (faltan 7 aristas para obtener el grafo ideal: 1-5, 1-3, 6-2, 6-3, 64, 5-3, 4-2) y no dirigido (las aristas no tiene dirección. El peso de la arista en ambos sentidos es el mismo). La matriz de adyacencia es 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 0 0 1 0 Las distancias mínimas topológicas entre vértices son: ‐ 0 ; 1 ; 2 ; 1 ; 2 ; 1 ‐ 1 ; 0 ; 1 ; 2 ; 1 ; 2 ‐ 2 ; 1 ; 0 ; 1 ; 2 ; 3 ‐ 1 ; 2 ; 1 ; 0 ; 1 ; 2 ‐ 2 ; 1 ; 2 ; 1 ; 0 ; 1 ‐ 1 ; 2 ; 3 ; 2 ; 1 ; 0 Matricialmente, esto se puede expresar: 21 0 1 2 1 2 1 1 0 1 2 1 2 2 1 0 1 2 3 1 2 1 0 1 2 2 1 2 1 0 1 1 2 3 2 1 0 Las distancias mínimas reales entre sus vértices son más complejas de calcular. Para hacerlo, emplearemos el algoritmo de Dijsktra: Origen: Vértice 1 ‐ Paso 1: P = {1}, T = {2, 3, 4, 5, 6}, 0 ; 3 ; 2 ; ∞ ; 4 ∞ ; ‐ Paso 2: Determinar k T tal que 2. Añadimos , es decir, el nodo 4 al conjunto P y lo extraemos del conjunto T. P = {1,4} y T = {2, 3, 5,6}. Como seguimos teniendo elementos en T, continuamos. ‐ Paso 3: Actualización, Γ , min , min ∞, min ∞, 2 min ∞, min ∞, 2 , es decir, 9 11 5 7 , pero no adyacente a k, gj permanece con el mismo valor, es decir, y 3y 4. ‐ Paso 2: El mínimo valor de gk es ahora g2 = 3. Luego, P = {1, 2,4} y T = {3, 5,6}. ‐ Paso3: El nodo 2 está conectado con los vértices contenidos en T, 3 y 5. Luego, 4 , mientras que min 11, min 11,3 min 7, min 7,3 1 2 4 5 ‐ Paso 2: Existen dos valores mínimos. Sería indiferente que cogiéramos uno u otro. Añadiremos al conjunto P el nodo 3, con lo que P = {1, 2, 3,4} y T = {5,6}. ‐ Paso 3: El nodo 3 no está conectado ni al vértice 5 ni al 6, luego en este caso no habría que actualizar ningún valor. ‐ Paso 2: Añadimos el nodo 6 al conjunto. P = {1, 2, 3, 4,6} y T = {5}. 22 ‐ Paso 3: El nodo 5 está conectado al 6. Actualizamos el valor de distancia: min 5, min 5,4 6 5 El vector de distancias mínimas del vértice 1 al resto es: 0 3 4 2 5 4 Origen: Vértice 2 Los razonamientos seguidos han sido los mismos, por lo que se realizarán los cálculos de forma más esquemática. ‐ Paso 1: P = {2}, T = {1, 3, 4, 5, 6}, 2 ; 0 ; 3 ; 1 ; ∞ ; ∞ ‐ Paso 2: El nodo más cercano al nodo 2 es el 3. P = {2,3} y T = {1, 4, 5,6}. Como seguimos teniendo elementos en T, continuamos. ‐ Paso 3: Al vértice 3 es adyacente tan solo el 4. Con lo cual, min ∞, min ∞, 1 El resto de los valores permanecen igual: 3 ; 9 10 10 ; 2 ; ∞ ‐ Paso 2: El mínimo valor de gk es ahora g5 = 2. Luego, P = {2, 3,5} y T = {1, 4,6}. ‐ Paso3: El nodo 5 está conectado con los vértices contenidos en T, 4 y 6. Luego, 3 , mientras que min 10, min 10,2 5 7 min ∞, min ∞, 2 6 8 ‐ Paso 2: Añadiremos al conjunto P el nodo 1, con lo que P = {1, 2, 3,5} y T = {4,6}. 7 , mientras que ‐ Paso 3: El nodo 1 está conectado al 6, luego en este caso, min 8, min 8,3 ‐ Paso 2: P = {1, 2, 3, 5,6} y T = {4}. 23 4 7 ‐ Paso 3: Al no estar el nodo 6 conectado al 4 no he de actualizar el valor. El vector de distancias mínimas del vértice 2 al resto es: 3 0 1 5 2 7 Origen: Vértice 3 El vector de distancias mínimas del vértice 3 al resto se calcula siguiendo el mismo razonamiento que ha sido realizado cuando tomábamos los vértices 1 ó 2 como origen. El vector obtenido es: 4 1 0 7 3 8 Origen: Vértice 4 El vector de distancias mínimas del vértice 4 al resto se calcula siguiendo el mismo razonamiento que ha sido realizado cuando tomábamos los vértices 1 ó 2 como origen. El vector obtenido es: 2 5 7 0 5 6 Origen: Vértice 5 Aplicando las propiedades de simetría que debe tener la matriz resultante, podemos obtener los valores de las mínimas distancias del nodo 5 al 1, 2,3 y 4. La única que falta es la distancia al nodo 6, pero esta se aprecia fácilmente que es 6. Origen: Vértice 6 Por simetría se obtiene la distancia de este nodo a todos los demás. Por lo tanto, la matriz de distancias mínimas entre cada par de nodos es: 24 0 3 4 2 5 4 3 0 1 5 2 7 4 1 0 7 3 8 2 5 7 0 5 6 5 2 3 5 0 6 4 7 8 6 6 0 De acuerdo con estos resultados, las excentricidades de los vértices son: ξ(1) = 5 , ξ(2) = 7 , ξ(3) = 8 , ξ(4) = 7 , ξ(5) = 6 , ξ(6) = 8 Y el diámetro, D = 8. El grado o valencia de los nodos es k(1) = 3 , k(2) = 3 , k(3) = 2 , k(4) = 3 , k(5) = 3 , k(6) = 2 Por lo que, kmin = 2 y kmáx = 3. El valor medio de grado kmed = 1/6*(3*4+2*2) =16/6 = 2,66667. Si tomamos, por ejemplo, el vértice 1, veremos cómo su 1-entorno es el conjunto formado por los nodos {2, 4,6}. La 2-entorno sería el conjunto formado por {3,5}. Si suponemos un conjunto de vértices Vi formado por el vértice 1, N(Vi) sería equivalente a la 1-entorno. Si el conjunto, sin embargo, estuviese formado por los nodos {1,2}, N(Vi) contendría los vértices restantes que constituyen el grafo, es decir, {3,4,5,6}, ya que cualquiera de ellos es accesible o desde 1 o desde 2. Si definimos, por ejemplo, un conjunto E1 formado por las aristas {2,5}, N(E1) estaría formado por los vértices {1,2,4,5}. 25