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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

472 Capítulo 20. Esquemas algorítmicos fundam<strong>en</strong>tales<br />

12. Redefina la función que halla recursivam<strong>en</strong>te los números combinatorios m<br />

n , para<br />

m ∈ {0, . . . , 10}, n ∈ {0, . . . , m}, dotándola de memoria.<br />

13. Desarrolle completam<strong>en</strong>te el algoritmo que halla el camino mínimo <strong>en</strong> un grafo<br />

polietápico incorporando la tabulación descrita <strong>en</strong> el apartado 20.3.2<br />

14. (a) Desarrolle completam<strong>en</strong>te el problema del cambio de moneda descrito <strong>en</strong><br />

el apartado 20.3.3 para el juego de monedas de 1, 8 y 9 pesetas. Dar dos<br />

versiones del mismo: una sin tabular y otra mediante tabulación.<br />

(b) Inserte los contadores necesarios para tantear el número de llamadas recursivas<br />

requeridas para descomponer 70 ptas. de manera óptima <strong>en</strong> las dos<br />

versiones anteriores.<br />

15. Desarrolle un algoritmo que dé la lista de todas las descomposiciones posibles de<br />

N (número natural que es un dato de <strong>en</strong>trada) <strong>en</strong> sumas de doses, treses y cincos.<br />

16. Supongamos que las soluciones parciales al problema de las ocho damas se concretan<br />

<strong>en</strong> dos variables: un indicador del número de damas situadas correctam<strong>en</strong>te<br />

(con un valor <strong>en</strong>tre 0 y 8), y un array [1..8] of 1..8 cuyas primeras casillas<br />

registran las posiciones de las damas ya situadas <strong>en</strong> una subsolución.<br />

(a) Escriba una función que indique si dos damas están a tiro.<br />

(b) Escriba una función que, conocida una subsolución y una posición (de 1<br />

a 8) candidata para situar la dama sigui<strong>en</strong>te, indique si es ello posible sin<br />

am<strong>en</strong>azar las anteriores.<br />

(c) Desarrolle completam<strong>en</strong>te el algoritmo descrito <strong>en</strong> el apartado 1, g<strong>en</strong>eralizado<br />

al problema de las n damas, con tres variantes:<br />

i. La g<strong>en</strong>eración de todas las posiciones válidas.<br />

ii. Averiguar cuántas soluciones válidas hay.<br />

iii. Buscar una posición válida, si existe, o un m<strong>en</strong>saje de advert<strong>en</strong>cia <strong>en</strong><br />

caso contrario.<br />

(d) Aplique las técnicas de poda expuestas <strong>en</strong> el apartado 20.4.1 para situar<br />

ocho damas, libres de am<strong>en</strong>azas, <strong>en</strong> un tablero de ocho por ocho, ocupando<br />

casillas con una suma máxima, sabi<strong>en</strong>do que la casilla de la fila i, columna<br />

j, vale 10 8−i + j puntos.<br />

17. Utilizando las técnicas explicadas <strong>en</strong> el apartado 20.5.1, hallar aproximadam<strong>en</strong>te<br />

el área limitada por la función f(x) = log(x), el eje de abscisas y las rectas x = 1<br />

y x = 5. Compárese el resultado obt<strong>en</strong>ido con el valor exacto de 5<br />

1 log(x)dx.

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

Saved successfully!

Ooh no, something went wrong!