Agrupación de entes físicos o conceptuales y relaciones entre ellos.
G = (V, A)
V = Conjunto de Vértices
A = Conjunto de Aristas
Representación
VERTICE A
VERTICE B
ARISTA
Pereira
Medellín
Es la representación de un elemento físico o conceptual.
G = (V,A)
V = {pereira, cali, Medellín}
Representa una relación entre dos nodos.
G = (V,A)
A = {(pereira, cali), (Pereira,Medellín)}
VERTICE A
VERTICE B
Pereira
Medellín
VERTICE A
VERTICE B
Pereira
Medellín
VERTICE A
VERTICE B
Pereira
Medellín
VERTICE A
VERTICE B
Pereira
Medellín
VERTICE A
VERTICE B
Pereira
Medellín
380 Km
Sin bucles ni arcos paralelos
Los arcos no se pueden cruzar
Se puede expresar como una línea
Los arcos forman un ciclo completo
Todos sus vertices se conectan entre si
Dos grupos que se conectan entre ellos, pero no con elementos del mismo grupo
Grafo conexo: Existe un camino entre cualquier par de vértices que forman el grafo.
Para saber si un grafo es conexo o no se hace un recorrido del mismo.
1. Realizar un recorrido del grafo a partir de cualquier vértice w.
2. Si en el recorrido se han marcado todos los vértices, entonces el grafo es conexo.
3. Si el grafo no es conexo, los vértices marcados forman una componente conexa.
4. Se toma un vértice no marcado, z, y se realiza de nuevo el recorrido del grafo a partir de z. Los nuevo vértices marcados forman otra componente conexa.
5. El algoritmo termina cuando todos los vértices han sido marcados (visitados)
Un grafo dirigido fuertemente conexo es aquel en el cual existe un camino entre cualquier par
de vértices del grafo.
De no ser fuertemente conexo se pueden determinar componentes fuertemente conexas (Se puede usar el algoritmo de recorrido en profundidad para identificarlas)
a
d
e
c
b
Grafo dirigido
a
d
e
c
b
Componentes fuertes
A
B
C
D
E
A
B
C
D
E
VERTICES
A
B
C
D
E
ARCOS
EJEMPLO: (A,C)
| A | B | |
|---|---|---|
| A | 0 | 50 |
| B | 50 | 0 |
String dato
Vertice[] vertices
int[][] matrizAdyacencia
String dato
Vertice[] vertices
List<Arco> listaAdyacencia
Vértice origen
Vértice destino
VENTAJAS DE LISTA FRENTE A MATRIZ
Integer peso
DFS (Deep First Search)
DFS (Deep First Search)
Inicializar marca
Para todos los vértices no marcados llamar a DFS
DFS: Para cada sub vértice si este no es visitado llamar a DFS
BFS - Breadth First Search
Supone recorrer el grafo por niveles parecidos a los de un arbol. Es decir, primero se recorren los que esten a un paso del vertice origen, luego los que están a dos pasos, luego a tres y así sucesivamente hasta que estén marcados todos los vertices del grafo.
Se puede usar una estructura de datos COLA.