La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 9c: Grafos No Dirigidos

Presentaciones similares


Presentación del tema: "Tema 9c: Grafos No Dirigidos"— Transcripción de la presentación:

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

2 Profesor: Rodrigo Salas
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) Profesor: Rodrigo Salas

3 Profesor: Rodrigo Salas
Definiciones Camino: es una secuencia de vértices v1, v2,..., vn, tal que (vi,vi+1) es una arista para 1i<n. Un camino es simple si todos sus vértices son distintos, con excepción de v1 y vn, que pueden ser el mismo. Longitud de un camino: es el número de aristas a lo largo de un camino. Se dice que el camino v1, v2,..., vn, conecta v1 y vn Un grafo es conexo si todos sus pares de vértices están conectados. Profesor: Rodrigo Salas

4 Profesor: Rodrigo Salas
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 G’se 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. Profesor: Rodrigo Salas

5 Profesor: Rodrigo Salas
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 G’se 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. Profesor: Rodrigo Salas

6 Profesor: Rodrigo Salas
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. Profesor: Rodrigo Salas

7 Profesor: Rodrigo Salas
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. Profesor: Rodrigo Salas

8 Representaciones de Grafos No Dirigidos

9 Profesor: Rodrigo Salas
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. 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 Profesor: Rodrigo Salas

11 Ejemplos de grafos dirigidos:
1 2 3 4 1 2 3 4 Profesor: Rodrigo Salas

12 Profesor: Rodrigo Salas
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. Profesor: Rodrigo Salas

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

14 Algoritmos en Grafos No Dirigidos

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 Profesor: Rodrigo Salas

16 Profesor: Rodrigo Salas
Algoritmo de PRIM #include <stdio.h> #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;i<N;i++) for(j=0;j<N;j++) G->G[i][j]=INFINITO; G->N_Vertices=N; } Profesor: Rodrigo Salas

17 Profesor: Rodrigo Salas
Algoritmo de PRIM while(Vertices_seleccionados<N){ min_costo=INFINITO; for (i=0;i<N;i++) if (Vertices[i]==1) for (j=0;j<N;j++) if (Vertices[j]==0) if (min_costo>G.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; 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;i<N;i++){ Vertices[i]=0; } Vertices[0]=1; Anula(T,N); Profesor: Rodrigo Salas

18 Profesor: Rodrigo Salas
Ejemplo 1 4 2 3 5 6 1 4 2 3 5 6 Profesor: Rodrigo Salas

19 Profesor: Rodrigo Salas
Ejemplo 1 4 2 3 5 6 1 4 2 3 5 6 1 4 2 3 5 6 Profesor: Rodrigo Salas

20 Profesor: Rodrigo Salas
Ejemplo 1 4 2 3 5 6 Profesor: Rodrigo Salas

21 Profesor: Rodrigo Salas
Algoritmo de Kruskal Profesor: Rodrigo Salas

22 Profesor: Rodrigo Salas
Ejemplo 1 4 2 3 5 6 1 4 2 3 5 6 Profesor: Rodrigo Salas

23 Profesor: Rodrigo Salas
Ejemplo 1 4 2 3 5 6 1 4 2 3 5 6 1 4 2 3 5 6 Profesor: Rodrigo Salas

24 Profesor: Rodrigo Salas
Ejemplo 1 4 2 3 5 6 Profesor: Rodrigo Salas

25 Recorridos

26 Búsqueda en Profundidad
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<Total_nodos;v++){ if (Marca[v]==0) bpf(v); v++; 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 Profesor: Rodrigo Salas

28 Profesor: Rodrigo Salas
Ejemplo a c b f d e g a c b f d e g Profesor: Rodrigo Salas

29 Profesor: Rodrigo Salas
Búsqueda en Amplitud 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) } Profesor: Rodrigo Salas

30 Profesor: Rodrigo Salas
Ejemplo a c b f d e g a c b f d e g 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. 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 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. 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. Para cada vértice v, obtener bajo[v] Encontrar los Puntos de Articulación 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. 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. Para cada vértice v, obtener bajo[v] Encontrar los Puntos de Articulación 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. La raíz es un punto de articulación si, y sólo si, tiene dos o más hijos. 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] Para cada vértice v, obtener bajo[v] Encontrar los Puntos de Articulación Profesor: Rodrigo Salas

36 Profesor: Rodrigo Salas
Ejemplo a c b f d e g a c b f d e g Profesor: Rodrigo Salas

37 Profesor: Rodrigo Salas
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 a c b f d e g Profesor: Rodrigo Salas

38 Profesor: Rodrigo Salas
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. Profesor: Rodrigo Salas

39 Profesor: Rodrigo Salas
Ejemplo 1 2 3 4 5 6 7 8 9 10 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. 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? El pareamiento es maximal Profesor: Rodrigo Salas

42 Profesor: Rodrigo Salas
Ejemplo 1 2 3 4 5 6 7 8 9 10 Profesor: Rodrigo Salas

43 Profesor: Rodrigo Salas
Ejemplo 1 2 4 6 8 9 1 2 4 6 8 9 Profesor: Rodrigo Salas

44 Profesor: Rodrigo Salas
Ejemplo 1 6 2 7 3 8 4 9 5 10 Profesor: Rodrigo Salas

45 Profesor: Rodrigo Salas
Ejemplo 2 5 4 6 9 10 2 5 4 6 9 10 Profesor: Rodrigo Salas

46 Profesor: Rodrigo Salas
Ejemplo 1 6 2 7 3 8 4 9 5 10 Profesor: Rodrigo Salas

47 Fin Tema 9c: Grafos No Dirigidos ¿Preguntas?
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"

Presentaciones similares


Anuncios Google