Suponemos que tenemos un mapa con diferentes países y queremos pintarlos de forma que países vecinos tengan colores diferentes. ¿Cómo representamos el problema?
Los grafos consisten en un conjunto de vértices y un conjunto de aristas, G = (V, E). La representación de las aristas puede ser mediante:
explorar(v,G):
visitados(v) = true
previsit(v)
para cada arista (v,u) en G.E:
si no visitado(u):
explorar(u)
postvisit(v)
¿Cual es el orden que da explorar?
dfs(G):
para cada v en G.V:
visitados(v) = false
para cada v en G.V:
si no visitados(v):
explorar(v)
previsit(v):
pre[v] = clock
clock = clock + 1
postvisit(v):
post[v] = clock
clock = clock + 1
Tipos de aristas que hay en un grafo dependiendo del árbol dfs:
Tipo de arista \((u,v)\) | Relación entre los números pre/post |
---|---|
arista del árbol | pre[u]≤ pre[v]≤ post[v]≤ post[u] |
arista adelante | pre[u]≤ pre[v]≤ post[v]≤ post[u] |
arista atrás | pre[v]≤ pre[u]≤ post[u]≤ post[v] |
arista cruzada | pre[v]≤ post[v]≤ pre[u]≤ post[u] |