0% encontró este documento útil (0 votos)
211 vistas2 páginas

Algoritmo 8 Puzzle

El algoritmo IDA* es un algoritmo de búsqueda iterativa que utiliza información heurística para guiar la exploración del espacio de búsqueda. En cada iteración, explora todos los nodos con un coste menor o igual que un límite, y actualiza el límite para la siguiente iteración con el menor coste encontrado entre los nodos frontera. Esto garantiza encontrar la solución óptima de manera más eficiente que una búsqueda en profundidad simple.

Cargado por

christian111
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
211 vistas2 páginas

Algoritmo 8 Puzzle

El algoritmo IDA* es un algoritmo de búsqueda iterativa que utiliza información heurística para guiar la exploración del espacio de búsqueda. En cada iteración, explora todos los nodos con un coste menor o igual que un límite, y actualiza el límite para la siguiente iteración con el menor coste encontrado entre los nodos frontera. Esto garantiza encontrar la solución óptima de manera más eficiente que una búsqueda en profundidad simple.

Cargado por

christian111
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 2

Algoritmo 8 puzzle El algoritmo de bsqueda IDA*.

Descripcin del algoritmo.


El mtodo IDA* (Iterative Deepening A*) consiste, como su nombre indica, en un algoritmo de profundizacin iterativa en el que se hace uso de la informacin heurstica de que se dispone sobre el problema para decidir qu nodo expandir a continuacin, y hasta dnde llegar en cada una de las iteraciones del proceso. En este algoritmo, como en cualquier algoritmo de profundizacin iterativa, cada iteracin es una bsqueda "primero en profundidad". En este caso la profundizacin se basa en la informacin heurstica y terminar no a una determinada profundidad, sino cuando se llegue a un nodo cuyo coste de la funcin heurstica de evaluacin f = g + h sea mayor que el actual lmite de coste de f. De esta forma en cada iteracin se revisan todos los nodos con un coste de f menor o igual que el actual lmite de coste. Adems de esto se evalan los nodos del contorno del rbol, que tienen un coste mayor que el actual lmite de f, para calcular el lmite de f que se utilizar en la siguiente iteracin. Este nuevo lmite ser el valor mnimo de todos los valores de f de los nodos del citado contorno. Todo esto se ver ms claro despus de analizar el seudocdigo del algoritmo y presentar un ejemplo ilustrativo. Seudocdigo de IDA* En adelante, "coste" representa un tipo de datos (tipicamente enteros o reales) en el que se almacenar el coste de los nodos. Para el problema del 8-puzzle basta con que "coste" sea de tipo entero.
funcin IDA*(problema) responde con una lista que contiene la ruta solucin Entradas: problema: Estructura que contiene lo siguiente: estado Inicial : Estado a partir del que se comienza la bsqueda estado Final : Estado o estados objetivo de la bsqueda. entero NumOps : Nmero de operadores aplicables a los estados. vector de entero CosteOperador : Vector en el que se almacena el coste de los operadores. coste CosteMaximo : Cota superior del coste de la solucin. Variables: coste lmite-f : En esta variable se almacena el lmite del coste f para la iteracin actual. nodo raz : Almacena el primer nodo del rbol. lista solucin : Almacena la ruta solucin. //Se crea el nodo raz.

raz = nuevoNodo(problema.inicial, problema.final) //El primer lmite-f es el coste-f del nodo raz. lmite-f = coste-f(raz) bucle hacer solucin, lmite-f = Contorno-DFS(raiz, lmite-f) si no EsVacia(solucin) responde con solucin si lmite-f CosteMaximo responde con ERROR finbucle funcin Contorno-DFS(nodoexp, lmite-f) responde con lista solucin, nuevo coste-f Entradas: nodo nodoexp : el nodo a expandir coste lmite-f : lmite actual de coste de f Variables: coste siguiente-f : lmite de coste-f correspondiente al siguiente contorno. Se inicializa con valor CosteMximo. // Si el coste de este nodo es mayor que el lmite actual, devolvemos su coste. si coste-f(nodoexp) > lmite-f responde con nulo, coste-f(nodoexp) // Si es un nodo meta, respondemos con una lista inicializada con el nodo. si EsMeta(nodoexp) responde con lista(nodoexp), lmite-f // En otro caso expandimos el nodo. para cada operador op //Si existe un sucesor de nodoexp con el operador op si suc = sucesor(nodoexp, op) //hacemos una llamada recursiva a Contorno-DFS (solucin, nueva-f ) = Contorno-DFS(suc, lmite-f) // Al retorno de Contorno-DFS, si tenemos solucin, aadimos a la lista //el nodo actual. si no EsVacia(solucin) InsertarLista(solucin, nodoexp) responde con solucin, lmite-f finsi // Si no hay solucin comprobamos el valor de nueva-f, y si es menor // que siguiente-f lo almacenamos como valor provisional de limite-f para // la prxima iteracin del algoritmo. siguiente-f = Minimo(siguiente-f, nueva-f) finsi //Si an quedan operadores por comprobar continuamos iterando (bucle 'para') finpara // Si llegamos hasta aqu es que desde el nodo nodoexp no se llega a una solucin // de coste menor o igual que lmite-f. Retornamos una lista vaca y el valor provisional // de lmite-f para la prxima iteracin. responde con nulo, siguiente-f

También podría gustarte