Site hosted by Angelfire.com: Build your free website today!

Principal Arriba Siguiente

Parte II

Búsqueda ciega

Problema: una meta y su correspondiente conjunto de medios que permitan lograrla.

 

Agente para la solución de problemas

Agente basado en metas que determina lo que debe hacer considerando las secuencias de acciones que le permitan alcanzar las metas de la mejor forma posible.

 

Pasos de la solución de problemas

La búsqueda es el proceso en el cual un agente, teniendo ante sí diversas opciones, debe evaluar distintas secuencias de acciones posibles que le conducen a estados cuyo valor se conoce y luego decidirse por la mejor. Una vez encontrada una solución, se procede a ejecutar las acciones que ésta recomienda.
PROBLEMA ==> BÚSQUEDA ==> SOLUCIÓN
 

Formulación de problemas

Si el agente conoce el estado en que se encuentra y el resultado producido por una de sus acciones, podrá calcular con exactitud en qué estado se encontrará luego de una determinada secuencia de acciones. El agente será capaz de calcular la secuencia de acciones que le permitirá alcanzar el estado meta. El anterior es el caso más sencillo, denominado problema de un solo estado. Si el mundo no es totalmente accesible, el agente deberá razonar en términos de los conjuntos de estados a los que puede llegar, en vez de pensar en función de estados únicos. Al anterior se lo denomina problema de estado múltiple o problema de contingencia. El agente debe calcular todo un árbol de acciones, en vez de una sola secuencia de ellas. Por lo general, cada una de las ramas del árbol se refiere a una posible contingencia que pudiera surgir. Por ello, al anterior se le denomina problema de contingencia. Muchos de los problemas del mundo real, físico, son problemas de contingencia, puesto que es imposible hacer predicciones exactas.

 

Problema bien definido

Un problema es un conjunto información que el agente utiliza para decidir lo que va a hacer. Elementos que configuran la definición de un problema:

 

Eficiencia para resolver problemas

Existen por lo menos tres formas de medir la eficiencia de una búsqueda. Primera: ¿permite encontrar una solución? Segunda: ¿es una buena solución (con un bajo costo de ruta)? Tercera: ¿cuál es el costo de búsqueda correspondiente al tiempo y memoria necesarios para encontrar una solución? El costo total de la búsqueda es la suma del costo de la ruta y el costo de búsqueda.

 

Como escoger estados y acciones

El proceso de la eliminación de detalles de una representación se denomina abstracción. Así como se abstrae en el caso de la descripción del estado, también hay que hacerlo en el caso de las acciones. Para escoger una buena abstracción hay que eliminar todos los detalles que sea posible, siempre y cuando se conserve la validez y se garantice la facilidad para emprender las acciones abstractas. Se quitan detalles innecesarios de la representación para que sea más barato encontrar la solución.

 

Un problema de ejemplo

Distribución en la VLSI (Integración a muy alta escala o Very Large Scale Integration)

El diseño de circuitos integrados (CI) es una de las más complejas tareas de diseño de la ingeniería actual. En un CI con VLSI puede haber más de un millón de compuertas; la adecuada posición y conexión de cada una de ellas es determinante para el correcto funcionamiento del circuito. Dos de las tareas más difíciles son la distribución de las celdas y el ruteo de los canales. La distribución del CI deberá ser tal que permita construirlo ocupando un mínimo de área y de longitud de conexiones con el fin de obtener un máximo de velocidad.

Meta: distribuir las celdas y rutear los canales de forma tal que se obtenga el máximo de velocidad.
Problema: se debe considerar que para obtener el máximo de velocidad se debe ocupar un mínimo de área y de longitud de conexiones en la pastilla. Se deben agrupar los componentes básicos en celdas, cada una de las cuales debe desempeñar una función bien definida y tener una configuración característica (en tamaño y forma), así como también disponer de un cierto número de conexiones para unirse a otra celda. Las celdas no deben encimarse y debe quedar espacio suficiente para conectar los alambres que van de una celda a otra. El ruteo de canales debe determinar una ruta para cada alambre, usando los espacios vacíos entre celdas.
Búsqueda de la solución: algoritmo de búsqueda por endurecimiento simulado, explicado más adelante.
 

Búsqueda de soluciones

Una búsqueda consiste en escoger una opción, haciendo de lado las demás para considerarlas posteriormente en caso de no obtener respuesta alguna mediante la primera, y verificando si ésta es un estado meta. Si no es así, se sigue probando y expandiendo hasta dar con una solución o hasta que no haya más estados que expandir. La elección del estado que se desea expandir primero se realiza a través de una estrategia de búsqueda.

Para facilitar la comprensión conviene concebir el proceso de búsqueda como si fuera la construcción de un árbol de búsqueda sobrepuesto al espacio de estados. La raíz del árbol es el nodo de búsqueda y corresponde al estado inicial. Los nodos hoja del árbol corresponden a estados que no tienen ningún sucesor, ya sea porque todavía no se han expandido o porque ya lo fueron pero generaron un conjunto vacío.

 

Una estructura de datos para el árbol de búsqueda

Nodo del árbol de búsqueda
Estado Nodo padre Operador Profundidad Costo de ruta
Estado en el espacio de estados al que corresponde el nodo Nodo del árbol de búsqueda que generó este nodo Operador que se aplicó para generar el nodo Cuántos nodos de la ruta hay desde la raíz hasta dicho nodo Costo de la ruta que va del estado inicial al nodo

También es necesario representar al grupo de nodos que están en espera de ser expandidos, a los que se conoce como el margen o frontera.

 

Estrategias de búsqueda

Buena parte de los esfuerzos invertidos en el área de búsqueda han quedado en la determinación de la estrategia de búsqueda adecuada para un problema. Evaluaremos las estrategias en función de los cuatro criterios siguientes:

 Aquí se presentan seis estrategias de búsqueda que se denominan genéricamente búsqueda sin contar con información o búsqueda ciega.

 

Búsqueda preferente por amplitud

En esta sencilla estrategia, primero se expande el nodo raíz, y luego todos los nodos generados por éste; luego sus sucesores, y así sucesivamente. En general, todos los nodos que están en la profundidad d del árbol se expanden antes que los que están en d+1.

El problema que presenta este tipo de búsqueda es, al momento de implementarla en una computadora, el consumo de memoria y no el del tiempo de ejecución, como podríamos haber creído.

Por ejemplo, para concluir una búsqueda de profundidad 6, podríamos hacernos de la paciencia para esperar los 18 minutos que lleva hacer los cálculos, pero no todos dispondríamos de 111 megabytes de memoria. Igualmente, una espera de 31 horas alcanzaría para resolver un problema de profundidad 8, pero harían falta unos 11 gigabytes de memoria. Afortunadamente hay otras estrategias de búsqueda que utilizan menos memoria.
 
Búsqueda costo uniforme

En este caso se modifica la búsqueda preferente por amplitud en el sentido de expandir siempre el nodo de menor costo (medido por el costo de ruta).

Mediante este método se puede encontrar la solución más barata, siempre y cuando el coste de la ruta no vaya disminuyendo a medida que avanzamos por la ruta. Esto tiene sentido si se considera como costo de la ruta de un nodo a la suma de los costos de los operadores que configuran la ruta. Si el costo de los operadores nunca es negativo, el costo no irá disminuyendo conforme avanzamos y mediante ésta búsqueda será posible encontrar la ruta más barata sin tener que explorar el árbol en su totalidad.

 

Búsqueda referente por profundidad

Aquí expandiremos siempre uno de los nodos que se encuentre en lo más profundo del árbol. Sólo si la búsqueda conduce a un callejón sin salida, se revierte la búsqueda y se expanden los nodos de niveles menos profundos.

En la búsqueda preferente por profundidad el volumen de memoria necesario es bastante modesto. En comparación, para una profundidad de 12 con ésta búsqueda requeriríamos 12 kilobytes en vez de los 111 terabytes para una búsqueda preferente por amplitud. También el tiempo requerido es mucho menor en este caso que en los anteriores.

La desventaja de la búsqueda preferente por profundidad es la posibilidad de que se quede estancada al avanzar por una ruta equivocada. Es por esto que cuando hay árboles de búsqueda con prolongadas o infinitas profundidades máximas hay que evitar el empleo de la búsqueda preferente por profundidad.

 

Búsqueda limitada por profundidad

En ésta búsqueda se eliminan las dificultades que conlleva la búsqueda preferente por profundidad al imponer un límite a la profundidad máxima de una ruta. De esta forma garantizamos que, de existir, se encontrará la solución; lo que no se garantiza es que la primera solución encontrada sea necesariamente la más breve; la búsqueda limitada por profundidad es completa, pero no óptima. Incluso, de escogerse un límite de profundidad excesivamente pequeño, la búsqueda ni siquiera será completa.

 
Búsqueda por profundización iterativa

La búsqueda por profundización iterativa es una estrategia que esquiva el tema de la elección del mejor límite de la profundidad probando todos los límites de profundidad posibles. Aquí se combinan las ventajas de las búsquedas preferente por profundidad y preferente por ampitud. Es óptima y completa.

Una búsqueda por profundización iterativa que comience por la profundidad 1 y continúe hasta llegar a la profundidad d expande solo 11% más nodos que una búsqueda preferente por amplitud o por profundidad hasta la profundidad d. Por lo general, este tipo de búsqueda es el método idóneo para aquellos casos donde el espacio de búsqueda es grande y se ignora la profundidad de la solución.

 

Búsqueda bidireccional

Es una búsqueda simultánea que avanza a partir del estado inicial, retrocede a partir de la meta y se detiene cuando ambas búsquedas se encuentran en algún punto intermedio. En el caso de problemas cuyo factor de ramificación es b en ambas direcciones, la búsqueda bidireccional puede ser muy útil. Se definen los predecesores de un nodo n como todos aquellos nodos cuyo sucesor es n. En algunos problemas el cálculo de los predecesores puede resultar muy difícil. Es necesario contar con una manera eficiente de verificar cada uno de los nodos nuevos para ver si ya están en el árbol de búsqueda de la otra mitad de la búsqueda.

 

Problema que satisface restricciones

Un problema que satisface restricciones (PSR) es un tipo especial de problema que satisface alguna propiedades estructurales adicionales además de los requisitos básicos de los problemas en general. En el caso de un PSR los estados se definen mediante los valores de un conjunto de variables y la prueba de meta especifica un conjunto de restricciones que los valores deben satisfacer.