09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

20.6. Ejercicios 471<br />

6. Supongamos que el vector V consta de dos trozos V1,...,k y Vk+1,...,n ord<strong>en</strong>ados.<br />

Escribir un algoritmo devorador que los mezcle, produci<strong>en</strong>do un vector W1,...,n<br />

ord<strong>en</strong>ado.<br />

7. Se desea hallar el máximo valor de un vector V de n <strong>en</strong>teros. Sigui<strong>en</strong>do una<br />

estrategia divide y v<strong>en</strong>cerás, 11 una solución consiste <strong>en</strong> lo sigui<strong>en</strong>te: si el vector<br />

ti<strong>en</strong>e una sola compon<strong>en</strong>te, ésa es la solución; de lo contrario, se procede como<br />

sigue:<br />

(a) se divide el vector V1,...,n <strong>en</strong> dos trozos: A = V1,...,k y B = Vk+1,...,n<br />

(b) se hallan los máximos para A y B respectivam<strong>en</strong>te<br />

(c) se combinan las soluciones parciales MA y MB obt<strong>en</strong>idas, resultando que la<br />

solución final es el máximo de <strong>en</strong>tre MA y MB.<br />

Desarrolle completam<strong>en</strong>te el algoritmo.<br />

8. (a) Desarrolle otro algoritmo que halle el máximo valor de un vector, esta vez<br />

sigui<strong>en</strong>do un esquema recursivo simple <strong>en</strong> el que se compare el primer elem<strong>en</strong>to<br />

del vector con el valor máximo del resto del vector.<br />

(b) Compare la complejidad de este algoritmo con el del ejercicio anterior.<br />

9. Sea A una matriz cuadrada de n × n. Si n es par, A puede descomponerse <strong>en</strong><br />

cuatro submatrices cuadradas, así:<br />

<br />

′ ′ A B<br />

A =<br />

y su determinante puede hallarse así:<br />

C ′ D ′<br />

| A |=| A ′ | ∗ | D ′ | − | B ′ | ∗ | C ′ | .<br />

Escriba un algoritmo divide y v<strong>en</strong>cerás para hallar el determinante de una matriz<br />

de dim<strong>en</strong>sión n, si<strong>en</strong>do n una pot<strong>en</strong>cia de 2.<br />

10. (a) Desarrolle un programa que halle Fib(15) según la definición recursiva usual<br />

de la función de Fibonacci, y modifíquelo para que cu<strong>en</strong>te el número de<br />

llamadas Fib(0), Fib(1), ... que se efectúan.<br />

(b) Implem<strong>en</strong>te una variante de la función del apartado (a), <strong>en</strong> la que se le dote<br />

de memoria.<br />

11. Defina <strong>en</strong> <strong>Pascal</strong> la función ofuscación de Dïjkstra,<br />

Ofusc(0) = 0<br />

Ofusc(1) =<br />

Ofusc(n) =<br />

<br />

1<br />

n Ofusc( 2 ),<br />

Ofusc(n + 1) + Ofusc(n − 1),<br />

si n es par<br />

si n es impar<br />

<br />

, ∀n ≥ 2<br />

dotándola de memoria, y averigüe <strong>en</strong> qué medida ha mejorado su efici<strong>en</strong>cia, sigui<strong>en</strong>do<br />

los pasos del ejercicio anterior.<br />

11 Aunque el algoritmo descrito resuelve correctam<strong>en</strong>te el problema planteado, debe advertirse<br />

que ésta no es la manera más apropiada para afrontar este problema (véase el apartado 20.2.1).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!