Resumen de IA(descargar aquí) - Wily Lobaina Pérez, Blog Personal

Ministerio de Educación Superior
Universidad de Guantánamo
Facultad de Informática
Resumen de
Inteligencia Articial
Carrera: Ingeniería en Informática.
Autor: Wily Lobaina Pérez
Año: Tercero
Semestre: II
Guantánamo junio de 2015
“Año del 57 Aniversario del triunfo de la Revolución”
Sumario
1. Métodos de solución a problemas de búsqueda sobre espacios de estado
 Búsqueda no informada( búsqueda a ciegas)
 Búsqueda a lo profundo( depth-first search)
 Qué hacer si cae en un ciclo infinito?
 Búsqueda a lo ancho( breadth-first search)
 Búsqueda informada(heurística)
 Primero al mejor
Heurística admisible
Distancia de Manhattan(Distancia de Taxicab)
2. Formas de representación del conocimiento.
 Lógica(Proposicional, Cálculo de predicados, etc.).
 Redes Semánticas
 Frames(Marcos o armazones)
 Guiones (Scripts)
3. Sistemas de Expertos. Sistemas basados en reglas.
o Motor de inferencia. Encadenamiento de reglas.
Búsqueda primero a lo ancho (breadth first search).
Estrategia FIFO [ First In First Out ] -> (Cola)
Equivalente al recorrido de un árbol por niveles
Se basa en desarrollar completamente cada nivel del árbol antes de pasar a
desarrollar el siguiente.
Una búsqueda primero a lo ancho (breadth-first) genera y explora primero todos
los sucesores del nodo raíz. Si no se encuentra la meta, pasa a los sucesores del
segundo nivel y así sucesivamente por niveles. Suponiendo que el objetivo a
alcanzar es el nodo 7, el recorrido primero a lo ancho del espacio de búsqueda
que se muestra en la figura 1.3, es 1-2-3-4-5-6-7.
Fig. 1.3. Un ejemplo de espacio de búsqueda
Si el número máximo de hijos (o ramas) de un nodo es b y la profundidad de la
solución es d, entonces el número de nodos en el nivel d es
y la cantidad de
tiempo usada en la búsqueda es en el caso peor:
1+b+
+ ... +
, la cual para grandes valores de d, puede ser aproximada por
. Es por esto que la complejidad temporal de este método de búsqueda es
O( ).
Ventajas
- Si existe una solución este método garantiza encontrarla y si hay varias
soluciones siempre encontrará la menos profunda en el árbol de búsqueda.
(Si hay una solución la encuentra. Es más, si hay varias encuentra la óptima.)
- El método es efectivo cuando el factor de ramificación, o sea, el número
promedio de hijos de un nodo, es pequeño, pues entonces la cantidad de nodos
por niveles será pequeña y es mejor explorar un nivel antes de pasar al siguiente.
Desventajas:
- Necesita mucha memoria. Como cada nivel del árbol tiene que ser almacenado
completamente para poder generar el próximo nivel y la cantidad de memoria es
proporcional al número de nodos almacenados, su complejidad espacial es
también O( ).
- Requiere mucho trabajo, especialmente si el camino más corto a la solución es
muy largo, puesto que el número de nodos que necesita examinar se incrementa
exponencialmente con la longitud del camino.
Implementación
Una forma de implementación de este método es usar un conjunto de caminos
candidatos:
- Si el primer camino está encabezado por un nodo objetivo, ésta es la solución del
problema.
- Si no,
a) Remover el primer camino del conjunto de caminos candidatos, generar
el conjunto de todas las posibles extensiones un nivel más de este camino y
añadir las mismas al final del conjunto.
b) Repetir el proceso.
Tomando el ejemplo mostrado en la figura 1.3 este proceso se desarrollaría como
sigue:
a) Conjunto de caminos candidatos (CCC) inicial [[1]]
b) b) Generando las extensiones de [1]
[[2,1] , [3,1]]
c) Al remover el primer camino candidato y generar sus extensiones: [[4,2,1]
,[5,2,1]] se obtiene el nuevo CCC:
[[3,1] , [4,2,1] , [5,2,1]]
d) Removiendo y generando nuevamente las extensiones [[6,3,1] , [7,3,1]] se
obtiene el CCC:
[[4,2,1] , [5,2,1] , [6,3,1] , [7,3,1]]
e) Así sucesivamente son obtenidos los siguientes conjuntos hasta llegar a:
[[7,3,1] , [8,4,2,1] , [9,4,2,1] , [10,5,2,1], [11,6,3,1]]
En este caso el camino inicial tiene como cabeza el nodo objetivo y el
proceso termina en esta solución.
Propiedades de la Búsqueda a lo Ancho
 Completa?
Sí, mientras b sea finito
 Complejidad temporal?
1+b+
+
+...+
= O( )
 Complejidad espacial?
O( ) (todos los nodos en memoria)
 Óptima?
Sí (con costo unitario por paso), subóptima en general
 FIFO
Recorridos sobre grafos. Búsqueda primero en anchura
Nodo inicial (raíz): s
Nodo final (meta): x
Cola Q={[s]}
Cola Q={[r,s],[w,s]}
Cola Q={[w,s],[v,r,s]}
Cola
Q={[v,r,s],[t,w,s],[x,w,s]}
Solución: S={[x,w,s]}
Búsqueda primero en profundidad (depth-first search).
Estrategia LIFO [ Last In First Out ] -> (Pila)
Equivalente al recorrido en pre-orden de un árbol.
Se basa en elegir un camino en el árbol y seguirlo hasta el final. Si no se
encuentra la solución se procede y se prueba por otro camino.
Nota: Es más eficiente en un árbol con poca ramificación.
Búsqueda primero en profundidad (depth-first) explora, primeramente, el nodo raíz
y luego genera el sucesor de éste ubicado en la rama más a la izquierda. Si este
nodo es el objetivo, entonces hemos encontrado el camino. Si no, se continúa
extendiendo este camino tomando siempre el primer sucesor. Si el nodo no tiene
más sucesores, se pasa al siguiente sucesor de su predecesor, o sea, se
retrocede al nivel anterior para tomar el otro sucesor y así sucesivamente, hasta
alcanzar el objetivo o hasta que se realice un corte a alguna profundidad
determinada.
Ventajas
- Requiere mucha menos memoria (sólo hay que guardar el camino actual).
- Puede encontrar una solución sin examinar mucho el árbol, sobre todo si hay
varios caminos a la solución.
La ventaja de este método está en la eficiencia que se alcanza en el uso de la
memoria. Si la longitud máxima de una rama del árbol es d nodos, como sólo se
necesita almacenar el camino actual, entonces la complejidad espacial del
algoritmo es O(d). En la práctica la búsqueda por este método se limita por el
tiempo y no por el espacio.
Desventaja
La desventaja del método es que si existen ramas infinitas, puede no encontrar la
solución al problema, aun teniéndola. Es por esto que, en ocasiones, se requiere
que se defina un corte a una profundidad arbitraria para evitar, lo más posible,
caer en caminos o lazos infinitos. Si la profundidad de corte seleccionada c es
menor que la profundidad de la solución d, el algoritmo terminará sin encontrar
una solución, mientras que si c > d, se paga un precio alto, O( ), en términos del
tiempo de ejecución, donde b es el número máximo de hijos (o ramas).
Qué hacer si cae en un ciclo infinito? Hacer un corte
-Si existen ciclos no se encuentra la solución, y el programa cae en un ciclo
infinito, para darle solución a esto es necesario programar un corte en caso de
existir ciclos o para prevenir ciclos. Ej: Si se han pasado por 500 estados hacer un
corte.
Propiedades de la Búsqueda en Profundidad





Completa?
No; falla en espacio de infinita profundidad o con lazos
Complejidad temporal?
O( ): terrible si m es mucho mayor que d
Complejidad espacial?
O( ) (i.e., espacio lineal)
Óptima?
No
LIFO
Comparación entre búsqueda en profundidad y búsqueda a lo ancho
La búsqueda primero en profundidad es mejor cuando el nodo objetivo está
situado en la porción inferior izquierda del árbol de búsqueda, mientras que la
búsqueda primero a lo ancho es mejor cuando el nodo objetivo está situado en la
porción superior derecha de dicho árbol.
Recorrer un grafo en PreOrden
void preOrder(PNodo tree) {
if (tree != NULL) {
printf(“%d”,tree->Value);
preOrder(tree->Left);
preOrder(tree->Right);
}
}
Imprimir en PreOrden:
6 2 1 4 3 5 7
6
2
1
3
4
5
7
Recorridos sobre grafos. Búsqueda primero en profundidad
Nodo inicial (raíz): s
Nodo final (meta): x
Pila S={}
Pila S={s}
Pila S={r,s}
Pila S={v,r,s}
Pila S={w,s}
Pila S={t,w,s}
Pila S={u,t,w,s}
Pila S={y,u,t,w,s}
Pila S={x,y,u,t,w,s}
Búsqueda por el mejor nodo(best-first search).
Utiliza dos estructuras auxiliares:
Abiertos : es una cola de prioridad para los nodos no visitados.
Cerrados : es el conjunto de los nodos visitados.
La búsqueda por el mejor nodo es una forma de combinar las ventajas de las
búsquedas en profundidad y de anchura en un único método. En cada paso del
proceso de búsqueda por el mejor nodo, seleccionamos el más prometedor de
aquellos nodos que se han generado hasta el momento. Esto se realiza aplicando
una función heurística apropiada a cada uno de ellos. Entonces expandimos el
nodo elegido usando las reglas para generar a sus sucesores. Si uno de ellos es
una solución podemos terminar. Si no, todos esos nodos se añaden al conjunto de
nodos generados hasta ahora. Se selecciona de nuevo el más prometedor y el
proceso continúa. Lo que sucede usualmente es que se realiza un proceso de
búsqueda en profundidad mientras se explora una rama prometedora. Como
ocasionalmente no se encuentra solución, se explora otra rama previamente
ignorada y que ahora parece más prometedora.
En este método de búsqueda la función heurística que estima los méritos de cada
nodo generado está definida como:
S
g(n)
f(n) = g(n) + h(n),
n
h(n)
Dónde:


t
g(n) es una medida del costo del camino desde el nodo inicial al nodo
actual n
h(n) es un estimado del costo adicional de llegar desde el nodo n al nodo
meta.
g(n) no es, necesariamente, el costo del camino óptimo desde el nodo inicial al
nodo actual, pues puede haber caminos mejores no recorridos todavía. g(n)
simplemente se calcula como la suma de los costos de los arcos del camino
actual. La función h(n), sin embargo, es típicamente heurística y explota el
conocimiento sobre el domino del problema, ya que el “mundo” entre el nodo n y el
meta no ha sido explorado. Por supuesto, no existe un método general para
construir h(n), sino que depende del problema particular.
Al algoritmo de búsqueda que utiliza la función f(n) se le llama algoritmo A. Este
algoritmo no garantiza encontrar el camino óptimo a la solución, pues éste sólo
calcula un estimado del costo para alcanzar el nodo objetivo.
La figura 3.12 muestra el principio de un procedimiento de búsqueda por el mejor
nodo. Los números que aparecen al lado de los nodos son los valores de f(n).
Note cómo en cada paso se selecciona el nodo de menor valor de f(n), generando
sus sucesores.
Para implementar este algoritmo hay que mantener, además de la lista de nodos
visitados, una lista de nodos generados pero no visitados. Esta lista permite al
algoritmo retomar un camino que fue abandonado temporalmente por otro que
parecía más promisorio. Este método de búsqueda consiste en: el mejor nodo de
la lista de nodos generados y no visitados (inicialmente el nodo raíz) se expande
generando sus sucesores y se colocan en la lista de nodos visitados; la función de
evaluación heurística se aplica a todos los sucesores y ellos son insertados en la
lista de nodos no visitados en orden de su costo.
Por ejemplo, para el problema del rompecabezas de 8 piezas puede tomarse h*(n)
como el número de piezas que no están en su posición final. Otra variante, que
contiene más información heurística pero requiere más cálculos, es la suma de las
distancias desde la posición actual de cada pieza a su posición correcta.
Ventajas/Desventajas de Primero al mejor
Ventajas
 Algoritmo completo(encuentra la solución)
 Algoritmo optimo(encuentra la mejor solución)
Desventajas
 Explora en todas direcciones(no tiene en cuenta cual es nuestro objetivo)
• positivo: ahorra esfuerzo de búsqueda
• negativo: coste de cálculo de la heurística en cada nodo
Definición (Heurística)
Heurística
Una heurística será una función que utilizaremos para estimar cómo de cerca
estamos de la solución.
Heurística: función que asigna a cada estado una estimación del coste óptimo a
la solución.
Heurística:
Las heurísticas son criterios, métodos o principios para decidir cuál de entre varias
acciones promete ser la mejor para alcanzar una determinada meta.
Definición (Heurística admisible)
Heurística admisible
Se dice que una heurística es admisible si nunca sobreestima el costo de
alcanzar el objetivo, o sea, que en el punto actual la estimación del costo de
alcanzar el objetivo nunca es mayor que el menor costo posible.
Heurística admisible
es menor o igual que la distancia real mínima a la meta.
Heurística admisible
Una heurística es admisible si h(n) ≤ h*(n) donde h*(n) es el coste verdadero de la
solución desde n.
Nota: h representa el estado previo y h* el estado sucesor
Heurístico admisible:
Estimación del coste del nodo al objetivo que no supera el coste real
Cuando h(n) es admisible, asegura que la solución encontrada es la óptima.
El valor de la H puede ser estimado de diferentes maneras; dentro de las más
comunes se encuentra la heurística euclidiana, la heurística Manhattan
(distancia de ciudad, distancia Manhattan, distancia taxi, o longitud Manhattan) y la
heurística en diagonal.
Funciones heurísticas


Distancia de Hamming: el número de fichas que no están en su lugar.
Distancia Manhattan: la suma de las distancias desde la posición actual de
cada ficha hasta su posición original.
Queda claro que la Distancia de Hamming es admisible, dado que el número
total de movimientos para ordenar las fichas correctamente es al menos el número
de fichas que no están en su lugar (si cada ficha no está en su posición original
deberá ser movida al menos una vez). La Distancia Manhattan también será una
heurística admisible porque cada ficha será movida el menos la cantidad de pasos
entre ella misma y su posición original. Considere el siguiente rompecabezas:
4
7
15
2
6
12
13
10
3 8
9 14
1 5
11
La distribución de las distancias Manhattan para cada ficha quedaría así:
3 1 0 1
2 3 3 4
3 2 4 4
4 1 1
La distancia total de Manhattan para el puzle quedaría:
Funciones heurísticas
Ejemplos de heurísticos admisibles para el puzzle de las 8 piezas:
h1(n) = número de piezas en posición incorrecta
h2(n) = suma de las distancias de las piezas a sus posiciones finales, usando la
distancia de Manhattan de la pieza: suma de las distancias horizontal y vertical a
la posición final.
5
4
6
1
8
7
3
2
Estado inicial
1
8
7
2
3
4
6
5
Estado final
h1(Start) =?? 7
h2(Start) =?? 2+3+3+2+4+2+0+2 = 18
Ejemplos de funciones heuristicas
a) La basada en la distancia Manhattan (o distancia taxi). Se asocia a cada
casilla un número que es la suma de las distancias horizontal y vertical a su
posición en el tablero objetivo (esto es, la suma de diferencias de sus
coordenadas x e y). La función heurística es la suma de las distancias de cada
una de las casillas (excluyendo la que se encuentra vacía).
b) Otra heurística, mucho más simple, consiste en contar el número de casillas
que están fuera de su sitio (respecto al tablero objetivo). Es una heurística más
pobre que la anterior, puesto que no usa la información relativa al esfuerzo
(número de movimientos) necesario para llevar una pieza a su lugar.
c) Otra función heurística consiste en asignar a cada estado un valor que es la
distancia aérea (en línea recta) con el estado objetivo. Dicha distancia es la
distancia euclídea entre las coordenadas de dos ciudades.


Distancia euclídea
Distancia de Manhattan
Pasos para resolver un problema de búsqueda sobre espacios de estado
1. Formalizar el problema
Que es lo que tengo, que tipo de estructura voy a utilizar (listas, estructuras,
arreglos)
Estado Inicial, Estado Final.
2. Movimientos Legales
3. Hacer un grafo, describir el algoritmo a utilizar(búsqueda a lo profundo,
búsqueda a lo ancho, primero al mejor)
El espacio de estado del problema es el conjunto de todos los estados
alcanzables a partir del estado inicial mediante una secuencia de acciones
cualquiera.
Conceptos básicos (espacio del problema)
• Estado: una posible configuración de un problema
• Espacio de estados: todas las configuraciones
• Operadores:
• acciones legales
• generan estados sucesores de un estado
• Estados inicial y objetivo
• Solución:
• secuencia operadores de inicial a objetivo: path-finding, games
El juego del 8 Puzzle
1. Formalización del problema
• Estado inicial / objetivo:
El objetivo es llegar de un estado inicial cualquiera al estado final:
5
4
6
1
8
7
3
2
Estado inicial
1
8
7
2
3
4
6
5
Estado final
Estructura a utilizar: Lista
Estado inicial: [5,4,0,6,1,8,7,3,2]
Estado final:
[1,2,3,8,0,4,7,6,5]
Nota: otra forma de representar pudiera ser: Matriz
Representación de estados:
A(1; 1) = 5
A(2; 1) = 6
A(3; 1) = 7
A(1; 2) = 4
A(2; 2) = 1
A(3; 2) = 3
A(1; 3) = 0
A(2; 3) = 8
A(3; 3) = 2
2. Movimientos Legales
Para pasar de un estado a otro solo tenemos que desplazar una pieza a la celda
vacía.
– 4 movimientos posibles a partir de cualquier estado:
arriba, abajo, a la izquierda, a la derecha.
• Operadores:
• arriba: ^
• abajo: v
• derecha: >
• izquierda: <
Para ello solo se podrán mover las fichas contiguas al espacio vacio:
2
4
7
2
7
1
4
5
6
8
3
2
4
7
1
5
1
6
8
3
5
2
4
7
6
8
3
1
8
5
6
3
2
4
7
1
5
6
8
3
Sucesores
3. Hacer un grafo
• Espacio de estados: posibles configuraciones
• Solución: secuencia mínima de movimientos para llegar al estado objetivo
Estado inicial
1
8
7
1
8
7
2
6
5
3
4
1
8
7
2
5
1
8
7
2
6
5
1
8
2
6
7
3
6
4
3
4
3
4
5
2
3
6
4
5
1
7
2
8
5
3
6
4
1
8
7
2
6
5
3
4
1
8
7
2
6
3
4
5
1
8
7
2
3
4
5
6
Estado objetivo
1
8
7
2
5
3
6
4
Formas de representación del conocimiento. Importancia. Saber
cuándo usar cada una.




Redes Semánticas.(Representa el conocimiento a través de la tripleta
OAV) -> una ayuda grafica para visualizar una base de conocimiento.
Sistema basado en Reglas(Sistema de Expertos basado en Reglas)
Lógica Descriptiva(Modelar conocimiento)
Ontología(Para Web)
Nota: En Prolog se describe el conocimiento con lógica de 1er Orden.
En la ontología para la Web se describe el conocimiento con lógica Descriptiva.
Clasificación de las formas de representación del conocimiento.
Las F.R.C. pueden clasificarse en:
- Lógica (Proposicional, Cálculo de predicados, No Monotónica, etc.).
- Redes semánticas (Semantic Networks).
- Marcos o armazones (Frames).
- Guiones (Scripts).
Redes semánticas.
Planteamiento de un problema.
En la práctica, nos encontramos con problemas donde es necesario representar el
conocimiento a través de los conceptos, sus rasgos y las relaciones que pueden
establecerse entre ellos. Por ejemplo, ¿cómo representar todo el conocimiento
acerca del concepto de silla?.
Definición.
Una red semántica consiste de puntos llamados nodos, conectados por enlaces
llamados arcos que describen las relaciones entre los nodos. Los nodos
representan objetos, conceptos, eventos, acciones o atributos. Los arcos pueden
definirse de varias formas, dependiendo de la clase de conocimiento
representado, por ejemplo, arcos comunes usados para representar jerarquías son
esun y partede. La forma de representar una red semántica es un grafo orientado
cuyos arcos son etiqueteados con los nombres de las relaciones.
Veamos en la figura 2.3 la red semántica que describe el problema inicial.
Fig. 2.3. Red semántica que describe el concepto de silla.
Analicemos otro ejemplo. Supongamos que tenemos el siguiente conocimiento
expresado a través de los siguientes hechos:
1) Víctor es un pingüino.
2) Todos los pingüinos son pájaros.
3) Todos los pájaros son animales.
4) Todos los mamíferos son animales.
5) Todos los perros son mamíferos.
6) Sultán es un sato.
7) Todos los satos son perros.
8) Una raza de perro es el pastor.
9) A Víctor le agrada Sultán y a Sultán le agrada Víctor.
10) Un pájaro puede volar.
11) Un perro puede correr.
Como podemos ver los hechos 2, 3, 4, 5, 7 y 8 encierran relaciones del tipo esun.
Los hechos 10 y 11 son relaciones de propiedad. El 1 y el 6 reflejan instancias de
un concepto y el hecho 9 encierra relaciones entre individuos. Vea la red
semántica que representa este conocimiento en la figura 2.4.
Criterios sobre el dominio de aplicación.
En sus inicios (finales de los años 50 e inicios de los 60), las redes semánticas
fueron utilizadas en sistemas de traducción automática. El primero de ellos, se
desarrolló en la Universidad de Cambridge donde se definió un diccionario
conceptual de 15000 entradas a partir de 100 tipos de conceptos primitivos.
Las redes semánticas han sido utilizadas además, en:

En el procesamiento (comprensión) del lenguaje natural.
Las redes semánticas son útiles para representar los contenidos de una oración
declarativa típica. Ej: Jonh le dio el libro a Mary.



La programación y aprendizaje automáticos.
Para sintetizar respuestas.
Memoria asociativa
Por sus características, las redes semánticas han sido propuestas como un
mecanismo para simular algunas de las propiedades asociativas de la memoria
humana.