Búsqueda Eduardo Morales/L. Enrique Sucar Sesión 03 Búsqueda Eduardo Morales/L. Enrique Sucar Sesión 03 Fundamentos de Inteligencia Artificial.

Slides:



Advertisements
Presentaciones similares
Ing. Victor Jaime Polo Romero
Advertisements

INGENIERIA INFORMATICA Y BUSQUEDAS CON ADVERSARIOS
Branch-and-bound Search
Búsqueda en árboles de juego
¿Por que estudiar búsquedas?
Búsqueda en un espacio de estados
INTELIGENCIA ARTIFICIAL
Damas Chinas Condori Mollehuara Miguel Montenegro Rubio Willy
Inteligencia Artificial
Inteligencia Artificial
Inteligenica Artificial I Alejandro Permingeat Inteligencia Artificial de Russell y Norving 1° edición 1996 Parte II Capítulo V.
REDES SEMANTICAS Y BUSQUEDAS
BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA
Inteligencia Artificial Búsqueda informada y exploración
ÁRBOLES BINARIOS DE BUSQUEDA
Métodos básicos de Búsqueda
Investigación de Operaciones II
Investigación de Operaciones II
Cap 4 Búsqueda Heurística
Búsqueda Informada Heurísticas.
Ajustando el Algoritmo al problema Universidad Nacional Oscar Lozano.
Inteligencia Artificial Búsqueda informada y exploración
Inteligencia Artificial Búsqueda entre adversarios
Solución de problemas por búsqueda inteligente
Tema 3. Optimización de Código
Inteligencia Artificial Resolver problemas mediante búsqueda
Tema Nº4.
Inteligencia Artificial Resolver problemas mediante búsqueda
Inteligencia Artificial Gonzalo Villarreal Farah
L. Enrique Sucar Marco López ITESM Cuernavaca
Eduardo Morales/L. Enrique Sucar
Eduardo Morales/L. Enrique Sucar
AED I. Estructuras de Datos.
Programación Lineal Entera Antonio H. Escobar Z Universidad Tecnológica de Pereira – Colombia Posgrado en Ingeniería – Maestría/Doctorado.
1 Algoritmos Elementales de Grafos Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem
Teoria de grafos.-clase 4
Clase 2, Parte 2: Métodos Tradicionales de Optimización y Búesqueda
Temas importantes para el desarrollo de la segunda parte del TPE
Trabajo presentado por: LUIS FERNANDO OBANDO ING
Capítulo 4 BUSQUEDA INFORMADA.
Solución de problemas por Búsqueda
Optimización, Búsqueda Heurística
Agentes de resoluciones d problemas Parte I. Un agente puede adoptar una meta o un propósito para satisfacer.
Estructura de Datos y Algoritmos
Diseño y análisis de algoritmos
Diplomado en Logística de Negocios
Métodos de Búsqueda Informada. Búsqueda de la mejor Ruta En esta sección no sólo nos interesa encontrar una posible ruta, sino obtener aquella ruta que.
Parte I. Estructuras de Datos.
A LGORITMO DE BÚSQUEDA POR COSTO UNIFORME Dorian López.
Sesión 6: Campos de Markov
Diseño y análisis de algoritmos
Parte II. Algorítmica. 3. Algoritmos voraces.
¿Por que estudiar búsquedas? Recordemos que la mayoría de los problemas en inteligencia artificial, involucran como tema central un proceso de búsqueda.
METODOS DE BUSQUEDA INFORMADOS CAPITULO 5
Sistemas Inteligentes Distribuidos Sistemas Inteligentes Distribuidos Sesión 13 L. Enrique Sucar / Marco López Sesión 13 L. Enrique Sucar / Marco López.
Sistemas Inteligentes Distribuidos Sistemas Inteligentes Distribuidos Sesión 8 Eduardo Morales / L. Enrique Sucar Sesión 8 Eduardo Morales / L. Enrique.
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
Matemáticas Discretas
Experimentación Numérica
Una introducción a la computación evolutiva
Inteligencia Artificial Búsqueda entre adversarios Primavera 2008 profesor: Luigi Ceccaroni.
Sesión 3: Teoría de Grafos
PROBLEMAS DE SATISFACCIÓN DE RESTRICCIONES
Parte I. Estructuras de Datos.
Toribio Sarmiento Miguel Sesarego Cruz Rosmery. Desde la aparición de las civilizaciones, los juegos han ocupado la atención de las facultades intelectuales.
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Árboles Binarios de Búsqueda (ABB)
Inteligencia Artificial
Matemáticas Discretas MISTI
Transcripción de la presentación:

Búsqueda Eduardo Morales/L. Enrique Sucar Sesión 03 Búsqueda Eduardo Morales/L. Enrique Sucar Sesión 03 Fundamentos de Inteligencia Artificial

identificación y definición del problema identificación del criterio de evaluación generación de alternativas identificación y definición del problema identificación del criterio de evaluación generación de alternativas Solución de Problemas Asociado a la inteligencia Solución de muchos problemas en IA: básicamente búsqueda y evaluación Solución de muchos problemas en IA: básicamente búsqueda y evaluación

define un espacio de estados (explícito / implícito) especifica los estados iniciales especifica los estados finales (metas) especifica las reglas que definen las acciones disponibles para moverse de un estado a otro define un espacio de estados (explícito / implícito) especifica los estados iniciales especifica los estados finales (metas) especifica las reglas que definen las acciones disponibles para moverse de un estado a otro Representación de espacio de estados

En este contexto: Representación de espacio de estados El proceso de solución de problemas = encontrar una secuencia de operaciones que transformen al estado inicial en uno final

Reinas (Q) Tablero de Ajedrez Tablero de Ajedrez A=8 B=9 C=10 Q Q A B B C C Q Q Q Q Ejemplo: problema de las 8 reinas

Para el problema de las 8 reinas podemos tener diferentes opciones: solución incremental: acercarse a la meta haciendo decisiones locales sistemática: no repetir y no excluir solución incremental: acercarse a la meta haciendo decisiones locales sistemática: no repetir y no excluir

transformar (hasta encontrar la meta) vs. construir (poco a poco) transformar (hasta encontrar la meta) vs. construir (poco a poco) Medios (espacio de estados): Posible heurística: poner una reina por renglón en un lugar que deje el mayor número de lugares sin atacar

Otras ideas Estimar qué tan cerca se está de la solución (v.g., 8-puzzle) Usar información extra (v.g., estimar distancias en base a coordenadas) Usar subestimaciones (e.g., TSP vs. árbol de expansión mínimo) Contruir una estrategia (e.g., detectar moneda falsa) Grafos AND/OR Identificar meta crítica (e.g., Torres de Hanoi)

calidad de la solución (a veces puede no importar) diferencia en complejidad entre una solución y la solución óptima en general, se busca encontrar la solución más barata calidad de la solución (a veces puede no importar) diferencia en complejidad entre una solución y la solución óptima en general, se busca encontrar la solución más barata Cómo encontramos una buena heurística? Factores a considerar:

1. Estructura simbólica que represente subconjuntos de soluciones potenciales (agenda) Qué necesitamos:

2. Operaciones/reglas que modifiquen símbolos de la agenda y produzcan conjuntos de soluciones potenciales más refinadas Qué necesitamos:

3. Estrategia de búsqueda que decida qué operación aplicar a la agenda Qué necesitamos:

Terminología: nodo, árbol, hoja, nodo-raíz, nodo-terminal, branching factor (factor de arborescencia), ramas, padres, hijos, árbol uniforme,... nodo, árbol, hoja, nodo-raíz, nodo-terminal, branching factor (factor de arborescencia), ramas, padres, hijos, árbol uniforme,...

nodos expandidos ( closed): todos los sucesores nodos explorados pero no expandidos : sólo algunos sucesores nodos generados pero no explorados ( open ) nodos no generados nodos expandidos ( closed): todos los sucesores nodos explorados pero no expandidos : sólo algunos sucesores nodos generados pero no explorados ( open ) nodos no generados Paso computacional primordial: expansión de nodos Paso computacional primordial: expansión de nodos

Nodo raíz Padre Hijos Ramas Nodos terminales/hojas Profundidad FIGURA 2 cenital FIGURAS 2 Y 3 DE UN ÁRBOL EN EL EXPLICANDO TERMINOLOGÍA

Nodo expandido (closed) Nodos generados No explorados (open) Nodo no generado Nodo explorado No expandido FIGURA 3 cenital

La estrategia de control es sistemática si: 1. no deja un sólo camino sin explorar (completo) 2. no explora un mismo camino más de una vez (eficiencia) La estrategia de control es sistemática si: 1. no deja un sólo camino sin explorar (completo) 2. no explora un mismo camino más de una vez (eficiencia) Propiedades

1. Completo : si encuentra una solución cuando ésta existe 2. Admisible : si garantiza regresar una solución óptima cuando ésta existe 1. Completo : si encuentra una solución cuando ésta existe 2. Admisible : si garantiza regresar una solución óptima cuando ésta existe Propiedades de algoritmos de búsqueda (heurísticas):

3. Dominante : un algoritmo A1 se dice que domina a A2 si todo nodo expandido por A1 es también expandido por A2 (“más eficiente que”) 4. Óptimo : un algoritmo es óptimo sobre una clase de algoritmos si domina a todos los miembros de la clase 3. Dominante : un algoritmo A1 se dice que domina a A2 si todo nodo expandido por A1 es también expandido por A2 (“más eficiente que”) 4. Óptimo : un algoritmo es óptimo sobre una clase de algoritmos si domina a todos los miembros de la clase Propiedades de algoritmos de búsqueda (heurísticas):

Sin información:  depth-first (en profundo)  breadth-first (a lo ancho) Con información:  hill climbing  beam search  best first Sin información:  depth-first (en profundo)  breadth-first (a lo ancho) Con información:  hill climbing  beam search  best first Procedimientos de Búsqueda Algún camino:

 minimax  alpha-beta  SSS*  SCOUT  minimax  alpha-beta  SSS*  SCOUT El mejor camino:  British museum  branch and bound  A*  British museum  branch and bound  A* Juegos

AB C I DEF M FIGURA 4 GRAFO

I AD BDAE ECEBB F D F BFCEACM MM C F M FIGURA 5 ÁRBOL DE BÚSQUEDA

Depth first - backtracking (LIFO) Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y añade sus sucesores al frente de la agenda Depth first - backtracking (LIFO) Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y añade sus sucesores al frente de la agenda

DEPTH-FIRST SEARCH (I) (A D) (B D D) (C E D D) (E D D) (D F D D) (F D D) (M D D) I A D B DA E E C EBB F DFBFC A CM MM C F M E FIGURA 6 FIGURA 5

depth-bound (casi todos): limitar la búsqueda hasta cierto límite de profundidad interative-deepening: explorar a profundidad progresivamente con algo de información: ordena los nodos expandidos depth-bound (casi todos): limitar la búsqueda hasta cierto límite de profundidad interative-deepening: explorar a profundidad progresivamente con algo de información: ordena los nodos expandidos árboles con caminos de profundidad muy grande Problemas: Variaciones:

Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y añade sus sucesores al final de la agenda Problemas: árboles con arborescencia muy grande Variantes: búsqueda de costo uniforme Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y añade sus sucesores al final de la agenda Problemas: árboles con arborescencia muy grande Variantes: búsqueda de costo uniforme Breadth first

I AD BDAE ECEBB F D F BFCEACM MM C F M FIGURA 5 ÁRBOL DE BÚSQUEDA

BREADTH-FIRST SEARCH (I) (A D) (D B D) (B D A E) (D A E C E) (A E C E E) (E C E E B) (C E E B B F) (E E B B F) (E B B F D F) (B B F D F B F) (B F D F B F C E) ( F D F B F C E A C) (D F B F C E A C M)4 (F B F C E A C M) (B F C E A C M M) (F C E A C M M C) (C E A C M M C M) (E A C M M C M) (A C M M C M F) (C M M C M F) (M M C M F)5

Requerimientos de tiempo y memoria para breadth-first. Factor de arborecencia = 10; 1,000 nodos/sec; 100 bytes/nodo Profund.Nodos TiempoMemoria miliseg. 100 bytes seg. 11,111 terabytes 11 kilobytes 1 megabyte 111 megabytes 11 gigabytes 1 terabyte 111 terabytes 11, seg. 18 min. 31 hr. 128 días 35 años 3500 años

Comparación en nodos buscados: Si n = profundidad del árbol b = braching factor d = profundidad de un nodo meta Comparación en nodos buscados: Si n = profundidad del árbol b = braching factor d = profundidad de un nodo meta Complejidad

depth-first: mejor caso: d nodos buscados peor caso: depth-first: mejor caso: d nodos buscados peor caso: -  n i= 0 b i -  b i n d = b n+1 - b n+1 - d b-1b-1  b n

mejor caso: -  i= 0 b i d 1 = b b d  b d 1 - breadth-first: peor caso:  i= 0 b i d = b b d+1  b d

Comparación de estrategias. b = factor de arborecencia; d = profundidad solución; m = máxima profundidad árbol; l = límite de profundidad. Criterio BreadthCostoDepth IterativeBidireccional first uniformefirstlimiteddeepening Tiempo Espacio Completo Optimo b d b d b d b d si b m b l b d b d/2 b X mX m b X l b X dX d b d/2 no si si(si l ≥ d ) cenital

Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y añade sus sucesores a la agenda ordena todos los elementos de la agenda selecciona el mejor y elimina el resto Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y añade sus sucesores a la agenda ordena todos los elementos de la agenda selecciona el mejor y elimina el resto Algoritmos con Información Hill-Climbing

Hill climbing Heurística: ve a la ciudad más cercana (I) (A D) (D B) (E C) I A D B DA E E C EBB F DFBFC A CM MM C F M E FIGURA 5 BÚSQUEDA HILL-CLIMBING (fig. 8)

Best-first Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y añade sus sucesores a la agenda ordena todos los elementos de la agenda Best-first Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y añade sus sucesores a la agenda ordena todos los elementos de la agenda

EJEMPLO BÚSQUEDA BEST-FIRST EJEMPLO BÚSQUEDA BEST-FIRST

BEST FIRST Heurística:Distancia acumulada más corta I A D I A D B D

I A D BD AE

I A D BD AE 78 9 E BF

I A D BD AE 89 E BF B CE 1211

I A D BD AE 9 E BF 10 6 B CE 1211 D E 10

I AD BD AE F BB EECE F B

I AD BD AE F BB EECE F F B M 13 8

Beam search Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y añade sus sucesores a la agenda ordena todos los elementos de la agenda y selecciona los N mejores (los demás eliminalos) Beam search Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y añade sus sucesores a la agenda ordena todos los elementos de la agenda y selecciona los N mejores (los demás eliminalos)

EJEMPLO DE BÚSQUEDA BEAM SEARCH EJEMPLO DE BÚSQUEDA BEAM SEARCH

Beam search Beam=2 I AD I AD BD X 1 2

I A D B AE X 3

I A D B E 7 E BF X 4

I A D B E E F B CE 1211 X 5

I A D B E E F B C M 6

Espacio Usado depth-first :(b-1)*n + 1 breadth-first: b hill-climbing: 1 best-first: entre b y b beam-seach: beam Espacio Usado depth-first :(b-1)*n + 1 breadth-first: b hill-climbing: 1 best-first: entre b y b beam-seach: beam d d d d n n

Mejor Solución Cuando importa el costo de encontrar una solución Si g(P) es el costo de camino o solución parcial, la solución óptima es aquella con g(P) mínima. Una forma segura: búsqueda exhaustiva y seleccionar el de menor costo (Brittish Museum)

Best-first no es admisible, pero con una pequeña variante ya lo es. Branch and Bound trabaja como best-first pero en cuanto se encuentra una solución, sigue expandiendo los nodos de costos menores al encontrado Best-first no es admisible, pero con una pequeña variante ya lo es. Branch and Bound trabaja como best-first pero en cuanto se encuentra una solución, sigue expandiendo los nodos de costos menores al encontrado

Branch and Bound Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta y los demás nodos sean de costos mayores o iguales a la meta si el primer elemento es la meta y los demás nodos son de menor o igual costo a la meta entonces acaba si no elimina el primer elemento y añade sus sucesores a la agenda ordena todos los elementos de la agenda Branch and Bound Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta y los demás nodos sean de costos mayores o iguales a la meta si el primer elemento es la meta y los demás nodos son de menor o igual costo a la meta entonces acaba si no elimina el primer elemento y añade sus sucesores a la agenda ordena todos los elementos de la agenda

EJEMPLO DE BÚSQUEDA BRANCH AND BOUND EJEMPLO DE BÚSQUEDA BRANCH AND BOUND

I AD BD AE F BB EECE F F M13 X Búsqueda Branch and Bound B 1

I AD BD AE F BB EECE F F BM AC 15 2

I AD BD AE F BB ECE F F B M AC 15 DF

Idea: no explorar caminos a los que ya llegamos por caminos más cortos/baratos El algoritmo es igual sólo hay que añadir la condición: elimina todos los caminos que lleguen al mismo nodo excepto el de menor costo Idea: no explorar caminos a los que ya llegamos por caminos más cortos/baratos El algoritmo es igual sólo hay que añadir la condición: elimina todos los caminos que lleguen al mismo nodo excepto el de menor costo Dynamic Programming

EJEMPLO CON DYNAMIC PROGRAMMING

I A D 3 4 Dynamic programming I A D B D78 X 4 1 2

I A D B AE 796 X 4 3 3

I A D B E 7 E BF X 4

I A D B E 7 E E X F 12 C 5

I A D B E 7 E F C M 6

A*: utiliza dos medidas Idea: usar estimaciones de los costos/distancias que faltan junto con los costos/distancias acumuladas A*: utiliza dos medidas Idea: usar estimaciones de los costos/distancias que faltan junto con los costos/distancias acumuladas estim(camino que falta) + + costo(camino recorrido) estim(total) =

Las estimaciones no son perfectas, por lo que se usan sub-estimaciones subestim(total) = subestim(camino que falta) + + De nuevo expande hasta que los demás tengan sub- estimaciones más grandes (v.g., subestimaciones de distancias entre ciudades pueden ser líneas rectas) De nuevo expande hasta que los demás tengan sub- estimaciones más grandes (v.g., subestimaciones de distancias entre ciudades pueden ser líneas rectas) costo(camino recorrido)

Crea una agenda de un elemento (el nodo raíz) hasta que la agenda este vacía o se alcance la meta y los demás nodos sean de costos mayores o iguales a la meta si el primer elemento es la meta y los demás nodos son de menor o igual costo a la meta entonces acaba si no elimina el primer elemento y añade sus sucesores a la agenda ordena todos los elementos de la agenda de acuerdo al costo acumulado más las subestimaciones de los que falta cenital

EJEMPLO DE BÚSQUEDA A* EJEMPLO DE BÚSQUEDA A*

I AD I A D AE A* 1 2

I A D E E F B 17.7 A

I A D E E F B 17.7 A 19.4 M 4

Comparación Interactive Deepening (IDS) con A* con dos heurísticas (h1 y h2). Resultados promedios de 100 instancias del 8-puzzle. Costo de búsquedaArborescencia d IDS A*(h ) 1 2 IDS A*(h ) efectiva

Variantes de A* Pesar la combinación de g y h: Interactive deepening A*: IDA* Aceptar un margen de error: Con memoria limitada: MA*

si el tamaño de búsqueda es pequeño (rara vez), podemos hacer búsqueda exhaustiva sin información depth-first con progressive- deepening branch and bound en general está bien dynamic programming cuando existen muchos posibles caminos con cruces A* cuando podemos tener una buena subestimación si el tamaño de búsqueda es pequeño (rara vez), podemos hacer búsqueda exhaustiva sin información depth-first con progressive- deepening branch and bound en general está bien dynamic programming cuando existen muchos posibles caminos con cruces A* cuando podemos tener una buena subestimación ¿Cuándo usamos cada una?

Todas estas estrategias tienen su equivalente para árboles AND-OR Para hacer un depth first en un árbol del tipo AND - OR Todas estas estrategias tienen su equivalente para árboles AND-OR Para hacer un depth first en un árbol del tipo AND - OR IF alguno de los nodos AND falla, realiza backtracking hasta el ultimo nodo OR IF alguno de los nodos OR falla realiza backtracking al nodo inmediato anterior IF alguno de los nodos AND falla, realiza backtracking hasta el ultimo nodo OR IF alguno de los nodos OR falla realiza backtracking al nodo inmediato anterior

En general se usan 2 funciones de estimación: f1: evalúa sobre los nodos (como antes) f2: evalúa sobre árboles f1: evalúa sobre los nodos (como antes) f2: evalúa sobre árboles

IF nodo terminal es meta: S Else: N IF nodo no-terminal es AND: S si todos son S N si alguno es N IF nodo no-terminal es OR: S si alguno es S N si todos son N IF nodo terminal es meta: S Else: N IF nodo no-terminal es AND: S si todos son S N si alguno es N IF nodo no-terminal es OR: S si alguno es S N si todos son N Para etiquetar Solución (S) / no-solución (N): Similarmente para A* existe un correspondiente AO* Similarmente para A* existe un correspondiente AO*

Búsqueda en árbol And/Or E NN N NN S SS

analizando modelos simplificados analizando modelos simplificados ¿Cómo encontrar heurísticas? soluciones por descomposición: si cada submeta se puede solucionar independientemente de las otras soluciones por descomposición: si cada submeta se puede solucionar independientemente de las otras soluciones parcialmente ordenadas usar probabilidades

busca(NodoI,NodoF) :- busca_aux([NodoI],NodoF). busca_aux([NodoF | __],NodoF). busca_aux(Agenda,NodoF) :- nva_agenda(Agenda,NAgenda), busca_aux(NAgenda,NodoF). busca(NodoI,NodoF) :- busca_aux([NodoI],NodoF). busca_aux([NodoF | __],NodoF). busca_aux(Agenda,NodoF) :- nva_agenda(Agenda,NAgenda), busca_aux(NAgenda,NodoF). Búsqueda en Prolog

% depth-first nva_agenda([N1 Agenda],NAgenda) :- expande(N1,Nodos), append(Nodos,Agenda,NAgenda). % breadth-first nva_agenda([N1 Agenda],NAgenda) :- expande(N1,Nodos), append(Agenda,Nodos,NAgenda). % depth-first nva_agenda([N1 Agenda],NAgenda) :- expande(N1,Nodos), append(Nodos,Agenda,NAgenda). % breadth-first nva_agenda([N1 Agenda],NAgenda) :- expande(N1,Nodos), append(Agenda,Nodos,NAgenda).

% best first nva_agenda([N1 Agenda],NAgenda) :- expande(N1,Nodos), append(Nodos,Agenda,AgendaInt), sort(AgendaInt,NAgenda). % best first nva_agenda([N1 Agenda],NAgenda) :- expande(N1,Nodos), append(Nodos,Agenda,AgendaInt), sort(AgendaInt,NAgenda). % hill-climbing nva_agenda([N1 Agenda],[Mejor]) :- expande(N1,Nodos), append(Nodos,Agenda,AgendaInt), sort(AgendaInt,[Mejor __]). % hill-climbing nva_agenda([N1 Agenda],[Mejor]) :- expande(N1,Nodos), append(Nodos,Agenda,AgendaInt), sort(AgendaInt,[Mejor __]).

% beam-search nva_agenda(Beam,[N1 Agenda],NAgenda) :- expande(N1,Nodos), append(Nodos,Agenda,AgendaInt), sort(AgendaInt,AgendaOrd), nthelems(Beam,AgendaOrd,NAgenda). % beam-search nva_agenda(Beam,[N1 Agenda],NAgenda) :- expande(N1,Nodos), append(Nodos,Agenda,AgendaInt), sort(AgendaInt,AgendaOrd), nthelems(Beam,AgendaOrd,NAgenda).

(defun busca (nodoI, nodoF) (busca2 (list nodoI) nodoF)) (defun busca2 (agenda nodoF) (cond ((null agenda) nil) ((equal (car agenda) nodoF)) (t (busca2 (nva_agenda (car agenda) (cdr agenda)) nodoF)))) (defun busca (nodoI, nodoF) (busca2 (list nodoI) nodoF)) (defun busca2 (agenda nodoF) (cond ((null agenda) nil) ((equal (car agenda) nodoF)) (t (busca2 (nva_agenda (car agenda) (cdr agenda)) nodoF)))) Búsqueda en Lisp

; breath-first (defun nva_agenda (nodo agenda) (append (expande nodo) agenda)) ; depth search (defun nva_agenda (nodo agenda) (append agenda (expande nodo))) ; best-first search (defun nva_agenda (nodo agenda) (sort (append (expande nodo) agenda))) ; breath-first (defun nva_agenda (nodo agenda) (append (expande nodo) agenda)) ; depth search (defun nva_agenda (nodo agenda) (append agenda (expande nodo))) ; best-first search (defun nva_agenda (nodo agenda) (sort (append (expande nodo) agenda)))

; hill-climbing (defun nva_agenda (nodo agenda) (list (car (sort (append (expande nodo) agenda))))) ; beam search (defun nva_agenda (beam nodo agenda) (nthelems beam (sort (append (expande nodo) agenda)))) ; hill-climbing (defun nva_agenda (nodo agenda) (list (car (sort (append (expande nodo) agenda))))) ; beam search (defun nva_agenda (beam nodo agenda) (nthelems beam (sort (append (expande nodo) agenda))))

Selecciona un aspecto de tu problema que puede plantearse como un problema de búsqueda. Representar como un problema de búsqueda en un espacio de estados (definir estados, meta y operadores) Expander los 3 primeros niveles del árbol Estimar complejidad Selecciona un aspecto de tu problema que puede plantearse como un problema de búsqueda. Representar como un problema de búsqueda en un espacio de estados (definir estados, meta y operadores) Expander los 3 primeros niveles del árbol Estimar complejidad TAREA