Posts Tagged ‘Busqueda’
Tipos de Busqueda, Busqueda Heuristica
Tipos de búsqueda según estrategias de control:
ALGORITMO
Disponemos de información segura sobre qué operación aplicar
BUSQUEDA EXHAUSTIVA (A CIEGAS)
Exploración del árbol de búsqueda sistemáticamente pero sin información
BUSQUEDA HEURÍSTICA (INFORMADA)
información sobre el problema (información del dominio) que permite reducir la búsqueda
Del griego “heuriskein” que significa descubrir o encontrar
La heurística es una ayuda para guiar el proceso de búsqueda.
En general, con la utilización de heurísticas no se van a conseguir
siempre resultados óptimos (la mejor solución), pero si se van a conseguir resultados de buena calidad en un tiempo razonable.
Se utilizan en problemas complejos donde aparece el problema de la explosión combinatoria. En este tipo de problemas, los algoritmos de búsqueda exhaustiva tienen costos inaceptablemente altos (sólo son válidos para problemas sencillos).
Usar información “heuristica” para “adivinar” cuál nodo expandir
la heurística aparece bajo la forma de una función de evaluación basada en la información específica para el dominio o contexto relacionado con el problema
el problema de búsqueda se puede considerar como la maximización o minimización de una función.
La función de evaluación nos proporciona una manera de evaluar un nodo “localmente” basado en una estimación del costo de llegar desde el nodo actual al nodo meta.
Problemas con la Heurística
la heurística suele ser poco certera - problema abierto
puede no encontrar la mejor respuesta - superado por algoritmo A*
La heurística es una técnica la cual produce resultados, pero no siempre.
Mucho de lo que hacemos en la vida cotidiana involucra soluciones heurísticas a los problemas. Usualmente trabaja, o usualmente trabaja lo suficientemente bien, y cuando no trabaja, entonces se trata el problema de otra forma.
La palabra heurística, no solo describe los casos donde una solución podría no ser encontrada, sino que describe los casos donde deseamos encontrar la mejor solución.
La heurística podría ayudar a encontrar soluciones que pueden ser buenas, pero talvez no la mejor solución. Obviamente la medida de cuan bueno es y la evaluación de las técnicas heurísticas, es relativa al dominio, y a la tarea específica que la solución del problema será aplicada al dominio.
Plateamiento de problemas en IA
A continuación se plantean tres soluciones diferentes del problema de tres en raya analizando la conveniencia de cada una. Cada una de las soluciones plantea un enfoque diferente, pero solo la última simula la forma en que una computadora lo resolveria de forma inteligente:
Solución 1:
- Una primera solución directa a este juego podría ser la de almacenar en un vector las 19.693 posibilidades de un tablero de 3 x 3 con tres valores posibles en cada casilla (vacío-X-O), así como las correspondientes jugadas sucesoras.
- Para realizar una jugada, bastaría con acceder a la posición del tablero actual y la jugada sucesora correspondiente.
- Las desventajas de este eficiente programa son bastante obvias:
- Necesita gran cantidad de memoria; alguien debe realizar el pesado trabajo de introducir todas las jugadas y sus sucesoras; y el juego no se puede ampliar, por ejemplo a tres dimensiones.
Solución 2:
- El programa posee una estrategia para cada turno de jugador.
- Analiza el posible triunfo a partir de un estado del tablero dado.
- Aunque es menos eficiente que la solución anterior en términos de tiempo, tiene la ventaja que es más eficiente en términos de espacio.
- Su estrategia es más fácil de comprender y realizar cambios, aunque el programador debe comprender la totalidad de la estrategia de antemano.
- Además, no es posible generalizar parte del conocimiento del programa hacia un dominio distinto, como tres en raya 3D.
Solución 3:
- Una estructura contiene el tablero actual, así como una lista de posiciones del tablero que podrían ser el próximo movimiento, y una estimación de la probabilidad de que esa jugada lleve a la victoria.
- Para decidir la siguiente jugada se tienen en cuenta las posiciones de tablero que resultan de cada movimiento posible.
- Se decide la posición que corresponde a la mejor jugada, considerando si la jugada produce la victoria, y en caso contrario considerando todos los movimientos que el oponente puede realizar asumiendo que éste elegirá el peor para nosotros.
- El algoritmo inspecciona varias secuencias de movimientos intentando maximizar la probabilidad de victoria.
- Necesita mucho más tiempo que los demás, ya que debe realizar una búsqueda en un árbol de posibilidades antes de realizar cada movimiento. Sin embargo, es superior a las demás soluciones pues podría ser ampliado para manipular juegos más complicados.
- Además, puede aumentar su potencia usando conocimiento sobre el juego, por ejemplo, en lugar de considerar todos los posibles movimientos considerar solo un subconjunto siguiendo algún criterio razona
ble.
Este último es un ejemplo del uso de una técnica de IA.
Dado este ejemplo, podemos definir tres parámetros importantes para poder resolver un problema usando IA:
- Búsqueda: proporciona una forma de resolver problemas en los que no se dispone de un método directo
- Uso del conocimiento: proporciona una forma de resolver problemas complejos explotando las estructuras existentes entre los objetos involucrados
- Abstracción: proporciona una forma de separar aspectos y variaciones importantes de aquellos otros sin importancia, y que en caso contrario podrían colapsar el proceso.
Más adelante describiremos en detalle cada uno de estos elementos.