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.

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

Situar la dama i-ésima <strong>en</strong> la columna col<br />

(con lo que se ti<strong>en</strong>e la situación S’)<br />

if i = 8 th<strong>en</strong> begin<br />

Registrar esta solución;<br />

halladaSol:= True<br />

<strong>en</strong>d {th<strong>en</strong>}<br />

else<br />

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

<strong>en</strong>d {th<strong>en</strong>}<br />

until halladaSol or (col = 8)<br />

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

En resum<strong>en</strong>, la técnica de vuelta atrás ofrece un método para resolver problemas<br />

tratando de completar una o varias soluciones por etapas e1, e2, ..., <strong>en</strong><br />

donde cada ei debe satisfacer determinadas condiciones. En cada paso se trata<br />

de ext<strong>en</strong>der una solución parcial de todos los modos posibles, y si ninguno resulta<br />

satisfactorio se produce la vuelta atrás hasta el último punto <strong>en</strong> que aún<br />

quedaban alternativas sin explorar. El proceso de construcción de una solución<br />

es semejante al recorrido de un árbol: cada decisión ramifica el árbol y conduce<br />

a posiciones más definidas de la solución o a una situación de fallo.<br />

20.4.1 Mejora del esquema de vuelta atrás<br />

El árbol de búsqueda completo asociado a los esquemas de vuelta atrás crece<br />

frecu<strong>en</strong>tem<strong>en</strong>te de forma expon<strong>en</strong>cial conforme aum<strong>en</strong>ta su altura. Por ello,<br />

cobra gran importancia podar algunas de sus ramas siempre que sea posible.<br />

Los métodos más conocidos para lograrlo son los sigui<strong>en</strong>tes:<br />

Exclusión previa<br />

Frecu<strong>en</strong>tem<strong>en</strong>te, un análisis detallado del problema permite observar que ciertas<br />

subsoluciones resultarán infructuosas más o m<strong>en</strong>os pronto. Estos casos permit<strong>en</strong><br />

organizar el algoritmo para que ignore la búsqueda <strong>en</strong> tales situaciones.<br />

El problema de las ocho damas es un claro ejemplo de ello: es obvio que cada<br />

dama deberá estar <strong>en</strong> una fila distinta, lo que facilita la organización de las fases<br />

y limita la búsqueda de soluciones.<br />

Fusión de ramas<br />

Cuando la búsqueda a través de distintas ramas lleve a resultados equival<strong>en</strong>tes,<br />

bastará con limitar la búsqueda a una de esas ramas.

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

Saved successfully!

Ooh no, something went wrong!