Jose.pastor@fiei.unfv.edu.pe UNFV-FIEI MODELOS DE CONECTIVIDAD TEORA DE GRAFOS. Un grafo G es un par de conjuntos (V,E) V={v 1 ,v 2 ,....v n } es el conjunto de vrtices E={(v i ,v j ),(v i ,v j )......} es un conjunto de pares no ordenados de elementos de V. E se denomina conjunto de ramas del grafo El nmero de nodos se denomina orden del grafo. El nmero de ramas se denomina tamao del grafo. v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 V={v 1 ,v 2 ,v 3 ,v 4 ,v 5 ,v 6 ,v 7 ,v 8 } E={(v 1 ,v 2 ),(v 1 ,v 3 ),(v 2 ,v 4 ),(v 3 ,v 5 ),(v 4 ,v 6 ), (v 5 ,v 7 ),(v 6 ,v 8 ),(v 7 ,v 8 ),(v 2 ,v 5 ),(v 4 ,v 5 ),(v 6 ,v 7 )} Ejemplo de grafo (Orden 8 y tamao 11). Un bucle es una rama que empieza y termina en el mismo nodo (v i ,v i ). Cuando dos ramas conectan el mismo par de vrtices se denominan paralelas. Un grafo con bucles se denomina pseudografo. Un grafo con ramas paralelas pero sin bucles se denomina multigrafo. Un grafo sin bucles ni ramas paralelas se denomina grafo simple. Bucles y ramas paralelas. Bucles y ramas paralelas. v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 Bucle Ramas paralelas Se puede considerar que los enlaces entre nodos son dirigidos (v i ,v j ) = (v j ,v i ). Los grafos dirigidos se denominan tambin digrafos. v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 Grafos dirigidos. A cada rama del grafo se le puede asociar un nmero. El nmero asociado a cada rama puede indicar entre otras cosas una distancia, una capacidad, un valor temporal, etc v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 2 1 5 7 -1 6 10 4 12 9 2 Grafos ponderados. Los grafos dirigidos y ponderados poseen ramas dirigidas a las que se asocia un nmero. v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 2 1 5 7 -1 6 10 4 12 9 2 Grafos dirigidos y ponderados. Dos nodos de un grafo son vecinos o adyacentes si existe una rama que los conecta. El grado de un nodo es el nmero vecinos que tiene dicho nodo. En los grafos dirigidos se calcula el grado de entrada y el grado de salida. En los grafos ponderados, el grado se puede promediar por el nmero asociado a las ramas. Un grafo se dice que es regular si todos los nodos tienen el mismo grado. Grado de un nodo. Grado del nodo V2. v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 Grado 3 Grado de entrada 2 Grado de salida 1 Un grafo G=(V,E) es un subgrafo de un grafo G=(V,E) si V es un subconjunto de V y E es un subconjunto de E.. v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 v 2 v 3 v 5 v 6 v 7 v 8 G G Subgrafos. Un subgrafo G=(V,E) de un grafo G=(V,E) se dice que es abarcador si V=V. v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 v 2 v 3 v 5 v 6 v 7 v 8 G G v 1 v 4 Subgrafos. Un paseo de un nodo u a un nodo v es una secuencia de vrtices {v 0 ,v 1 ,....v k } con v 0 =u v k =v y (v i-1 ,v i ) rama del grafo. El nmero de ramas del paseo es su longitud. Un paseo en el cual no se repiten ramas se denomina rastro. Un paseo en el cual todos los vertices {v 0 ,v 1 ,....v k } son distintos se denomina camino. Un camino mnimo entre dos nodos es aquel de menor longitud de entre todos los posibles caminos entre ambos nodos. Si el grafo es ponderado, se puede tomar como longitud la suma de pesos de las ramas del paseo. Paseos, caminos, circuitos y ciclos. La distancia entre dos nodos es la longitud (calculada de alguna manera) del camino mnimo El dimetro de un grafo es la mxima distancia entre dos de sus nodos Paseos, caminos, circuitos y ciclos ... v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 C={v 1 ,v 2 ,v 5 ,v 3 ,v 1 ,v 2 ,v 4 ,v 6 ,v 7 ,v 8 } k=9 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 C={v 1 ,v 3 ,v 5 ,v 2 ,v 4 ,v 5 ,v 7 ,v 8 } k=7 Paseo Rastro v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 C={v 1 ,v 2 ,v 5 ,v 4 ,v 6 ,v 7 ,v 8 } k=6 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 C={v 1 ,v 2 ,v 4 ,v 6 ,v 8 } k=4 Camino Camino mnimo Un paseo cerrado es un paseo {v 0 ,v 1 ,....v k } tal que v 0 =v k . Un paseo cerrado en el que no se repiten ramas es un circuito (rastro cerrado). Un ciclo es un circuito en el que no se repiten vrtices (camino cerrado). Paseos, caminos, circuitos y ciclos. Paseos, caminos, circuitos y ciclos. v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 Ciclo C={v 1 ,v 2 ,v 4 ,v 6 ,v 8 ,v 7 ,v 5 ,v 3 ,v 1 } k=8 Un grafo es conexo si para cada par de nodos del grafo existe al menos un camino que los une. v 1 v 3 v 2 v 4 v 5 v 1 v 3 v 2 v 4 v 5 Grafo conexo Grafo no conexo Conexidad. Una componente conexa de un grafo es cada uno de los subgrafos maximales conexos v 1 v 3 v 2 v 4 v 5 Componentes conexas Conexidad. Un punto de articulacin es un nodo que desconecta un grafo conexo. Un corte es un conjunto de ramas que desconecta un grafo conexo, Si un corte esta compuesto por una nica rama, se denomina puente. Un corte mnimo de un grafo es el mnimo nmero de ramas que al ser eliminadas desconectan el grafo. Una componente biconexa es un conjunto maximal de ramas tal que cualquier par de ramas pertenece a un nico ciclo (subgrafo unido al resto por puntos de articulacin o puentes) Conexidad. v 3 v 4 v 5 v 7 v 1 v 2 v 6 Punto de articulacin Corte v 8 Puente Conexidad. Componente biconexa Un grafo sin ciclos (acclico) se denomina bosque. Un rbol es un grafo acclico conexo. Cada componente conexa de un bosque, es un rbol. Bosques y rboles. Bosques y rboles. v 2 v 3 v 5 v 6 v 7 v 8 G v 1 v 4 v 2 v 3 v 5 v 6 v 7 v 8 G v 1 v 4 Un subgrafo abarcador acclico de un grafo G se denomina un bosque abarcador. Un subgrafo abarcador conexo acclico de un grafo G se denomina un rbol abarcador. Bosques y rboles. Bosques y rboles. v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 G v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 G rbol abarcador REPRESENTACIN DE GRAFOS Hay dos formas estndar de representar un grafo en un ordenador. Matriz de conectividad o adyacencia Lista de adyacencia. v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 Matriz de adyacencia Lista de adyacencia 1 2 3 4 5 6 7 8 2 3 5 1 1 4 5 2 5 6 2 3 4 7 4 7 8 5 6 6 7 8 REPRESENTACIN DE GRAFOS: EJEMPLOS Qu significa un 1 en la diagonal de la matriz de adyacencia? Qu significa una matriz de adyacencia simtrica? Lista de adyacencia Consumo limitado de memoria. Costoso aadir o eliminar ramas. Costoso saber si existe la rama (a,b). Rpido enumerar los vecinos de un nodo. Matriz de Adyacencia Consume mucha memoria. Fcil de aadir o eliminar ramas Fcil saber si existe la rama (a,b). Lento enumerar los vecinos de un nodo. CLASIFICACIN DE GRAFOS Los grafos se clasifican en funcin de unas determinadas mtricas topolgicas. Las mtricas mas empleadas son: Tamao |E| y orden |V| Dispersin (|E|/|V|) Densidad de ramas (|E| / (|V|(|V|-1)/2) Distribucin del grado de los nodos Grado medio (<k>) Coeficiente de agrupamiento (C) Camino caracterstico (L) Grafo denso: |E| del orden de |V| 2 Grafo disperso: |E| del orden de |V| o menor COEFICIENTE DE AGRUPAMIENTO El coeficiente de agrupamiento (C) es un valor mtrico local que mide el nivel de agrupamiento de los nodos. Clculo de C Para cada nodo v del grafo se obtiene su vecindario, es decir, el conjunto de nodos que son vecinos de v; el tamao del vecindario coincide con el grado de v (kv) Se calcula el coeficiente Cv = Nv/((kv(kv-1))/2) donde Nv es el nmero de ramas que hay entre los vecinos de v. El valor anterior se promedia entre todos los nodos del grafo v C v = 6/((4*3)/2)=1 CAMINO CARACTERSTICO El camino caracterstico (L) es un valor mtrico global que mide el nivel grado de separacin de los nodos. Clculo de L Para cada nodo v se calcula la distancia promedio a todos los dems nodos del grafo, Lv= k=1d(v,vk)/(|V|-1) Se calcula el promedio del valor anterior entre todos los nodos del grafo L= v=1 Lv /|V| . |V| |V| ALGUNAS TOPOLOGAS. Las topologas mas frecuentes son: Grafos aleatorios Grafos regulares Mundo pequeo Grafos libres de escala GRAFOS ALEATORIOS Fueron estudiados principalmente por Erdos y Renyi en los aos 50. Cada rama del grafo existe con una determinada probabilidad p. Erdos y Renyi estudiaron los valores de las mtricas topolgicas para diferentes valores de p. Para la grafos dispersos (p pequea) se puede comprobar que tanto C (aproximadamente 0) como L (aproximadamente ln(|V|) ) son pequeos GRAFOS REGULARES Son los mejor conocidos de forma analtica Existen expresiones cerradas para todas las mtricas. Para la grafos dispersos se puede comprobar que tanto C (aproximadamente 0.75) como L (aproximadamente |V|/<k>) son grandes MUNDO PEQUEO (WATTS Y STROGATZ 1998) Son grafos que presentan altos valores de C (alrededor de 0.8) y bajos valores de L (aproximadamente ln(|V|). Se obtienen introduciendo un pequeo nmero de atajos en un grafo regular Representan bien un gran nmero de redes tales como redes sociales. LIBRE DE ESCALA (ALBERT Y BARABASI 1999) Son grafos que presentan bajos valores de C (alrededor de 0) y bajos valores de L (aproximadamente ln(|V|) ). Se obtienen mediante crecimiento de la red y enlace preferencial Cuando la distribucin del grado de los nodos se dibuja en escala log-log aparece una lnea recta. Representan bien un gran nmero de redes tales como internet o redes de reacciones qumicas. Anillo Regular 125.438 0.643 Mundo Pequeo 14.2 0.626 Libre de escala 3.409 0.0186 Aleatorio 3.89 0.004 Mtricas |V|=2000 k=8 L C EJEMPLOS DE PROBLEMAS HISTRICOS Puentes de Knigsberg Coloreado de mapas Problema del viajante ALGORITMOS SOBRE GRAFOS El algoritmo de bsqueda en anchura permite calcular un camino mnimo entre dos nodos de un grafo. Dijkstra es una versin del algoritmo anterior para grafos ponderados. Ambos algoritmos funcionan tanto en grafos dirigidos como no dirigidos. Tambin en determinacin de flujo mximo y corte mnimo (Ford-Fulkerson) BusquedaAnchura(V,E,s) Para cada vertice u en V-s visitado[u]=FALSE, d[u]=infinito,p[u]=NIL visitado[s]=TRUE,d[s]=0,p[s]=NIL Encueue(Q,s) While(NoVacia(Q)) u=Head(Q) para cada v en adj(u) if visitado[v]=FALSE d[v]=d[u]+1,p[v]=u Enqueue(Q,v) visitado[v]=TRUE Dequeue(Q) 2 3 4 5 1 0 i i i T F F F F N N N N N d visitado p 1 Q i U=1 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 0 1 i i T T F F F N 1 N N N d visitado p 1 2 Q i U=1 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 0 1 i i T T T F F N 1 1 N N d visitado p 1 2 Q 1 3 U=1 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 0 1 2 i T T T T F N 1 1 2 N d visitado p 2 3 Q 1 4 U=2 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 0 1 2 2 T T T T T N 1 1 2 3 d visitado p 3 4 Q 1 5 U=3 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 0 1 2 2 T T T T T N 1 1 2 3 d visitado p 5 Q 1 U=4 4 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 0 1 2 2 T T T T T N 1 1 2 3 d visitado p Q 1 U=5 5 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 0 1 2 2 T T T T T N 1 1 2 3 d visitado p Q 1 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 ALGORITMOS SOBRE GRAFOS El algoritmo de Bsqueda en profundidad permite calcular puntos de articulacin de un grafo. Tambin para ordenacin topolgica, determinacin de componentes biconexas, ... BusquedaProfundidad(V,E) Para cada vertice u en V color[u]=BLANCO, p[u]=NIL tiempo = 0 Para cada vertice u en V if color[u]=BLANCO Visita(u) Visita(u) color[u] = GRIS, tiempo=tiempo+1, inicio[u]=tiempo para cada v en adj(u) if color[v]=BLANCO p[v]=u Visita(v) color[v]=NEGRO, tiempo=tiempo+1, fin[u]=tiempo 2 3 4 5 1 B B B B N N N N N C i p f B t=0 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 G B B B N N N N N 1 C i p f B t=1 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 G B B B N 1 N N N 1 2 C i p f B t=2 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 G B B B N 1 2 N N 1 2 3 C i p f B t=3 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 G B B B N 1 2 N 3 1 2 3 4 C i p f B t=4 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 G B B B N 1 2 5 3 1 2 3 5 4 C i p f B t=5 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 G B B B N 1 2 5 3 1 2 3 5 4 C i p 6 f B t=6 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 G B B B N 1 2 5 3 1 2 3 5 4 C i p 6 7 f B t=7 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 G B B B N 1 2 5 3 1 2 3 5 4 C i p 6 7 f B 8 t=8 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 G B B B N 1 2 5 3 1 2 3 5 4 C i p 9 6 7 f B 8 t=9 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 2 3 4 5 1 G B B B N 1 2 5 3 1 2 3 5 4 C i p 1 0 9 6 7 f B 8 t=10 1 2 3 4 5 1 2 3 4 5 2 3 4 2 1 3 5 1 2 5 3 4 APLICACIONES Las tcnicas basadas en grafos se utilizan para el anlisis o clasificacin de cadenas de datos La tcnica suele consistir en la construccin de un grafo donde los nodos son cada uno de los datos obtenidos y las ramas posibles relaciones entre los datos y la aplicacin de algn algoritmo conocido sobre este grafo. FIN