TEST Nº 1 - Departamento de Ciencias de la Computación

Anuncio
IENT IA
SAP
V ER I TA S
N OS T R
A
UNIVERSIDAD DEL BÍO-BÍO
FACULTAD DE CIENCIAS EMPRESARIALES
DEPARTAMENTO DE SISTEMAS DE INFORMACIÓN
PRIMER CERTAMEN DE
ANALISIS Y DISEÑO DE ALGORITMOS
PROFESOR:
Claudio Gutiérrez Soto
Fecha: Miércoles 29 de Noviembre de 2006
Nombre:________________________________________ Rut: ___________________
Sección:____________ Nº hojas:_____________ Nota: ________________________
Instrucciones:
 Lea bien antes de responder cada pregunta.
 Escriba su nombre y rut en cada hoja que utilice para responder.
 Numere cada hoja de respuesta que utilice de forma correlativa.
 Anote en el espacio indicado la cantidad de hojas de respuesta que entrega.
 Tiempo máximo: 100 minutos.
 Fecha de Revisión: Semana del 04 de Diciembre de 2006
I.- PARTE CONCEPTUAL
1.1 Responda Verdadero(V) o Falso(F), según corresponda a cada afirmación. Las
respuestas Falsas deberán ser justificadas. Respuestas falsas no justificadas serán
consideradas incorrectas (4 punto cada respuesta correcta).
(a) El profesor SabeloTodo, asegura que existe un algoritmo O(|V|+|E|), el cual
determina si dos grafos son isomorfos_____ .
Falso, el problema de isomorfismo de grafos es un problema
NP. No obstante, cuando los Vértices y Arcos están
etiquetados se pueden utilizar heurísticas entre P y NP.
(b) La eficiencia de los algoritmos no dependen de la estructura de datos que
utilizan_________ .
Falso, la eficiencia de los algoritmos depende de la
estructuras de datos, como vimos en clase, el caso de las
estructuras para grafos utilizando Matriz de Adyacencia y
Listas de Adyacencia
(c) El profesor SabeloTodo asegura que es posible encontrar siempre algoritmos en
línea con competitividad 1 ____.
En general esto no es posible, ya que requeriríamos
obtener toda la información. Es decir al final utilizar un
algoritmo OFF-LINE.
(d) Para ver si es que un problema es NP completo, lo primero que debemos mostrar
que el problema está en NP, y luego encontrar un algoritmo que chequea la
solución en tiempo polinomial______.
Verdadero
II.- PARTE ANALISIS DE ALGORITMOS
II.1 Resolución de Ecuaciones de Recurrencia
2.1 Resolver las siguientes ecuaciones de recurrencia (10 puntos cada una)
1
IENT IA
SAP
V ER I TA S
N OS T R
UNIVERSIDAD DEL BÍO-BÍO
FACULTAD DE CIENCIAS EMPRESARIALES
DEPARTAMENTO DE SISTEMAS DE INFORMACIÓN
A
(a) T(1)=1
T(n)=3T(n/3)+n2+n
Aquí bastaba eliminar el n, y después obtenemos T(n)= 3T(n/3)+n2
Luego aplicamos el teorema maestro y obtenemos O(n2).
(b) T(1)=1
T(n)=4T(n/4)+8
Aquí podemos utilizar iteración, y llegaríamos a lo siguiente:
=4[4[4T(n/43)+8]+8]+8
k-1
=4kT(n/4k)+8 ∑ 4i
i=0
Luego aplicamos la formula vista en clase para series
geométricas y el orden nos da O(n)
II.II Análisis de Algoritmos Recursivos e Iterativos
2.2 Obtenga las ecuaciones de recurrencia para los siguientes algoritmos (7 puntos cada
uno)
(a) Camino diametro(int v, Camino Aux, Camino max, Grafo G)
{
Lista Suc;
Suc=sucesores(v,G);
if(Suc!=NULL)
Aux=anexarCamino(v,Aux);//anexa un vértice v a una lista
else
return(Aux);
for(primLista(Suc);!finLista(Suc);nextLista(Suc))
if(No_Marca(InfoLista(Suc)==1) // si no está marcado
{
Aux=diametro(InfoLista(Suc),Aux,max,G);
Marcar(InfoLista(Suc));
if(Aux.largo>max.largo) // Aux.largo, es el largo de la lista
max=Aux;
else continue;
}
else continue;
return(max);
} // fin del procedimiento
Aquí podemos ver que recorremos todos los vértices
trata de un grafo conexo. Si no, podemos asumir que es
a través de DFS, note que los vértices se visitan sólo
por lo que el orden del algoritmo es O(n). Su ecuación
si se
recorrido
una vez,
de
2
IENT IA
SAP
V ER I TA S
N OS T R
A
UNIVERSIDAD DEL BÍO-BÍO
FACULTAD DE CIENCIAS EMPRESARIALES
DEPARTAMENTO DE SISTEMAS DE INFORMACIÓN
recurrencia es : T(V)=T(V-1)+C , donde V-1 representa al vértice
como marcado.
b)
int MurphyII( int n, int fin, int suma)
{
int i;
if( n==fin)
return(0);
else {
for(i=1;i<=n;i++)
suma=suma+MurphyII(n-1,fin,i);
}
return(suma);
}
La ecuación de recurrencia de esto es: T(n)=nT(n-1)+C
III.- PARTE DE DISEÑO
3.1 Suponga que tiene dos arreglos desordenados de tamaño m y n (m≤n) y se desea
encontrar todos los elementos que son comunes en ambos arreglos. Diseñe un algoritmo
que sea eficiente tanto para m muy pequeño con respecto a n, como cuando ambos son
similares en tamaño (20 ptos).
Si m es mucho menor que n, entonces podemos ordenar el arreglo
de tamaño n utilizando MergeSort, con esto tenemos un algoritmo
de O(nlog2n), y después tomamos el arreglo de tamaño m y hacemos
búsqueda binaria en el arreglo ordenado. Esto nos toma log2m.
Finalmente el orden de nuestro algoritmo es O(nlog2n). Por otro
lado, note que para llegar a esto podemos haber utilizado la
Teoría de la Información para obtener una cota inferior.
Si m es similar a n, entonces ordeno los dos arreglos y luego
hago una mezcla obteniendo los elementos comunes. El orden de
esto también es O(nlog2n).
3.2 Suponga que se tienen dos arreglos A y B de enteros y un valor x. Determinar si es
que existen dos elementos, uno de cada arreglo, tal que el valor absoluto de su resta es x
si los arreglos están desordenados (20 ptos).
Este ejercicio es similar al visto en clases de ejercicios,
ordenamos los dos arreglos y hacemos búsqueda binaria Ai-X o Ai+
X. Esto nos toma O(nlog2n).
3.3 En la ciudad de Concepción se encontró un extraordinario equino de carrera. Sin
embargo, el dueño del equino no sabe quien es el padre. Si tenemos N posibles padres,
cree un algoritmo eficiente que calcule quién es el padre. El padre será aquel equino que
3
IENT IA
SAP
V ER I TA S
N OS T R
A
UNIVERSIDAD DEL BÍO-BÍO
FACULTAD DE CIENCIAS EMPRESARIALES
DEPARTAMENTO DE SISTEMAS DE INFORMACIÓN
tenga una secuencia mayor al resto. Fíjese que en ejemplo no se pueden cruzar las líneas
de correspondencia de ADN. Obtenga el orden de su algoritmo, de que tipo de
algoritmo es la solución propuesta por usted con respecto a los visto en clases. (10 ptos).
ADN Caballo hijo
☼
♀
♦
☻
☺
◊
◄
ADN Caballo Padre
♂
♦
♀
☻
☺
◊
◄
Este ejercicio fue visto en clase, bastaba hacer un ciclo for de
para los N candidatos y para cada candidato calculamos su LCS
con el hijo, el candidato con mayor | LCS| es el padre.
4
Descargar