Está en la página 1de 4

Universidad de Concepción

Departamento de Ing. Informática y Cs. de la Computación

CONTROL II: Análisis de Algoritmos


Prof. Andrea Rodrı́guez, Ayudante: Erick Elejalde
Jueves 3 de julio de 2014

1. Dada una matrix M de m × n números enteros positivos, el problema


consiste en determinar un camino con peso mı́nimo desde cualquier
posición en la columna 0 hasta la posición (k,n-1) en la última columna,
con 0 ≤ k ≤ m − 1. Un paso en el camino consiste en viajar desde
una columna i a una columna i + 1 en un fila adyacente, es decir,
se mueve a la siguiente columna en la fila anterior, la misma fila o
la fila siguiente. La primera y última columna (filas 1 y m − 1) de
una matriz son consideradas adyacentes, i.e., la matriz se enrolla de
manera que representa un cilindro horizontal. Para este problema se
pide lo siguiente:

a) Demostrar que este problema tiene una subestructura óptima. (1)


b) Indicar la solución recursiva al problema. (1)

2. Dados varios segmentos de lı́nea en el eje X con coordenadas [Li , Ri ],


donde Li < Ri y Ri ≤ M , el problema consistente en escoger la can-
tidad mı́nima de ellos que completamente cubren el segmento [0, M ].
Una heurı́stica correcta propuesta por un grupo de sus compañeros
ha sido escoger primero el intervalo que cubra una mayor porción del
intervalo que quede por cubrir, el cual inicialmente es [0, M ], y ası́ su-
cesivamente hasta cubrir completamente el intervalo. Demuestre que
esta heurı́stica funciona (1).

3. Alguien le ha dicho que existe un algoritmo A que corre en O(n2 )


para un problema P . Usted que es bastante ingenioso encuentra un
algoritmo B que corre en (nlogn). ¿Qué puede decir de la cota mı́nima
y la cota máxima del problema? Justifique su respuesta (0.5)

4. ¿Podemos decir que la cota mı́nima de P es Ω(f (n)) sabiendo que


para resolverlo se puede usar un algoritmo que resuelve un problema
Q, problema que sabemos tiene una cota mı́nima de Ω(f (n))? Explique
y use un ejemplo si quiere para ello (0.5)

5. En clases usted vió el siguiente algoritmo de aproximación al vertex


cover.

1
Universidad de Concepción
Departamento de Ing. Informática y Cs. de la Computación

AproxVertexCover(G)
C←∅
E 0 ← E[G]
while E 0 6= ∅ do
Sea (u,v) un arco arbitrario de E 0
C ← C ∪ {u, v}
remueva desde E 0 cada arco incidente en u o v
endwhile
return C
Asuma Usted que en vez de tomar un arco arbitrario, Usted decide
usar el grado de los vértices como sigue.
GreedyVertexCover(G)
C←∅
E 0 ← E[G]
while E 0 6= ∅ do
Escoja el u ∈ V [G] \ U con mayor grado in E 0
C ← C ∪ {u}
remueva desde E 0 cada arco incidente en u
endwhile
return C
Muestre la razón de aproximación de este algoritmo. Además indique
la complejidad del algoritmos asumiendo una estructura que haga la
implementación eficiente. (1)

6. Muchos de los problemas vistos en clases se caracterizan por querer


encontrar algo (valor, conjunto, etc.) que maximice o minimice una
función objetivo. En estos casos, indique qué estrategias vistas en cla-
ses se puede(n) aplicar y bajo qué condiciones. (0.5).

7. Asuma que tiene un sistema con 1 disco y una memoria principal de


tamaño M con un solo procesador. Los I/O usan B tamaño de bloque.
Se le ha pedido a usted un algoritmo que encuentre un registro que
contenga como clave (no repetida) la mediana de las claves en un
archivo no ordenado y que tiene tamaño N >>> M . La idea es no
ordenar todo el archivo ya que es muy grande. Describa una estrategia
que evite el recorrido completo del archivo teniendo en cuenta que no
puede realizar el proceso completo en memoria principal. (0.5).

2
Universidad de Concepción
Departamento de Ing. Informática y Cs. de la Computación

1. Las respuestas son las siguientes:

a) Sea la menor distancia desde la columna 0 hasta la celda (i,j)


denota por D(i, j). Entonces esta distancia se descompone en la
determinación de la distancia mı́nima desde un camino posible
desde la columna anterior, esto es D(i + δ, j − 1), donde δ puede
ser 1,0 o -1, siendo D(i, j) = D(i + δ, j − 1) + M [i, j].
Para demostrar que el problema tiene una subestructura óptima,
usemos contradicción. Asuma que D(i, j) es óptima y que D(i +
δ, j − 1) no es lo es, entonces si fuera ası́podrámos reemplazar
D(i + δ, j − 1) por otro valor menor y hacer que D(i, j) fuera aún
menor, lo que es una contradicción de que D(i, j) sea óptimo.
b) La función recursiva es:


 M [i, j] Si j=0
M [i, j] + min{D(i, j − 1), D(i − 1, j − 1), D(i + 1, j − 1)]} Si 0<i<m−1

D(i, j) =
 M [i, j] + min{D(i, j − 1), D(m − 1, j − 1), D(i + 1, j − 1)]}
 Si i=0
M [i, j] + min{D(i, j − 1), D(i − 1, j − 1), D(0, j − 1)]} Si i=m−1

2. Considere un conjunto S de intervalos y el rango [i, j], e siendo el inter-


valo que comienza en i y que es el más largo de S. Asuma también un
conjunto S 0 óptimo que cubre el intervalo de [i, j] y donde el intervalo
e0 es el intervalo más largo en S 0 . Si e = e0 entonces está demostrada
la elección greedy. Lo que debo demostrar es que si yo reemplazo e0
por e en S 0 esto es parte de una solución óptima. Se sabe que |e| ≥ |e0 |
por lo que al reemplazar e0 por e, a lo más necesito el mismo número
de intervalos ya que en el peor caso, solo alcanza cubrir lo que cubre
e0 . Lo que quiere decir que el costo óptimo es igual o menor al costo
de S 0 .

3. No podemos decir nada del lower bound ya que este se define sobre
todos los algoritmos posibles para P . Sin embargo, podemos decir que
un upper bound es O(nlogn) ya que existe un algoritmo para el cual
se cumple que el tiempo peor del algoritmo es O(nlogn).

4. El problema es que puedo tener un algoritmo que se puede ser usado


pero no quiere decir que ese sea el mejor de los algoritmos posibles.
Puede explicarse por una contradicción. Sabemos que el costo de en-
contrar el mı́nimo o máximio toma al menos 3n/2 -n comparaciones.
Uno puede sin embargo ordenar y luego resolver, con lo que deberı́a
ser O(nlogn).

3
Universidad de Concepción
Departamento de Ing. Informática y Cs. de la Computación

5. SeaA el conjunto de arcos de la condición del while. Para cubrir estos


arcos, cualquier cobertura y en particular la óptima, debe incluir al
menos uno de los dos nodes extremos. Sea C∗ el tamaño de la cobertura
óptima, entonces C ∗ ≥ |A|. Por cada arco en A, se tienen a lo más dos
nodos en la cobertura. Entonces, sea C el tamaño de la cobertura
de algoritmo, entonces C ≤ 2|A|. Combinando ambas expresiones,
C ≤ 2C ∗ .
Si consideramos una cola de max heap, tenemos que el algoritmo to-
marı́a cota superior O(|E|log|V |), por cada arco debe reorganizar el
max heap para determinar el nodo de mayor grado en la iteracin si-
guiente (el número de nodos va disminuyendo en cada iteración, pero
esto serı́a una cota superior. No basta con el número de arcos).
6. Al menos 3 métodos que debieran mencionar: Búsqueda binaria gene-
ralizada BB, programación dinámica DP y greedy GR. Se puede BB
cuando se tiene los lı́mites posibles de un valor que es párametro de
una función a maeixmizar o minimizar que monótona sobre ese valor.
DP se puede usar cuando se tiene subestructura óptima y se tiene que
subestructuras se usan más de una vez en al cálculo de la solución.
GR cuando se tiene subestructura óptima y se puede aplicar elección
greedy. Se considera también el hecho que mencionen backtracking si
es que no queda otra alternativa o cuando es un problema NP-hard,
usar aproximación.
7. Una estrategia puede aplicar algoritmos de mediana vista en clases pe-
ro considerando accesos a disco. Este algoritmo en memoria principal
tiene un costo esperado de O(n), siendo n el tamaño del problema.
Para este caso, el costo se expresa en términos de I/O. La idea serı́a ir
descartando partes del archivo donde ya se sabe que no está la media-
na. Para ellos se lee primero el archivo completo ocupando n = N/B
I/O y se van generando 3 grupos y contando el número de elemento
en cada grupo en base a un valor usado como pivote inicial. La idea
es seleccionar el grupo donde puede estar la mediana. Esto puede re-
querir almacenar en memoria secundaria los grupos. Se lee el grupo
seleccionado para ir aplicando el proceso en forma iterativa. Se envan
los grupos a disco hasta que el grupo seleccionado quepa en memoria
principal. Tal como para el caso en memoria principal, los costos de-
penden de la elección del pivote. En el mejor caso esto tiene un costo
de O(N/B) = O(n), en el peor caso de O(n2 ) y en caso esperado de
O(n).

También podría gustarte