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.4. Vuelta atrás 463<br />

Un ejemplo conocido de problema que se adapta bi<strong>en</strong> a este esquema es el<br />

de situar ocho damas <strong>en</strong> un tablero de ajedrez de manera que ninguna esté<br />

am<strong>en</strong>azada por otra. La sigui<strong>en</strong>te figura muestra una solución:<br />

∗<br />

∗<br />

∗<br />

∗<br />

Como cada dama debe estar <strong>en</strong> una fila distinta, es posible repres<strong>en</strong>tar una<br />

solución como un vector (D1, . . . , D8), donde cada compon<strong>en</strong>te Di es un <strong>en</strong>tero<br />

de {1, . . . , 8} que repres<strong>en</strong>ta la columna <strong>en</strong> que se <strong>en</strong>cu<strong>en</strong>tra la dama i-ésima.<br />

La figura 20.1 muestra un fragm<strong>en</strong>to del árbol de búsqueda <strong>en</strong> una fase<br />

intermedia <strong>en</strong> que se está construy<strong>en</strong>do la solución mostrada. Se ha usado el<br />

símbolo ∅ para repres<strong>en</strong>tar el fallo <strong>en</strong> un int<strong>en</strong>to de ampliar la solución por una<br />

rama, y obedece a la imposibilidad de situar una dama <strong>en</strong> ciertas casillas por<br />

estar a tiro de las situadas con anterioridad.<br />

Las variantes más conocidas a este tipo de problemas son las sigui<strong>en</strong>tes:<br />

1. G<strong>en</strong>erar todas las soluciones posibles.<br />

∗<br />

El esquema de búsqueda de todas las soluciones, desde la fase i-ésima, se<br />

puede resumir como sigue:<br />

procedure P (i: numero de fase; S: solucParcial);<br />

{Efecto: g<strong>en</strong>era todas las soluciones, desde la fase i-ésima, a partir<br />

de la solución parcial S}<br />

begin<br />

para todo pi ∈ {posibles pasos válidos <strong>en</strong> esta fase } hacer begin<br />

Añadir pi a S (Sea S’ la solución S, dando un paso más pi)<br />

if pi completa una solución th<strong>en</strong><br />

Registrar la solución S´<br />

else<br />

Resolver P(i+1, S’)<br />

<strong>en</strong>d {para todo}<br />

<strong>en</strong>d; {P }<br />

En particular, el procedimi<strong>en</strong>to que g<strong>en</strong>era todas las soluciones <strong>en</strong> el problema<br />

de las ocho damas es el sigui<strong>en</strong>te:<br />

∗<br />

∗<br />

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

Saved successfully!

Ooh no, something went wrong!