Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Asignatura:
Análisis y Diseño de Algoritmos
Componente:
Actividades Prácticas y de Experimentación
Actividad:
Resolver los siguientes problemas:
1/5
Universidad Técnica de Manabí
Facultad de Ciencias Informáticas
Carrera de Sistemas de Información
3. Muestre que usar un solo bit para almacenar cada color de vértice es suficiente
argumentando que el procedimiento BFS produce el mismo resultado si se elimina la línea
18. Luego muestre cómo obviar la necesidad de colores de vértice por completo.
4. ¿Cuál es el tiempo de ejecución de un BFS si representamos su grafo de entrada mediante
una matriz de adyacencia y modificamos el algoritmo para manejar esta forma de entrada?
5. Argumente que, en una búsqueda de primero en amplitud, el valor u.d asignado a un vértice
u es independiente del orden en que aparecen los vértices en cada lista de adyacencia.
Usando el grafo del ejercicio 2, muestre que el primer árbol de anchura calculado por BFS
puede depender del orden dentro de las listas de adyacencia.
6. Dé un ejemplo de un grafo dirigido G = (V, E), un vértice fuente s ∈ V, y un conjunto de
aristas de árbol Eπ ⊆ E tal que para cada vértice v ∈ V, el único camino simple en el grafo
(V, Eπ) desde 𝑠 hasta 𝑣 es un camino más corto en G, sin embargo, el conjunto de aristas Eπ
no se puede producir ejecutando un BFS en G, No importa cómo se ordenen los vértices
en cada lista de adyacencia.
7. Hay dos tipos de luchadores profesionales: "caras" (abreviatura de "babyfaces", es decir,
"chicos buenos") y "talones" ("chicos malos"). Entre cualquier par de luchadores
profesionales, puede haber o no una rivalidad. Se le dan los nombres de n luchadores
profesionales y una lista de r pares de luchadores para los que hay rivalidades. Proporcione
un algoritmo de tiempo O(n + r) que determine si es posible designar a algunos de los
luchadores como caras y al resto como talones de tal manera que cada rivalidad sea entre
una cara y un talón. Si es posible realizar tal designación, su algoritmo debería producirlo.
8. ★ El diámetro de un árbol T = (V, E) se define como máximo {δ(u, v) ∶ u, v ∈ V}, es decir, la
mayor de todas las distancias de trayectoria más cortas en el árbol. Proporcione un
algoritmo eficiente para calcular el diámetro de un árbol y analice el tiempo de ejecución
de su algoritmo.
DFS-VISIT(G, u)
1 time = time + 1 // El vértice blanco U acaba de ser descubierto
2 u.d = time
3 u.color = GRIS
4 desde cada vértice v en G.Adj[u] // Explora cada arista (U, V)
5 si v.color == BLANCO
6 v.π = u
7 DFS-VISIT(G,v)
8 time = time + 1
9 u.f = time
10 u.color = NEGRO // ennegrecer u; Está terminado
2/5
Universidad Técnica de Manabí
Facultad de Ciencias Informáticas
Carrera de Sistemas de Información
9. Haga un gráfico de 3 por 3 con etiquetas de fila y columna BLANCO, GRIS y NEGRO. En
cada celda (i, j), indique si, en cualquier punto durante una búsqueda en profundidad de un
grafo dirigido, puede haber una arista desde un vértice de color i hasta un vértice de color j.
Para cada arista posible, indique qué tipos de arista puede ser. Haga un segundo gráfico de
este tipo para la búsqueda de profundidad de un gráfico no dirigido.
Desde / Hasta Blanco Gris Negro
Blanco
Gris
Negro
12. Demuestre que el uso de un solo bit para almacenar cada color de vértice es suficiente
argumentando que el procedimiento DFS produce el mismo resultado si se elimina la línea
10 de DFS-VISIT.
13. Mostrar que, en un grafo dirigido, la arista (u, v) es
a) una arista árbol o una arista de avance si y sólo si u.d < v.d < v.f < u.f,
b) una arista de regreso posterior si y sólo si v.d ≤ u.d < u.f ≤ v.f, y
c) una arista de cruce si y sólo si v.d < v.f < u.d < u.f.
14. Vuelva a escribir el procedimiento DFS, utilizando una pila para eliminar la recursión.
15. Dé un contraejemplo a la conjetura de que, si un grafo dirigido G contiene un camino de u
a v, y si u.d < v.d en una búsqueda de profundidad de G, entonces v es un descendiente de u
en el bosque producido por la búsqueda primero en profundidad.
3/5
Universidad Técnica de Manabí
Facultad de Ciencias Informáticas
Carrera de Sistemas de Información
Orden Topológico
TOPOLOGICAL-SORT(G)
1 llamar a DFS(G) para calcular los tiempos de finalización v.f para
2 cada vértice v así como cada vértice que haya terminado, insértelo
3 en el frente de una lista vinculada
4 retornar la lista vinculada de vértices
21. Muestra el orden de los vértices producidos por TOPOLOGICAL-SORT cuando se ejecuta
en el dag de la siguiente figura. Supongamos que el bucle for de las líneas 5–7 del
procedimiento DFS considera los vértices en orden alfabético y suponga que cada lista de
adyacencia está ordenada alfabéticamente.
22. Dé un algoritmo de tiempo lineal que, dado un grafo acíclico dirigido G = (V, E) y dos
vértices a, b ∈ V, devuelve el número de caminos simples de a hacia b en G. Por ejemplo, el
grafo acíclico dirigido de la figura en el ejercicio anterior contiene exactamente cuatro
caminos simples desde el vértice p hasta el vértice v: 〈p, o, v〉, 〈p, o, r, y, v〉, 〈p, o, s, r, y, v〉 y
〈p, s, r, y, v〉. Su algoritmo solo necesita contar las rutas simples, no enumerarlas.
23. Proporcione un algoritmo que determine si un grafo no dirigido G = (V, E) contiene un ciclo
simple. El algoritmo debe ejecutarse en tiempo O(V), independientemente de |E|.
24. Probar o refutar: Si un grafo dirigido G contiene ciclos, entonces el orden de vértices
producido por TOPOLOGICAL-SORT(G) minimiza el número de aristas "malas" que son
inconsistentes con el orden producido.
4/5
Universidad Técnica de Manabí
Facultad de Ciencias Informáticas
Carrera de Sistemas de Información
25. Otra forma de ordenar topológicamente un grafo acíclico dirigido G = (V, E) es encontrar
repetidamente un vértice de grado 0, emitirlo y eliminarlo y todas sus aristas salientes del
grafo. Explicar cómo implementar esta idea para que se ejecute en el tiempo O(V + E). ¿Qué
sucede con este algoritmo si G tiene ciclos?
5/5