El documento presenta los conceptos básicos de los algoritmos de grafos, incluyendo la representación de grafos dirigidos y no dirigidos, diferentes tipos de recorridos como el recorrido en profundidad y por niveles, y los caminos y circuitos de Euler.
1. Tema: Algoritmos de Grafos
C´atedra: Algoritmos y Complejidad
Mg. Mart´ın M. P´erez
Facultad de Ciencias de la Administraci´on
Universidad Nacional de Entre R´ıos
Noviembre de 2015
2. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
En la clase de hoy: Algoritmos de Grafos
1 Introducci´on
2 Representaci´on de Grafos
3 Recorridos
Recorrido en Profundidad: Grafos No Dirigidos
Puntos de Articulaci´on
Recorrido en Profundidad: Grafos Dirigidos
Grafos Ac´ıclicos: Orden Topol´ogico
Recorrido por Niveles
4 Camino y Circuito de Euler
Algoritmo de Fleury
5 Bibliograf´ıa
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 2 / 19
3. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Introducci´on
Los grafos son estructuras muy importantes en las ciencias
de la computaci´on. Con ellos se puede encontrar la soluci´on
a una inmensa variedad de problemas.
Hoy veremos t´ecnicas generales que pueden usarse cuando
no se requiere ning´un orden particular para visitar cada
nodo.
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 3 / 19
4. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Representaci´on de Grafos No Dirigidos (GND)
Memoria GND =
Θ(n2
) Matriz de Adyacencia
Θ(n + 2a) = Θ(m´ax(n, a)) Lista de Adyacencia
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 4 / 19
5. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Representaci´on de Grafos Dirigidos (GD)
Memoria GD =
Θ(n2
) Matriz de Adyacencia
Θ(n + a) = Θ(m´ax(n, a)) Lista de Adyacencia
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 5 / 19
6. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorridos
Un recorrido es un algoritmo que visita todos los nodos de
un grafo.
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 6 / 19
7. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorridos
Un recorrido es un algoritmo que visita todos los nodos de
un grafo.
Los algoritmos m´as comunes generalizan las t´ecnicas para
recorrer ´arboles:
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 6 / 19
8. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorridos
Un recorrido es un algoritmo que visita todos los nodos de
un grafo.
Los algoritmos m´as comunes generalizan las t´ecnicas para
recorrer ´arboles:
Pre-orden
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 6 / 19
9. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorridos
Un recorrido es un algoritmo que visita todos los nodos de
un grafo.
Los algoritmos m´as comunes generalizan las t´ecnicas para
recorrer ´arboles:
Pre-orden
In-orden
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 6 / 19
10. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorridos
Un recorrido es un algoritmo que visita todos los nodos de
un grafo.
Los algoritmos m´as comunes generalizan las t´ecnicas para
recorrer ´arboles:
Pre-orden
In-orden
Post-orden
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 6 / 19
11. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido en Profundidad: Grafos No Dirigidos
Procedimiento de Recorrido en Profundidad: GND
Se elige un nodo v ∈ N como punto de partida.
Se marca el nodo v como visitado.
Si hay un nodo no visitado adyacente a v, se elige como
nuevo punto de partida.
Se sigue el proceso recursivamente, hasta que todos los
nodos de G est´en marcados.
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 7 / 19
12. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido en Profundidad: Grafos No Dirigidos
Ejemplo
Para el siguiente grafo, ¿c´omo proceder´ıa el recorrido en
profundidad?
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 8 / 19
13. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido en Profundidad: Grafos No Dirigidos
Ejemplo
1. dfs(1) llamada inicial
2. dfs(2) llamada recursiva
3. dfs(3) llamada recursiva
4. dfs(6) llamada recursiva
5. dfs(5) llamada recursiva; se bloquea
6. dfs(4) vecino del nodo 1 no visitado
7. dfs(7) llamada recursiva
8. dfs(8) llamada recursiva; se bloquea
9. − no hay m´as nodos para visitar
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 9 / 19
14. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido en Profundidad: Grafos No Dirigidos
Ejemplo
´Arbol de cubrimiento asociado al recorrido
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 10 / 19
15. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido en Profundidad: Grafos No Dirigidos
Definiciones
Punto de Articulaci´on
Un nodo v de un grafo conexo es un punto de articulaci´on
si el subgrafo obtenido por la eliminaci´on de v y todos sus
arcos incidentes deja de ser conexo.
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 11 / 19
16. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido en Profundidad: Grafos No Dirigidos
Definiciones
Punto de Articulaci´on
Un nodo v de un grafo conexo es un punto de articulaci´on
si el subgrafo obtenido por la eliminaci´on de v y todos sus
arcos incidentes deja de ser conexo.
Grafo Biconexo
Un grafo G es biconexo si es co-
nexo y no tiene puntos de articu-
laci´on.
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 11 / 19
17. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido en Profundidad: Grafos No Dirigidos
Definiciones
Punto de Articulaci´on
Un nodo v de un grafo conexo es un punto de articulaci´on
si el subgrafo obtenido por la eliminaci´on de v y todos sus
arcos incidentes deja de ser conexo.
Grafo Biconexo
Un grafo G es biconexo si es co-
nexo y no tiene puntos de articu-
laci´on.
Grafo Bicoherente
Un grafo G es bicoherente si ca-
da punto de articulaci´on se conec-
ta por medio de al menos dos ar-
cos a cada componente de los sub-
grafos restantes.
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 11 / 19
18. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido en Profundidad: Grafos Dirigidos
Procedimiento de Recorrido en Profundidad: GD
El algoritmo es el mismo. La ´unica diferencia reside en la
interpretaci´on de la palabra “adyacente”
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 12 / 19
19. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido en Profundidad: Grafos Dirigidos
Procedimiento de Recorrido en Profundidad: GD
El algoritmo es el mismo. La ´unica diferencia reside en la
interpretaci´on de la palabra “adyacente”
¿C´omo proceder´ıa el recorrido
en profundidad en este grafo
dirigido?
¿Cu´ales ser´ıan los ´arboles de
cubrimiento resultantes?
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 12 / 19
20. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido en Profundidad: Grafos Dirigidos
Grafos Ac´ıclicos: Orden Topol´ogico
Los grafos dirigidos ac´ıclicos pueden usarse para repre-
sentar muchas relaciones interesantes.
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 13 / 19
21. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido en Profundidad: Grafos Dirigidos
Grafos Ac´ıclicos: Orden Topol´ogico
Los grafos dirigidos ac´ıclicos pueden usarse para repre-
sentar muchas relaciones interesantes.
Orden Topol´ogico
Es un listado de los nodos de un GDA donde, si existe un arco (i, j) en
el grafo, entonces el nodo i precede al j en la lista.
¿C´omo se puede adaptar el procedimiento dfs para que
muestre el orden topol´ogico de un grafo?
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 13 / 19
22. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido por Niveles
Recorrido por Niveles
Cuando una b´usqueda por niveles llega a cierto nodo
v, primero visita todos los vecinos de v. S´olo entonces
comienza a visitar los nodos m´as lejanos.
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 14 / 19
23. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido por Niveles
Recorrido por Niveles
Cuando una b´usqueda por niveles llega a cierto nodo
v, primero visita todos los vecinos de v. S´olo entonces
comienza a visitar los nodos m´as lejanos.
Para el grafo
Paso Nodo Visitado Q
1. 1 2, 3, 4
2. 2 3, 4, 5, 6
3. 3 4, 5, 6
4. 4 5, 6, 7, 8
5. 5 6, 7, 8
6. 6 7, 8
7. 7 8
8. 8 −
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 14 / 19
24. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Recorrido por Niveles
Recorrido por Niveles
Actividades
¿C´omo quedar´ıa el ´arbol de cubrimiento generado por
el recorrido de la diapositiva anterior?
¿Te anim´as a aplicar el algoritmo de recorrido por ni-
veles al grafo dirigido de la Figura 5 de los apuntes de
clase?
En http://visualgo.net/dfsbfs.html se puede ver c´omo
evolucionan los recorridos en profundidad y por niveles,
tanto para GD como para GND. ¡A experimentar!
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 15 / 19
25. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Camino y Circuito de Euler
Un camino de Euler en un GND es un camino donde cada
arco aparece exactamente una vez .
Si el nodo inicial y el final son el mismo nodo, entonces el
camino es un circuito de Euler.
Euler enunci´o dos Teoremas:
Teorema 1: Existencia de un Camino de Euler.
Teorema 2: Existencia de Circuitos de Euler.
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 16 / 19
26. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Camino y Circuito de Euler
Los puentes de K¨onigsberg y su grafo asociado
¿Existe en este caso camino y/o circuito de Euler?
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 17 / 19
27. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Algoritmo de Fleury
Algoritmo de Fleury
Pasos para encontrar caminos de Euler:
1 Verificar que el grafo cumpla con las hip´otesis de los
teoremas de caminos o circuitos de Euler.
2 Elegir un v´ertice de grado impar. En caso de que no
exista, se puede elegir cualquier v´ertice.
3 En cada paso, recorrer cualquier arco disponible, eli-
giendo un puente o istmo s´olo cuando no haya alterna-
tiva.
4 Al recorrer el arco, borrarlo y continuar el proceso hasta
que todos lo v´ertices tengan grado cero.
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 18 / 19
28. Intro Representaci´on de Grafos Recorridos Camino y Circuito de Euler Bibliograf´ıa
Referencias Bibliogr´aficas
Brassard, G. and Bratley, P. (1995).
Fundamentals of Algorithmics.
Pearson, 1ra. edition.
Cormen, T. H., Leiserson, C. E., Rivest, R. L., and Stein, C. (2009).
Introduction to Algorithms.
The MIT Press, 3ra. edition.
Diestel, R. (2005).
Graph Theory.
Springer-Verlag Heidelberg, 3ra. edition.
Mart´ın P´erez (FCAD – UNER) Algoritmos de Grafos Noviembre de 2015 19 / 19