20 likes | 160 Vues
Guía 2: D&AA Universidad Viña del Mar 30/09/2002 Diseñe un algoritmo recursivo que verifique si una matriz Mnxn es simétrica, es decir, que para todo i,j [1..n], M[i,j]=M[j,i]. Llevelo a un algoritmo iterativo. Calcule la complejidad.
E N D
Guía 2: D&AA Universidad Viña del Mar30/09/2002 • Diseñe un algoritmo recursivo que verifique si una matriz Mnxn es simétrica, es decir, que para todo i,j [1..n], M[i,j]=M[j,i]. Llevelo a un algoritmo iterativo. Calcule la complejidad. • El método propuesto por Euclides para calcular elmáximo comun divisor entre dos enteros a,b es el siguiente: • Siendo los cuocientes y los restos. El MCD es . Desarrolle un algoritmo • recursivo que entregue el MCD. Llevelo a un algoritmo iterativo. Calcule la complejidad. • Suponga un tipo string como el de pascal es usable, diseñe un algoritmo recursivo para verificar si una palabre es palíndrome (si se lee la misma palabra de izquierda a derecha y viceversa).Calcule su coplejidad. Asuma que puede conocer el largo del string. • Dado el siguiente algoritmo, calcule su coplejidad, planteando la ecuacion de recurrencia: • procedure hanoi(n:integer;Orig,Dest,Aux:char); • begin • if N=1 then • writeln(orig,’-’,dest) • else • begin • hanoi(n-1,orig,aux,dest); • writeln(orig,’-’,dest); • hanoi(n-1,orig,aux,dest); • end • end; • 5. Idem 4. • procedimiento pasarbinario(N:entero); • inicio • si N<2 entonces • escribir(N) • sino • pasabinario(N DIV 2) • escribir(N MOD 2) • fin; • Calcule los órdenes de las siguientes recurrencias: • Suponiendo que tiene un algoritmo que usa la técnica dividir y conquistar, asuma que su algoritmo básico es y la particion y recominación son de . El algoritmo divide en dos el problma. ¿Hasta cuántas llamadas recursivas conviene hacer para que la solución DyC tenga mejor comportamiento que la básica? • Considere la aplicación de la técnica divide y conquistar sobre el siguiente problema. Dado un array de n números enteros, buscamos la cadena de m celdas consecutivas en este array cuya suma sea máxima, pueden haber números negativos (obviamente m<n). ¿Cómo sería una resolución directa del problema?, su complejidad. ¿Es conveniente aplicar divide y vencerás en este caso?. Calcule su complejidad.
Guía 2: D&AA Universidad Viña del Mar30/09/2002 • Suponga que tiene un procedimiento básico un procedimiento Multip1(A, B) para multiplicar matrices de potencia de 2, complejidad cúbica y sum(A, B) suma dos matrices con una complejidad cuadrática. Teniendo la descomposición de Strassen para la multiplicación de matrices, escriba el algoritmo DyC, identificando claramente cada una de sus partes. • Suponga un algoritmo mergeSort orientado a ordenar arreglos con la tecnica DyC: • procedure mergeSort(A:array of integer):array of integer; • begin • if N<=n0 then • ordene por insercion (A) • return A • else • begin • crear A1 y A2 subarreglos de A • B1=mergeSort(A1); • B2=mergeSort(A2); • B=mezcla(B1,B2) • Retun B • end • end; • Para que el algoritmo sea mejor que el de inserción, de que orden debe ser el proceso de mezcla?. Cuál es el orden del Algoritmo entonces?. • Si un arreglo contiene 3 1 4 1 5 9 2 6 5 3 5 8 9 y n0=3, muestre como se compota el mergesort de 10.