La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 9c: Grafos No Dirigidos Profesor : Rodrigo Salas Universidad Técnica Federico Santa María Departamento.

Presentaciones similares


Presentación del tema: "Tema 9c: Grafos No Dirigidos Profesor : Rodrigo Salas Universidad Técnica Federico Santa María Departamento."— Transcripción de la presentación:

1 Tema 9c: Grafos No Dirigidos Profesor : Rodrigo Salas Universidad Técnica Federico Santa María Departamento de Informática ILI-134

2 Profesor: Rodrigo Salas 2 Definiciones Un grafo no dirigido G consiste en un conjunto de vértices V y un conjunto de arista A. Los vértices se denominan también nodos o puntos y son objetos que pueden tener nombres y otras propiedades. Los aristas son conexiones entre dos vértices y representan relaciones entre los objetos. Una arista es un par no ordenado de vértices (v,w), es decir (v,w)=(w,v)

3 Profesor: Rodrigo Salas 3 Definiciones Camino: es una secuencia de vértices v 1, v 2,..., v n, tal que (v i,v i+1 ) es una arista para 1 i

4 Profesor: Rodrigo Salas 4 Definiciones Sea G=(V,A) un grafo con conjunto de vértices V y conjunto de aristas A. Un subgrafo de G es un grafo G=(V,A) donde –V es un subconjunto de V –A consta de las aristas (v,w) en A tales que v y w están en V. Si A consta de todas las aristas (v,w) en A, tal que v y w están en V, entonces Gse conoce como un grafo inducido de G. Un componente conexo de un grafo G es un subgrafo conexo inducido maximal, esto es, un subgrafo conexo inducido que por sí mismo no es un subgrafo propio de ningún otro subgrafo conexo de G.

5 Profesor: Rodrigo Salas 5 Definiciones Sea G=(V,A) un grafo con conjunto de vértices V y conjunto de aristas A. Un subgrafo de G es un grafo G=(V,A) donde –V es un subconjunto de V –A consta de las aristas (v,w) en A tales que v y w están en V. Si A consta de todas las aristas (v,w) en A, tal que v y w están en V, entonces Gse conoce como un grafo inducido de G. Un componente conexo de un grafo G es un subgrafo conexo inducido maximal, esto es, un subgrafo conexo inducido que por sí mismo no es un subgrafo propio de ningún otro subgrafo conexo de G.

6 Profesor: Rodrigo Salas 6 Definiciones Un ciclo (simple) de un grafo es un camino (simple) de longitud mayor o igual a tres, que conecta un vértice consigo mismo. Un grafo es cíclico si contiene por lo menos un ciclo. Un grafo conexo acíclico algunas veces se conoce como árbol libre.

7 Profesor: Rodrigo Salas 7 Definiciones Propiedades de los árboles libres: –Todo árbol libre con n 1 vértices contiene exactamente n-1 aristas. –Si se agrega cualquier arista a un árbol libre, resulta un ciclo.

8 Representaciones de Grafos No Dirigidos

9 Profesor: Rodrigo Salas 9 Matriz de Adyacencia Sea el grafo no dirigido G=(V,A), los vértices V={1,2,...,n}. La matriz de adyacencia para G es una matriz A de dimensión n x n, de elementos booleanos, donde –Obs: con frecuencia se usa 1 para verdadero y 0 para falso.

10 Profesor: Rodrigo Salas 10 Matriz de Adyacencia Etiquetada La matriz de adyacencia etiquetada para G es una matriz A de dimensión n x n, donde

11 Profesor: Rodrigo Salas 11 Ejemplos de grafos dirigidos:

12 Profesor: Rodrigo Salas 12 Lista de Adyacencia La lista de adyacencia para un vértice i es una lista, en algún orden, de todos los vértices adyacentes a i. Se puede representar G por medio de un arreglo CABEZA, donde CABEZA[i] es un apuntados a la lista de adyacencia del vértice i.

13 Profesor: Rodrigo Salas 13 Ejemplos de grafos dirigidos: * *4 2*4 *3

14 Algoritmos en Grafos No Dirigidos

15 Profesor: Rodrigo Salas 15 Arboles abarcadores de costo mínimo Un árbol abarcador para G es un árbol libre que conecta todos los vértices de V; su costo es la suma de los costos de las aristas del árbol

16 Profesor: Rodrigo Salas 16 Algoritmo de PRIM #include #define N_max 100 #define INFINITO 1000 struct grafos{ int G[N_max][N_max]; int N_Vertices; }; typedef struct grafos Grafos; void Anula(Grafos *G,int N){ int i,j; for(i=0;iG[i][j]=INFINITO; G->N_Vertices=N; }

17 Profesor: Rodrigo Salas 17 Algoritmo de PRIM void PRIM(Grafos G,Grafos *T){ int Vertices[N_max]; int i,j,N; int u,v,u_min,v_min,min_costo; int Vertices_seleccionados=1; N=G.N_Vertices; for(i=0;iG.G[i][j]){ u_min=i; v_min=j; min_costo=G.G[i][j]; } Vertices_seleccionados++; Vertices[v_min]=1; T->G[u_min][v_min]=min_costo; T->G[v_min][u_min]=min_costo; } }

18 Profesor: Rodrigo Salas 18 Ejemplo

19 Profesor: Rodrigo Salas 19 Ejemplo

20 Profesor: Rodrigo Salas 20 Ejemplo

21 Profesor: Rodrigo Salas 21 Algoritmo de Kruskal

22 Profesor: Rodrigo Salas 22 Ejemplo

23 Profesor: Rodrigo Salas 23 Ejemplo

24 Profesor: Rodrigo Salas 24 Ejemplo

25 Recorridos

26 Profesor: Rodrigo Salas 26 void bpf(Vertice v){ Vertice w; MARCA[v]=1; /* Visitado */ for(i=Primero(v);i!= ;i=Siguiente(v,i)){ w=Vertice(v,i); if(MARCA[w]==0) bpf(w); } for(v=0;v

27 Profesor: Rodrigo Salas 27 Búsqueda en Profundidad Durante una búsqueda en profundidad en un grafo no dirigido G, todas las aristas pueden ser: –Aristas de árbol –Aristas de retroceso

28 Profesor: Rodrigo Salas 28 Ejemplo a cb fdeg a cb f d eg

29 Profesor: Rodrigo Salas 29 void bea(Vertice v){ Grafo T; Vertice x,y; Cola_Vertice C; int MARCA[N_MAX_VERTICES]; ANULA(T); MARCA[v]=1; /* Visitado */ PONE_EN_COLA(v,C); while (!VACIA(C)){ x=FRENTE(C); QUITA_De_COLA(C); for(i=Primero(v);i!= ;i=Siguiente(v,i)){ w=Vertice(v,i); if(MARCA[w]==0){ MARCA[w]=1; PONE_EN_COLA(y,C); INSERTA_ARCO(x,y,T) } Búsqueda en Amplitud

30 Profesor: Rodrigo Salas 30 Ejemplo a cb fdeg a c b f de g

31 Profesor: Rodrigo Salas 31 Puntos de Articulación y Componentes Biconexos Un punto de articulación de un grafo es un vértice v tal que cuando se elimina junto con todas las aristas incidentes sobre él, se divide un componente conexo en dos o más partes. Un grafo sin puntos de articulación se llama biconexo.

32 Profesor: Rodrigo Salas 32 Puntos de Articulación y Componentes Biconexos Realizar una búsqueda en profundidad del grafo. Calcular el numero_bp[v] para todo vértice v. Para cada vértice v, obtener bajo[v] Encontrar los Puntos de Articulación

33 Profesor: Rodrigo Salas 33 Puntos de Articulación y Componentes Biconexos Realizar una búsqueda en profundidad del grafo. Calcular el numero_bp[v] para todo vértice v. Para cada vértice v, obtener bajo[v] Encontrar los Puntos de Articulación numero_bp[v] es el número asignado al vértice al recorrer el grafo en la búsqueda de profundidad. Ordena los vértices como en un recorrido en orden previo del árbol abarcador en profundidad.

34 Profesor: Rodrigo Salas 34 Puntos de Articulación y Componentes Biconexos Realizar una búsqueda en profundidad del grafo. Calcular el numero_bp[v] para todo vértice v. Para cada vértice v, obtener bajo[v] Encontrar los Puntos de Articulación bajo[v] es el número_bp más pequeño de v o de cualquier otro vértice w accesible desde v, siguiendo cero o más aristas de árbol hasta un descendiente x de v y después seguir una arista de retroceso (x,w). Se calcula bajo[v] para todos los vértices v, visitándolos en un recorrido orden posterior. Se toma bajo[v] como el mínimo de: número_bp[v] Número_bp[z] para cualquier vérticee z para el cual haya una arista de retroceso (v,z) y Bajo[y] para cualquier hijo y de v.

35 Profesor: Rodrigo Salas 35 Puntos de Articulación y Componentes Biconexos Realizar una búsqueda en profundidad del grafo. Calcular el numero_bp[v] para todo vértice v. Para cada vértice v, obtener bajo[v] Encontrar los Puntos de Articulación a)La raíz es un punto de articulación si, y sólo si, tiene dos o más hijos. b)Un vértice v distinto de la raíz es un punto de articulación si, y sólo si, hay un hijo w de v tal que bajo[w] numero_bp[v]

36 Profesor: Rodrigo Salas 36 Ejemplo a cb fdeg a cb f d eg

37 Profesor: Rodrigo Salas 37 Ejemplo numero_bp[a]=1 bajo[a]=1 numero_bp[c]=5 bajo[c]=5 numero_bp[f]=6 bajo[f]=5 numero_bp[g]=7 bajo[g]=5 numero_bp[b]=2 bajo[b]=1 numero_bp[d]=3 bajo[d]=1 numero_bp[e]=4 bajo[d]=1 a cb f d eg

38 Profesor: Rodrigo Salas 38 Pareamiento de Grafos Un grafo cuyos vértices se pueden dividir en dos grupos disjuntos y las aristas presentan un extremo en cada grupo, se conoce como bipartito. El problema del pareamiento consiste en encontrar un subconjunto de las aristas de A de un grafo G=(V,A) en el que ningún par de aristas es incidente sobre el mismo vértice de V. La tarea de la selección de subconjuntos máximos de tales aristas se denomina problema de pareamiento maximal. Un pareamiento completo es aquel en que todo vértice es un punto final de alguna arista en ella. Todo pareamiento completo es maximal.

39 Profesor: Rodrigo Salas 39 Ejemplo

40 Profesor: Rodrigo Salas 40 Técnica de caminos aumentados para el Pareamiento de un Grafo Sea C un pareamiento en un grafo G. Un camino que conecte dos vértices no pareados, cuya aristas alternas estén en C, se conoce como camino aumentado relativo a C. Sea D=C A el conjunto maximal de aristas que forman parte del camino aumentado relativo a C, pero no pertenecen a C. D es un pareamiento.

41 Profesor: Rodrigo Salas 41 Técnica de caminos aumentados para el Pareamiento de un Grafo Iniciar con C= Encontrar un camino aumentado A relativo a C y reemplazar C por D=C A ¿Existen más caminos aumentados? Sí El pareamiento es maximal

42 Profesor: Rodrigo Salas 42 Ejemplo

43 Profesor: Rodrigo Salas 43 Ejemplo

44 Profesor: Rodrigo Salas 44 Ejemplo

45 Profesor: Rodrigo Salas 45 Ejemplo

46 Profesor: Rodrigo Salas 46 Ejemplo

47 Universidad Técnica Federico Santa María Departamento de Informática ILI-134 Fin Tema 9c: Grafos No Dirigidos ¿Preguntas? Profesor : Rodrigo Salas


Descargar ppt "Tema 9c: Grafos No Dirigidos Profesor : Rodrigo Salas Universidad Técnica Federico Santa María Departamento."

Presentaciones similares


Anuncios Google