Sie sind auf Seite 1von 6

Estrategias de bsqueda

La generacin de subconjuntos involucra una estrategia de bsqueda. Para atributos


existen subconjuntos, por lo que se requiere de una buena estrategia de bsqueda.
Para esto se requiere especificar el punto(s) inicial(es), que afecta la direccin de la
bsqueda. Si se empieza con un conjunto de atributos vaco y se van aadiendo (forward
selection), si se empiezan con todos los atributos y se van eliminando (backward
elimination) o si se aaden y quitan atributos (bi-direccional).
El punto inicial tambin puede ser un conjunto de atributos aleatorio.
Dado un criterio de evaluacin, se pueden realizar una gran cantidad de estrategias de
bsqueda. Por ejemplo, best-first o , aunque impone fuertes limitaciones de memoria,
beam-search, para controlar la cantidad de memoria, hill climbing, etc.
Dentro de estas estrategias existen mtodos basados en branch-&-bound para no considerar
todos los subconjuntos. Sin embargo, en general requiere que se especifique de entrada un
nmero de atributos a seleccionar.
Estos algoritmos en general pueden crear una gran cantidad de subconjuntos, por lo que
muchas veces se prefiere usar una estrategia greedy o hill-climbing.
Muchas de las estrategias de bsqueda siguen algunas de las tres opciones:
forward selection: se van incorporando progresivamente las variables. Es
computacionalmente ms eficiente, pero tiende a producir peores subconjuntos, ya
que se toman decisiones locales.
backward selection: se van eliminando progresivamente las variables. Es
computacionalmente ms caro pero puede considerar variables dbiles
individualmente, pero fuertes cuando se consideran en conjunto.
Bi-directional selection: Se pueden aadir o eliminar atributos partiendo de un
subconjunto inicial. Una alternativa es aadir (o quitar) atributos en cada paso y
eliminar (aadir) atributos en el siguiente paso ( ).
Tambin se puede realizar una bsqueda aleatoria. Se empieza con un punto inicial
generado aleatoriamente y se ah se continua. Se puede continuar desde ah usando una
estrategia greedy y repetir ese proceso varias veces (random restart hill-climbing), se puede
introducir aleatoriedad a la bsqueda (e.g., simulated annealing), etc.
Se puede usar alguna de las diversas variantes de bsqueda y optimizacin que existen tales
como local search, tabu search, ant colony optimization, algoritmos genticos, swarm
optimization, etc.
En general, podemos dividir a las estrategias de generacin de candidatos en: (i) completos
(el que sea completo no necesariamente implica que sea exhaustivo), (ii) heursticos, y (iii)
aleatorios.
Algoritmos de bsqueda
En los algoritmos de bsqueda de caminos las estructuras de datos ms adecuadas para
representar el espacio de bsqueda son los grafos y los rboles.
Clasificacin de algoritmos
Segn la bsqueda los algoritmos se pueden clasificar en dos clases:
Los mtodos off-line
Este mtodo sigue el siguiente esquema, primero calculan el plan o ruta de mnimo coste de
un problema mediante la bsqueda en el espacio de estados y luego ejecutan el plan
realizando las acciones o secuencia de operaciones en el entorno. Este esquema, a menudo
considerado de forma implcita, supone que ejecutar la solucin en el mundo real es un
proceso directo y no presenta ninguna dificultad, o sea, primero se realiza una bsqueda
completa en el espacio de estados y luego se ejecuta una secuencia de acciones u
operaciones en el entorno. En la siguiente figura se muestra su funcionamiento. Un ejemplo
tpico de aplicacin de los mtodos off-line es la bsqueda de rutas. La bsqueda de rutas
consiste en encontrar una ruta en un grafo desde el nodo inicial hasta el nodo objetivo.
Los mtodos on-line
En cambio, los mtodos on-line intercalan planificacin (mediante bsqueda local) y
ejecucin del plan mientras resuelven un problema. Debido a la propiedad on-line, los
mtodos tienen una gran flexibilidad para operar en entornos desconocidos y dinmicos.
Adems, no requieren conocer a-priori todo el espacio de estados, pueden adaptarse a
objetos cambiantes y operar en entornos no determinados. Este modo de operacin
denominado on-line da lugar a los algoritmos de bsqueda en tiempo real. En la siguiente
figura se representa el modo de operar de la bsqueda on-line.
Criterios para evaluar las estrategias de bsqueda
Cada algoritmo de bsqueda de caminos tiene una serie de caractersticas que lo identifican
los cuales son:
Completitud.
Complejidad en tiempo.
Complejidad en espacio.
Optimizacin.
Anlisis de algoritmos
Depth-First o bsqueda en profundidad (LIFO)
Esta bsqueda se centra en expandir un nico camino desde la raz. Siempre se expande el
nodo ms profundo en la frontera actual. En el caso de llegar a un callejn sin salida se
retrocede hasta el nodo ms cercano (siguiendo al nodo padre) donde se puede tomar una
rama alternativa para poder seguir avanzando. Se puede implementar, mediante el
Algoritmo General, considerando la lista, como una pila (cuyas operaciones funcionan en
forma LIFO). De esta manera el siguiente nodo a expandir siempre ser el ltimo que se
haya colocado en la pila de ese nivel, garantizando esto que la expansin vaya aumentando
en la profundidad de los nodos. Es comn aplicar esta estrategia mediante un algoritmo
recursivo que recorra el rbol en Pre-Orden. Tiene modestos requisitos de memoria. Slo
necesita almacenar un camino, junto con los hermanos restantes no expandidos en cada
nodo. De aqu surge otro importante algoritmo, el backtracking
Breadth-First search (bsqueda a lo ancho)
La bsqueda en anchura (BFS o Breadth-First search) es un algoritmo para recorrer o
buscar elementos en un grafo (usado frecuentemente sobre rboles). Intuitivamente, se
comienza en la raz (eligiendo algn nodo como elemento raz en el caso de un grafo) y se
exploran todos los vecinos de este nodo. A continuacin para cada uno de los vecinos se
exploran sus respectivos vecinos adyacentes, y as hasta que se recorra todo el rbol.
Formalmente, BFS es un algoritmo de bsqueda sin informacin, que expande y examina
todos los nodos de un rbol sistemticamente para buscar una solucin. El algoritmo no usa
ninguna estrategia heurstica. Este algoritmo de bsqueda en anchura recorre todos los
nodos de un rbol de manera uniforme. Expande cada uno de los nodos de un nivel antes de
continuar con el siguiente, este algoritmo tiene como ventaja que, al expandir los nodos de
forma uniforme garantiza encontrar la mejor solucin de un problema de costo uniforme
antes que ninguna, de manera que apenas se encuentre una solucin, puede devolverse,
porque ser la mejor, o bien expandir todo el nivel en el cual se hubiere encontrado, para
obtener todas las soluciones posibles. Su principal desventaja es el alto orden de
complejidad computacional, que hace que, de no mantenerse muy limitados los parmetros
del problema, crezcan rpidamente los requerimientos y se vuelvan inaceptables y que
adems requiere de mucha memoria. Bsicamente tiene que guardar la parte completa de la
red que est explorando. Tambin el tiempo es un factor importante. Fundamentalmente
problemas de bsqueda de complejidad exponencial no se pueden resolver, salvo para sus
instancias ms pequeas. La forma de implementarlo es poner los sucesores de cada nodo
al final de una cola o agenda, por lo que OPEN (lista de nodos por explorar) se implementa
como un stack.
Bsqueda bidireccional
En la bsqueda bidireccional se llevan a la vez dos bsquedas, una descendente desde el
nodo inicial y otra ascendente desde el nodo meta. Al menos una de estas dos bsquedas,
debe ser en anchura para que los recorridos ascendente y descendente puedan encontrarse
en algn momento. (Tener en cuenta que si tanto el recorrido descendente como el
ascendente fueran en profundidad, podra pasar que nunca se cruzaran o encontraran, con lo
cual no tendra sentido realizar la bsqueda bidireccional). Por lo dems este mtodo no
tiene ninguna dificultad, naturalmente, se podra realizar una bsqueda descendente del
nodo meta en anchura y una bsqueda ascendente del nodo inicial en profundidad,
alternando la expansin de los nodos entre un tipo de bsqueda y el otro. Cuando se llegue
a un nodo que ya haba sido explorado con el otro tipo de bsqueda, el algoritmo acaba. El
camino solucin es la suma de los caminos hallados por cada bsqueda desde el nodo
mencionado hasta el nodo inicial y hasta el nodo meta.
Bsqueda de profundidad limitada
Para evitar caer en caminos de profundidad muy grande, a la mayora de los algoritmos que
usan depth-first se les impone un lmite de profundidad mxima. Por tanto es similar a la
estrategia de Primero en Profundidad, pero se trata de eliminar el problema de que se
puedan generar rboles ilimitados. Para ello se establece un lmite L a la profundidad del
rbol. Todo nodo cuya profundidad sea L, no es expandido (se considera sin sucesores). El
problema que puede pasar es si escogemos un valor de L menor que la profundidad del
objetivo, en cuyo caso no llegaramos a la solucin. Si se sabe la profundidad de alguna
meta, el algoritmo puede ser completo, pero sigue sin ser ptimo.
Algoritmo DFID (primero en profundidad con profundidad iterativa)
El algoritmo de bsqueda DFID (Depth-First Iterative-Deepening) fue introducido por
primera vez cuando Slate y Atkin presentaron un programa de ajedrez. El algoritmo
combina la estrategia de Primero en Profundidad con la de Profundidad Limitada,
comenzando con lmite igual a 0, aumentndolo de 1 en 1 hasta encontrar el objetivo.
Combina las ventajas de las dos estrategias Para asegurar el completamiento del algoritmo,
el DFID introduce un lmite de profundidad en cada una de sus iteraciones. El desarrollo
del algoritmo es el siguiente: En cada iteracin el algoritmo realiza una bsqueda limitada
en profundidad. Si en dicha iteracin no se alcanza la solucin ptima, entonces se
incrementa dicho lmite en una unidad de profundidad y se vuelve a realizar la bsqueda
Backtracking simple (Vuelta atrs) = Fuerza bruta
Backtracking es una versin de Depth-First. El trmino "backtrack" fue acuado por
primera vez por el matemtico estadounidense D. H. Lehmer en los aos 1950s. Es un
mtodo de bsqueda en profundidad que termina encontrando la primera solucin sin
embargo garantiza encontrar la solucin de mnimo coste (ptima), el problema es el
tiempo que toma en hacerlo. Su gran desventaja es el no poder incluir informacin para
evaluar cual de los sucesores es el mejor. A veces los algoritmos de tipo backtracking se
usan para encontrar una solucin, pero otras veces interesa que las revisen todas (por
ejemplo, para encontrar la ms corta) .Este mtodo no utiliza informacin heurstica para
elegir el sucesor a expandir aunque existe una variante llamada Backtracking Ordenado que
s utiliza informacin heurstica. Es un mtodo sistemtico que itera a travs de todas las
combinaciones posibles del espacio de bsqueda. Es una tcnica general que debe ser
adaptada para cada aplicacin particular. El algoritmo backtracking se aplica en la
implementacin de los lenguajes de programacin, tales como, lenguaje de programacin
Planner y Prolog. Adems, se usa en los anlisis sintcticos de los compiladores.
Bsqueda en profundidad Branch and Bound (Ramificacin y Lmite)
Este mtodo busca una solucin como en el mtodo de backtracking, pero cada solucin
tiene asociado un costo y la solucin que se busca es una de mnimo costo llamada ptima.
Este mtodo imagina el espacio de bsqueda como un rbol de decisin, en cada paso del
algoritmo, se toma la decisin de podar las ramas del rbol que parezcan menos
prometedoras. Branch and Bound procede de la forma siguiente: se establece una cota
inferior a la posible solucin (o superior, si se trata de minimizar), se va siguiendo una rama
del rbol, hasta que se encuentra que la solucin parcial es menor que esa cota, en ese caso,
se descarta la rama completa. Adems de ramificar una solucin padre (branch) en hijos, se
trata de eliminar de consideracin aquellos hijos cuyos descendientes tienen un costo que
supera al ptimo buscado acotando el costo de los descendientes del hijo (bound), o sea,
utiliza la poda para eliminar las ramas del rbol que no conducen a una solucin ptima. La
forma de acotar es un arte que depende de cada problema. La acotacin reduce el tiempo de
bsqueda de la solucin ptima al "podar" (pruning) los subrboles de descendientes
costosos. Puede seguir un recorrido en anchura (estrategia FIFO), profundidad (estrategia
LIFO) o clculo de funciones de coste para seleccionar el nodo ms prometedor. Es un
algoritmo muy dependiente de la funcin heurstica. En este algoritmo se manejan trminos
cmo:
Nodos vivos, que no es ms que un nodo factible y prometedor del que no se han
generado todos sus hijos.
Nodo muerto, es aquel del que no se generan ms hijos porque ya se han generado todos
sus hijos o no es factible ni prometedor.
Nodo en expansin, es aquel del que se estn generando todos sus hijos en ese instante.
El mtodo funciona de la siguiente forma:
Se selecciona un nodo del conjunto de nodos vivos.
Se construyen los posibles nodos hijos del nodo seleccionado anteriormente
Se eliminan algunos de los nodos creados anteriormente reduciendo as el espacio de
bsqueda.
El mtodo finaliza cuando se encuentra la solucin o cuando se terminan los nodos vivos.
Algoritmo de Dijkstra
El algoritmo de Dijkstra, tambin llamado algoritmo de caminos mnimos, es un algoritmo
para la determinacin del camino ms corto dado un vrtice origen al resto de vrtices en
un grafo dirigido y con pesos en cada arista. Su nombre se refiere a Edsger Dijkstra, quien
lo describi por primera vez en 1959. Este algoritmo permite computar el camino de costo
mnimo de un nodo dado al resto de los nodos de un grafo. El algoritmo de Dijkstra utiliza
una tcnica de diseo de algoritmos conocida como greedy (tambin llamados algoritmos
vidos). Su correcto funcionamiento requiere que los costos asociados a los arcos sean no
negativos. La idea subyacente en este algoritmo consiste en ir explorando todos los caminos
ms cortos que parten del vrtice origen y que llevan a todos los dems vrtices, cuando se
obtiene el camino ms corto desde el vrtice origen al resto de vrtices que componen el
grafo, el algoritmo se detiene. El algoritmo es una especializacin de la bsqueda de costo
uniforme, y como tal, no funciona en grafos con aristas de costo negativo (al elegir siempre
el nodo con distancia menor, pueden quedar excluidos de la bsqueda nodos que en
prximas iteraciones bajaran el costo general del camino al pasar por una arista con costo
negativo).
El algoritmo de bsqueda A*
Se clasifica dentro de los algoritmos de bsqueda en grafos. Presentado por primera vez en
1968 por Peter E. Hart, Nils J. Nilsson y Bertram Raphael, A* es un algoritmo de bsqueda
heurstica y es ptimo siempre y cuando no se sobreestime la heurstica. Este es un
algoritmo de bsqueda de caminos para encontrar el camino ms corto entre dos nodos,
mientras intenta evitar obstculos. El algoritmo A* adems de encontrar el nodo objetivo,
nos asegura que es el camino ms corto. A* mantiene dos estructuras de datos auxiliares,
que podemos denominar abiertos, implementado como una cola de prioridad (ordenada por
el valor f(n) de cada nodo), y cerrados, donde se guarda la informacin de los nodos que ya
han sido visitados. En cada paso del algoritmo, se expande el nodo que est primero en
abiertos, y en caso de que no sea un nodo objetivo, calcula la funcin f(n) de todos sus
hijos, los inserta en abiertos, y pasa el nodo evaluado a cerrados. El ciclo en el algoritmo
A* consiste en:
Buscar el nodo ms prometedor.
Analizar a sus nodos adyacentes.
Poner el nodo analizado en la lista de cerrados.
El algoritmo es una combinacin entre bsquedas del tipo primero en anchura con primero
en profundidad, mientras que h(n) tiende a primero en profundidad, g(n) tiende a primero
en anchura. De este modo, se cambia el camino en la bsqueda cada vez que existen nodos
ms prometedores.

Das könnte Ihnen auch gefallen