190 likes | 498 Vues
Grafos. Un Grafo G es un par de conjuntos (V, E), donde V es un conjunto no vacío de elementos llamados vértices o nodos y E es un conjunto formado por pares no ordenados de elementos de V, llamados lados o aristas Se denota por G = (V, E).
E N D
Un Grafo G es un par de conjuntos (V, E), donde V es un conjunto no vacío de elementos llamados vértices o nodos y E es un conjunto formado por pares no ordenados de elementos de V, llamados lados o aristas • Se denota por G = (V, E).
Cuando E está formado por pares ordenados (es decir, importa cual de los 2 vértices del par se coloca primero) de elementos de V, sus elementos son llamados arcos y se habla de grafo dirigido o dígrafo: D = (V, E).
G = (V, E) • V = {Co, M, G, J, A} • E = {(Co, G), (M, G), (G, J), (G, A),(M,J)} Co M G J A
Conceptos • Orden del grafo G (número de vértices). • Extremo inicial (origen, cola) y final (destino, cabeza) de un arco • Ciclo o bucle • Dos vértices son adyacentes si existe un arco que los une • Grafo conexo: Grafo en el cual es posible desde cualquier vértice llegar a cualquier otro vértice presente en el grafo (aunque para ello haya que pasar por otros vértices)
Grado de un vértice (número de lados a los que está conectado el vértice) • En dígrafos se habla de: - Grado entrante (número de lados que llegan al vértice) - Grado saliente (número de lados que salen del vértice) La suma del grado entrante más el saliente da el grado total del vértice • Grafo regular (todos los vértices son del mismo grado) • Grafo completo (todos los vértices están conectados entre sí) • Grafo simple (no contiene ciclos y no hay más de 1 lado entre un par de vértices dado).
• Concepto de camino o trayectoria • La longitud de un camino es el número de lados presentes en él • La distancia entre dos nodos es la longitud del camino más corto existente entre ellos
Concepto de red Sea G=(X, A) un grafo de orden n. Se dice que G es una red si se cumple que: • G es conexo y no tiene ciclos • Hay definido un valor numérico no negativo sobre cada uno de los lados del grafo, que se denotará C, y que se llamará capacidad
Lados no orientados • Un lado (a,b) definido por los vértices a y b es idéntico al lado (b,a) Grafos No dirigidos Lados orientados • Un lado (a,b) definido por los vértices a y b es diferente al lado (b,a). Es decir el orden de los vértices importa en la definición del lado Grafos Dirigidos
Cuantificación de un lado: • Se pueden asignar valores a los lados representando así atributos cuantitativos como: • Intensidad de la relación • Capacidad informativa del lado • Volúmenes de flujo o tráfico a través del lado • Distancias entre nodos • Probabilidades de pasar información • Frecuencia de interacción
Representación de un Grafo Matriz de adyacencia • Es una matriz de n x n (n= Número de vértices del grafo) en la cual se coloca un 1 si existe lado entre los vértices correspondientes (fila, columna). • Si el grafo es no dirigido se colocan unos tanto en la posición (i,j) como en la (j,i). • En vez de un 1 también se puede colocar el signo +.
Puntos de corte: • Vértices que si se quitan desconectan el grafo. En el ejemplo el vértice a. Lados de corte • Un lado que si se quita desconecta el grafo. En el ejemplo el lado (d,a) c a d e
Recorridos sobre grafos • Recorrer un grafo consiste en visitar (pasar) por cada uno de los nodos que son alcanzables a partir de un nodo de inicio dado • Si el grafo es conexo (y no dirigido) entonces está garantizado que todos los nodos serán visitados • El recorrido se puede hacer de 2 maneras: DFS o BFS.
DFS (Depth First Search) • Literalmente “Búsqueda del Primero en Profundidad” • Consiste en: A partir de un vértice inicial dado, determinar sus vértices adyacentes*, de esos vértices adyacentes elegir uno que no haya sido visitado y a partir de allí iniciar nuevamente el recorrido DFS • Como puede verse se trata de una definición recursiva *Si el grafo es dirigido se determinan los vértices adyacentes hacia los cuales se puede viajar…
Algoritmo DFS(V) Visitados[V] = 1 /* El vértice V enviado como parámetro es visitado */ vértice W adyacente a V IF Visitados[W] = 0 THEN DFS(W) END IF END END DFS
BFS (Breath First Search) • Literalmente “Búsqueda del Primero en Anchura” • La diferencia con el recorrido DFS consiste en que: en el recorrido DFS no se visitan inmediatamente todos los nodos adyacentes a un nodo, en el BFS por el contrario si se hace esto. Luego de visitar todos los adyacentes de un vértice dado, entonces se elige uno de ellos y se continúa de la misma forma.
Algoritmo BFS(V) Visitados[V] = 1 /* El vértice V enviado como parámetro es visitado */ Llevar V a la Cola //Se guarda V en la Cola Mientras Cola NO vacía Z = Extraer Próximo vértice de la Cola vértice W adyacente a Z IF Visitados[W] = 0 THEN Visitados[W]=1 Llevar W a la Cola END IF END END Mientras END BFS