Descargar la presentación
La descarga está en progreso. Por favor, espere
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 1i<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 n1 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=CA 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=CA Sí ¿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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.