Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidadiii Ia
Unidadiii Ia
Inteligencia Artificial
Unidad III:
Solución de problemas por búsqueda
19 de enero de 2009
Resumen
La resolución de problemas se describe a menudo como una búsqueda en un enorme laberinto de posibili-
dades, un laberinto que describe el entorno. Para resolver existosamente un problema se requiere explorar
el laberinto de forma selectiva y con ello reducirlo a proporciones manejables. Las máquinas aún no pueden
reducir automáticamente los problemas a proporciones manejables, es por ello que los seres humanos tienen
que formular los problemas y proponer estrategias para encontrar su solución.
En esta unidad se tratará temas relacionados con la búsqueda en el espacio de estados(que es como
el laberinto de posibilidades). En algunos tipos de problemas lo importante es encontrar una solución,
aunque esta no sea la mejor debe ser una solución aceptable, en otros casos es necesario encontrar el
camino que nos lleva a esa solución. De manera general, cualquiera de las estrategias de búsqueda que se
tratan en esta unidad pueden resolver ambos requisitos, sólo se requieren pequeños ajustes en sus métodos
generales.
La mayoría de las estrategias de búsqueda que son tratadas en esta unidad son enfocadas a ejemplos
para maximizar la comprensión de las técnicas y de esta manera pueda ser llevarlo rápidamente a la
implementación.
Las estrategias de búsqueda clásicas que se abordarán son: búsqueda en profundidad, búsqueda en
amplitud, búsqueda con retroceso, búsqueda primero el mejor y A*, además de Minimax.
Índice general
Índice de Tablas II
1. Introducción 1
4. Búsqueda en profundidad 11
4.1. Evaluación de una búsqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2. La técnica de búsqueda primero en profundidad . . . . . . . . . . . . . . . . . . . . . . . . 12
5. Búsqueda en amplitud 16
5.1. La técnica de búsqueda primero en amplitud . . . . . . . . . . . . . . . . . . . . . . . . . 16
8. Búsqueda A* 23
8.1. La técnica de búsqueda A-Estrella(A*) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
9. Búsqueda Minimax 25
9.1. La técnica de búsqueda Minimax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Conclusión 27
Apéndices 29
i
Índice de Tablas
ii
Índice de figuras
6.1. Representación de la estructura de árbol para solución por búsqueda con retroceso . . . . . . . . 19
7.1. Representación de la estructura de cola con prioridad del problema del agente de viajes . . . . . 21
7.2. Representación de la estructura de cola con prioridad del problema del agente de viajes al agregar
los estados sucesores de la terminal Salina Cruz . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.3. Continuación de la representación de la estructura de cola con prioridad del problema del agente
de viaje para llegar a Ciudad Reynosa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
8.1. Representación de la estructura de cola con prioridad del problema del agente de viajes para la
estrategia A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
8.2. Representación de la estructura de cola con prioridad del problema del agente de viajes al agregar
los estados sucesores de la terminal Salina Cruz para la estrategia A* . . . . . . . . . . . . . . 24
8.3. Continuación de la representación de la estructura de cola con prioridad del problema del agente
de viaje para llegar a Ciudad Reynosa para la estrategia A* . . . . . . . . . . . . . . . . . . . 24
9.1. Un árbol de juegos de dos capas. Los nodos ∆ son nodos MAX, en los que le toca mover a MAX,
y los nodos ∇ son nodos MIN. Los nodos terminales muestran los valores de utilidad para MAX;
los otros nodos son etiquetados por sus valores minimax. El mejor movimiento de MAX en la raíz
es a1 , porque conduce al sucesor con el valor minimax más alto, y la mejor respuesta de MIN es
b1 , porque conduce al sucesor con el valor minimax más bajo. . . . . . . . . . . . . . . . . 26
iii
Sección 1
Introducción
Por ejemplo, imagine que ha perdido las llaves de su coche. Sabe que están en algún lugar de la casa,
cuyo plano esta en la figura 1.1
La X indica que usted está en la puerta principal. Al empezar su búsqueda primero comprueba la
sala de estar. Luego va por el salón hacia el primer dormitorio, después vuelve al salón y va al segundo
dormitorio, y vuele de nuevo al salón para ir al dormitorio principal. Como aún no ha encontrado las
llaves, vuelve hacia atrás pasando por la sala de estar hacia la cocina, donde encontrará sus llaves. La
figura 1.2 presenta un grafo del camino que se ha seguido.
El hecho de que pueda representar la solución a esta clase de problemas en forma de grafos es importante
1
Figura 1.2: Grafo del camino solución para encontrar las llaves perdidas
porque le ofrece una forma sencilla de observar cómo funcionan las diferentes técnicas de búsqueda [6].
Para entender este tema es necesario tener presente las siguientes definiciones:
Un estado es la representación de un problema en un instante dado. Para definir el espacio de
estados o espacio de búsqueda(El conjunto de todos los nodos) no es necesario hacer una exhaustiva
enumeración de todos los estado válidos, sino que es posible definirlo de manera más general.
El estado inicial consiste en uno o varios estados en los que puede comenzar el problema. El estado
objetivo o estado meta consiste en uno o varios estados finales que se consideran solución aceptable.
Las reglas describen las acciones u operadores que posibilitan un pasaje de estados. Podríamos decir
que una regla tiene una parte izquierda y una derecha. La parte izquierda determina la aplicabilidad de
la regla, es decir, describe los estados a los que puede aplicarse la regla. La parte derecha describe la
operación que se lleva a cabo si se aplica la regla(acción).
La heurística es la información acerca de la posibilidad de que un nodo específico sea mejor para
intentar la próxima elección que cualquier otro nodo.
El camino solución es el grafo dirigido de los nodos visitados que nos llevan a la solución.
Por ejemplo, en el problema de jugar al ajedrez:
Espacio de estados: La totalidad de tableros que se pueden generar en un juego de ajedrez;
`
Estado Inicial: Puede ser el tablero de 8 x 8 donde cada cuadro contiene un símbolo(p.ej. corre-
sponde a Torre) de acuerdo a las piezas situadas.
Objetivo o estado final: Cualquier posición de tablero en la que el contrario no puede realizar ningún
movimiento legal y su rey esté amenazado;
Reglas: Son los movimientos legales, que pueden describirse mediante una parte patrón para ser
contrastado con la posición actual del tablero y otra parte que describe el cambio que debe producirse
en el tablero. Dado que escribir todas las posiciones del tablero, las reglas deben escribirse de manera
más general posible.
Heurística: Podemos elegir tableros en donde el contrincante tenga el menor número de piezas
desplegadas.
Camino solución: El conjunto de movimientos para llegar al estado final.
La búsqueda de una solución no es tan simple como empezar en el principio y seguir su camino hasta
su conclusión. En un caso extremadamente simple de las llaves perdidas, este método de búsqueda es una
buena manera de llevarlo a cabo. No obstante, en la mayoría de los problemas en los que quiera usar
una computadora para hallar la solución, la situación es diferente. Generalmente, usará una computadora
para resolver problemas en los que le número de nodos en el espacio de búsqueda sea muy grande y, como
2
el espacio de búsqueda va creciendo, de igual modo se incrementarán el número de diferentes caminos
posibles hasta la meta. El problema estriba en que cada nodo añadido al espacio de búsqueda añade más
de un camino; por lo que el número de caminos hasta la meta se incrementará rápidamente con cada
nuevo nodo(para mejor explicación véase Explosión combinatoria en el anexo ).
Debido a que el número de posibilidades crece tan rápidamente, tan sólo los problemas más simples
se prestan a búsquedas exhaustivas( Una búsqueda exhaustiva examina todos los nodos). Mientras que la
técnica exhaustiva, o de fuerza bruta, teóricamente siempre funciona, normalmente no es práctica porque
consume o demasiado tiempo o demasiado recursos de computación, e incluso ambos. Por esa razón, otras
técnicas de búsqueda han sido desarrolladas.
En la primera sección veremos los puntos básicos para formular y resolver problemas relacionados con
la Inteligencia Artificial. Continuaremos con algunos problemas de juego con los cuales se han probado la
eficiencia y eficacia de diversos algoritmos de IA, así como también algunos problemas reales en los que
se haya aplicado las técnicas de búsqueda en IA. En las siguientes seis secciones veremos las principales
técnicas de búsqueda informada y no informada que existen en la literatura. En la última sección se dará
una breve conclusión de la unidad.
3
Sección 2
Formulación y resolución de
problemas.
4
2.2. Análisis del problema
Luego de definir el problema formalmente, el segundo paso en la resolución del problema es el análisis
del mismo. A fin de poder elegir el método más apropiado para resolver un problema particular, es
necesario analizar distintas cuestiones que afectan a la definición del mismo y a las caracterśticas de la
solución deseada. Existen varias preguntas a responder acerca del problema:
5
Consecuencia cierta: es posible planificar una secuencia de movimientos estando seguros del resultado
a obtener. Se puede realizar una planificación para generar operadores que garanticen llegar a la
solución.
Consecuencia incierta:no es posible planificar con certeza pues no se sabe que ocurrirá luego del
siguiente movimiento. Sin embargo, se puede realizar una planificación para generar operadores que
tengan una buena probabilidad de llegar a la solución.
Los problemas más difíciles de resolver son los no recuperables de consecuencia incierta. Por ej. el
control del brazo de un robot: es de consecuencia incierta pues alguien puede interponer un objeto en la
ruta del brazo, se puede atascar, etc.
¿Una solución es buena de manera absoluta o relativa? La solución de un problema puede consistir en
encontrar:
Algún camino: sólo importa encontrar una solución sin importar si existen otros caminos que con-
ducen a la solución. Generalmente se resuelven con heurísticas. Por ej. programa de respuestas a
preguntas.
El mejor camino: importa encontrar la ruta más corta hacia la solución. Son problemas más com-
plicados de computar. Algunos requieren una búsqueda más exhaustiva que usando heurísticas. Por
ej. en el problema del viajero importa encontrar la ruta más corta entre las ciudades a visitar.
¿La solución deseada es un estado o la ruta hacia un estado? La solución de un problema puede
consistir en encontrar:
Un estado final: no es necesario el registro del proceso seguido, sólo importa arribar a la solución
final. Por ej. interpretar texto.
Una ruta hacia un estado final: se necesita dar el camino seguido desde el estado inicial al estado
final. Por ej. problema de las jarras de agua.
¿El conocimiento se necesita para resolver el problema o para restringir la búsqueda de la solución?
El conocimiento puede emplearse para:
Reconocer la solución: se necesita gran cantidad de conocimiento acerca del problema para poder
encontrar una solución. Por ej. comprensión de texto.
Acotar la búsqueda: la solución básica puede encontrarse con poco conocimiento, pero para restringir
el árbol de búsqueda y encontrar la solución de manera más eficiente es necesario contar más
conocimiento. Por ej. en el ajedrez se necesita básicamente poco conocimiento para conocer los
movimientos legales y un mecanismo sencillo de búsqueda. Pero dado que para aumentar la eficiencia
de la búsqueda ésta debe restringirse, se necesita conocimiento de heurísticas de buenas estrategias
y tácticas para jugar.
El programa que soluciona el problema ¿busca la solución solo o necesita interactuar con una persona?
Con respecto a la relación programa-usuario, existen dos tipos de programas que solucionan el problema:
Solitarios: reciben como entrada el problema y dan como salida la solución. No importa el razon-
amiento que haya seguido la máquina para encontrar la solución. Por ej. problema de las jarras de
agua.
6
Conversacionales: existe una comunicación hombre-máquina de manera que el usuario puede ayudar
a la máquina o la máquina puede informar al usuario durante la búsqueda de la solución. Para que
esta comunicación sea posible debe existir una correspondencia entre el razonamiento seguido por la
máquina y la forma de razonamiento humano. Por ej. en un sistema experto de diagnóstico médico,
el usuario no aceptaría el veredicto de una máquina si no puede comprender el razonamiento que la
llevó a él .
7
Sección 3
Existen dos tipos de problemas que se han estado investigando en el área de Inteligencia Artificial:
Los denominados problemas de juguete y problemas del mundo real[1].
8
Objetivo o estado final: Cualquier conjunto de configuraciones puede ser el objetivo;
Reglas: Mover el blanco a la izquierda, a la derecha, arriba o abajo.
En este juego no hemos considerado acciones como la de sacudir el tablero cuando las piezas no se puedan
mover, o que se puedan extraer las piezas con un cuchillo y volverlas a poner.
El 8-puzle pertenece a la familia de puzles con piezas deslizantes, los cuales a menudo se usan como
problemas de prueba para los nuevos algoritmos de IA.
El Problema de las 8 reinas consiste en colocar las ocho reinas en un tablero de ajedrez de manera
que cada reina no ataque a ninguna otra(Una reina ataca alguna pieza si está en la misma fila, columna
o diagonal).
Para este problema existen dos principales formulaciones. Una formulación incremental que implica a
operadores que aumenten la descripción del estado, comenzando con un estado vacío; esto significa que
cada acción añade una reina al estado. Una formulación completa de estados comienza con las ocho reinas
en el tablero y las mueve.
Espacio de estados: La totalidad de tableros que se pueden generar con 8 reinas en el tablero;
Estado Inicial: Un tablero donde esta una reina por columna.
Objetivo o estado final: Un tablero de manera que cada reina no ataque a ninguna otra;
Reglas: Mover una reina a otro cuadro en la misma columna.
9
La navegación de un robot es una generalización del problema de encontrar una ruta. Más que un
conjunto discreto de rutas, un robot puede moverse en un espacio continuo con un conjunto infinito de
acciones y estados posibles. Para un robot circular que se mueve en una superficie plana, el espacio es
esencialmente de dos dimensiones. Cuando el robot tiene manos y piernas o ruedas que se deben controlar
también, el espacio de búsqueda llega a ser de muchas dimensiones[1][2].
La secuenciación para el ensamblaje automático por un robot de objetos complejos son factibles. En los
problema de ensamblaje, lo principal es encontrar el orden en los objetos a ensamblar. Si se elige un orden
equivocado, no habrá forma de añadir posteriormente una parte de la secuencia sin deshacer el trabajo ya
hecho. Verificar un paso para la viabilidad de la sucesión es un problema de búsqueda geométrico difícil
muy relacionado con la navegación del robot. Así, la generación de sucesores legales es la parte costosa
de la secuenciación para el ensamblaje.
El diseño de proteínas, es otro problema de ensamblaje en el que el objetivo es encontrar una secuencia
de aminoácidos que se plegarán en una proteína de tres dimensiones con las propiedades adecuadas para
curar alguna enfermedad.
10
Sección 4
Búsqueda en profundidad
11
Tabla 4.1: Distancias aproximadas entre terminales de la línea ADO-GL
R
12
Figura 4.1: Rutas de la línea de autobuses ADO-GL
R
El inconveniente de la búsqueda primero en profundidad es que puede hacer una elección equivocada y
obtener un camino muy largo(o infinito) a un cuando una elección diferente llevaría a una solución cerca
de la raíz del árbol de búsqueda.
Utilicemos como ejemplo el problema descrito anteriormente, el problema del agente de viajes, si
queremos llegar de Salina Cruz a Ciudad Reynosa, y para simplificar el problema, suponemos que no hay
perdida de tiempo entre trasbordo y trasbordo. La formulación de nuestro problema es de la siguiente
manera:
Espacio de estados: Todas las terminales de ADO-GL
R
13
Figura 4.2: Árbol parcial de rutas de ADO-GL
R
Se llegue al objetivo, pero con un recorrido más largo, al pasar por terminales que están a mayor
distancia
Puede que nunca lleguemos al objetivo, porque puede formarse ciclos infinitos como ir de Ixtepec-
Juchitán, y después ir de Juchitán-Ixtepec, así sucesivamente
por lo que la implementación para este problema en el cuál el grafo es no dirigido, producirá ciclos
infinitos muy probablemente, una forma de evitar esta deficiencia es almacenar en memoria todas los
estados ya visitados, y antes de agregar a la estructura de pila un nuevo estado comparar si ya han sido
visitados.
Figura 4.3: Representación de la estructura de pila del problema del agente de viajes
Existen variantes la búsqueda de primero en profundidad, tales como búsqueda hacia atrás (backtrack-
ing), búsqueda de profundidad limitada y búsqueda primero en profundidad con profundidad iterativa.
Una ventaja de la búsqueda hacia atrás, es que utiliza todavía menos memoria, ya que sólo se genera un
sucesor a la vez; cada nodo parcialmente expandido recuerda qué sucesor(un nodo hijo válido) se expande
14
Figura 4.4: Representación de la estructura de pila del problema del agente de viajes al agregar los estados
sucesores de la terminal Salina Cruz
Figura 4.5: Continuación de la representación de la estructura de pila del problema del agente de viaje para llegar
a Ciudad Reynosa, este procedimiento puede seguir el camino que se muestra en la figura 4.2
a continuación. Además facilita aún otro ahorro de memoria: la idea de generar un sucesor modificando
directamente la descripción actual del estado más que copiarlo. Esto reduce los requerimientos de memoria
a solamente una descripción del estado y sus acciones correspondientes. Para hacer esto, se requiere poder
deshacer cada modificación cuando volvemos hacia atrás para generar el siguiente sucesor, dicho de otra
manera las operaciones deben ser reversibles(para mayor comprensión véase la sección 6).
La siguiente variante, con profundidad limitada, consiste en aplicar un límite de profundidad l a la
búsqueda de primero en profundidad. Es decir, los nodos a profundidad l se tratan como si no tuviera
ningún sucesor. El límite de profundidad resuelve el problema del camino infinito. Sin embargo también
agrega un inconveniente: si escogemos el valor de l menor a la profundidad necesaria para encontrar un
posible nodo meta, no encontraremos la solución. Por ejemplo, si estuviéramos en un juego de ajedrez, y
sabemos que el mínimo número de tiros para dar jaque mate es de 3(ganando las blancas), no podemos
esperar que en un número de tiros(llamemosle l) menor a 3 terminemos el juego, es decir que no existe
un camino para terminar el juego de ajedrez en menos de 3 tiros.
La búsqueda con profundidad iterativa es una estrategia general, usada a menudo en combinación
con la búsqueda primero en profundidad, la cual encuentra el mejor límite de profundidad. Esto se hace
aumentando gradualmente el límite(primero 0, después 1, después 2, etc.) hasta que encontramos un
objetivo.
15
Sección 5
Búsqueda en amplitud
1. Primero agregamos el estado inicial, en este caso Salina Cruz, y nos queda la estructura de cola
como se muestra en la figura 5.1,
2. el siguiente paso es verificar si el elemento tope de la estructura de cola es el estado objetivo, en caso
de serlo la búsqueda termina, porque encontramos lo que buscábamos, sin embargo si no es el caso,
como en este ejemplo que vamos a Ciudad Reynosa, entonces procedemos a eliminar este elemento
de la estructura de cola,
3. y agregamos todos las terminales desde la que podemos llegar desde el estado en que nos encon-
tramos(por conveniencia omití agregar una terminal de la cual parti en una iteración anterior), veáse
figura 5.2(desde la terminal actual, obteniendo los estados sucesores) y volvemos a realizar el paso
2 hasta encontrar lo que buscamos, véase figura 5.3
Notese que estamos recorriendo el camino por niveles en el árbol de la figura 4.2, por lo que esta
estrategia tiene la ventaja, en comparación con la de búsqueda en profundidad, de que no se crean ciclos,
ya que si llegará a ocurrir un camino Ixtepec-Juchitán ;Juchitán Ixtepec entonces cuando llegue a cierto
número de repeticiones, y está sea igual al tamaño de la ruta solución, optará por la solución antes de
continuar, por lo tanto encuentra un camino corto hacia el objetivo, a costa de la cantidad de estados que
tiene que almacenar en cada nivel.
Una variante de búsqueda en amplitud es la de costo uniforme, que consiste en expandir todos los
nodos por costos. Si el costo es igual a la profundidad se tiene la búsqueda en amplitud.
La búsqueda de costo uniforme encuentra la solución más barata si el costo nunca decrece al aumentar
los caminos.
16
Figura 5.1: Representación de la estructura de cola del problema del agente de viajes
Figura 5.2: Representación de la estructura de cola del problema del agente de viajes al agregar los estados
sucesores de la terminal Salina Cruz
Figura 5.3: Continuación de la representación de la estructura de cola del problema del agente de viaje para llegar
a Ciudad Reynosa
17
Sección 6
Búsqueda con
retroceso(Backtracking)
18
solamente queda el elemento 3, con lo que pasa al estado 4, sin embargo la suma sigue siendo diferente de
20, y como no hay más elementos, entonces retrocede posicionandose en el estado 3 nuevamente, como en
ese estado ya probó con el único elemento, vuelve a retroceder y pasa al estado 2, como le queda probar
con el elemento 2, pasa al estado 5, y la suma en ese estado es igual a lo que buscamos por lo que el
procedimiento termina.
Figura 6.1: Representación de la estructura de árbol para solución por búsqueda con retroceso
19
Sección 7
1. Primero agregamos el estado inicial, en este caso Salina Cruz, y nos queda la estructura de cola con
prioridad como se muestra en la figura 7.1, observe que debemos ordenar en orden ascendente con
respecto a la distancia en línea recta entre terminales de origen y destino
2. el siguiente paso es verificar si el elemento tope de la estructura de cola con prioridad es el estado
objetivo, en caso de serlo la búsqueda termina, porque encontramos lo que buscábamos, sin embargo
si no es el caso, como en este ejemplo que vamos a Ciudad Reynosa, entonces procedemos a eliminar
este elemento de la estructura de cola con prioridad,
3. y agregamos todos las terminales desde la que podemos llegar desde el estado en que nos encon-
tramos, recuerde que deben agregarse en orden ascendente(notese que omití por conveniencia agregar
20
una terminal del cual parti en una iteración anterior), véase figura 7.2(desde la terminal actual, obte-
niendo los estados sucesores) y volvemos a realizar el paso 2 hasta encontrar lo que buscamos, véase
figura 7.3
Note que utilizamos como valor heurístico la distancia en línea recta que existe entre Salina Cruz
y Ciudad Reynosa, esta función consulta la tabla mostrada anteriormente(tabla 4.1), sin embargo si
requerimos viajar a otra terminal o partir de otro origen, entonces necesitaríamos contar con una tabla
de distancias de líneas rectas al destino diferente. No siempre es necesario de tablas, para obtener valores
heurísticos, puede crearse una función heurística que reciba como parámetros el estado actual y el estado
objetivo, y a partir de ello obtener un valor heurístico calculado con alguna ecuación, definir la heurística
no es tarea fácil, requiere de un análisis complejo y detallado del problema[5].
Figura 7.1: Representación de la estructura de cola con prioridad del problema del agente de viajes
Figura 7.2: Representación de la estructura de cola con prioridad del problema del agente de viajes al agregar los
estados sucesores de la terminal Salina Cruz
Figura 7.3: Continuación de la representación de la estructura de cola con prioridad del problema del agente de
viaje para llegar a Ciudad Reynosa
Una desventaja de esta estrategia de búsqueda es que puede caer en ciclos infinitos. Si no somos
cuidadosos en encontrar los estados repetidos, la solución nunca se encontrará. En nuestro ejemplo estando
en Puebla, si la distancia en línea recta de la Ciudad de México fuera menor a la distancia que hay desde
Orizaba a Cordoba, entonces tomaría primero el camino a la Ciudad de México, al llegar ahí, como ya no
habría otro camino para llegar a ciudad Reynosa regresaría a Puebla, y seleccionaría ir otra vez a Ciudad
de México por tener una distancia más corta a la de los tres caminos posibles. Esto puede resolverse
almacenando en memoria todas las terminales ya visitadas(Esto es lo que permite, por conveniencia,
21
agregar a las estructuras de datos manejadas en las estrategias de búsquedas, terminales de las cuales
partimos en iteraciones anteriores).
22
Sección 8
Búsqueda A*
1. Primero agregamos el estado inicial, en este caso Salina Cruz, y nos queda la estructura de cola
con prioridad como se muestra en la figura 8.1, observe que debemos ordenar en orden ascendente
con respecto a la función heurística, en donde g(n) equivale a la distancia que existe entre las
terminales(origen a terminal actual) Salina Cruz y Salina Cruz(0 Kms), y h(n) es la distancia en
línea recta de(terminal actual a destino) Salina Cruz a Ciudad Reynosa(1181 Kms), por lo tanto
f(n) es de 1181
2. el siguiente paso es verificar si el elemento tope de la estructura de cola con prioridad es el estado
objetivo, en caso de serlo la búsqueda termina, porque encontramos lo que buscábamos, sin embargo
si no es el caso, como en este ejemplo que vamos a Ciudad Reynosa, entonces procedemos a eliminar
este elemento de la estructura de cola con prioridad,
3. y agregamos todos las terminales desde la que podemos llegar desde el estado en que nos encontramos,
recuerde que deben agregarse en orden ascendente de los valores obtenidos de f(n)(notese que puedo
regresar a una terminal ya visitada en una iteración anterior), véase figura 8.2(desde la terminal
actual, obteniendo los estados sucesores) y volvemos a realizar el paso 2 hasta encontrar lo que
buscamos, véase figura 8.3
23
Veamos otros ejemplos para calcular el valor heurístico, por ejemplo al estar en Salina Cruz, desde
ahí se alcanza Tehuantepec y Huatulco, en el primer caso g(Salina Cruz-Tehuantepec) es de 23 Kms y
h(Tehuantepec-Ciudad Reynosa) es de 1160 Kms por lo tanto f(Tehuantepec) es de 1183, véase figura
8.2. Para el caso de Huatulco, g(Salina Cruz- Huatulco) es de 153 Kms, y h(Huatulco-Ciudad Reynosa)
es de 1175 Kms por lo tanto f(Huatulco) es de 1328 Kms. Cómo el menor coste lo tiene f(Tehuantepec)
entonces al estar en Tehuantepec, desde ahí alcanzamos Juchitán, Salina Cruz(regresando a Salina Cruz de
Nuevo) y Oaxaca, para el primer caso tenemos g(Salina Cruz-Juchitán) es de 49 Kms(23 Kms+26 Kms),
y h(Juchitán- Ciudad Reynosa) es de 1120 Kms por lo tanto f(Juchitán) es de 1169 Kms, el siguiente caso
estando en Tehuantepec regresar a Salina Cruz, entonces g(Salina Cruz a Salina Cruz) es de 46 Kms(23
Kms+23 Kms) y h(Salina Cruz-Ciudad Reynosa) es de 1181 Kms es 1206 Kms por lo tanto f(Salina Cruz)
es de 1227 Kms.
Así continuamos calculando para cada terminal alcanzada. Una ventaja de utilizar esta estrategia es
la de que no se crean ciclos infinitos si existe una buena heurística, ya que se va acumulando el coste total
del camino por lo que se descartan caminos muy largos. Por lo que siempre encontrará la solución siempre
cuando exista dentro todo el espacio de búsqueda.
Figura 8.1: Representación de la estructura de cola con prioridad del problema del agente de viajes para la
estrategia A*
Figura 8.2: Representación de la estructura de cola con prioridad del problema del agente de viajes al agregar los
estados sucesores de la terminal Salina Cruz para la estrategia A*
Figura 8.3: Continuación de la representación de la estructura de cola con prioridad del problema del agente de
viaje para llegar a Ciudad Reynosa para la estrategia A*
La estrategia de búsqueda A* es muy satisfactoria de entre todos los algoritmos vistos anteriormente,
lamentablemente, no significa que A* sea la respuesta a todas nuestras necesidades de búsqueda. La
dificultad es que, para la mayoría de los problemas, el número de nodos a expandir son exponenciales en
longitud de la solución. El tiempo computacional no es, sin embargo, la desventaja principal de A*. Por
lo general, se queda sin mucho espacio antes de que se quede sin tiempo. Por esta razón no es práctico
para problemas grandes[1].
24
Sección 9
Búsqueda Minimax
25
Apliquemos estas definiciones al árbol de juegos de la figura 9.1. Los nodos terminales se etiquetan
por sus valores de utilidad. El primer nodo de MIN, etiquetado B, tiene tres sucesores con valores 3,12 y
8, entonces su valor minimax es 3. Del mismo modo, los otros dos nodos de MIN tienen un valor minimax
de 2. El nodo raíz es un nodo MAX; sus sucesores tienen valores minimax de 3,2 y 2; entonces tiene un
valor minimax de 3. Podemos identificar también la decisión minimax en la raíz: la acción a1 es la opción
óptima para MAX porque conduce al sucesor con el valor minimax más alto.
Figura 9.1: Un árbol de juegos de dos capas. Los nodos ∆ son nodos MAX, en los que le toca mover a MAX, y
los nodos ∇ son nodos MIN. Los nodos terminales muestran los valores de utilidad para MAX; los otros nodos son
etiquetados por sus valores minimax. El mejor movimiento de MAX en la raíz es a1 , porque conduce al sucesor
con el valor minimax más alto, y la mejor respuesta de MIN es b1 , porque conduce al sucesor con el valor
minimax más bajo.
Esta definición de juego óptimo para MAX supone que MIN también juega óptimamente, y si no lo
hiciera MAX lo hará aún mejor.
Sin embargo Minimax selecciona un movimiento óptimo en un árbol de búsqueda a condición de que las
evaluaciones de los nodos hoja sean exactamente correctas. En realidad, las evaluaciones son generalmente
estimaciones rudimentarias del valor de una posición y se consideran que tienen asociados errores grandes.
Otro problema de minimax es que el número de estados que tiene que examinar es exponencial en el
número de movimientos. Lamentablemente no se puede eliminar el exponente, pero si se podría dividirlo,
con eficacia, en la mitad. La jugada es que es posible calcular la decisión minimax correcta sin mirar todos
los nodos en el árbol de juegos. Es decir, podar el árbol. Esta técnica es conocida como poda-alfabeta.
26
Conclusión
Las estrategias de búsquedas vistas en esta unidad nos dan una idea de cómo los investigadores
en IA proponen diferentes formas de solución para los problemas. Estas técnicas son clásicas
de la IA y es por ello que deben ser conocidas por todos aquellos que están relacionados
con programación de soluciones por computadora. Existen otros métodos que requieren de
mayor complejidad de programación para encontrar mejores soluciones en un tiempo razon-
able, como son el método de ascenso de la colina, recocido simulado, algoritmos géneticos, las
redes neuronales. Todos ellos requieren de una mayor complejidad de computación y mayor
conocimiento e información del problema.
El mundo real es más complejo de lo que se formula en los problemas para solucionar por
computadora, sin embargo asumimos que los seres humanos para encontrar soluciones tampoco
requieren de mucha información, o al menos no requiere conocer todo el universo para encontrar
soluciones buenas. Por ejemplo, no requerimos de mucha información, ni de mucho tiempo para
seleccionar una botella de refresco que compramos en el supermercado. Esto justifica en parte
lo que hacemos cuando reducimos nuestro problema. Aún cuando por su simplicidad sean
problemas de juguete.
En la tabla 9.1 se muestra una comparativa entre las estrategias de búsqueda de-
scritas en esta unidad. Esta nos puede dar una idea rápida de cuál estrategia debemos
utilizar al intentar resolver un problema de búsqueda en espacio de estados.
27
Es importante hacer mención que un ser humano no realiza búsquedas de este tipo
en su mente. Porque un ser humano quizá necesitaría de minutos para crear y com-
probar cada combinación o estado posible, y tendría una considerable dificultad para
tener en mente cada paso del proceso de comprobación y las asignaciones que ha
comprobado. Aún cuando utilizara papel y lápiz como apoyo, sería un proceso muy
lento. Además un ser humano al pasar el tiempo, su calidad de trabajo disminuye,
por lo que las soluciones que encuentra un ser humano son las optimas. Ahora la
pregunta obligada, ¿Cómo solucionan este problema los seres humanos?, la respuesta
esta siendo investigada dentro del campo de la IA, y esperemos que en un futuro no
lejando encuentren la respuesta.
28
Apéndices
Glosario
Agente: Un agente inteligente es un sistema(hardware o software) situado en un determinado
entorno, capaz de actuar de forma autónoma y razonada en dicho entorno para llevar a
cabo unos objetivos predeterminados[4].
Árbol: estructura de datos ampliamente usada que imita la forma de un árbol (un conjunto
de nodos conectados). Un nodo es la unidad sobre la que se construye el árbol y puede
tener cero o más nodos hijos conectados a él. Se dice que un nodo a es padre de un nodo
b si existe un enlace desde a hasta b (en ese caso, también decimos que b es hijo de a).
Sólo puede haber un único nodo sin padres, que llamaremos raíz. Un nodo que no tiene
hijos se conoce como hoja. Los demás nodos (tienen padre y uno o varios hijos) se les
conoce como rama.
Camino solución: Un grafo dirigido de los nodos visitados que nos llevan a la solución.
Cola: es una estructura de datos, caracterizada por ser una secuencia de elementos en la que
la operación de inserción push se realiza por un extremo y la operación de extracción pop
por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido
a que el primer elemento en entrar será también el primero en salir.
Cola de prioridades es una estructura de datos en la que los elementos se atienden en el
orden indicado por una prioridad asociada a cada uno. Si varios elementos tienen la misma
prioridad, se atenderán de modo convencional según la posición que ocupen.
Estrategia de Búsqueda método computacional para resolver problemas.
Grafo: es un par(V,A) donde V es un conjunto finito no vacío(conjunto de vértices) y A un
conjunto finito de pares (V x V) no ordenados de vértices(conjunto de aristas). En otras
palabras un grafo es un conjunto de objetos llamados vértices o nodos unidos por enlaces
llamados aristas o arcos, que permiten representar relaciones binarias entre elementos de
un conjunto.
Heurística: Del griego heuriskein, encontrar. Criterio que puede resolver un problema pero
que no hay garantía de que siempre lo resuelva. Estimación del coste necesario para
alcanzar una solución desde el estado actual.
Pila: es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos
es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que
permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informática
debido a su simplicidad y ordenación implícita en la propia estructura.
Prolog: Lenguaje de programación ideado a principios de los años 70 en la universidad de Aix-
Marseille por los profesores Alain Colmerauer y Phillipe Roussel. Prolog se enmarca en el
paradigma de los lenguajes lógicos, lo que lo diferencia enormemente de otros lenguajes
más populares tales como Fortran, Pascal, C, Java[8].
Puzle Un puzzle o puzle puede referirse a:
Un rompecabezas, un juego en el que hay que armar una figura.
29
Un crucigrama o juego de palabras cruzadas.
Un acertijo, especie de adivinanza.
juego de ingenio, como el sudoku o el cubo de Rubik.
30
Anexo
Explosiones combinatorias
Generalmente, se utilizará una computadora para resolver problemas en los que el
número de nodos en el espacio de búsqueda sea muy grande y, como el espacio de
búsqueda va creciendo, de igual modo se incrementarán el número de diferentes
caminos posibles hasta la meta. El problema estriba en que cada nodo añadido al
espacio de búsqueda añade más de un camino; por lo que el número de caminos
hasta la meta se incrementará rápidamente con cada nuevo nodo[6].
Para entender este incremento, considere el número de formas de combinar tres
objeto( A, B, C) sobre una mesa. Las seis posibles combinaciones son las mostradas
en la tabla 9.2
Aunque puede comprobar rápidamente que estas son todas las formas de com-
binar(en términos de probabilidad son llamadas permutaciones de tres elementos
tomadas de tres) A, B, C, puede obtener el mismo número usando el teorema de
una de las ramas de las matemáticas llamada combinatoria, la cual estudia las dis-
tintas formas en que las cosas pueden ser combinadas, colocadas o permutadas. El
teorema establece que el número de maneras en que N objetos pueden ser permu-
tados es igual a N!(N factorial). El factorial de un número es el producto de todos
los números iguales o menores a uno dado, hasta 1. Por tanto, 3! es 3 x 2 x 1, o 6.
Dada esta información puede verse que , si usted tuviera 4 objetos para combinar,
habría 4!, o 24, permutaciones. Con 5 objetos, el número es 120; con 6 objetos es
720. Así pues, con, por ejemplo, 1000 objetos, el número de permutaciones posibles
es enorme. Si hay muchas posibilidades, se hace rápidamente imposible examinar, e
incluso enumerar, todas las combinaciones[5].
Debido a que el número de posibilidades crece tan rápidamente, tan sólo los proble-
mas más simples se prestan a búsquedas exhaustivas.
Mientras que la técnica exhaustiva, o fuerza bruta, teóricamente siempre funciona,
normalmente no es práctica porque consume o demasiado tiempo o demasiados re-
cursos de computación, e incluso ambos. Por esa razón, otras técnicas de búsqueda
han ido desarrollándose.
31
Bibliografía
[1] Russell, Stuart J., Norvig, Peter., Inteligencia Artificial: Un enfoque moderno 2da Edición .,
Prentice Hall, 2004.
[2] Nilsson, Nils J., Artificial Intelligence: A New Synthesis, Morgan Kaufmann, 1998.
[3] Mitchell, Tom., Machine Learning, McGraw Hill, 1997.
[4] Wooldridge, Michael., An Introduction to MultiAgent Systems.,John Wiley & Sons., 2002.
[5] Simon, Herbert A., Las ciencias de lo artificial, Comares., 2006.
[6] Schild, H., Utilización de C en la Inteligencia Artificial. McGraw-Hill, 1988.
[7] Colaboradores de Wikipedia. Inteligencia artificial [en línea]. Wikipedia, La en-
ciclopedia libre, 2009 [fecha de consulta: 2 de enero del 2009]. Disponible en
<http://es.wikipedia.org/w/index.php?title=Inteligencia_artificial&oldid=22986524>.
[8] Colaboradores de Wikipedia. Prolog [en línea]. Wikipedia, La enciclope-
dia libre, 2009 [fecha de consulta: 17 de enero del 2009]. Disponible en
<http://es.wikipedia.org/w/index.php?title=Prolog&oldid=23327196>.
32