Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
El test de Turing
Alan Mathison Turing (1912-1954) es considerado como el padre de la teora de la
computacin y de la inteligencia artificial.
Representacin de conocimientos
Todo comportamiento inteligente implica un uso intensivo de informacin. Es por lo
tanto natural que una de las preocupaciones centrales de la Inteligencia Artificial
se refiera a cmo representar la informacin o, para enfatizar la complejidad de su
estructura, el conocimiento necesario para que el computador pueda operar
inteligentemente.
El enfoque ms difundido se basa en la hiptesis del sstema de smbolos fsico
que plantea que la actividad inteligente, tanto en el humano como en el
computador, se logra a travs del uso de:
1. Patrones de smbolos para representar aspectos significativos de un
dominio de problema.
2. Operaciones sobre estos patrones para generar soluciones potenciales a
los problemas abordados.
3. Mecanismos de bsqueda para seleccionar la mejor solucin entre las
posibilidades generadas.
Esta hiptesis distingue a los patrones, formados combinando smbolos, del medio
fsico utilizado para implementarlos. Si la inteligencia depende slo de la
estructura de un sistema de smbolos, cualquier medio fsico que permita
implementarlo, en particular un computador, puede lograr un comportamiento
inteligente.
Entre los mecanismos simblicos de representacin, se destaca la lgica formal
que presenta las ventajas de una semntica bien definida y de reglas de inferencia
correctas y completas.
Lgica proposicional
La lgica proposicional permite representar propiedades elementales del dominio
modelado y razonar sobre ellas. Los patrones o expresiones de la lgica
proposicional se construyen a partir de un alfabeto que consta de los siguientes
smbolos:
1. conectivos lgicos: ,
2. smbolos de puntuacin: ), (
3. un conjunto fijo P = {p, q, r, ...} de variables proposicionales.
El lenguaje L(P) de expresiones de la lgica proposicional puede definirse
inductivamente a partir de estos elementos aplicando las siguientes reglas:
1. Cada variable proposicional de P es una expresin (atmica).
2. Si X es una expresin, entonces la negacin X tambin es una expresin.
3. Si X y Y son expresiones, entonces tambin lo son:
la conjuncin (X
Y)
la disyuncin (X
Y)
la implicacin (X
la equivalencia (X
Y)
Y)
fusibleQuemado)
funciona)
funciona)
fusibleQuemado)
{0, 1}.
s1: p
1, q
0, r
s2: p
0, q
1, r
o Si X es (Y
o Si X es (Y
caso contrario.
o Si X es (Y
contrario.
Esto puede verse ms claramente definiendo la semntica de los conectivos
lgicos mediante tablas de verdad.
Tablas de verdad
Dado que en el clculo proposicional se opera slo sobre dos valores de verdad,
para cualquier expresin existe un nmero finito de valuaciones posibles que se
pueden tabular. La tabla de verdad de una expresin con n variables
proposicionales tiene 2n filas:
X
X
0
(X
Y)
(X
Y)
(X
Y)
(X
Y)
Estas tablas corresponden a definiciones extensivas de funciones sobre {0, 1}, por
ejemplo:
: {0, 1} {0, 1}
{0, 1}
(0,0)
(0,1)
(1,0)
(1,1)
Equivalencia lgica
Dos frmulas de L(P) son lgicamente equivalentes si exactamente las mismas
valuaciones las hacen verdaderas, lo que puede verificarse utilizando una tabla de
verdad. Por ejemplo, para P = {p, q}:
(p
q)
(p
q)
p
q
0
q) y (p
q) son lgicamente
equivalentes, ya que sus valores de verdad coinciden para cada una de las cuatro
valuaciones posibles de P.
Identidades lgicas
La equivalencia lgica depende slo de la forma de las expresiones comparadas,
y no del conjunto particular de variables proposicionales utilizadas.
Esto permite definir identidades lgicas genricas:
doble negacin: X = X
(X
Y) = (X
implicacin:
Y)
ley de Morgan:
(X
Y) = (X
(X
distributividad:
commutatividad:
(Y
Y)
(X
ley
contrapositiva:
(X
Z) = (X
Z))
Y) = (Y
Y) = (X
(X
Z))
X)
Y)
(Y
(X
Z)) = ((X
Y) = (Y
((X
asociativividad:
Y) (X
(Y
Y)
(X
Y)
Z)) = ((X
(X
Y) = (Y
((X
X)
Y)
(Y
Z))
Z) = (X
Z))
X)
(p
q) ((p
q)
p) (((p
q)
p)
0 0
0 1
1 0
1 1
q)
X).
Y) es una tautologa.
La importancia de las tautologas desde el punto de vista computacional radica en
el hecho que se pueden estudiar y aplicar en forma general. Pertencen al sistema
lgico, y no al dominio de aplicacin.
fusibleQuemado)
((enchufado
enchufado
fusibleQuemad funcion
o
a
fusibleQuemado)
funciona)
X) es insatisfacible. Tambin
. Se dice
o es un modelo de
se
cumple s(X) = 1.
Satisfacer a un conjunte de expresiones es equivalente a satisfacer la conjuncin
de las expresiones del conjunto. Por ejemplo, para P = {enchufado,
fusibleQuemado, funciona}, el conjunto de expresiones
= {X1, X2}, con
X1 = ((enchufado
fusibleQuemado)
X2 = ((enchufado
funciona)
funciona) y
fusibleQuemado)
= {X1, X2}
enchufado
fusibleQuemado
funciona
, entonces tambin s
X.
q)}
q.
q).
Este ejemplo, que permite corroborar la validez del modus ponens, puede
verificarse mediante una tabla de verdad:
(p
q)
{(p
q), p}
tambin satisfacen a q.
Lgica de predicados de primer orden
La lgica proposicional no es lo suficientemente poderosa para modelar ciertos
mecanismos de razonamiento. Por ejemplo, consideremos el silogismo clsico:
Premisa mayor: Todos los hombres son mortales (p).
Premisa menor: Scrates es un hombre (q).
Conclusin: Scrates es mortal (r).
En lgica proposicional, las dos premisas y la conclusin se representan mediante
variables distintas (p, q y r) cuyos valores de verdad estn dados por una funcin
de valuacin
s: {p, q, r}
{0, 1}.
mortal(X))
hombre(scrates)
mortal(scrates)
Para aplicar este silogismo basta asignar la variable X, que puede tomar un valor
arbitrario, con la constante scrates. Se obtiene la frmula:
hombre(scrates)
mortal(scrates)
(existencial),
(universal) .
4. smbolos de puntuacin: ), (
B)
la disyuncin (A
B)
la implicacin (A
B)
la equivalencia (A
B)
la cuantificacin universal
xA
xA
Las variables que aparecen en una frmula fuera del alcance de un cuantificador
son llamadas variables libres. Nosotros slo vamos a considerar frmulas sin
variables libres.
universo).
3. si c es un smbolo de constante de C, entonces cU es una entidad
individualizada del universo U (slo se puede individualizar un nmero finito
de entidades, sin embargo se puede denotar un nmero infinito de ellas a
travs de la aplicacin de funciones).
Regla de interpretacin
Valor (semntica)
I() = 0
s()
I(s()) = sucesor(I())
= sucesor(0)
s(s())
I(s(s())) = sucesor(I(s()))
= sucesor(1)
s()+s()
Regla de interpretacin
Valor (semntica)
I() = 0
s()
I(s()) = sucesor#2(I())
= sucesor#2(0)
s(s())
I(s(s())) = sucesor#2(I(s()))
= sucesor#2(1)
s()+s()
A siempre y
que I
B.
3. Si A es de la forma
(B
C), entonces I
A ssi I
ByI
C.
(B
C), entonces I
A ssi I
BoI
C.
(B
C), entonces I
A ssi no I
(B
C), entonces I
A ssi I
B y no I
4. Si A es de la forma
C.
BoI
ByI
C.
C, o no
x B, entonces I
x B, entonces I
B.
B.
Identidades lgicas
Si para todas las interpretaciones I que satisfacen I
simultneamente que I
A se cumple
x A(x) =
x A(x)
x A(x) =
x A(x)
x A(x) =
y A(y)
x A(x) =
y A(y)
x (A(x)
B(x)) =
x A(x)
y B(y)
x (A(x)
B(x)) =
x A(x)
y B(y)
Se lee: I satisface a
se cumple I
A.
A.
conjunto limitado de axiomas, todas las dems verdades son consecuencia lgica
de los axiomas y sera redundante considerarlas para acotar las interpretaciones
posibles).
Demostraciones formales
Si
son
como un
es
tal que:
An es la frmula buscada A
(axioma de la teora)
1. Si (
A)
deductivo es correcto.
Esta propiedad indica que todo lo que se deriva sintcticamente
corresponde semnticamente a una verdad.
2. Si (
A)
deductivo es completo.
Esta propiedad se cumple si todas las consecuencias lgicas de los
axiomas son formalmente deducibles. El sistema deductivo da cuenta por
completo de la semntica.
En general es ms difcil garantizar la completitud que la correccin (en particular
en universos infinitos, como lo demuestra el famoso teorema de Gdel).
Axiomas lgicos
Los axiomas lgicos son frmulas lgicas vlidas siempre, independientemente de
la interpretacin. No son consecuencia lgica de ninguna hiptesis. Esto se puede
expresar utilizando la sigiente notacin:
A (A es un axioma lgico)
Una manera de generarlos es utilizando las identidades lgicas (ver secciones 2.7
y 5.7). A partir de la identidad A = B, se puede plantear el axioma lgico (A
(B
A)
(A
(B
(A
B)
C))
(B
((A
B)
(A
C))
A)
Reglas de deduccin
Una regla de deduccin permite generar nuevas frmulas lgicas que explicitan la
informacin contenida implcitamente en frmulas ya conocidas.
Una regla se define precisando las condiciones que deben cumplirse para aplicarla
(las premisas) y el resultado de su aplicacin (la conclusin). Por ejemplo, la regla
del modus ponens o de eliminacin de la condicin se escribe as:
A
A
B
A
B, A}
Para que un sistema deductivo sea correcto, todas las reglas de deduccin
utilizadas deben ser correctas, es decir, semnticamente pertinentes. En este caso
particular, se debe verificar (y se verifica):
{A
B, A}
B
A
A
B
x A(x)
instanciacin universal
A(c)
perro (fido)
x (perro (x)
animal (x))
y (animal (y)
mortal (y))
demostrar
mortal (fido)
Pasos:
1. perro (fido), pertenece a
2.
x (perro (x)
3. (perro (fido)
x=fido
4. animal (fido), aplicando modus ponens
5.
y (animal (y)
6. (animal (fido)
y=fido
7. mortal (fido), aplicando modus ponens
Clasulas y resolucin
En la prctica resulta incmodo operar con un sistema deductivo formal en que las
expresiones lgicas utilizadas tienen formas muy variadas y se debe elegir entre
muchas reglas de deduccin aplicables en cada paso.
Esta situacin se puede mejorar notablemente restringiendo el tipo de las
expresiones lgicas a un formato ms simple de operar. En particular, la forma de
clusula slo utiliza los conectivos (negacin) y
(disyuncin), y slo
Clusulas
Una clusula es una frmula lgica constituida por una disyuncin de literales
L1
L2
...
Li
...
Ln-1
Ln
en que cada literal Li es una frmula atmica negada (literal negativo) o no negada
(literal positivo).
El orden en que aparecen los literales no es relevante, y se puede por lo tanto
representar la misma clusula como un conjunto de literales:
{L1, L2, ... Li, ... Ln-1, Ln}
En el caso particular en que este conjunto es vaco, la clusula se denomina
clusula vaca y se simboliza por
.
Resolucin
La regla de resolucin binaria permite derivar una nueva clusula (el resolvente) a
partir de dos clusulas padres. En su forma ms simple, se define mediante el
siguiente esquema, cuya validez puede verificarse utilizando una tabla de verdad:
P
Q
P
Para aplicarla, es necesario que las clusulas padres contengan un literal que
manifieste la misma frmula atmica (P en el esquema), pero en forma positiva en
un padre y negativa en el otro. Este literal es eliminado en el resolvente,
obtenindose la disyuncin del resto de los literales de las clusulas padres. El
esquema general de la regla es:
P
Q1
Q2
...
Qn
P
R1
R2
...
Rm
Q1
Q2
...
Qn
R1
R2
...
Rm
(A
B) =
B)
B) = (A
B)
(A
B) = (A
B)
x A(x) =
x A(x)
x A(x) =
x A(x)
sobre
(A
(B
C)) = ((A
B)
(A
C))
mujer (x))
y progenitor (x, y)
creado (x)))
Los pasos del proceso de normalizacin son:
1. eliminacin de
x ((hombre (x)
y)
y progenitor (x,
creado (x)))
2. reduccin de :
x ((hombre (x)
y)
mujer (x))
creado (x)))
3. estandarizacin de variables:
no cambia
mujer (x))
y progenitor (x,
4. skolemizacin:
x ((hombre (x)
mujer (x))
creado (x)))
(x)))
7. distribucin de
sobre
((hombre (x)
((mujer (x)
8. separacin de la conjuncin:
clausula 1: hombre (x)
creado (x)))
creado (x)))
creado (x)
creado (x)
creado
9. estandarizacin de variables:
clausula 1: hombre (x)
creado (x)
creado (y)
clusulas
Base de conocimiento (
):
1. perro-fido
2. perro-fido
animal-fido
3. animal-fido
mortal-fido
Base de conocimiento:
1. perro-fido
2. perro-fido
3. animal-fido
animal-fido
mortal-fido
padre 2
(3) animal-fido
(2) perro-fido
(1) perro-fido
resolvente
mortal-fido
animal-fido
(5) animal-fido
(6) perro-fido
(contradiccin)
Unificacin
La unificacin es un proceso que consiste en encontrar una asignacin de
variables que haga idnticas a las frmulas que se desea unificar. Su resultado, el
unificador, se expresa como un conjunto de pares substitucin/variable para cada
una de las variables asignadas (este conjunto recibe tambin el nombre de
substitucin). El valor de substitucin para una variable puede ser cualquier
trmino del lenguaje lgico utilizado (exceptuando trminos con la misma
variable). Por ejemplo, se pueden unificar las frmulas
padre(X, hermano(Y))
padre(juan, Z)
utilizando el unificador { juan / X, hermano(Y) / Z }.
Composicin de substituciones
La aplicacin de una substitucin s a una frmula F se escribe F s y entrega como
resultado una nueva frmula en que las variables asignadas han sido
reemplazadas por sus respectivos valores. Por ejemplo:
F = padre(X, hermano(Y))
s = { juan / X, hermano(Y) / Z }
F s = padre(pedro, hermano(Y))
Si F = padre(pedro, Z) se obtiene el mismo resultado (ya que s es el unificador de
ambas frmulas).
Dos substituciones s1 y s2 se pueden aplicar succesivamente con el mismo efecto
que una substitucin nica equivalente s que corresponde a la composicin de s1 y
s2:
(Fs1) s2 = F s
Si los valores de substitucin de s2 no hacen referencia a las variables asignadas
en s1, se puede calcular la composicin s de la siguiente manera:
s1 = { a1 / X1, a2 / X2,... , an / Xn }
s2 = { b1 / Y1, b2 / Y2,... , bm / Ym }
Ninguna variable Xj aparece en algn trmino bk.
s = { a1s2 / X1, a2s2 / X2,... , ans2 / Xn, b1 / Y1, b2 / Y2,... , bm / Ym }
Clculo del unificador ms general
Existe un algoritmo recursivo que entrega como resultado el unificador ms
general de dos frmulas lgicas, o, si no se pueden unificar, una indicacin de
falla. Para simplificar la especificacin de este algoritmo conviene reescribir las
frmulas en una notacin de "listas" (al estilo LISP) aplicando recursivamernte las
siguientes reglas:
(at1t2... tn)
smbolos de variables
lista vaca
lista no vaca
rt1
sr
(resto de t2) sc
R1
R2
...
Rm
...
Qn
R1
u = unify(PA, PB)
(Q1
Q2
R2
...
Rm) u
Para aplicar la regla se requiere que los trminos identificados (PA y PB) sean
unificables. El unificador u se aplica al resolvente.
Si se est utilizando la regla de resolucin en una demostracin por refutacin, las
asignaciones de variables encontradas al terminar el proceso corresponden a un
caso particular en que la consulta negada no se cumple, es decir, a un caso
particular en que la consulta original se cumple.
Viendo al problema planteado como una ecuacin lgica, lo que se obtiene es una
solucin particular. Haciendo un uso adecuado de mecanismos de backtracking se
pueden obtener todas las dems soluciones del problema. Este es el principio
fundamental de la programacin lgica.
clusulas
2.
X (perro (X)
animal (X))
3.
Y (animal (Y)
mortal (Y))
Base de conocimiento:
1. perro (fido)
2. perro (X)
animal (X)
3. animal (Y)
mortal (Y)
Por demostrar:
Negacin:
Z mortal (Z)
Z mortal (Z)
padre 2
(3) animal (Y)
unificador resolvente
mortal
{Y/Z}
{X/Y}
(Y)
(2) perro (X)
(5) animal (Y)
animal
(X)
(contradicci
(6) perro (X)
{ fido / X }
n)
Estrategias de resolucin
Para automatizar el proceso de resolucin por refutacin se requiere precisar una
manera de proceder que garantice llegar a una contradiccin si el conjunto de
clusulas es inconsistente. Las estrategias que cumplen con este requisito son
llamadas estrategias completas.
Un ejemplo de estrategia completa es hacer una bsqueda en amplitud que
explora todas las posibilidades en paralelo. Inicialmente se aparean las clusulas
del conjunto original de todas las maneras posibles y se genera un conjunto de
resolventes que corresponden a los casos en que se pudo aplicar la regla de
resolucin. En una segunda etapa, estas nuevas clusulas generadas se aparean
entre ellas y con las clusulas originales y se genera otro nuevo conjunto de
resolventes con los cuales se vuelve a repetir la operacin y as succesivamente
hasta encontrar un resolvente vaco. En cada etapa se aparean las nuevas
clusulas generadas en la etapa anterior con todas las clusulas generadas hasta
la etapa y las clusulas originales.
La estrategia de bsqueda en amplitud puede tornarse rpidamente inmanejable
dada la cantidad siempre creciente de clusulas generadas. Una manera de
controlar esta proliferacin sin perdida de generalidad (manteniendo la propiedad
de ser una estrategia completa) se logra restringiendo los apareamientos entre
clusulas slo a aquellos pares en que por lo menos una de las clusulas
involucradas sea derivada de la negacin de la consulta original. Esto se basa en
la intuicin de que si existe una contradiccin, necesariamente debe provenir de la
consulta negada, ya que una buena teora del dominio modelado no puede ser
inconsistente.
En problemas grandes, las estrategias completas suelen ser demasiado
exhaustivas para obtener un resultado en un tiempo prudente y se hace por lo
tanto necesario introducir heursticas que permitan orientar el proceso de
resolucin. Estas heursticas sacrifican la seguridad de encontrar la solucin para
acelerar el clculo (las estrategias heursticas generalmente no son completas).
Las heursticas ms utilizadas son:
1. Preferir resolver con clusulas de un solo literal. Es la nica manera de
obtener un resolvente ms pequeo que las clusulas padres, camino
obligado para llegar a un resolvente vaco.
Clusulas de Horn
La normalizacin a clusulas y el uso de demostracin por resolucin de
contradiccin facilitan la solucin automtica de los problemas planteados
mediante lgica. Sin embargo, existen muchas maneras de llevar a cabo una
demostracin, lo que implica elegir una estrategia cuya efectividad puede
depender del problema abordado.
Una manera de simplificar este proceso de demostracin es restringiendo el tipo
de clusulas con la cual se opera, tratando de mantener una forma intuitivamente
interpretable para un programador humano (para que sea posible plantear
directamente los problemas en ese formato) y que permita la aplicacin de un
algoritmo de resolucin ms facil de implementar.
Las clusulas de Horn satisfacen ambos requerimientos y estn en la base de la
mayora de los sistemas de programacin lgica, en particular de PROLOG. Una
clasula de Horn es una clusula con a lo ms un literal positivo, es decir:
P
Q1
Q2
...
Qn
Q2
...
Qn
Las clusulas con este formato son llamadas reglas. Desde un punto de vista
declarativo, una regla especifica la definicin de una relacin (P) en funcin de
otras relaciones (Q1, Q2, ... Qn). Desde un punto de vista procedural, P se
interpreta com un objetivo por cumplir que se descompone en Q1, Q2, ... Qn
subobjetivos, los cuales a su vez pueden admitir una descomposicin basada en
reglas.
Las clusulas que se reducen a un solo literal positivo son llamadas hechos y se
escriben
P
padre(X,Y).
ancestro(X,Y)
padre(Z,Y), ancestro(X,Z).
Las consultas pueden verse como ecuaciones lgicas cuyas variables son las
incgnitas por despejar.
Algoritmo de resolucin con clusulas de Horn
La consulta negada siempre se expresa mediante una clusula que slo contiene
literales negativos:
Q1, Q2, ... Qi, ... Qn.
Espacios de estados
Muchos de los problemas que pueden ser resueltos aplicando tcnicas de
inteligencia artificial se modelan en forma simblica y discreta definiendo las
configuraciones posibles del universo estudiado. El problema se plantea entoces
en trminos de encontrar una configuracin objetivo a partir de una configuracin
inicial dada, aplicando transformaciones vlidas segn el modelo del universo. La
respuesta es la secuencia de transformaciones cuya aplicacin succesiva lleva a
la configuracin deseada.
Los ejemplos ms carcteristicos de esta categora de problemas son los juegos
(son universos restringidos fciles de modelar). En un juego, las configuraciones
del universo corresponden directamente a las configuraciones del tablero. Cada
configuracin es un estado que puede ser esquematizado grficamente y
representado en forma simblica. Las transformaciones permitidas corresponden a
las reglas o movidas del juego, formalizadas como transiciones de estado.
Entonces, para plantear formalmente un problema, se requiere precisar una
representacin simblica de los estados y definir reglas del tipo condicin
accin para cada una de las transiciones vlidas dentro del universo modelado. La
accin de una regla indica como modificar el estado actual para generar un nuevo
estado. La condicin impone restricciones sobre la aplicabilidad de la regla segn
el estado actual, el estado generado o la historia completa del proceso de
solucin.
El espacio de estados de un juego es un grafo cuyos nodos representan las
configuraciones alcanzables (los estados vlidos) y cuyos arcos explicitan las
movidas posibles (las transiciones de estado). En principio, se puede construir
cualquier espacio de estados partiendo del estado inicial, aplicando cada una de
las reglas para generar los sucesores immediatos, y as succesivamente con cada
uno de los nuevos estados generados (en la prctica, los espacios de estados
suelen ser demasiado grandes para explicitarlos por completo).
Cuando un problema se puede representar mediante un espacio de estados, la
solucin computacional correspende a encontrar un camino desde el estado inicial
a un estado objetivo.
con puma
con cabra
con lechuga
estado(i,i,i,i)
problema
problema
estado(d,i,d,i)
problema
estado(d,i,d,i)
estado(i,i,d,i)
imposible
estado(i,i,i,i)
imposible
estado(i,i,d,i)
estado(d,i,d,i) estado(d,d,d,i)
imposible
estado(d,i,d,d)
estado(d,d,d,i)
problema
estado(i,i,d,i)
estado(i,d,i,i)
imposible
estado(d,i,d,d)
problema
imposible
estado(i,i,i,d)
estado(i,i,d,i)
estado(i,d,i,i)
problema
imposible
estado(d,d,d,i)
estado(i,i,i,d)
problema
estado(d,d,i,d)
estado(i,d,i,d)
estado(i,i,i,d)
imposible
estado(i,d,i,i)
estado(i,d,i,d)
estado(d,d,i,d)
imposible
estado(d,d,d,d)
imposible
estado(d,d,d,d)
problema
problema
estado(i,d,i,d)
problema
estado(d,d,i,d) estado(d,i,d,d)
estado(d,d,i,d)
imposible
open
closed
{estado_inicial}
{}
Bsqueda en profundidad
En ingls, depth-first search.
Si el conjunto open se maneja como una lista LIFO, es decir, como un stack,
siempre se estar visitando primero los ltimos estados en ser generados. Esto
significa que si A genera B y C, y B genera D, antes de visitar C se visita D, que
est ms alejado de la raiz A, o sea ms profundo en el rbol de bsqueda. El
algoritmo tiene en este caso la tendencia de profundizar la bsqueda en una rama
antes de explorar ramas alternativas.
procedure Bsqueda_en_profundidad {
open
[estado_inicial]
closed
{}
Bsqueda en amplitud
En ingls, breadth-first search.
Si el conjunto open se maneja como una lista FIFO, es decir, como una cola,
siempre se estar visitando primero los primeros estados en ser generados. El
recorrido del espacio de estados se hace por niveles de profundidad.
procedure Bsqueda_en_amplitud {
open
[estado_inicial]
closed
{}
i=1,...,n
Bsqueda heurstica
En ingls, best-first search.
Los algoritmos anteriores hacen una bsqueda ciega y exhaustiva, lo que presenta
serios problemas en espacios de estado grandes. Esto se puede mejorar
expandiendo primero los estados que tienen ms expectativas de encontrarse en
el camino a la solucin, lo que implica utilizar una funcin heurstica que permita
darle una mayor prioridad a esos estados.
El conjunto open se maneja en este caso como una cola de prioridad ordenada
segn una funcin heurstica que aporta un conocimiento adicional sobre el
problema abordado. Esta funcin puede ser, por ejemplo, una estimacin del largo
del camino que queda por recorrer para llegar al estado objetivo.
procedure Bsqueda_heurstica {
open
[estado_inicial]
closed
{}
Admisibilidad
Un algoritmo de bsqueda es admisible si garantiza encontrar el camino ptimo
entre el estado inicial y el estado objetivo.
Una bsqueda basada en una funcin de evaluacin heurstica f(n) = g(n) + h(n)
es admisible si h(n) subestima el largo del camino mnimo efectivo.
Para demostrar esta propiedad, se define una funcin de evaluacin f*(n) que
entrega el largo del camino ptimo del nodo inicial a un nodo objetivo pasando por
el nodo n (una funcin de esta naturaleza se denomina un orculo porque implica
adivinar cul es el mejor camino sin recorrer el espacio de estados). Esta funcin
se calcula como una suma f*(n) = g*(n) + h*(n) en que g*(n) es el largo efectivo del
camino ptimo del nodo inicial al nodo n y h*(n) el largo efectivo desde n hasta el
objetivo.
Siempre se cumple que g(n) >= g*(n). Se quiere demostrar que si h(n) <= h*(n) la
bsqueda heurstica es admisible.
Demostracin por el absurdo:
Supongamos que el nodo objetivo o fu generado por un camino de largo l.
Se sabe que f(o) = l.
El nodo o fu el ltimo nodo en ser expandido, por lo tanto para todo nodo x
de la lista open se debera cumplir que f(x) >= f(o). Por lo tanto f(x) >= l.
Sin embargo, si el camino que lleva a o no es el ptimo, debera existir un
nodo n en la lista open, generado antes de expandir o, que se encuentra en
el camino ptimo.
Si n est en el camino ptimo g(n) = g*(n).
Por lo tanto, f(n) = g*(n) + h(n).
Por hiptesis h(n) <= h*(n), entonces f(n) <= f*(n).
Si suponemos que el camino de largo l que lleva a o no es ptimo, entonces
f*(n) < l.
Por lo tanto f(n) < l.
Contradiccin.
El algoritmo A con una evaluacin heurstica h(n) <= h*(n) se denomina algoritmo
A*.
Ntese que un caso particular del algoritmo A* se da cuando h(n) = 0. Este caso
corresponde a una bsqueda en amplitud (que tambin es admisible).
Algoritmo mini-max
Muchos juegos interesantes involucran dos oponentes, ninguno de los cuales tiene
un control completo sobre el desarrollo de las movidas. En un caso as no tiene
sentido buscar un camino ptimo desde el estado inicial hasta un estado objetivo,
en particular porque los oponentes no comparten el mismo objetivo (se supone
que ambos desean ganar, pero si uno gana el otro pierde).
El problema ya no es encontrar un camino completo, sino que encontrar la mejor
movida dado el estado actual del juego. La solucin para determinar cada movida
es hacer una bsqueda hasta una profundidad p dada y evaluar las posiciones
encontradas en el ltimo nivel. Mientras ms profundo es p, mayor es el horizonte
y ms seguros los elementos de decisin para elegir la mejor jugada (se preveen
las consecuencias de la jugada a ms largo plazo).
Los valores de las posiciones o estados del juego son una medida heurstica del
mrito de la configuracin evaluada que no necesariamente corresponden a una
estimacin de la distancia al objetivo. Los valores deben ser simtricos, ya que lo
que es bueno para un jugador es malo para su contrincante. Por convencin se
elige utilizar valores positivos para el jugador que tiene la partida y valores
negativos para su oponente.
Si le corresponde jugar al oponente, ste eligir la movida que lleva a un estado
con el menor valor posible. El oponente minimiza. El jugador que tiene la partida
hace lo contrario, maximiza. Por lo tanto, para evaluar una posicin no terminal del
espacio de estados explorado se propagan hacia arriba las evaluaciones del
ltimo nivel, maximizando o minimizando segn si es el turno del jugador que tiene
la partida (en un nodo MAX) o de su oponente (en un nodo MIN).
Las reglas recursivas para evaluar un nodo del rbol de bsqueda son:
1. si es un nodo terminal (se encuentra en el ltimo nivel o corresponde a una
posicin final), su valor se calcula aplicando una funcin heurstica.
2. si es un nodo MAX no terminal, su valor se calcula tomando el mximo de
los valores de sus sucesores.
Cortes alfa-beta
Mientras se est explorando el espacio de estados y propagando las evaluaciones
del ltimo nivel, los posiciones no terminales reciben valores provisorios que
permiten descartar ramas enteras del rbol de bsqueda. En efecto, si el valor
provisorio de un nivel minimizador llega a ser menor que el valor provisorio del
nivel maximizador immediatamente superior, el valor final del nivel minimizador ya
no podr alterar el valor provisorio del nivel maximizador:
Si a > b, entonces para cualquier c y d se cumple max{a,min{b,c},d} =
max{a,d}.
No es necesario conocer c para evaluar max{a,min{b,c},d}.
Generalizando se llega a las siguientes reglas de corte:
1. La bsqueda puede ser abandonada debajo de cualquier nodo MIN con un
valor provisorio, llamado cota beta, inferior o igual al valor provisorio de
cualquiera de sus ancestros MAX
2. La bsqueda puede ser abandonada debajo de cualquier nodo MAX con un
valor provisorio, llamado cota alfa, superior o igual al valor provisorio de
cualquiera de sus ancestros MIN