1. CLASE: INTELIGENCIA ARTIFICIAL
SOLUCION DE PROBLEMAS MEDIANTE LA BÚSQUEDA
Solución de problemas como una forma de razonamiento: Es la actividad mental de encontrar
una solución a un problema.
FORMULACION DEL PROBLEMA---PASOS---SOLUCION DEL PROBLEMA
Métodos de solución de problemas. Las diferentes situaciones que se nos presentan en la vida
diaria, laboral, académico o científica pueden ser resueltas por los siguientes métodos de
resolver problemas:
1. La aplicación de una fórmula explícita. Cuando tenemos un problema y este puede ser
resuelto a través de una ecuación. Ejemplo: solucionar una ecuación de 2º grado.
1 FORMA EXPLICITA
2 RECURSIVIDAD
2. El uso de una definición recursiva. Hay problemas en los cuales el uso de una definición
recursiva hace posible generar los valores que se desean, como es le caso de la generación
de los números de Fibonacci.
3. El uso de un algoritmo que converge a la solución. Hay problemas que no se pueden
resolver por ecuaciones o fórmulas explícitas, mas sin embargo la construcción de un
algoritmo hace posible resolver la dificultad. Un ejemplo es la elaboración de una nómina,
la cual puede ser resuelta por ciclos, condiciones y acciones mediante un algoritmo que
converge a la solución.
4. La aplicación de otro proceso, en particular el de Prueba y Error. De esta clase de
problemas es de los que se ocupa los métodos de solución de problemas de I.A.
LA EXPECTATIVA: Cuando tenemos en frente de nosotros un problema y este no es muy
explícito o queda abierta la posibilidad de diferentes interpretaciones, se crean expectativas
que aumentan el grado de dificultad del problema. Los detalles y las explicaciones en la
formulación de los problemas es fundamental en la búsqueda de una buena solución. Veamos
algunos ejemplos:
1. Considere la siguiente Matriz de 9 puntos:
. . .
2. . . .
. . .
Comenzando de donde se quiera, trazar cuatro líneas rectas que pasen por los puntos hasta
una sola vez y sin levantar el lápiz.
2. Se tienen tres fósforos organizados en tres filas y en tres columnas
A una persona le dan otros tres fósforos mas y le piden que los coloque de manera que haya
cuatro fósforos en cada fila y cuatro en cada columna.
3. Con 6 de los 12 fósforos anteriores construya 4 triángulos equiláteros únicamente.
La Búsqueda como fundamento de la I.A. La búsqueda es la técnica fundamental para
solucionar problemas que no se pueden resolver por los métodos computacionales
convencionales. En la búsqueda hay un punto de partida y una meta y los pasos para llegar al
objetivo forman una estructura de datos.
Para buscar la solución a un problema existen tres alternativas:
• Búsqueda Aleatoria: es aquella que utiliza cualquier ruta o camino y que la única ventaja
es que el camino escogido se encuentre muy cerca de la meta.
• Búsqueda a ciegas: Tomar un camino hasta llegar al objetivo, teniendo en cuenta no
pasar dos veces por la misma parte.
• Búsqueda dirigida: Es la base de la I.A. y toma como soporte información o datos sobre
el objetivo a encontrar o problema a solucionar.
LA BÚSQUEDA DIRIGIDA puede ser:
• Dirigida POR DATOS ( FORWARD ). Parte de hechos o información dada hasta llegar
al objetivo.
• Dirigida POR OBJETIVO ( BACKWARD ). Parte de tratar de probar el objetivo,
buscando soporte para ello.
DEFINICION formal de la solución de problemas en la I.A.
En los problemas de I.A. tenemos lo siguiente:
AGENTE (Resolvedor de problemas)-------------PROBLEMA (Colección de
Información)-----------------QUE HACER (La Búsqueda).
3. ELEMENTOS IMPORTANTES DE LA BÚSQUEDA
• Estado Inicial: Donde se encuentra el agente en el momento de empezar la búsqueda.
• Acciones: Es el conjunto de operadores aplicables a disposición del agente. Por operador
se entiende la descripción de una acción para alcanzar un estado en particular.
• Espacio de estado: Es el conjunto de estados alcanzables a partir del estado inicial
mediante una secuencia de acciones cualquiera.
• Un Camino: es una secuencia de acciones que conduce a un estado cualquiera.
• El Criterio Objetivo: Es el criterio que aplica el agente para saber si se encuentra en el
estado objetivo o no.
• Estado Objetivo. Lo que se desea obtener.
• Costo de un Camino: Es una función que asigna un costo a un camino.
• Una Solución: Es un camino desde un estado inicial a un estado que satisface el criterio
objetivo.
• Costo de la Búsqueda: tiene que ver con el gasto de tiempo y memoria requisitos para
encontrar la solución.
• El Costo Total: Es la suma del costo del camino y el costo de la búsqueda.
EJEMPLO. El rompecabezas de 8 fichas.
Consiste en un tablero de 9 casillas con 8 de ellas numeradas y una en blanco. Una casilla
numerada puede ser desplazada a la que está en blanco quedando la que estaba numerada en
blanco y la que estaba en blanco numerada. La esencia del rompecabezas es dada cualquier
numeración de las casillas obtener una con un orden específico, por ejemplo.
5 4 1 2 3
6 1 8 8 4
7 3 2 7 6 5
La formulación del problemas es:
Estados: La descripción de un estado especifica la localización de cada número y la del
espacio en blanco.
Operadores: El blanco se mueve a la izquierda, derecha, arriba o abajo.
Costo del Camino: Cada paso cuesta una unidad.
4. Este problema a pesar de parecer simple tiene 9! = 362880 diferentes ordenamientos de los
números en blanco, por lo que el método de simplemente generar estados y probar si cumplen
el criterio objetivo lleva una explosión combinatorial.
PROCEDIMIENTO GENERAL DE BÚSQUEDA
De acuerdo a la estrategia escogida para resolver el problema o buscar el objetivo, se va
generando el espacio de búsqueda, que hay que diferenciarlo del espacio de estado. Por
ejemplo en el problema del “vendedor viajero” con 20 ciudades, el espacio de estado está
formado por 20 estados uno por cada ciudad, mientras que hay un número grande de caminos
en el espacio de estado, dando lugar a un gran número de nodos en el espacio de búsqueda.
La estrategia de búsqueda define el criterio para seleccionar el siguiente nodo a expandir. La
estrategia escogida se evalúa atendiendo a cuatro aspectos.
1. Completitud. ¿Garantiza la estrategia encontrar una solución cuando esta exista?
2. Complejidad del tiempo. ¿Cuánto requiere encontrar una solución?
3. Complejidad del espacio. ¿Cuánta memoria se necesita para realizar la búsqueda?
4. Optimalidad. ¿Encuentra la estrategia la solución de mayor calidad cuando haya varias
soluciones diferentes?
Veamos dos grandes estrategias:
BÚSQUEDA A CIEGAS:
• Breadth-First Search ( Búsqueda primero a lo ancho )
• Depth-First Search ( Búsqueda primero en profundidad )
BÚSQUEDA INFORMADA
• La Heuristica.
BREADTH-FIRST SEARCH
Empezamos generando el nodo inicial y apartir de este expandimos todos los nodos hijos del
nodo inicial de izquierda a derecha. Después expandimos todos los nietos del nodo inicial
5. también de izquierda a derecha y así sucesivamente. De ejercicio realice un algoritmo para
esta estrategia.
DEPTH-FIRST SEARCH
A partir del nodo inicial empezamos generando su primer hijo de izquierda a derecha hasta
generar todos sus descendientes más izquierdos. Al generar el nodo más profundo, se genera
el hermano de ese nodo más profundo si lo hay, con un procedimiento parecido al
anteriormente descrito, si no tiene hermanos se regresa (BACKTRACKING) Y procede
análogamente hasta expandir otros hijos del nodo inicial si los hay, y así sucesivamente.
EJEMPLO: El siguiente ejemplo ilustra las dos estrategias con las dos direcciones
Información conocida (datos) : a,f
Objetivo: e
Acciones
R1: a,b c
R2: c,d e
R3: c,f e
R4: a,f d
R5: a,e b
R6: f c
1) Utilicemos Depth-Backward
Objetivo: e Ahora expandimos “e” a “c,d” por R2
R2
c,d
Ahora “c” y “d” son nuestros nuevos objetivos. Como es Depth-First entonces expandimos
“c” por R1 a “a,b” e
R2
c,d
6. R1
a,b
Pero “a” es dato, luego expandimos “b” por R5 a “a,e”
e
R2
c,d
R1 “a” es dato y “e” es el objetivo, no podemos probar “e” por este
camino, a “e” se le llama en este momento Nodo muerto.
a,b
a,e
Ahora observemos si “b” se puede expandir mas. Vemos que no, hacemos Backtracking a
“c” y expandimos a “c” hacia “f” por R6 . Pero “f” es dato.
e
R2
c,d
R1 Ahora expandimos “d” para terminar de demostrar “e”. Por R4
R6
Tenemos a “a,f” , los cuales son datos.
a,b f
R5 e
R2
a,e c,d R
R1 4
R6 a,f
a,b f
R5
a,e
Tenemos probados a “c” y “d” luego “e” está probado.
SOLUCION: R2 , R6 ,R4 Obseve que “c” está siendo probada a través de R6 y “d” está
siendo probada por R4 . Por medio de R1 no podemos probar ya que conduce a un nodo
muerto.
7. 2) Utilicemos Breadth-Backward
Objetivo: e Como es Breadth-First expandimos los hijos de “e”
e
R2 R3 Como “e” no tiene mas hijos expandimos “c” y “d”
c,d c,f
e
R2 R3
c,d c,f
R1 R6 R4
a,b f a,f Vemos que c queda probado por R6 ya
que “f” es dato y “d” queda probado por R4 , ya que “a” también es dato.
SOLUCION: R2,R6,R4
3) Utilicemos DEPTH-FORWARD
“a” es dato y sólo no me conduce a nada, “a,f” si me conduce a “d” por R4
a,f
R4 Tenemos ahora que la nueva información es: “a,f,d” como vamos
Primero en profundidad tenemos que :
a,f,d
ya vimos que “a” no conduce a nada , “a,f” ya lo expandimos, “a,f,d” tampoco conduce,
vemos que “f” conduce a “c” por R6.
a,f
R4
a,f,d La nueva información es ahora “a,f,d,c”, expandimos
“a” : nada; “a,f” : ya; “a,f,d” : nada; “a,f,d,c” : nada;
R6 “f” : ya; “f,d” : nada; “f,c” : Si a “e” por R3.
a,f,d,c
R3
a,f,d,c,e “e” es el objetivo buscado. SOLUCION: R4,R6,R3
8. 4) Utilicemos ahora BREADTH-FORWARD
a,f
R4 R6
Analice la respuesta: R6,R3
a,f,d a,f,c
R3
a,f,c,e
NOTA: Observó que:
a) p
Podemos probar “p” por “q“ OR “r”
q r
b) p
Debemos probar a “q” AND “r” para probar a “p”
q,r
APLICACION
ACCIONES O REGLAS
REGLA 1 : if T = 20 and P = 15 then S = 2
REGLA 2 : if S = 2 and H=6 then ANS = True
REGLA 3 : if S = 2 and L=4 then ANS = True
REGLA 4 : if T = 20 and L = 4 then H = 6
REGLA 5 : if T = 20 and ANS = True then P = 15
REGLA 6 : if L = 4 then S = 2
INFORMACION
DATO 1 : T = 20
DATO 2 : L = 4
9. OBJETIVO: ANS = True
Si tenemos una máquina de inferencia que trabaje con Depth-Backward, la respuesta será:
YES
R2-´´
R6 Observe que por R4,D1 y D2 obtenemos C1 : H = 6
R4 por R6 y D2 obtenemos C2 : S = 2
D1 por R2, C1 y C2 obtenemos C3 : ANS = True
D2 El objetivo
C1 : H = 6
C2 : S = 2
C3 : ANS = True
Compruebe que si utiliza de Bread-Backward, Depth-Forward y Breadth-Forward, la
respuesta es también afirmativa.
***************************************************************************
Veamos algunos datos acerca de la búsqueda Breadth First.
Profundidad Nodos Tiempo Memoria
0 1 1 milisegundo 100 bytes
2 111 0.111 segundo 11 Kilobytes
4 11.111 11.1 segundos 1 Megabyte
6 106 16.7 minutos 111 Megabytes
8 108 27.8 horas 11 Gigabytes
10 1010 115.7 días 1 Terabytes
12 1012 31.7 años 111 Terabytes
14 1014 3170 años 11.111 Terabytes
Algunos algoritmos
1. Breadth First
Paso 1. Formar una cola de un elemento que contiene el nodo raiz
Paso 2. Iterar a través de a) a c) hasta que la cola esté vacía.
a) Chequear si el primer elemento de la cola es una solución.
b) Salir con éxito si el elemento chequeado es una solución.
c) Si no es solución añadir sus hijos al final de la cola.
10. Paso 3. Salir con fallo si no se encuentra solución.
2. Depth First
Paso 1. Formar una pila de un elemento que contiene el nodo raiz.
Paso 2. Iterar a través de a) a c) hasta que la cola esté vacía.
a) Chequear si el primer elemento de la cola es una solución.
b) Salir con éxito si el elemento chequeado es una solución.
c) Si no es solución añadir sus hijos al tope de la pila.
Paso 3. Salir con fallo si no se encuentra solución.
NOTA: Analice cada uno de los algoritmos anteriores y verifique que si realmente
pertenecen a cada uno de las estrategias.
ALGUNAS MODIFICACIONES PARA BREADTH FIRST Y DEPTH FIRST
Búsqueda con costo Uniforme: Esta búsqueda es una modificación del Beadth First la cual
después de expandir todos los nodos del primer nivel, no expande el menos profundo, sino el
de menos costo, y así sucesivamente. Si por ese lado no está la solución , entonces
Backtracking y se escoge el nodo de menos costo después del anterior escogido. Ejemplo.
5 8
5 8 2 3
2 3
6
5 1
Paso 1
5 8
Paso 2
2 3
6
5 1
Paso 3
7 9
4 5
11. Búsqueda limitada en profundidad: Esta búsqueda impone un corte a una profundidad
dada del árbol, en el caso de un grafo habrá quue añadir un detector de ciclos. Si la
profundidad de corte seleccionada es menor que la profundidad de la solución nunca se
hallará esta, mientras que si es mayor se paga un precio alto en memoria y tiempo. Hay
problemas donde resulta claro cual debe ser la profundidad del corte, lo cual hace pensar que
debe tomarse otro camino.
Evitar nodos repetidos: Los nodos que ya han sido expandidos o visitados anteriormente no
deben tomarse otra vez si se encuentran en la búsqueda pues en muchos casos nos hacen
perder tiempo. La formulación eficiente del problema de las ocho reinas es eficiente en gran
parte por eso. Lo mismo pasa para el problema de los caníbales y los misioneros. Los arboles
de búsqueda de estos problemas pueden ser infinitos si no se tiene encuentra en no expandir
los nodos ya visitados.
Hay tres alternativas para atacar los estados repetidos, en orden creciente de efectividad y
costo computacional, estos son:
• No retornar al estado de donde se viene, es decir, no generar ningún sucesor que sea el
mismo estado que el nodo padre.
• No crear caminos con ciclos. No generar ningún sucesor de un nodo que coincida con
alguno de sus antecesores.
• No generar ningún estado que halla sido generado antes. Esto requiere mantener en
memoria todo estado generado, resultando en una complejidad potencial del espacio de
O(bd).
Búsqueda de soluciones múltiples: Buscar todas las soluciones posibles para analizar cual es
la mejor necesita de una búsqueda exhautiva, lo que se puede hacer es buscar algunas y
escoger la mejor.
• Remover el camino de búsqueda: 1)Se calcula una solución paor algún método de
búsqueda, 2)Se eliminan del arbol de búsqueda todos los nodos que forman parte de la
solución encontrada en 1) y 3) repetir desde 1).
• Remover el último nodo del camino: La única diferencia respecto al anterior es que en 2)
sólo se elimina del árbol de búsqueda el último nodo del camino de la solución encontrada
en 1).
Búsqueda por diferencias: El proceso de análisis por reducción por diferencias consiste en
detectar diferencias entre el estado actual y el estado meta, de tal manera que al pasar el
tiempo el nuevo estado este mas cerca del estado objetivo. Para esto es necesario aplicar
operadores en cada instancia para la reducción de diferencias.
Cuando un operador indicado y efectivo es escogido para realizar una acción que conduzca a
reducir la diferencia, entonces el estado meta será mas fácil de alcanzar.
El primer programa de I.A. que explotó el análisis de diferencias fue el solucionador general
de problemas Newell y Simon en 1963.
Para desarrollar la búsqueda es necesario un conjunto de reglas que puedan transformar un
estado del problema en otro. En la condición de las reglas se establecen las condiciones que
deben verificarse para poder aplicar la regla, en el consecuente de la regla se definen aquellos
aspectos del estado del problema que cambiarán al aplicar la regla. Además, se usa una tabla
12. de diferencias que describe cuando es apropiado cada operador. Una diferencia puede ser
resuelta por mas de un operador y un operador puede reducir mas de una diferencia. La
Robótica tiene las bases en este tipo de búsqueda.
ALGORITMO BEST-FIRST (Primero el mejor).
La búsqueda Best-First busca expandir el nodo más prometedor en cada nivel, teniendo
encuentra que este sea el mejor comparado con todos los ya visistados, en otras palabras el
nodo a expandir en cada paso debe ser preferentemente mejor que sus compañeros y todos los
anteriores, si no es así se continua con el mejor esté donde esté. Una de las estrategias más
sencillas es reducir al mínimo el costo estimaado para lograr una meta, o sea el nodo cuyo
estado se considere mas cercano a la meta. El problema consiste en poder estimar la distancia
a la que se encuentra un nodo en un estado determinado de la meta, el estimado o la distancia
estimada se puede tener a través de una función heurística.
h(n) = costo estimado de la ruta mas barata que une el estado del nodo n con un estado meta.
Ejemplo: Ir desde Arad hasta Bucharest según el mapa de Rumania.
BÚSQUEDA HEURISTICA
BÚSQUEDA A*