[ESCRIBIR EL NOMBRE DE LA COMPAÑÍA
Inteligencia Artificial
[ESCRIBIR EL TÍTULO DEL DOCUMENTO]
]
Métodos de Búsqueda
19 de Octubre 2009
TABLA DE CONTENIDO Página Búsqueda en Profundidad Búsqueda en Amplitud
3 6
Búsqueda preferente lo mejor
7
Búsqueda A*
8
PAG 2
BÚSQUEDA EN PROFUNDIDAD 1.- Se forma una cola de un elemento consistente en un camino o trayectoria de longitud cero que contenga solamente el nodo raíz. 2.- Mientras que el primer camino de la fila aún no termine en el nodo meta o la cola no se vacíe:
Introduccion El algoritmo de búsqueda por profundidad (depth-first search) es el algoritmo de búsqueda ciega más conocido, donde cualquier trayectoria para alcanzar un nodo meta es bueno, tomando uno de los hijos de cada nodo que se visita y avanzar a partir de ese hijo. Los otros hijos se ignoran siempre que exista la posibilidad de alcanzar el nodo meta por medio del nodo seleccionado previamente.
- Se elimina la primera trayectoria de la cola; se crean nuevas trayectorias expandiendo el primer paso a todos los vecinos del nodo terminal. - Se rechaza todas las trayectorias nuevas que contengan ciclos. - Se agregan las nuevas trayectorias, si es que las hay, al frente de la cola. 3.- Si el nodo meta es alcanzado, se menciona que hubo éxito; en caso contrario, debe notificarse que existe fracaso.
Algoritmo Para cada nodo que se visita, se expanden aquellos nodos sucesores que se encuentran más a la izquierda del árbol hasta que termine el camino, y si en tal trayectoria no es hallado el nodo meta , entonces se regresa al nodo antecesor más cercano cuyos nodos sucesores aún no han sido visitados. El procedimiento para llevar a cabo una búsqueda en profundidad consiste en los siguientes pasos:
PAG 3
BÚSQUEDA EN PROFUNDIDAD Implementación en Scheme ; Busqueda en profundidad ; se imprime el recorrido desde la raiz al nodo meta ; en el caso de que el nodo meta no se encuentre se muestra el recorrido de todos los nodos del arbol (require (lib "compat.ss")) ;arbol de prueba (define A1 '(a (b (d) (e)) (c (f) (g)))) (define encontrado #f)
(define (busqueda-profundidad SubArbol meta) (set! encontrado #f) (p SubArbol meta))
(define (p SubArbol meta) (cond ((or (empty? SubArbol)(equal? encontrado #t)) '()) ((atom? SubArbol) #f) ((raiz? SubArbol) (nodo-meta? SubArbol)(p (cdr SubArbol) meta)))
(car
SubArbol)
meta)
(cons(car
((hoja? SubArbol) (nodo-meta? (car SubArbol) meta) SubArbol) (#t (append (p (car SubArbol) meta)(p (cdr SubArbol) meta)))))
PAG 4
BÚSQUEDA EN PROFUNDIDAD Implementación en Scheme (define (nodo-meta? N meta) (if(equal? N meta) (set! encontrado #t) (set! encontrado #f)))
(define (raiz? SubArbol) (cond ((empty? SubArbol) #f) ((atom? SubArbol) #f) ((and (atom? (car SubArbol))(> (length SubArbol) 1)) #t) (#t #f)))
(define (hoja? SubArbol) (cond ((empty? SubArbol) #f) ((atom? SubArbol) #f) ((and (atom? (car SubArbol))(empty? (cdr SubArbol))) #t) (#t #f)))
Ejecución > (busqueda-profundidad A1 'e) (a b d e)
PAG 5
BÚSQUEDA EN AMPLITUD 2.- Mientras que la primera trayectoria o camino no alcance el nodo meta o la cola no esté vacía - Eliminar la primera trayectoria de la cola; crear nuevas trayectorias expandiendo el primer paso a todos los vecinos del nodo terminal. - Rechazar las trayectorias nuevas con ciclos.
Introducción Otro método ciego es la búsqueda por amplitud. Es muy parecida a la búsqueda en profundidad con la diferencia de que los nuevos elementos se añaden al final de la cola. En este tipo de búsqueda se expande un nodo determinado a un solo nivel, creando así una lista de todos los nodos hijos del siguiente nivel. Los nodos son visitados y generados por niveles.
- Añadir las nuevas trayectorias, si es que hay, al final de la cola. 3.- Si se halla el nodo meta, mencionar que hubo éxito, de lo contrario, notifique el fracaso.
Algoritmo Básicamente, la búsqueda por amplitud recorre todos los nodos de cierto nivel y si aún no se halla el nodo meta o termina el recorrido, entonces se realiza la expansión de cada nodo al siguiente nivel y así sucesivamente hasta alcanzar el nodo meta o terminar de recorrer todos los nodos del árbol. La búsqueda en amplitud consiste en los siguientes pasos: 1.- Se forma una cola de un solo elemento que consiste en una trayectoria de longitud cero que contenga sólo al nodo raíz.
PAG 6
BÚSQUEDA PREFERENTE POR LO MEJOR
Introducción
con mejor evaluación.
Los dos métodos de búsqueda anteriores poseen la particularidad de buscar una trayectoria sin tener alguna información, sin embargo, existen otros métodos de búsqueda que son respaldados con información y que encuentran la trayectoria óptima para alcanzar el nodo meta. En esta parte se hablará de uno de los tipos de búsqueda con información conocidos como búsqueda preferente por lo mejor los cuales buscan soluciones de bajo costo.
De entre los tipos de búsqueda preferente destacan dos:
Búsqueda Avara
Búsqueda A*
En la siguiente sección mencionaremos el algoritmo de búsqueda preferente A*.
Algoritmo La búsqueda preferente por lo mejor se basa en decidir cuál nodo será expandido a partir de la información obtenida de una función evaluadora. Tal función retorna un número que representa lo que es deseable o mejor. Los nodos se ordenan de manera tal que se expande primero aquél
PAG 7
BÚSQUEDA A* - Se elimina la primera trayectoria de la cola; se crean nueva trayectorias expa diendo la primera a todos los vecinos del nodo terminal. - Se rechazan todas las trayectorias nuevas con ciclos. - Si dos o más trayectorias llegan al mismo nodo, se eliminan todas aquellas trayectorias que no alcancen el nodo común con el costo mínimo.
Introducción Entre los métodos de búsqueda preferente por lo mejor destaca la búsqueda A*. Es una búsqueda de ramificación y cota con una estimación de la distancia restante. Este tipo de búsqueda utiliza una función ƒ como la función de evaluación que reprsenta el costo estimado de la solución más barata pasando por un nodo n, y una función h aceptable el cual reduce al mínimo el costo hacia la meta. De entre todos los algoritmos, la búsqueda A* es completa, óptima y eficiente.
- Se ordena la fila completa según la suma de la longitud de trayectoria y una estimación del límite inferior del costo restante, con las trayectorias de menor costo al frente. 3.- Si el nodo meta se encuentra, mencionar que hubo éxito, si no, notificar el fracaso.
Algoritmo 1.- Se forma una cola de un elemento consistente en una trayectoria de longitud cero que contenga sólo al nodo raíz. 2.- Mientras que la primera trayectoria de la cola no concluya en el nodo meta o la cola no quede vacía:
PAG 8
BIBLIOGRAFÍA 1.– Patrick Henry Winston, Inteligencia Artificial, 3ª edición, Addison-Wesley Iberoamericana, 1994. 2.– Pedro Popik, Métodos de búsqueda basados en información, Angelfire [en línea], http:// www.angelfire.com/falcon/popikpe/cap_cuatro.htm, consultado el 6 de octubre del 2009.
PAG 9