Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Resumen tema 3 Inteligencia Artificial, Resúmenes de Inteligencia Artificial

Resumen del tema tres de la asignatura de FIA

Tipo: Resúmenes

2020/2021

Subido el 06/09/2021

chechugarcia95
chechugarcia95 🇪🇸

5

(1)

3 documentos

1 / 21

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Fundamentos de la Inteligencia Artificial
Capítulo 3 (Tema 9 del Libro). Técnicas basadas en búsquedas heurísticas
9.1 Introducción
El problema de utilizar una estrategia de búsqueda no informada es que al realizar una búsqueda sistemática
sin ningún tipo de información que le permita discernir las regiones más prometedoras de aquellas que lo son
menos, es el tiempo necesario para encontrar una solución puede llegar a ser prohibitivo.
Alternativa: Mecanismo que permita dirigir la búsqueda hacia las zonas más prometedoras, de modo que se
pueda llegar a una solución sin necesidad de llegar a tantos nodos como se requiere en una estrategia de
búsqueda a ciegas. En el ámbito de la IA, a estos mecanismos se les denomina heurísticas.
Las heurísticas son criterios, reglas o métodos que ayudan a decidir cuál es la mejor alternativa entre varias
posibles para alcanzar un determinado objetivo. Para ello se dispone de información o conocimiento sobre el
problema que se intenta resolver. Este conocimiento se obtiene a partir de cualquier pista, intuición o
experiencia que se tenga sobre el dominio del problema.
Lo que se espera del conocimiento en la búsqueda es que el número de nodos examinados para llegar a la
solución se reduzca notablemente con respecto a una búsqueda sin conocimiento.
Dado que las heurísticas se basan en el uso de conocimiento a veces impreciso, es natural que en muchos
casos fallen en la predicción de la mejor alternativa. Una buena heurística es aquella capaz de tomar una
buena decisión, no necesariamente la mejor, en un alto porcentaje de ocasiones. El tiempo medio para llegar
a una solución mejora notablemente, aunque en el peor de los casos el tiempo puede ser igual que el de una
búsqueda a ciegas.
En muchas ocasiones se usa el término heurístico en contraposición con el término algorítmico, para hacer
referencia a procedimientos que no garantizan la calidad de la solución, ni en ocasiones la completitud. Sin
embargo, hay algoritmos exactos en los que la búsqueda se guía mediante heurísticas.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15

Vista previa parcial del texto

¡Descarga Resumen tema 3 Inteligencia Artificial y más Resúmenes en PDF de Inteligencia Artificial solo en Docsity!

Fundamentos de la Inteligencia Artificial Capítulo 3 (Tema 9 del Libro). Técnicas basadas en búsquedas heurísticas 9.1 Introducción El problema de utilizar una estrategia de búsqueda no informada es que al realizar una búsqueda sistemática sin ningún tipo de información que le permita discernir las regiones más prometedoras de aquellas que lo son menos, es el tiempo necesario para encontrar una solución puede llegar a ser prohibitivo. Alternativa: Mecanismo que permita dirigir la búsqueda hacia las zonas más prometedoras, de modo que se pueda llegar a una solución sin necesidad de llegar a tantos nodos como se requiere en una estrategia de búsqueda a ciegas. En el ámbito de la IA, a estos mecanismos se les denomina heurísticas. Las heurísticas son criterios, reglas o métodos que ayudan a decidir cuál es la mejor alternativa entre varias posibles para alcanzar un determinado objetivo. Para ello se dispone de información o conocimiento sobre el problema que se intenta resolver. Este conocimiento se obtiene a partir de cualquier pista, intuición o experiencia que se tenga sobre el dominio del problema. Lo que se espera del conocimiento en la búsqueda es que el número de nodos examinados para llegar a la solución se reduzca notablemente con respecto a una búsqueda sin conocimiento. Dado que las heurísticas se basan en el uso de conocimiento a veces impreciso, es natural que en muchos casos fallen en la predicción de la mejor alternativa. Una buena heurística es aquella capaz de tomar una buena decisión, no necesariamente la mejor, en un alto porcentaje de ocasiones. El tiempo medio para llegar a una solución mejora notablemente, aunque en el peor de los casos el tiempo puede ser igual que el de una búsqueda a ciegas. En muchas ocasiones se usa el término heurístico en contraposición con el término algorítmico, para hacer referencia a procedimientos que no garantizan la calidad de la solución, ni en ocasiones la completitud. Sin embargo, hay algoritmos exactos en los que la búsqueda se guía mediante heurísticas.

El problema de la lechera Se dispone de dos medidores de líquidos; uno de 5 litros y otro de 7. Ambos están vacíos al inicio y en cualquier momento pueden ser llenados o vaciados usando un depósito con suficiente capacidad. El líquido se trata de leche y puede ser traspasado de uno a otro medidor hasta que el primero se vacíe o hasta que el segundo se llene. Problema: Encontrar la secuencia de acciones que se deben seguir para que en el mayor de los medidores se disponga exactamente de 4 litros. Lo relevante de los estados será la situación de los dos medidores. Un estado vendrá dado por el valor de un par de variables (x,y) con 0<= x <= 7 y 0<=y<=5. El estado inicial es (0,0) y los estados objetivos (4,y). Prerrequisitos: Una aplicación sistemática de estas reglas debería encontrar la solución, sin embargo, es seguro que no son completadas todas ellas de la misma forma por una experimentada lechera al tratar de resolver el problema de medir 4 litros; sino que su experiencia le dictará algún modo de manejarlas que no será usando un algoritmo de búsqueda a ciegas. El comportamiento de la lechera, con el fin de explicitar su conocimiento para poder incorporarlo en una heurística, es una tarea de ingeniería del conocimiento que en este caso podría dar lugar a otro conjunto de reglas sobre cómo aplicar de forma ordenadas las reglas anteriores. Este tipo de reglas se sobre cómo utilizar reglas se llaman metarreglas:

Por lo tanto, f* es discriminante perfecto. Para problemas complejos, los valores no se pueden calcular en un tiempo razonable, por lo que el motor de búsqueda anterior n oes factible. Lo que se puede hacer es trabajar con aproximaciones de g* y h*. Esto es lo que se hace en el algoritmo A* , en el que se utilizan las siguientes aproximaciones:

  • g(n) → coste del mejor camino desde el inicial a n obtenido hasta el momento durante la búsqueda
  • h(n) → estimación positiva del valor de h*(n) , tal que h(n)= 0, si n es un objetivo - g(n) >= g*(n) y h(n)>=
  • Se define la función f del algoritmo BF, para obtener A* , como: f(n) = g(n) * h(n) De esta manera, f es una estimación de f* y se usa para ordenar ABIERTA de modo que siempre estará al principio de esta lista el nodo con el menor valor de f. h(n) suele denominarse función heurística. La definición de esta función es un problema no trivial, y para ello hay que tener en cuenta todo tipo de información obtenida por métodos más o menos formales, como pueden ser cálculos estadísticos. Descripción del algoritmo A* Es el mismo que el AGBG descrito en el capítulo anterior, con algunos cambios debido a la forma de definir f. En esta, se hace una ligera modificación del contenido de la TABLA_A para registrar, para cada nodo, el valor de g(n) que es lo mismo que Coste(inicial,n) del algoritmo general, y el valor de h(n). El valor de h(n), una vez encontrado el nodo n , no cambia a lo largo del tiempo. Como la evaluación de h tiene en genera un coste no despreciable, el valor de h(n) se calcula sólo una vez para cada nodo y se almacena este valor en TABLA_A para su uso.

Propiedades Dependen de la definición de la función heurística h. Para su estudio, se introduce la siguiente notación:

- s es el estado inicial

  • Γ es el conjunto de todos los nodos objetivo. Γ*⊆ Γ es el conjunto de objetivos óptimos
  • Pn-n’ es un camino simple desde el nodo n hasta el nodo n’. P*n-n’ es un camino óptimo desde n a _n’
  • NodosEnABIERTA_ ∪ NodosExpandidos = NodosEncontrados Se considerarán las propiedades de: ● Terminación y completitud: El algoritmo BF, es completo en grafos finitos, ya que en el peor de los casos termina después de expandir todos los nodos. Es evidente ya que el algoritmo expande un nodo en cada iteración y ningún nodo se expande más de una vez. Sin embargo, BF no puede terminar grafos infinitos, aunque sean localmente finitos, debido a la definición de f. Esno no puede ocurrir en A* debido a la definición de f = g + h. La componente h siempre es positiva, y g crece de forma no acotada lo largo de cualquier camino con un número no finito de nodos, por lo que si la búsqueda se hace a través de un camino infinito, en algún momento el valor de f será lo suficientemente grande para que el siguiente nodo a través de ese camino no sea el más prometedor, y por lo tanto, se considera la búsqueda a través de otros caminos. ○ A* es completo en grafos localmente finitos ● Admisibilidad: Una función heurística h es admisible si h(n) <= h*(n)n. Dicho esto, se supone que h es admisible y se probará que A* es admisible. Como paso previo se usa el siguiente resultado. ○ Antes de que A* termine, existe un nodo n’ en ABIERTA tal que f(n’) <= C’ ○ f(n) = g(n) + h(n) = g(n) + h(n) <= g(n) + h(n) = f(n) = C* ○ f(n) <= C* ○ A partir de esto, se demuestra que A* es admisible ○ Los algoritmos de primero en anchura y de coste uniforme son admisibles, son casos particulares del A* con h(n) = 0n. Cabe preguntarse si estos algoritmos resultan ser iguales o no a otras versiones de A*

● gP(n’) → Coste desde s a n’ a través del camino P

- Una condición suficiente para que A* expanda un nodo es que exista un camino estrictamente C*-acotado desde s hasta n

  • Una condición necesaria de expansión de un nodo es que exista un camino C*-acotado desde s a n
  • Si A* de h2 está más informado que el de h1, entonces A2 domina a A1. El hecho de que tenga que cumplirse que h2(n)>h1(n) para todo n no final, en la práctica, hace que este resultado sea de aplicación bastante limitada. Ejemplos: 8-puzzle, donde en estados próximos a los objetivos, las dos heurísticas toman el mismo valor. Lo que ocurre normalmente es que en esta situaciones h comportarse mejor que h. ● Heurísticos consistentes o monótonos: Estas dos propiedades son equivalentes y, si la heurística las cumple, aseguran que no es preciso rectificar el contenido de la TABLA_A para aquellos nodos que ya se han expandido
  • Una heurística h es monótona si para todo par de nodos n y n’ se cumple que h(n) <= k(n,n’) + h(n’) donde k(n,n’) es el coste mínimo de ir de n a n’ , el cual es infinito si no hay camino entre los dos nodos
  • Una heurística h es consistente si para todo par de nodos n y n’ se cumple que h(n)<=c(n,n’) + h(n’) donde c(n,n’) representa el coste de la regla que lleva de n a n’ , el cual es infinito si no existe esta regla

Tanto h* como la heurística trivial h(n) = 0, para todo nodo n , cumplen las dos propiedades. Aunque al principio la monotonía parece menos restrictiva que la consistencia, se trata de propiedades equivalentes, como la prueba del siguiente teorema:

  • Monotonía y consistencia son propiedades equivalentes Una de las consecuencias de la monotonía/consistencia es la admisibilidad
  • Toda heurística monótona es admisible La implicación inversa no es cierta, es decir monotonía y admisibilidad no son equivalentes, aunque en la práctica no es fácil encontrar heurísticas admisibles que no sean a la vez monótonas. El uso de las heurísticas monótonas tiene otra ventaja:
  • Si h es monótona y A* elige el nodo n para la expansión, entonces se cumple que g(n)=g*(n), es decir, el camino encontrado hasta el momento desde inicial s hasta n es óptimo Si la heurística es monótona no es necesario rectificar el camino desde inicial para los nodos que ya fueron expandidos, por lo que tampoco es necesario registrar el grafo de búsqueda desarrollado hasta el momento en el campo correspondiente a los sucesores de TABLA_A, ya que los únicos nodos sin sufrir rectificaciones son los que están en ABIERTA, por tanto, la operación RectificarLista nunca se aplica.

Diseño de heurísticos simples El problema del 8-puzzle (problema de búsqueda en espacios de estados)

- h1(n) = número de fichas que en el estado n están fuera de su posición en el objetivo - h2(n) = suma de las distancias ortogonales de cada ficha a su posición en el objetivo Para estimar el coste de resolver el subproblema planteado por un estado n , se puede tener en cuenta la diferencia entre n y el objetivo que se desea alcanzar, que es un estado conocido. Una primera idea suele ser contar el número de fichas que en el estado n no están en la posición que les corresponde como objetivo. La heurística h1 es admisible, ya que para cualquier ficha que esté descolocada debe ser desplazada al menos una vez para alcanzar la posición que le corresponde en el objetivo. Salvo para estados que estén muy próximos al objetivo, esta heurística es una estimación muy optimista del coste que representa el estado n : Se trata de una heurística muy poco informada. La heurística h2 también es admisible ya que cada ficha se debe mover al menos tantas veces como indica su distancia a la situación que le corresponde en el objetivo. Es una estimación menos optimista, por lo que está más informada. Se cumple que h2>=h1 para todo n. La igualdad se da para los estados cuyas fichas descolocadas están a una distancia 1 de su posición en el objetivo. Para los tres nodos anteriores, h2 toma los siguientes valores: Las dos heurísticas son monótonas. Para mostrar que se pueden definir heurísticas admisibles pero no monótonas, consideramos la siguiente: - h3(n) = 2 x número de fichas que están a una distancia ortogonal 2 de su posición en el objetivo. Es admisible, menos informada que h2 y no monótona. Para probar esto último basta con encontrar un ejemplo en el que no se cumpla la desigualdad triangular El problema del viajante de comercio Para definir las heurísticas, hay que estimar el coste de ir desde la última ciudad del estado a la ciudad de partida, pasando una sola vez por cada una de las ciudades no visitadas. Para realizar estas estimaciones de manera optimista, se puede razonar de la siguiente manera. Si N es el número de ciudades del problema, y un estado n no objetivo contiene una secuencia de k ciudades, 1<= k<=N, para llegar a una solución desde n habrá que recorrer un número de N-k+1 arcos. Por tanto, se puede obtener una estimación optimista del coste de resolver n suponiendo que todos los arcos tienen un coste igual al coste del arco mínimo de entre aquellos arcos no incluidos en la solución parcial, que representa el estado n , y que además no tocan a las ciudades intermedias.

- h1(n) = (N-k+1)x coste del arco mínimo no incluido en n y que no toca a las ciudades intermedias de n Se trata de una heurística admisible, y se puede probar que también es monótona. Se puede afinar un poco más el razonamiento, y definir otra heurística. - h2(n) = Suma de los costes de los (N-K+1) arcos de coste mínimo no incluidos en n y que no tocan a las ciudades intermedias de n. En este caso los valores son: También se puede definir una heurística que intuitivamente se aproximará mejor que los anteriores el valor de h* como: - h3(n) = (N-k+1) x coste medio de los arcos no incluidos en n y que no tocan a las ciudades intermedias de n Aunque es una estimación razonable, es una heurística no admisible. Se pueden usar otros criterios de razonamiento como el hecho de que para llegar de un estado n a una solución habrá que abandonar la última ciudad del estado, así como todas las no visitadas; o bien que habrá que llegar a todas las no visitadas y de nuevo a la ciudad de partida Otros ejemplo: Problema de las N-reinas, problema del secuenciamiento de tareas con cabezas y prioridades. Relajación de las condiciones de optimalidad La experiencia muestra que en muchos problemas A* pasa mucho tiempo discriminando entre caminos cuyos costes no varían significativamente. En estos casos la admisibilidad es realmente un inconveniente más que una virtud, ya que fuerza al algoritmo a gastar un tiempo desproporcionado para seleccionar el mejor de entre un conjunto de candidatos iguales. Lo que se plantea ahora es la posibilidad de hacer que A* sea más eficiente, aunque para ello sea preciso perder la admisibilidad. Es lo que se suele hacer en la práctica en la mayoría de los problemas ● Ajuste de los pesos de g y h : La estrategia de búsqueda de A* está basada en la ecuación f = h + h. El sumando g trata de ajustar el algoritmo a una estrategia de búsqueda por anchura o de coste uniforme. El sumando h , trata de acercar la búsqueda hacia la solución sin que se expandan todos los

  1. Algoritmo Aε* : Hay que considerar que dentro de ABIERTA una sublista, llamada FOCAL, formada por los nodos cuyo valor de f no se separa más de un factor (1+ε) del valor mínimo de f en ABIERTA, es decir: La estrategia es idéntica a la de A, salvo que en Aε se desarrollan primero los nodos de la sublista FOCAL según los valores de una segunda heurística h’ , donde h’(n) es una estimación del esfuerzo computacional que se necesita para llegar desde n a una solución. La razón de esto es que los nodos de FOCAL tienen todos más o menos las mismas posibilidades de estar en un camino óptimo, según las estimaciones basadas en f. Si se dispusiese de algún conocimiento adicional, que no pudiese ser representado en f , parece razonable usar este conocimiento para decidir cuál es el nodo más prometedor. El propio h’ podría utilizarse en h , pero normalmente será posible añadir más información a h’ , que puede obtenerse, por ejemplo, a partir de lo ya explorado. La elección de h’ no puede influir nunca de modo negativo en la ε-admisibilidad del algoritmo Aε*.
  • Si h es admisible, Aε* es ε-admisible ● Comparación entre los dos algoritmos: Ponderación dinámica es más simple ya que solamente tiene una lista de estados y una heurística, pero tiene el inconveniente de que es necesario conocer la profundidad de la solución óptima, o al menos la cota superior. Aε*, al usar una segunda heurística, que no tiene que ser admisible, ofrece un mecanismo más flexible del que ofrecen g y h , para hacer estimaciones del coste computacional de la búsqueda en una determinada dirección Diseño sistemático de heurísticas
  1. Enunciar el problema de modo que todas las restricciones queden reflejadas de forma explícita
  2. Considerar las posibles relajaciones que consisten en suponer que se relaja un subconjunto de las restricciones del problema hasta conseguir una versión del problema suficientemente simple para que se pueda resolver con un algoritmo polinomial. Hay que tener en cuenta que cuanto menos se relaje el problema, mejor será la heurística resultante
  • Toda heurística h obtenida por el método de la relajación del problema es monótona.

Este resultado tiene consecuencias inmediatas:

  1. Pone de manifiesto la eficacia del método, ya que se trata de un método sistemático que proporciona heurísticas con buenas propiedades
  2. No es necesario probar formalmente estas propiedades una vez obtenidas las heurísticas, ya que son consecuencia directa de la aplicación correcta del método
  3. Pone de manifiesto que es el método que tienden a utilizar las personas de forma inconsciente, ya que la experiencia demuestra que la mayoría de las heurísticas admisibles que se diseñan razonando de una forma lógica son también monótonas 9.4 Búsqueda con memoria limitada El principal problema de A* es el requerimiento de memoria que crece de forma exponencial con la profundidad, aunque se disponga de buenas heurísticas. Para tratar este problema, se proponen variantes que incorporan mecanismos para limitar la cantidad de memoria: ● Algoritmo IDA (Iterative Deepening A):** Es una extensión del método de búsqueda iterativa en profundidad. Se establece una longitud límite para la búsqueda del valor de f(inicial) que es una cota inferior de la solución óptima, ya que la heurística es admisible. En cada iteración, busca con una estrategia en profundidad descartando los nodos cuya estimación f(n) supere la longitud límite. Si en una iteración no se encuentra solución, se realiza una nueva en la que la búsqueda comienza otra vez desde el principio pero con una nueva longitud límite, el menor valor de f de los nodos descartados en cada iteración anterior. Ya que dispone de heurística, se puede usar esta información para ordenar los sucesores del nodo expandido antes de insertarlos en ABIERTA, de manera que se consideren antes los sucesores más prometedores de cada nodo expandido, de esta manera, si en una iteración se encuentra la solución, el número de nodos expandidos en esta iteración puede ser menor. Por el contrario, si no se encuentra solución, el número de nodos expandidos es el mismo que si los sucesores se ordenaran de otro modo. Es admisible si h es monótona (si h solamente es admisible IDA* también lo es , pero es un razonamiento más complejo), ya que si en una iteración no se encuentra solución, el nuevo límite de profundidad, es una cota inferior de la solución óptima, ya que los valores de f de los nodos a lo largo de una rama del árbol de búsqueda forman una secuencia no decreciente por ser h monótono. Por lo tanto, si en la siguiente iteración se encuentra una solución, su coste es igual al valor límite y por lo tanto la solución es óptima. Como el algoritmo realiza búsquedas en profundidad, el consumo de memoria es proporcional a la profundidad de la solución d y al factor de ramificación b. El tiempo de búsqueda es exponencial en la profundidad, es decir, en cada iteración tenemos una búsqueda con tiempo exponencial en la profundidad límite. En la práctica, si todos los nodos tienen valores de f distintos, en cada iteración solamente se añade un

El valor de la variable Límite se refiere al número máximo de nodos que se pueden almacenar en la TABLA_A, y por tanto la profundidad máxima de un camino registrado en la tabla. La llamada a la función SiguienteSucesor(n) proporciona en cada llamada un sucesor del nodo, en principio un orden no determinado, por lo que es preciso algún mecanismo de control de los sucesores generador. Este mecanismo se puede apoyar en TABLA_A. El funcionamiento de SMA* es :

  • Cuando se necesita expandir un nodo y no tiene espacio en TABLA_A, elimina un nodo de esta tabla y de ABIERTA. Estos son los llamados nodos olvidados y son aquellos menos prometedores, es decir, tienen un valor de f mayor en ABIERTA. El algoritmo recuerda en cada nodo el mejor f de los hijos de ese nodo que han sido olvidados. Para no volver a explorar subárboles que han sido olvidados, SMA* mantiene en los nodos ancestros información acerca de la calidad del mejor camino en cada subárbol descartado. De esta manera, solamente se reexplora un subárbol descartado cuando el resto de posibilidades es peor de acuerdo a las estimaciones. Para proceder de este modo, cuando se descartan todos los sucesores de un nodo, el algoritmo recuerda la estimación del mejor camino a través de n. Las principales propiedades de SMA* son:
  • Capacidad de evolución utilizando la memoria que tiene disponible
  • Evita estados repetidos en la medida en que la cantidad de memoria disponible lo permite
  • Completo si la memoria disponible es suficiente para almacenar el camino a la solución menos profunda
  • Admisible si tiene suficiente memoria para almacenar el camino hasta la solución óptima menos profunda. En otro caso, devuelve la mejor solución que se puede alcanzar con la memoria disponible
  • Si la memoria es suficiente para el árbol de búsqueda completo, la eficiencia es óptima Sin embargo, la cuestión de si SMA* tiene una eficiencia mejor o peor que cualquier otro algoritmo sigue sin respuesta, ya que tiene la misma información heurística y la misma cantidad de memoria 9.5 Algoritmos voraces Los algoritmos voraces (greedy) constituyen una alternativa a la búsqueda exhaustiva. La idea es que un algoritmo de esta clase tome decisiones de forma irrevocable, de modo que no se consideran alternativas. Una consecuencia de este modo de proceder es que no son admisibles, y en general tampoco completos. Pero por otra parte resultan muy eficientes, por lo que son muy adecuados por ejemplo para sistemas de tiempo real. Además, si la decisión irrevocable está guiada por una buena heurística, la probabilidad de obtener una buena solución aumenta. El diseño de un greedy para la búsqueda en espacios de estados es simple a partir de los algoritmos que ya hemos visto; sin embargo, dada su simplicidad, lo lógico es realizar una implementación más sencilla y eficiente. Por ejemplo, a partir de un algoritmo A*, si en cada expansión se prescinde de todos los sucesores salvo del más prometedor de acuerdo con la heurística, se tiene un algoritmo voraz. En este caso se trata de un algoritmo determinista. Si, además, los empates se resuelven de forma aleatoria, se tiene un algoritmo no determinista que, si se ejecuta varias veces, proporciona distintas soluciones con una calidad media que dependerá de la precisión de las estimaciones de la heurística. La variedad de las soluciones se puede aumentar si en lugar de elegir aleatoriamente entre los mejores sucesores con una distribución uniforme, la elección se hace con una distribución proporcional a la bondad estimada de cada sucesor.

En la práctica, son útiles para resolver muchos problemas, y se pueden usar además en combinación con otras estrategias de búsqueda, como por ejemplo los esquemas de ramificación y poda.. 9.6 Algoritmos de ramificación y poda Constituyen el método más empleado en la resolución de problemas de optimización combinatoria. Tienen muchos elementos en común con otros algoritmos vistos como el A*, pero tienen algunas características propias. En primer lugar, con los algoritmos anteriores, la búsqueda se plantea como un proceso en el que la solución se va construyendo paso a paso, de modo que un camino desde el inicial a un estado representa parte de la solución del problema y el estado representa un subproblema que se debe resolver para llegar a una solución del problema original. Sin embargo, en un algoritmo de ramificación y poda, el planteamiento es otro: Cada estado se interpreta como un subconjunto de soluciones del problema original, en el estado inicial se tienen todas las soluciones y a partir de aquí, mediante la ramificación, se descompone en la unión disjunta de varios conjuntos, hasta llegar a conjuntos unitarios que representan soluciones del problema. Este planteamiento lleva asociado que el espacio de búsqueda tenga estructura de árbol. Los algoritmos de ramificación y poda tienen cuatro componentes fundamentales:

  • Esquema de ramificación: La ramificación de un nodo es equivalente al cálculo de sucesores en los algoritmos de búsqueda anteriores. Cada nodo representa un problema y dado un nodo n , Y(n) representa al conjunto de todas las soluciones de n. Este conjunto nunca se representa por extensión. La ramificación n consiste en descomponer el problema n en una series de subproblemas q1,...qp , de forma que:

criterio de parada. En este caso pierde la admisibilidad, pero el algoritmo devolverá la mejor solución encontrada, con su coste UB, y la mejor cota inferior, LB, obtenida durante la búsqueda. Es una característica importante de estos algoritmos: son admisibles si disponen de tiempo de ejecución suficiente, pero producen una solución y cota inferior si el tiempo es limitado. 9.7 Algoritmos de mejora iterativa o búsqueda local La solución que proporciona un algoritmo de búsqueda viene dada por un nodo objetivo junto a un camino desde el nodo inicial hasta este nodo. Sin embargo, hay muchos problemas para los cuales el nodo solución contiene toda la información necesaria y en este caso el camino es irrelevante. Ejemplo: TSP y el problema de las N-reinas. Para otros problemas como el 8-puzzle y el problema de planificación de actuaciones de robots, la información importante es el camino desde el estado inicial a la solución. Para problemas como TSP, es posible plantear otro tipo de búsqueda que consiste en partir de un estado que representa una solución del problema y luego hacer pequeños cambios en la configuración de este estado buscando mejoras de la solución. Esta es la idea de los métodos de mejora iterativa, que se suelen denominar también de búsqueda local por el hecho de que con los cambios que se realizan en la configuración de un estado, lo que se hace es generar configuraciones próximas o vecinas a esta configuración. La estructura básica de un método de búsqueda local es la que se muestra en este algoritmo. Parte de una solución inicial y en cada iteración calcula un conjunto de soluciones vecinas mediante una regla de vecindad. Cada una de estas soluciones debe ser evaluada, siendo ésta una de las acciones más críticas del algoritmo por su elevado tiempo de ejecución, ya que el número de soluciones vecinas puede ser grande o el procedimiento de evaluación de cada solución muy costoso. Después, se selecciona una de las soluciones vecinas con un determinado criterio, la que tiene menor coste. Si cumple el criterio de aceptación, que puede ser que sea mejor que la solución actual S, la solución seleccionada sustituye a S, y el proceso continúa hasta que se cumpla el criterio de finalización. La regla de vecindad debe cumplir la propiedad de conectividad, es decir, desde cualquier estado debe poder alcanzarse un objetivo óptimo mediante una secuencia de transformaciones. Las reglas suelen ser simétricas, si una solución x es vecina de otra y , y también es vecina de x. El diseño del algoritmo en un problema como TSP es muy simple. Si el grafo de conexiones está totalmente conectado, entonces cualquier permutación de las ciudades, prescindiendo de la ciudad de partida, es una solución del problema. El coste de esta solución se calcula de forma inmediata en un tiempo de orden O(N), siendo N el número de ciudades. Los algoritmos de búsqueda local realizan una búsqueda en un espacio de soluciones potenciales del problema tratando de encontrar aquella que maximice, o minimice, una determinada función objetivo. Esta

función objetivo tiene normalmente una forma o relieve ( landscape ) muy irregular, con numerosos máximos y mínimos locales, por lo que la búsqueda del óptimo global es muy costosa. Por este motivo la búsqueda se suele asociar metafóricamente con una excursión a través de una cordillera en la que se trata de alcanzar la cima más alta. Normalmente, la búsqueda local no mantiene traza de todo el proceso realizado hasta el momento, sino que solamente utiliza información sobre el estado actual y sus vecinos. La búsqueda local es una estrategia en muchos casos que también se pueden combinar con otras estrategias, como los algoritmos evolutivos. ● Algoritmos de escalada o máximo gradiente: El criterio de aceptación de la solución vecina S1, frente a la solución actual S, es que S1 sea mejor o igual que S. En la selección se intenta elegir una solución que mejore S, o bien la mejor de todas las soluciones de la vecindad. Este tipo de búsqueda es simple, pero tiene algunos inconvenientes: ○ Óptimos locales: todos los vecinos son peores con lo que la búsqueda finaliza sin encontrar el óptimo global ○ Regiones planas: los vecinos tienen el mismo valor que la solución actual y la búsqueda es aleatoria ○ Crestas: si hay crestas con pendientes muy marcadas, puede ser fácil alcanzar la cima de la cresta, pero si la pendiente es muy suave en dirección al óptimo global, resulta difícil guiar la búsqueda a través de la cima sin desviarse hacia los lados de la cresta; a menos que existan operadores específicos para generar vecinos a través de la cima En estos tres casos lo que ocurre es que la búsqueda se queda estancada en un óptimo local, que puede ser una solución razonable o no. Lo que se puede hacer en estos casos es reiniciar la búsqueda a partir de otra situación de partida, lo que se denomina búsqueda multiarranque.Temple simulado: Consiste en admitir, con cierta probabilidad, algunas transiciones en las que la solución actual empeore; de este modo se puede salir de óptimos locales. Las diferencias principales de este algoritmo respecto al algoritmo de escalada son los siguientes: En temple simulado se realiza una selección aleatoria entre los vecinos del estado actual, y si la solución es mejor que la actual, se realiza la transición de forma incondicional, como en el caso del algoritmo de escalada. Pero si la solución es peor, entonces la nueva solución se acepta con una determinada probabilidad que depende de dos parámetros: la temperatura T y el incremento de energía ΔE. Los nombres de estos parámetros se eligen por analogía del método con el proceso físico de enfriamiento de un líquido Al principio, la temperatura tiene un valor alto T0, de modo que la probabilidad de aceptar una solución peor es alta. A medida que la búsqueda progresa, T se va actualizando de la forma siendo t la iteración actual y alfa una función que decrece al aumentar t. De este modo, la probabilidad de aceptar una solución que empeora a la actual va disminuyendo.