You are on page 1of 1

ANÁLISIS Y DISEÑO DE ALGORITMOS II

PRÁCTICO Nº 1 - GRAFOS

1. Implemente en lenguaje C++ la clase grafo.

2. Implemente los recorridos Depth-First-Search y Breadth-First-Search.

3. Escriba un algoritmo de ordenación topológica a partir del algoritmo de recorrido en


profundidad.

4. Implemente un algoritmo que determine si un grafo dirigido tiene algún ciclo.

5. Escribir un algoritmo que, dado un grafo dirigido y dos vértices de este grafo, devuelva
todos los caminos simples de un vértice a otro.

6. Dados un grafo G con sus vértices rotulados con colores y dos vértices v1 y v2, escriba
un algoritmo que encuentre un camino entre el vértice v1 al vértice v2 tal que no pase
por vértices rotulados con el color rojo.

7. Escriba un algoritmo que devuelva una lista con todos los vértices de un grafo dirigido,
a partir de los cuales existe un camino de longitud ‘long’ que termina en un vértice
dado.

8. Un grafo no dirigido puede dividirse en una o más “componentes conectadas”. Cada


una de éstas es un conjunto máximo de vértices alcanzables entre sí. Escriba un
algoritmo para obtener dichas componentes conectadas.

9. Un grafo dirigido G = (V, A) puede dividirse en “componentes fuertemente


conectadas”. Cada una de ellas es un conjunto máximo de vértices U ⊆ V tal que para
cada par de vértices u y v en U, existe un camino de u a v y de v a u. Escriba un
algoritmo para obtener dichas componentes.

10. Implemente los algoritmos de Dijkstra y Floyd para encontrar el “camino más corto”.

11. Desde un cierto número k de ciudades del interior de una provincia, se desean
transportar cereales hasta algún puerto perteneciente al litoral de la misma. Se pretende
efectuar el transporte con mínimo costo. Dé un algoritmo eficiente que resuelva este
problema, devolviendo los caminos en una estructura de lista.

12. Implemente los algoritmos de Prim y Kruskal para obtener el “árbol de recubrimiento
de mínimo costo”.

13. Escriba un algoritmo que verifique si un grafo contiene un ciclo Hamiltoniano (un ciclo
que pasa exactamente una vez por cada uno de los vértices de un grafo).

14. Escriba un algoritmo que verifique si un grafo contiene un ciclo Euleriano (un ciclo que
pasa exactamente una vez por cada uno de los arcos de un grafo).

You might also like