Sei sulla pagina 1di 14

Ejercicios sobre Heap (Árbol Parcialmente Ordenado)

Pregunta # 1
Dado el siguiente arreglo: [8, 10, 4, 9, 6, 3, 4, 2, 1, 6]
a) Construya el árbol heap correspondiente, asuma que el menor elemento es el de mayor
prioridad.
b) ¿Cómo quedaría el árbol si se extrae el primer elemento?
c) Si se adiciona el elemento 4, éste quedaría como padre del 6. Justifique.

Pregunta # 2
Defina la clase Heap.
a) Implemente los métodos Insertar, Suprimir_Min y Devolver_Min
b) Implemente los métodos (privados) Build_Heap y Heapify
c) Implemente dos constructores en la clase, uno que construya un heap vacío y otro que
reciba un arreglo como parámetro y construya el heap utilizando el método Build_Heap.

Pregunta # 3
Defina una clase ColaPrioridad que implemente la interfaz ICola<T> (con T que implementa la
interfaz IPriorizable) e implemente todos sus métodos, usando como estructura de datos un
heap.

Pregunta # 4
Muéstrese el árbol parcialmente ordenado de forma ascendente que resulta cuando los enteros
5, 6, 4, 9, 3, 1, 7 se insertan en un árbol vacío. ¿Cuál es el resultado de 3 operaciones
sucesivas SUPRIME_MIN en el árbol?

Pregunta # 5
Dadas las siguientes afirmaciones responda verdadero o falso (V o F) según corresponda.
Justifique su respuesta para todas las afirmaciones, usando los conceptos y definiciones
estudiados en clases.
a) ___ Un heap de n elementos tiene una altura máxima de log n.
b) ___ Cualquier subárbol de un heap descendente contiene en su raíz el mayor valor de los
posibles a aparecer en el subárbol.
c) ___ En un heap descendente el menor elemento se encuentra en la raíz principal del
árbol, asumiendo que todos los elementos son diferentes.
d) ___ La secuencia [23, 17, 14, 6, 13, 10, 1, 5, 7, 12] es un heap descendente.
e) ___ En la representación de un heap basado en arreglo, para almacenar n elementos, las
hojas corresponden a los elementos con índice n/2 +1, n/2+2, …, n.
f) ___ En un árbol parcialmente ordenado, el nodo con el tercer menor elemento se
encuentra siempre en el segundo nivel.
g) ___ En un árbol parcialmente ordenado de más de 4 nodos, el elemento de mayor valor
está almacenado en el ´ultimo nivel del árbol.
h) ___ Un recorrido a lo ancho en un árbol parcialmente ordenado visita sus nodos en orden
no decreciente con respecto a sus valores.
Pregunta # 6
Ilustre la operación Build_Heap para el arreglo A= [5, 3, 17, 10, 84, 19, 6, 22, 9]. El heap
resultante debe ser descendente.

Pregunta # 7
Dado el heap A= [15, 13, 9, 5, 12, 8, 7, 4, 0, 6, 2, 1] ilustre la operación Suprimir_Max.

Pregunta # 8
Dado el heap A= [15, 13, 9, 5, 12, 8, 7, 4, 0, 6, 2, 1] ilustre la operación Insertar (10).

Pregunta # 9
Dadas las siguientes afirmaciones responda verdadero (V) o falso (F) según corresponda.
Justifique su respuesta para los casos falsos.
___ La complejidad de las operaciones insertar y eliminar en un árbol parcialmente ordenado
depende de la cantidad de elementos que se tengan en dicha estructura de datos.
___ En un arreglo que represente un árbol parcialmente ordenado, siendo n igual a la cantidad
de nodos, se puede afirmar  i ≥ n/2 , A[i] es una hoja del árbol.
___ El método de ordenamiento MergeSort tiene una complejidad en el peor de los casos igual
a la complejidad del método de ordenamiento Inserción.
___ Un algoritmo de búsqueda que tenga una complejidad temporal de O(n) se dice que es
eficiente en cuanto a la complejidad temporal.
___ La función hash, si es inyectiva se considera mala para una tabla hash.
___ Una función hash es buena si maximiza el número de entradas usadas en la tabla hash de
tipo abierto.
___ El peor caso de búsqueda por interpolación tiene una complejidad temporal O(n).
___ En un árbol parcialmente ordenado no puede ocurrir que un nodo que esté en un nivel 2
tenga menor prioridad que un nodo que esté en un nivel 4.

Pregunta # 10
En un árbol parcialmente ordenado (Heap) basado en arreglos, implemente un método que
devuelva la suma de los valores que conforman la
menor secuencia de prioridades, expresada como
el camino de menores valores de prioridad desde
la raíz hasta las hojas. A continuación se detalla
gráficamente en el siguiente ejemplo:

Menor secuencia = 4, 5, 12 y 14
= 35
Pregunta # 11
El siguiente diagrama representa una clase Heap (árbol parcialmente ordenado) que almacena
números enteros (ascendentemente) en un arreglo lineal.
a) Implemente la funcionalidad restablecerEstructura(int x, int pos)la cual consiste en dado
un elemento a insertaren una posición dada, permita insertar el elemento en la posición y
restablecerla estructura manteniendo la condición de HEAP.
b) ¿Todo arreglo ordenado de forma ascendente está estructurado en forma de árbol
parcialmente ordenado (HEAP)? Justifique su respuesta.
Heap
-elements: entero[]
-heapSize: entero
+ heap(elements: entero[])
+ restablecerEstructura(x: entero, pos: entero)
Ejercicios sobre Ordenamiento y Búsqueda

Pregunta # 1
Implemente los algoritmos de ordenamiento con complejidad temporal O(n 2)
a) BubbleSort (ordenamiento por burbuja).
b) InsertionSort (ordenamiento por inserción).
c) SelectionSort (ordenamiento por selección).

Pregunta # 2
Implemente los algoritmos de ordenamiento con complejidad temporal O(nlog n)
a) MergeSort (ordenamiento por mezcla).
b) HeapSort (ordenamiento por montículos).
c) QuickSort (ordenamiento rápido).

Pregunta # 3
De cada uno de los algoritmos de ordenamiento estudiado diga:
a) Complejidad temporal.
b) Estabilidad.
c) Principio de funcionamiento.

Pregunta # 4
Dado el arreglo A= [5, 13, 2, 25, 7, 20, 8, 4], muestre el proceso de ordenamiento de forma
ascendente mediante el algoritmo:
a) BubbleSort (ordenamiento por burbuja).
b) InsertionSort (ordenamiento por inserción).
c) SelectionSort (ordenamiento por selección).
d) MergeSort (ordenamiento por mezcla).
e) HeapSort (ordenamiento por montículos).
f) QuickSort (ordenamiento rápido).

Pregunta # 5
Para cada uno de los siguientes enunciados, establezca si son verdaderos (V) o falsos (F).
Justifique su respuesta para los casos que considere falsos.
a) ___ El algoritmo quicksort siempre se ejecuta con una complejidad temporal O(n log n).
b) ___ El algoritmo iterativo de ordenación que en cada iteración inserta un elemento en un
segmento que ya se considera ordenado puede ejecutarse en un tiempo O(n) para
algunos juegos de datos.
c) ___ El algoritmo de ordenación por mezcla (merge sort) puede ejecutarse en un tiempo
O(n2) para su peor caso.
d) ___ El algoritmo de ordenación burbujas tiene una complejidad temporal promedio O(n
log n).
e) ___ La corrección del algoritmo heap sort se basa en el funcionamiento de las
operaciones en árboles parcialmente ordenados.
Pregunta # 6
Para cada uno de los siguientes enunciados, establezca si son verdaderos (V) o falsos (F).
Justifique su respuesta para los casos que considere falsos.
a) ___ El algoritmo iterativo de ordenación que en cada iteración selecciona el menor
elemento del segmento que aún no está ordenado, siempre se ejecuta en un tiempo O(n2).
b) ___ La complejidad temporal del algoritmo heap sort es O(n) en su mejor caso y O(n 2)
para su peor caso.
c) ___ El algoritmo de ordenación por mezcla (merge sort) se ejecuta en un tiempo O(n) si el
arreglo a ordenar ya se encuentra ordenado.
d) ___ La eficiencia del algoritmo quick sort depende de cuan pequeño sea el valor pivote
seleccionado.
e) ___ El algoritmo de ordenación burbujas garantiza en la iteración k-ésima que al menos k
elementos del conjunto inicial ya se encuentran ordenados.

Pregunta # 7
Para cada uno de los siguientes enunciados, establezca si son verdaderos (V) o falsos (F).
Justifique su respuesta para los casos que considere falsos.
a) ___ El algoritmo de ordenación burbujas puede mejorarse para que consuma un tiempo
O(n) en el mejor de los casos.
b) ___ El algoritmo iterativo de ordenación que en cada iteración inserta un elemento en un
segmento que ya se considera ordenado siempre se ejecuta en un tiempo O(n 2).
c) ___ El algoritmo quicksort alcanza su peor tiempo de ejecución para el caso en que el
arreglo a ordenar ya se encuentra ordenado.
d) ___ La ejecución del algoritmo heap sort mejora su complejidad si el arreglo a ordenar ya
tiene forma de árbol parcialmente ordenado.
e) ___ La complejidad del algoritmo merge sort depende de la memoria adicional que se
requiera para realizar el proceso de mezcla.

Pregunta # 8
Suponga que se están ubicando elementos enteros en una tabla hash (tabla de dispersión) de
siete elementos, sirviéndose de la función de dispersión h(i) = i mod 7.
a) Muéstrese la tabla de dispersión abierta si se insertan los elementos: 1, 8, 27, 125, 216,
343.
b) Repítase el inciso anterior utilizando una tabla de dispersión cerrada con resolución lineal
de colisiones.

Pregunta # 9
Suponga que se está utilizando una tabla de dispersión cerrada con 5 elementos y la función de
dispersión h(i) = i mod 5. Muéstrese la tabla de dispersión cerrada con resolución lineal de
colisiones que resulta de insertar la sucesión 23, 48, 35, 4, 10 en una tabla inicialmente vacía.
Pregunta # 10
Utilizando el algoritmo de búsqueda binaria visto en clases implemente un método que
devuelva, para un valor de edad dado, una lista con las personas mayores que esa edad.
Puede hacer uso de los siguientes diagramas UML (considere que están implementados los
métodos de acceso para cada atributo de la clase Persona):
Grupo Persona
- personas: Lista<Persona> - nombre: String
+ MayoresQue(edad: int): Lista<Persona> - CI: String
- edad: int
a) Realice la implementación asumiendo que existe al
menos una persona en la lista con la edad dada.
b) Considere que podría no existir en la lista ninguna persona con la edad dada.

Pregunta # 11
Diseñe una estrategia para el conocido juego que consiste en lo siguiente. Un jugador piensa
en un número entre „1‟ y „n‟. El otro jugador trata de determinar el número realizando preguntas
del tipo "¿es el número mayor (menor) que „x‟?". El objetivo es realizar la menor cantidad de
preguntas (se asume que ningún jugador miente).

Pregunta # 12
Diseñe un algoritmo que determine la unión de dos conjuntos, ambos de tamaño O(n). Los
conjuntos están almacenados en arreglos y la salida debe ser un arreglo de elementos que
representa a unión de los conjuntos, es decir, ningún elemento debe aparecer más de una vez.
El algoritmo debe ejecutarse en un tiempo O(n\log n) para el peor caso.

Pregunta # 13
Se tiene un arreglo de puntos ubicados todos sobre una recta no paralela al eje y, los puntos
vienen dados por sus coordenadas (x,y). El arreglo fue ordenado crecientemente según el valor
de la distancia entre puntos consecutivos.
Implemente el método existDistance de la clase Solver el cual determine si existe un par de
puntos consecutivos que la distancia entre ellos sea igual a un valor dado. El algoritmo debe
implementarse de manera eficiente.
Point
Solver - x : int
- points : Point [ ] - y : int
- count: int + Point (x: int , y: int)
+ Solver() + getX(): int
+ existDistance (value: int): bool + getY(): int

Nota: Distancia entre dos puntos


Potencia: pow (double: base, double: exponente): double
Raíz cuadrada: sqrt (double: valor): double

Pregunta # 14
Sea T una tabla Hash (o de dispersión) de tamaño m= 9 que usa la estrategia de resolución de
colisiones conocida como dispersión abierta, con la función hash h (k)= k modm, que hace uso
del método de la división.
a) Muestre el estado de la tabla después de insertar los elementos A (con llave A.k = 5), B
(con llave B.k = 28), C (con llave C.k = 19), D (con llave D.k = 15),E (con llave C.k = 20), F
(con llave F.k = 33), G (con llave G.k = 12), H (con llave H.k = 17) e I (con llave I.k = 10).
b) En una tabla Hash, a dos elementos con valores de llave diferentes siempre les
corresponden diferentes posiciones. Mencione si la afirmación anterior es verdadera o
falsa y justifique su respuesta en cualquier caso.
c) El profesor Marley tiene la hipótesis de que puede obtener mejoras de rendimiento
sustanciales al modificar el esquema de encadenamiento para mantener cada lista de
forma ordenada. ¿Cómo afecta la modificación del profesor al tiempo de ejecución en el
peor caso de las operaciones de búsqueda, inserción y eliminación?
d) Supongamos que para mejorar la velocidad de las operaciones podría desearse
reemplazar T de tamaño B1 con más de B1 elementos por otra tabla de dispersión con
tamaño B2. Escriba un método para construir la nueva tabla a partir de la anterior, usando
las operaciones del TDA lista para procesar cada casilla.
Ejercicios sobre Algoritmos sobre Grafos

Pregunta # 1
Dadas las siguientes afirmaciones responda verdadero o falso (V o F) según corresponda.
Justifique su respuesta para las afirmaciones que considere falsas, usando los conceptos y
definiciones estudiados en clases.

a) ___ El problema del camino mínimo de un vértice a otro


consiste en determinar el camino de menor costo, desde
un vértice u a otro vértice v. O sea el camino que menos
vértices tenga.
b) ___ Edsger Dijkstra fue un investigador que ganó el
premio Nobel de matemáticas.
c) ___ Cuando termina su ejecución el algoritmo de Dijkstra
para el grafo de la figura el vector auxiliar de
predecesores tiene los valores P=[*, 3, 1, 3, 2]. Tomado
como vértice inicial 1.
d) ___ El árbol de expansión mínima de un grafo ponderado no dirigido contiene ciclos que
permiten conectar todos los nodos con facilidad.
e) ___ El algoritmo de Kruskal no es como otros algoritmos para encontrar el árbol de
cubrimiento mínimo de un grafo no dirigido y ponderado, este algoritmo si encuentra la
mejor solución de todas las posibles para este problema.
f) ___ Ejecutando el algoritmo de Kruskal para el grafo de la figura el conjunto D(conjunto
de subconjuntos disjuntos), en algún paso, contiene los valores { {1, 2}, {3}, {4}, {5} }.
g) ___ Un Heap es un caso particular de árbol binario de búsqueda.
h) ___ Cuando eliminamos un elemento en un Heap ordenado ascendentemente siempre se
elimina el que tenga menor valor.
i) ___ La secuencia [1, 2, 3, 4, 5, 7, 8, 10, 4, 5] es un Heap almacenado en un arreglo.
j) ___ Del Heap, almacenado en un arreglo, siguiente [40, 30, 20, 25, 10, 15, 14] al eliminar
el elemento mayor el Heap resultante queda [30, 20, 25, 10, 15, 14].

Pregunta # 2
Dadas las siguientes afirmaciones responda verdadero o falso (V o F) según corresponda.
Justifique su respuesta para las afirmaciones que considere falsas, usando los conceptos y
definiciones estudiados en clases.

a) ___ El problema del camino mínimo de un vértice a otro consiste en determinar el


camino de menor costo, desde un vértice u a otro vértice v.
b) ___ Robert Floyd fue un investigador que ganó el premio
Nobel de la Paz porque su algoritmo se utilizó para localizar
armas de destrucción masiva.
c) ___ En un grafo conexo con los vértices A, B, C, D y E
almacenados en ese orden, que además al ser ejecutado el
algoritmo de Floyd se obtiene la siguiente matriz de
predecesores P:

El camino mínimo entre el vértice A y el vértice E es {A, C, E}.


d) ___ El árbol de expansión mínima de un grafo ponderado no dirigido contiene nodos
aislados que se denominan inaccesibles.
e) ___ El algoritmo de Prim es como otros algoritmos
para encontrar el árbol de cubrimiento mínimo de
un grafo no dirigido y ponderado, que encuentra
una posible mejor solución.
f) ___ Ejecutando el algoritmo de Prim para el grafo
de la figura (tomando como vértice inicial el A) la
cola de prioridad P, en algún paso, contiene los
valores en orden { <A,C>, <A,D>, <A, B> }.
g) ___ Un Heap es un caso particular de árbol.
h) ___ Cuando eliminamos un elemento de un Heap
ordenado ascendentemente siempre se elimina el
que tenga mayor valor.
i) ___ La secuencia [1, 2, 3, 4, 5, 7, 8, 10, 4, 5] no representa un Heap almacenado en un
arreglo.
j) ___ Del Heap, almacenado en un arreglo, siguiente [40, 30, 20, 25, 10, 15, 14] al
adicionar el 60 el resultado es [60, 40, 30, 20, 25, 10, 15, 14].

Pregunta # 3
Dadas las siguientes afirmaciones responda verdadero o falso (V o F) según corresponda.
Justifique su respuesta para las afirmaciones que considere falsas, usando los conceptos y
definiciones estudiados en clases.

a) ___ El algoritmo de Dijkstra resuelve el problema


de determinar el camino mínimo entre todos los
vértices de un grafo.
b) ___ Edsger Dijkstra, a pesar de sus grandes
contribuciones a las ciencias de la computación,
nunca alcanzó el premio Turing.
c) ___ Cuando termina su ejecución el algoritmo de
Dijkstra para el grafo de la figura el vector de
predecesores tiene los valores P= [2, 5, 3, 5, 3],
tomando como vértice inicial 3.
d) ___ El árbol de expansión mínima de un grafo
ponderado de n vértices contiene siempre las n-1 aristas de menor peso del grafo.
e) ___ El algoritmo de Kruskal es un ejemplo de algoritmo ávido que siempre encuentra la
solución óptima.
f) ___ Ejecutando el algoritmo de Kruskal para el grafo de la figura el conjunto D (conjunto
de subconjuntos disjuntos), en algún paso, contiene los valores {{1, 4}, {2, 3, 5}}.
g) ___ Un Heap es una estructura de datos eficiente para la implementación de colas con
prioridad.
h) ___ La complejidad temporal de la operación de inserción en un Heap es O (log n).
i) ___ El arreglo [2, 10, 4, 14, 12, 5, 6, 11, 15, 11] es una representación de un árbol
parcialmente ordenado ascendentemente.
j) ___ Al eliminar el menor elemento de un Heap originalmente vacío, después de insertar
los elementos 10, 5, 6, 2 y 4 en ese orden, el padre del elemento 6 es 5.
Pregunta # 4
Dadas las siguientes afirmaciones responda verdadero o falso (V o F) según corresponda.
Justifique su respuesta para las afirmaciones que considere falsas, usando los conceptos y
definiciones estudiados en clases.
a) ___ En un grafo conexo con los vértices A, B, C, D y E
almacenados en ese orden, que además al ser ejecutado el
algoritmo de Floyd se obtiene la siguiente matriz de
predecesores P:

El camino mínimo entre el vértice E y el vértice A es {E, D, A}.

b) ___ El algoritmo de Floyd tiene complejidad temporal O (n2).


c) ___ Robert Floyd, a pesar de sus grandes contribuciones a las ciencias de la
computación, nunca alcanzó el premio Turing.
d) ___ El árbol de expansión mínima de un grafo está compuesto por la unión los caminos
mínimos entre todos los vértices del grafo.
e) ___ El algoritmo de Prim es un ejemplo de algoritmo
ávido que siempre encuentra la solución óptima.
f) ___ Al ejecutar el algoritmo de Prim para el grafo de
la figura (tomando como vértice inicial el C) el arco
(A, B) pertenece al árbol de expansión mínima.
g) ___ En un árbol parcialmente ordenado las hojas
están ubicadas en los dos últimos niveles.
h) ___ La complejidad temporal de la operación de
Suprimir Mínimo en un Heap es O (log n).
i) ___ El arreglo [5, 13, 7, 17, 15, 8, 9, 14, 18, 14] es
una representación de un árbol parcialmente
ordenado ascendentemente.
j) ___ Al eliminar el menor elemento de un Heap originalmente vacío, después de insertar
los elementos 15, 10, 11, 7 y 9 en ese orden, el padre del elemento 11 es 10.
k) ___ El algoritmo de Floyd para el cálculo de caminos mínimos tiene una complejidad
O(n2) para el caso general, donde n es la cantidad de vértices del grafo.
l) ___ El algoritmo de Floyd para el cálculo de caminos mínimos computa en cada
iteración la longitud del camino mínimo entre un par de vértices.
m) ___ La complejidad del algoritmo de Floyd para el cálculo de caminos mínimos depende
de la densidad del grafo al que se aplique, es decir, depende de la cantidad de aristas
del grafo.

Pregunta # 5
Para el siguiente grafo ejecute el algoritmo de Dijkstra partiendo de desde los vértices 2 y 3.
Pregunta # 6
Para el grafo de la figura anterior ejecute el algoritmo de Floyd.

Pregunta # 7
Partiendo desde el vértice N1 ejecute el algoritmo de Dijsktra para el siguiente grafo

Pregunta # 8
Para el grafo de la figura anterior ejecute el algoritmo de Floyd.

Pregunta # 9
Dado el siguiente grafo dirigido y ponderado:

a) Represéntelo mediante la lista de vértices y la


matriz de costo.
b) Muestre los pasos de la ejecución del
algoritmo de Dijkstra, tomando a I como
vértice inicial y especificando cómo se
actualizan el arreglo de costos y el de
predecesores en cada iteración del algoritmo.
c) Muestre los pasos de la ejecución del
algoritmo de Floyd, especificando cómo se
actualizan la matriz de costos y la de
predecesores en cada iteración del algoritmo.
Pregunta # 10
Después de ejecutar el algoritmo Dijkstra tomando como vértice inicial B en un grafo con
vértices {A, B, C, D, E}; se obtuvo el siguiente arreglo de predecesores, P = [B,*, D, E, B].
a) Determine el camino mínimo desde el vértice inicial B hasta los demás vértices.

Pregunta # 11
D C
Después de ejecutar el algoritmo Floyd tomando en un grafo conexo con
D E
vértices {A, B, C, D, E}; se obtuvo la siguiente matriz de predecesores,
E
P=
a) Determine el camino mínimo desde A hasta los demás vértices.
C

Pregunta # 12
Dado el siguiente grafo ponderado:

a) a) Muestre los pasos de la ejecución del algoritmo


de Prim, especificando cómo se actualiza: el
conjunto solución: V‟, la cola con prioridad: P y el
conjunto de aristas que forman el árbol de
expansión de mínima: E‟.
b) Muestre los pasos de la ejecución del algoritmo
de Kruskal, especificando cómo se actualiza el
conjunto de aristas del grafo E, el conjunto de
aristas del árbol de expansión mínima E‟ y el
conjunto de conjuntos de vértices disjuntos D.

Pregunta # 13
Dado el grafo G ponderado y no dirigido representado en la Figura.
a) Establezca un orden de las aristas de G de acuerdo a su peso (escríbalo) e ilustre el árbol
que se obtiene al ejecutar el algoritmo de Kruskal procesando las aristas en ese orden.
b) ¿Tiene G un único árbol de cubrimiento mínimo? Justifique su respuesta.

Pregunta # 14
El algoritmo Dijkstra fue ejecutado en un grafo G con 5 vértices (α, β, γ, δ, ǫ) y 7 aristas. La
información topológica del grafo ha sido perdida pero se conserva la traza del vector de
distancias D para cada una de las iteraciones del algoritmo, computada desde el vértice origen
α:
Iteración D[β] D[γ] D[δ] D[ǫ]
Iniciación 3 ∞ 15 4
1 3 11 15 4
2 3 9 13 4
3 3 9 12 4
A partir de la información anterior, reconstruya el grafo G y represéntelo gráficamente
denotando los vértices por círculos y las aristas por líneas rectas o curvas orientadas.
Pregunta # 15
El algoritmo Dijkstra fue ejecutado en un grafo G con 5 vértices (α, β, γ, δ, ǫ) y 7 aristas. La
información topológica del grafo ha sido perdida pero se conserva la traza del vector de
distancias D para cada una de las iteraciones del algoritmo, computada desde el vértice origen
α:
Iteración D[β] D[γ] D[δ] D[ǫ]
Iniciación 3 7 ∞ ∞
1 3 7 16 11
2 3 7 11 8
3 3 7 10 8
A partir de la información anterior, reconstruya el grafo G y represéntelo gráficamente
denotando los vértices por círculos y las aristas por líneas rectas o curvas orientadas.

Pregunta # 16
Determine en cada caso si las siguientes afirmaciones se refieren al algoritmo de Prim
(escribiendo Prim), al algoritmo de Kruskal (escribiendo Kruskal), o a ninguno de los dos
algoritmos (escribiendo Ninguno). Justifique su respuesta para aquellos casos donde la
afirmación no se refiere a ninguno de los dos algoritmos.
a) ______ Procesa las aristas del grafo en orden no decreciente con respecto a sus pesos.
b) ______ Computa un árbol de cubrimiento en una componente conexa del grafo de
entrada.
c) ______ Selecciona en cada iteración a un vértice junto con una arista que lo conectará al
árbol de recubrimiento.
d) ______ Su complejidad temporal es O(n2) para el caso promedio.
e) ______ Es aplicable a un grafo no dirigido y ponderado independiente de su carácter
conexo.
f) ______ Agrupa los vértices de acuerdo a la componente conexa a la que pertenecen en el
grafo que produce incrementalmente.
g) ______ Mantiene un solo conjunto de vértices conectados por un árbol.
h) ______ Devuelve siempre el mismo resultado si es aplicado a un mismo grafo.

Pregunta # 17
La empresa VentSA, se dedica a la venta de artículos variados. Esta empresa posee una red
de puntos de venta distribuidos en toda una ciudad. En cada uno de los puntos de venta, se
venden todo tipo de artículos, pero cada punto es encargado de distribuir a los demás un solo
tipo de artículo (acción que se realiza semanalmente), de esta forma, un punto distribuye los
zapatos, otro punto la ropa, otro los electrodomésticos, etc. Por esta razón, los directivos de
VentSA necesitan conocer el camino mínimo desde cada punto hasta todos los demás, para
poder ahorrar combustible durante la distribución. De cada punto de venta se conoce su
identificador. En la clase VentSA se cuenta con la lista de todos los puntos de venta (puntos), y
con una lista (listaAdy) de pares. Cada par contiene una posición de un punto (en la lista de
puntos) y una distancia. De esta manera, en la posición “i” de listaAdy hay una lista de pares,
donde cada par tiene la posición de un punto adyacente al que está en “i” y la distancia hasta el
mismo.
a) Implemente el método CaminosMinimos de la clase VentSA, el cual (siguiendo el
algoritmo de Floyd) llena la matriz D con las distancias mínimas de cada punto a los
demás y llena la matriz P con los predecesores (posiciones) de cada punto en un camino
mínimo.
b) Implemente el método CaminosMasCortos de la clase VentSA (Ver Figura 1), el cual
(siguiendo el algoritmo de Dijkstra) llena el arreglo D con las distancias mínimas desde el
origen a los demás y llena el arreglo P con los predecesores (posiciones) de cada punto
en un camino mínimo desde el origen hasta él.

Potrebbero piacerti anche