Introducción

Hay problemas de optimización cuya solución se determina a través del recorrido de un grafo.

En esos casos, el recorrido del grafo se realiza con un criterio o un fin concreto: encontrar el circuito hamiltoniano de coste mínimo o el camino mínimo entre el nodo origen y el nodo destino.

Ejemplo: Embarcaderos.

Dado un grafo, hay que determinar el camino mínimo entre el nodo 1 y el nodo n.

Pero, en otras ocasiones, los nodos de un grafo se utilizan para representar las posibles soluciones de un problema. En estos casos, la búsqueda de la solución se obtiene a través de un recorrido exhaustivo por todos los nodos del grafo. Esta es la idea central de los algoritmos de Vuelta Atrás (Backtracking).

Vuelta Atrás es una técnica general de resolución de problemas, aplicable a problemas de optimización, pero también nos proporciona el conjunto de todas las soluciones que satisfacen ciertas restricciones o una solución (la primera) que satisfaga ciertas restricciones.

Lógicamente, esta estrategia podría ser muy ineficiente si la búsqueda se realiza a ciegas (sin ningún criterio) y el grafo es grande. Para aminorar esta dificultad, debemos asegurarnos de que ese recorrido se hace adecuadamente por ejemplo:

  • evitando la posibilidad de visitar un nodo dos veces, pues esa solución ya habría sido examinada,

  • intentando estructurar el espacio a explorar, tratando de descartar posibles soluciones no satisfactorias.

Solución y restricciones

Se establecen dos tipos de restricciones:

  • Restricciones explícitas: son las reglas que definen el dominio Si de la decisión xi.

  • Restricciones implícitas: son las reglas que definen las relaciones que debe haber entre las distintas xi de una misma secuencia de decisiones o tupla.

Árbol de búsqueda

En base a la clasificación de las restricciones se definen los siguientes conceptos.-

  • ESPACIO DE ESTADOS POSIBLES: conjunto de todas las secuencias, parciales y completas, que cumplen restricciones explícitas.

  • ESPACIO DE SOLUCIONES POSIBLES: conjunto de todas las secuencias completas que cumplen restricciones explícitas.

  • ESPACIO DE SOLUCIONES FACTIBLES: conjunto de todas las secuencias completas que cumplen restricciones explícitas e implícitas.

Función de poda

Hay otro elemento imprescindible para la aplicabilidad de este método que es la función de poda. Esta permite determinar cuando una secuencia (o tupla) parcial nunca va a conducir a una solución factible, siendo inútil por tanto seguir buscando a partir de ella.

Una vez definido el árbol y todos los elementos que intervienen, el algoritmo consiste en realizar un recorrido del árbol (recorrido en profundidad) hasta encontrar la primera solución factible, o bien recorrer el árbol completo para obtener todas las soluciones factibles o la solución óptima.

El coste de este tipo de algoritmos de búsqueda exhaustiva está en el orden del tamaño del espacio de soluciones, que suele ser cuando menos exponencial. Su utilidad práctica reside en la efectividad de la función de poda que se aplique: cuanto más elaborada, más nodos se podan y menos árbol se recorre. Sin embargo, aplicar la función de poda a cada nodo puede no llegar a compensar la poda que realiza. Este aspecto es difícil de analizar teóricamente y solo se puede llegar a un criterio apropiado en base a medidas empíricas en ejemplos concretos.

Mochila

Solución y Restricciones

Mochila con una capacidad C, n objetos, P[1..n] pesos de los n objetos y B[1..n] beneficios de los n objetos.

Solución como secuencia de decisiones:

Restricciones explícitas:

Restricciones implícitas:

Árbol de búsqueda

Funcionamiento del método

En un determinado momento, el algoritmo se encontrará en un cierto nivel k del árbol de búsqueda, con una secuencia/tupla parcial < x1, ..., xk, -, …, - >

SITUACIÓN 1: La tupla parcial <x1, ..., xk, -, …, -> es factible

entonces se puede añadir un nuevo elemento a la tupla y asignando un valor a xk+1 => AMPLIAR LA TUPLA

Lo que en términos de recorrido en el árbol sería visitar un nodo hijo

SITUACIÓN 2: La tupla parcial <x1, ..., xk, -, …, -> NO es factible

entonces se realiza una PODA.

Esto quiere decir que a xk se le asigna otro valor de entre las posibles alternativas, lo que en términos de recorrido en el árbol sería visitar un nodo hermano

SITUACIÓN 3: La tupla parcial <x1, ..., xk, -, …, -> NO es factible

pero no quedan más alternativas para xk, entonces al realizar la PODA, hay que analizar la decisión xk-1 con alternativas pendientes, lo que en términos de recorrido en el árbol sería subir un nivel en el árbol (vuelta atrás)

Si en xk-1 no hubiera más alternativas pendientes, se volvería a xk-2 , si ahí tampoco las hubiera, se volvería a xk-3 y así sucesivamente.

Cuando se consiga replantear una decisión anterior se vuelve paso a paso hacia adelante.

Last updated