Sei sulla pagina 1di 57

Qu es la Inteligencia Artificial?

En una primera aproximacin, se puede definir la inteligencia artificial como la


rama de la computacin que estudia la automatizacin del comportamiento
inteligente. La investigacin en este campo ha llevado al desarrollo de
herramientas computacionales especficas, entre las cuales se cuentan una gran
diversidad de formalismos de representacin de conocimientos y de algoritmos
que los aplican, adems de los lenguajes, estructuras de datos y tcnicas de
programacin utilizados para su implementacin.
Sin embargo, la definicin anterior no es completamente satisfactoria porque hace
referencia a la nocin de inteligencia, en s muy difcil de precisar. A pesar de que
a la mayora de las personas les parece obvio distinguir cundo un
comportamiento es inteligente, la intuicin que avala este juicio resulta imposible
de describir con el suficiente grado de detalle para ser utilizada como criterio
formal de evaluacin de la supuesta inteligencia de un programa computacional.
Se necesitan por lo tanto criterios ms elaborados para delimitar los problemas
que caen dentro de la esfera de la inteligencia artificial y validar los resultados de
los programas construidos para resolverlos.
Si tomamos al ser humano como modelo de comportamiento inteligente, el
objetivo sera reproducir en el computador la eficacia de sus reacciones frente a
tareas o situaciones complejas. Entre las capacidades humanas que involucran las
facultades intelectuales, la de mayor relevancia es la de dialogar en una lengua
verbal. Fu precisamente dicha capacidad la que el matemtico Alan Turing utiliz
como base para plantear la validacin de una mquina inteligente en su famoso
paper "Computing Machinery and Intelligence" (1950), que fu uno de los primeros
trabajos encaminados a plantear este objetivo.

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.

El test de Turing propone un criterio emprico para


comparar el desempeo de un computador al de un
humano en un "juego de imitacin" en que el computador
trata de hacerse pasar por un humano.
En su versin ms simple, el dispositivo experimental
consta de un interrogador humano que puede
comunicarse con un computador y un contraparte humano
por medio de un terminal (o cualquier dispositivo de
transmisin de texto). Se le pide al interrogador, que est
aislado y no tiene la posibilidad de mirar o hablar
directamente con sus interlocutores, que distinga cul de
ellos es el humano, basndose slo en las respuestas a
las preguntas hechas a travs del terminal. Si dialogando
de esta manera el computador logra engaar al
interrogador, puede asumirse que es inteligente.
El aspecto ms interesante de este test es que establece una nocin objetiva de
inteligencia que evita entrar en debates filosficos sobre su "verdadera"
naturaleza.
Es suficiente el test de Turing?
A pesar de sus ventajas, el test de Turing es vulnerable a varias crticas
justificadas que impiden considerarlo como el nico criterio de validacin de
inteligencia:

El juego de imitacin obliga al computador a reproducir no slo las


destrezas del comportamiento humano, sino que tambin sus flaquezas.
Para no ser detectado, el computador debe cometer el mismo tipo de
errores que un humano, por ejemplo, en el caso de operaciones aritmticas
complejas. Esto es contraproducente desde el punto de vista tecnolgico.
Lo que realmente importa en un sistema de dilogo es la ergonoma de la
comunicacin, y no que el computador sea capaz de hacerse pasar por
humano.

Hay un sesgo a problemas que dependen de las capacidades de


procesamiento simblico. No se pueden evaluar capacidades perceptuales
o de destreza manual.

El test se basa enteramente en la inteligencia humana. Esto restringe


inecesariamente el tipo de inteligencia que se puede implementar en un
computador.

El test indica si un programa cumple o no el criterio de inteligencia, pero en


caso de falla no entrega herramientas para corregir defectos y orientar su

desarrollo. Tampoco permite realizar validaciones parciales, indispensables


desde el punto de vista de la ingeniera de software si se considera la
complejidad de los sistemas inteligentes.
La inteligencia artificial se puede abordar de una manera mucho ms general,
analizando los distintos objetivos que justifican su estudio.

Objetivos de la Inteligencia Artificial


Una definicin ms adecuada de la I.A. puede deducirse de la siguiente pregunta
Para qu sirve? Existen dos orientaciones bsicas para responder esta
interrogante:

como herramienta cientfica


El objetivo es simular en el computador modelos del comportamiento de
sistemas inteligentes naturales (en particular humanos) para verificar
empricamente su validez. Esta simulacin es indispensable porque los
sistemas estudiados son generalmente demasiado complejos para obtener
predicciones analticas precisas de su funcionamiento. Las reas que ms
pueden beneficiarse con esta herramienta son la sicologa cognitiva y la
neurobiologa. Esto no significa que los aspectos computacionales sean
segundarios, ya que todo comportamiento inteligente implica un
procesamiento de informacin que es legtimo estudiar desde un punto de
vista puramente computacional. Adems, los mecanismos naturales
investigados pueden enriquecer el arsenal de mtodos de la computacin
(como en el caso de las redes neuronales).

como herramienta tecnolgica


El objetivo es resolver en el computador problemas "difciles", que se sabe
estn al alcance de sistemas inteligentes naturales pero para los cuales no
existe una descripcin algortmica satisfactoria. Los problemas incluidos
dentro de esta categora se caracterizan en general por la dificultad de
disponer de toda la informacin necesaria para resolverlos sin ambigedad.
Ya sea hay demasiada informacin que considerar (ej.: ajedrez), ya sea
sta es incompleta o inconsistente (ej.: lenguaje verbal), ya sea est muy
poco estructurada (ej.: anlisis de imagenes). En estos casos es interesante
reproducir las capacidades de procesamiento observadas en los sistemas
naturales, aunque no necesariamente modelando sus mecanismos
internos.

Tcnicas de la Inteligencia Artificial

Adems de los mtodos generales de la computacin, en Inteligencia Artificial se


utilizan tcnicas especficas que se diferencian del enfoque algortmico clsico. El
enfoque clsico da por hecho que se dispone de toda la informacin necesaria
para llegar siempre una solucin ptima del problema abordado. En Inteligencia
Artificial, las decisiones se basan en un conocimiento parcial que no garantiza
encontrar el ptimo.
La inteligencia consiste precisamente en saber sacar el mximo provecho a la
informacin disponible para tratar de obtener el resultado deseado. Dicho en forma
gradual, un sistema es ms inteligente mientras menos informacin requiera
analizar para llegar a un determinado resultado y mientras mejor sea este
resultado. Esta definicin permite abarcar a la mayora de los mtodos de la
inteligencia artificial y pone de manifiesto el compromiso entre exhaustividad del
anlisis y calidad del resultado que los caracteriza: se sacrifica la seguridad de
obtener soluciones ptimas por la ventaja de poder operar con informacin
incompleta.
Las tcnicas computacionales desarrolladas dentro de este marco metodolgico
son llamadas heursticas (de una raiz griega que significa hallar). Una heurstica
es una estrategia de resolucin de problemas que permite orientar la bsqueda de
la solucin haciendo un anlisis selectivo de las posibilidades ms relevantes
segn la informacin disponible. A pesar de no garantizar siempre la mejor
solucin, una buena heurstica debera permitir hallar una solucin muy cercana al
ptimo en la mayora de los casos.

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)

Por ejemplo, si P = {enchufado, fusibleQuemado, funciona}, entonces las


siguientes expresiones, entre otras, pertenecen a L(P):
((enchufado
((enchufado

fusibleQuemado)
funciona)

funciona)
fusibleQuemado)

Los parntesis pueden omitirse segn la precedencia habitual de los conectivos


lgicos.

Semntica de lenguajes proposicionales


En terminos generales, una semntica permite atribuir un significado a las
expresiones del lenguaje simblico considerado. En el caso de un lenguaje de
programacin como C, esta semntica es procedural y consiste en describir el
efecto que produce el programa sobre sus estructuras de datos. Para un lenguaje
de representacin, lo que interesa es capturar una descripcin del universo
modelado. La lgica permite hacer esto asignando un valor de verdad a cada
expresin del lenguaje.
La semntica de un lenguaje proposicional depende (i) de la interpretacin de los
conectivos lgicos, que tienen el mismo significado en todos los dominios, y (ii) de
los valores de verdad asignados a las variables proposicionales, distintos segn la
situacin reflejada.
Dado un lenguaje proposicional L(P), se define su semntica por medio de una
asignacin de verdad o valuacin que declara a las variables proposicionales en P
como verdaderas o falsas. Tomando a 0 como valor falso y a 1 como valor
verdadero, una asignacin de verdad es una funcin s de P en el conjunto {0, 1}:
s: P

{0, 1}.

Por ejemplo, si P = {p, q, r}, entonces son valuaciones, entre otras:

s1: p

1, q

0, r

s2: p

0, q

1, r

Si P tiene n variables proposicionales, entonces a priori hay 2 n valuaciones


posibles, aunque no todas tengan sentido en el universo modelado.

Valuacin de expresiones compuestas


Para obtener el valor de verdad de expresiones no primitivas, se extiende la
funcin de valuacin definindola inductivamente sobre L(P). Esta definicin
permite precisar formalmente el significado de los conectivos lgicos.
Dado un lenguaje proposicional L(P) y una asignacin s: P

la funcin extendida s: L(P)

{0, 1}, se define

{0, 1} de la siguiente manera. Dada una

expresin arbitraria X de L(P), el valor de verdad s(X) es:


1. Caso bsico: si X es una expresin atmica constituida por una sola
variable proposicional perteneciente a P, entonces s(X) es el valor de
verdad asignado inicialmente a dicha variable.
2. Pasos inductivos:
o Si X es Y, entonces s(X) = 1 - s(Y).
o Si X es (Y

Z) entonces s(X) = min{s(Y), s(Z)}.

o Si X es (Y

Z) entonces s(X) = max{s(Y), s(Z)}.

o Si X es (Y

Z) entonces s(X) = 0 si s(Y) = 1 y s(Z) = 0, 1 en

caso contrario.
o Si X es (Y

Z) entonces s(X) = 1 si s(Y) = s(Z), 0 en caso

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

Mirando la tabla es claro que (p

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)

Los smbolos X, Y y Z utilizados en estas identidades no corresponden a variables


proposicionales que representan propiedades de la realidad modelada, sino que a
metavariables que representan expresiones lgicas arbitrarias.
Las identidades lgicas se pueden utilizar para trasformar las expresiones del
clculo proposicional conservando su semntica. Esto es especialmente til para
obtener formas normales ms fciles de manipular. Por ejemplo, toda expresin
lgica puede reescribirse utilizando slo los conectivos y
.

Validez de expresiones lgicas


Una expresin X de L(P) es vlida siempre y cuando es siempre verdadera, es
decir, si y slo si, para toda valuacin s: P
{0, 1} se cumple s(X) = 1. Estas
expresiones, que son verdaderas independientemente del universo modelado,
tambin son llamadas tautologas.
La validez de una expresin lgica puede verificarse exhaustivamente mediante
una tabla de verdad. Por ejemplo, para la expresin (((p
q)
p)

q), que corresponde al modus ponens "si la premisa mayor [p implica q] es

cierta y la premisa menor [p] es cierta, entonces la conclusin [q] es cierta":


p q

(p

q) ((p

q)

p) (((p

q)

p)

0 0

0 1

1 0

1 1

Otro ejemplo trivial de tautologa es cualquier expresin de la forma (X

q)

X).

Tambin, si X y Y son expresiones lgicamente equivalentes, entonces (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.

Satisfacibilidad de expresiones lgicas


Una expresin X de L(P) es satisfacible siempre y cuando existe por lo menos una
valuacin s: P
{0, 1} que cumple s(X) = 1. Esta nocin es menos fuerte que
la nocin de validez (si una expresin es vlida tambin es satisfacible, pero la
recproca no es verdadera).
Por ejemplo, la expresin ((enchufado

fusibleQuemado)

funciona) es satisfacible pero no vlida. Esto se puede ver en una tabla de


verdad verificando que la columna de valores de la expresin contiene valores
verdaderos y falsos:

((enchufado
enchufado

fusibleQuemad funcion
o
a

fusibleQuemado)
funciona)

Si la expresin considerada corresponde a una regla general del universo


modelado, la nocin de satisfacibilidad permite acotar los mundos posibles
descartando las valuaciones que entregan un valor falso. Por ejemplo, de la tabla,
se puede afirmar que no es posible un mundo en que un equipo funcione sin estar
enchufado.

Insatisfacibilidad de expresiones lgicas


Una expresin X de L(P) es insatisfacible si no es satisfacible, es decir, siempre y
cuando no existe ninguna valuacin s: P
{0, 1} que la hace verdadera. Por
ejemplo, cualquier expresin de la forma (X

X) es insatisfacible. Tambin

se dice que es una contradiccin.


Las nociones de validez, satisfacibilidad e insatisfacibilidad estn relacionadas por
las siguientes propiedades:
1. X es satisfacible si y slo si X no es vlida
2. X es insatisfacible si y slo si X es vlida
3. X es vlida si y slo si X es insatisfacible

Satisfacibilidad de conjuntos de expresiones lgicas


La nocin de satisfacibilidad puede extenderse a conjuntos de expresiones.
Una asignacin s: P
{0, 1} hace verdadero, o satisface, a un conjunto de
expresiones

siempre y cuando s hace verdadera a cada una de las

expresiones del conjunto

, lo que se denota as: s

que la valuacin s satisface a

. Se dice

o es un modelo de

si y slo si para toda expresin X pertenenciente a

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)

es satisfacible porque existen valuaciones que hacen veraderas a ambas


expresiones simultneamente. Esto se puede verificar en una tabla de verdad.
X1 X2

= {X1, X2}

enchufado

fusibleQuemado

funciona

En I.A., los conjuntos de expresiones lgicas constituyen bases de conocimiento


que describen las propiedades fundamentales del universo modelado (una teora
del universo). La nocin de satisfacibilidad restringe los estados posibles del
universo y permite deducir hechos elementales a partir de otros hechos conocidos.
Por ejemplo, la tabla anterior indica que existen slo cuatro mundos posibles que
satisfacen el conjunto
considerado. Adems, se puede afirmar que si un

equipo no est enchufado, entonces no puede funcionar; si un equipo est


enchufado pero no funciona, entonce el fusible est quemado; etc.
Las nociones de validez e insatisfacibilidad tambin son extensibles a conjuntos
de expresiones lgicas. Por ejemplo, el conjunto {p, (p
q), q} es

insatisfacible. Tambin se dice que es "inconsistente".

La nocin de consecuencia lgica


Una expresin es consecuencia lgica de un conjunto de expresiones siempre y
cuando, cada vez que el conjunto de expresiones es verdadero, necesariamente la
expresin tambin es verdadera. Esta relacin, entre un conjunto de expresiones
y una expresin aislada X, se escribe as:
X (puede
interpretarse como

"implica" a X). La nocin de consecuencia lgica se

define en funcin de la la nocin de satisfacibilidad y se denota con el mismo


smbolo:
X si, para cada valuacin s: P

, entonces tambin s

X.

{0, 1} tal que s

Por ejemplo, {p, (p

q)}

q.

Se lee q es consecuencia lgica de p y (p

q).

Este ejemplo, que permite corroborar la validez del modus ponens, puede
verificarse mediante una tabla de verdad:
(p

q)

{(p

q), p}

Se ve que todas las valuaciones que satisfacen a {p, (p

q)} (hay slo una)

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}.

Para modelar este silogismo, se requerira que, conociendo s(p)=1 y s(q)=1, se


pudiera deducir s(r)=1. Sin embargo no se puede porque no hay manera de
relacionar la idea "ser hombre" de la premisa mayor con la idea "ser hombre" de la
premisa menor, ni tampoco la idea "ser mortal" de la premisa mayor con la idea

"ser mortal" de la conclusin. Las variables proposicionales son tomos que no se


pueden analizar en trminos ms primitivos para establecer estas relaciones.
Predicados
En lgica de predicados, los valores de verdad se atribuyen a predicados que
denotan relaciones entre entidades del universo modelado. Por ejemplo, en vez de
tener una variable q para representar "Scrates es un hombre", se escribe el
predicado hombre(scrates) que relaciona a la entidad "Scrates" con el hecho de
"ser hombre". Un predicado tambin puede aplicarse a variables que denotan
entidades annimas o genricas. Por ejemplo, para escribir la premisa "Todos los
hombre son mortales", que no se refiere a ningn "hombre" en particular, se utiliza
el predicado hombre(X) en que X es una variable que denota a cualquier entidad
del universo modelado que cumple con el hecho de "ser hombre".
El silogismo completo queda expresado de la siguiente manera:
X (hombre(X)

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)

Despus, para obtener la conclusin, se opera exactamente como en la lgica


proposicional.
Sintaxis de la lgica de predicados
Para construir las expresiones de la lgica de predicados, se utilizan dos tipos de
smbolos:

Smbolos no lgicos, dependientes del universo modelado:


1. un conjunto de smbolos de predicados {p1, p2, ...} con aridad
definida.
2. un conjunto de smbolos de funcin {f1, f2, ...} con aridad definida.

3. un conjunto de smbolos de constantes {c1, c2, ...}.

Smbolos lgicos, independientes del universo modelado:


1. conectivos lgicos: ,

2. un conjunto de smbolos de variables {X1, X2, ...}.


3. cuantificadores:

(existencial),

(universal) .

4. smbolos de puntuacin: ), (

Trminos de la lgica de predicados


Los trminos de un lenguaje de predicados de primer orden son expresiones que
denotan entidades del universo modelado (no se les puede atribuir un valor de
verdad). Se construyen a partir de los smbolos de constantes, funciones y
variables segn las siguientes reglas:
1. Todo smbolo de variable Xi es un trmino.
2. Todo smbolo de constante ci es un trmino.
3. Si fi es un smbolo de funcin n-aria y t1,..., tn son trminos, entonces fi(t1,...,
tn) es un trmino.
Llamando S al conjunto de smbolos no lgicos dependientes del universo
modelado, el conjunto de trminos validos para ese universo es designado por
T(S). Los smbolos de variables son intercambiables y por lo tanto no se
consideran como parmetros de definicin de los trminos vlidos.

Frmulas de la lgica de predicados


Las frmulas de la lgica de predicados relacionan trminos mediante predicados,
y predicados entre si mediante conectivos lgicos. A estas frmulas se les puede
atribuir un valor de verdad (se verifican o no en el universo modelado). El lenguaje

L1(S) de frmulas de la lgica de predicados de primer orden sobre el conjunto de


smbolos S se construye inductivamente aplicando las siguientes reglas:
1. Si p es un smbolo de predicado n-ario y t1,..., tn son trminos, entonces
p(t1,..., tn) es una frmula atmica.
2. Si A es una frmula, entonces la negacin A tambin es una frmula.
3. Si A y B son frmulas, entonces tambin lo son:
la conjuncin (A

B)

la disyuncin (A

B)

la implicacin (A

B)

la equivalencia (A

B)

4. Si A es una frmula y x es una variable, entonces tambin son frmulas:


la cuantificacin existencial

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.

Semntica de la lgica de predicados de primer orden


El significado de las frmulas de un lenguaje de la lgica de predicados de primer
orden L1(S) se determina en dos etapas:

1. Atribuyendo una interpretacin a cada trmino utilizado precisando la


entidad del universo modelado que est siendo denotada.
2. Asignando un valor de verdad a los predicados segn si la relacin
denotada se verifica o no en el universo. Conociendo los valores de verdad
de las frmulas atmicas, se puede determinar el valor de verdad de una
frmula compuesta aplicando la semntica convencional de los smbolos
lgicos.
Esto requiere que el dominio modelado tenga una estructura compatible con la
estructura de los smbolos no lgicos del conjunto S.
Los smbolos de S se dividen en tres categoras: un conjunto P de smbolos de
predicados, un conjunto F de smbolos de funcin y un conjunto C de smbolos de
constantes. Un dominio estructurado compatible con S es una tupla <U PU FU CU>
en que:

U es un conjunto no vaco, llamado el universo o dominio, cuyos elementos


son las entidades denotadas por los trminos de T(S).

PU es el conjunto de relaciones en U denotadas por los smbolos de P.

FU es el conjunto de funciones en U denotadas por los smbolos de F.

CU es el conjunto de individuos particulares del universo U denotados por


los smbolos de C.

Relacin entre smbolos y dominios estructurados


Para atribuirle un significado a una frmula lgica de L1(S) dentro de un dominio
estructurado <U PU FU CU> se define una relacin de interpretacin que asocia
cada smbolo s de S con una realidad sU del dominio:
1. si p es un smbolo de predicado n-ario de P, entonces pU es una relacin naria sobre U, es decir, pU es un subconjunto del producto cartesiano Un (si U
es un universo finito, como en el caso de bases de datos, siempre se puede
representar en extensin la relacin pU como un conjunto de tuplas de
entidades de U).

2. si f es un smbolo de funcin n-aria de F, entonces fU es una funcin n-aria


sobre U, es decir, fU: Un
U (el resultado de fU es una entidad del

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).

Interpretacin de trminos en un dominio estructurado


Teniendo un dominio estructurado <U PU FU CU> compatible con S, se puede
definir una interpretacin que asocia cada trmino de T(S) con una entidad del
universo U. La interpretacin es una funcin I: T(S)
U que se define
inductivamente con las siguientes reglas:
1. I(c) = cU (los smbolos de constante se interpretan como entidades
predefinidas del universo).
2. I(f(t1,..., tn)) = fU(I(t1),..., I(tn)) (la interpretacin de un trmino con la funcin f
se calcula aplicando la funcin correspondiente del dominio estructurado fU
a la interpretacin de los trminos argumentos).
Ntese que esta definicin no precisa la interpretacin de variables. sta
corresponde a una asignacin de valores que se determina a nivel de frmulas
lgicas.

Ejemplo de interpretacin en un dominio estructurado


Consideremos el conjunto de smbolos no lgicos S = {=, +, s, } en que los
smbolos de predicados son P = {.=.}, los smbolos de funcin son F = {.+., s(.)} y
los smbolos de constantes son C = {} (la aridad de los predicados y funciones se
indica con un "." por cada argumento).
Un dominio estructurado compatible con S es <U PU FU CU> en que U es el
conjunto de los nmeros naturales, PU contiene el predicado de igualdad, FU las
funciones de suma (+) y sucesor (s), y CU la constante cero 0 ().

Aplicando la definicin de la funcin de interpretacin:


Trmino (sintaxis)

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()

I(s()+s()) = suma(I(s()), I(s()))


= suma(1, 1)

Interpretacin en otro dominio estructurado


El mismo lenguaje lgico L1(S) en que S = {=, +, s, } se puede interpretar en otro
dominio estructurado <U PU FU CU> en que U es el conjunto {0, 1}, PU contiene el
predicado de igualdad, FU las funciones de suma mdulo 2 y sucesor mdulo 2, y
CU la constante cero 0.
En este caso, aplicando la definicin de la funcin de interpretacin:
Trmino (sintaxis)

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()

I(s()+s()) = suma#2(I(s()), I(s()))


= suma#2(1, 1)

Los valores denotados por los trminos no coinciden necesariamente para


interpretaciones distintas. Esto implica que el valor de verdad de una frmula
lgica depende tambin de la interpretacin. Por ejemplo, la frmula
s()+s() =
es verdadera en el conjunto {0, 1} con la suma mdulo 2, pero falsa en los
naturales.
Valor de verdad de frmulas lgicas
Para determinar el valor de verdad de una frmula A de L1(S) se requiere definir
una interpretacin I sobre un dominio estructurado <U PU FU CU>. Si la frmula

resulta verdadera en ese dominio, se dice que la interpretacin satisface, hace


verdadera o es un modelo de la frmula, lo que se escribe de la siguiente manera:
I
A

Esta relacin puede definirse inductivamente:


1. Si A es una frmula atmica p(t1,..., tn), entonces I

A siempre y

cuando la relacin pU contiene a la tupla (I(t1),..., I(tn)).


2. Si A es de la forma B, entonces I

que I

A siempre y cuando no es cierto

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

A ssi existe una entidad e del

universo U tal que asignando I(x)=e se cumple que I

x B, entonces I

B.

A ssi para toda entidad e del universo

U, al asignar I(x)=e se cumple que I

B.

Identidades lgicas
Si para todas las interpretaciones I que satisfacen I
simultneamente que I

A se cumple

B y viceversa, entonces existe una identidad lgica

entre A y B que se escribe A = B.


Adems de las identidades conocidas de la lgica proposicional (ver seccin 2.7),
existen en lgica de predicados otras identidades relativas al uso de
cuantificadores y variables:

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)

Ntese que en estas identidades A(x) y B(x) se pueden reemplazar por


expresiones lgicas arbitrarias parametrizadas por x.

Nocin de consecuencia lgica


La nocin de satisfaccin se puede extender naturalmente a conjuntos de frmulas
de la lgica de predicados. Si I es una interpretacin sobre un dominio
estructurado <U PU FU CU> y
es un conjunto de frmulas de L1(S),
entonces:
I

si y slo si para toda frmula A de

Se lee: I satisface a

se cumple I

A.

Basndose en esto se puede definir la nocin de consecuencia lgica de la misma


manera que en lgica proposicional:
A si y slo si toda interpretacin I tal que I
tambin
cumple I

A.

Se lee: la frmula A es consecuencia lgica del conjunto de frmulas

La lgica de predicados permite modelar un universo definiendo un conjunto de


frmulas verdaderas a priori (los axiomas). La nocin de satisfaccin de conjuntos
de frmulas lgicas permite acotar las interpretaciones posibles: slo nos
interesan aquellas interpretaciones que satisfacen a todos los axiomas. La nocin
de consecuencia lgica permite precisar qu frmulas son vlidas dado un
conjunto de axiomas (para modelar un universo, slo se requiere definir un

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

A, entonces cada vez que todas las frmulas de

son

vlidas, tambin es vlida la frmula A. Sin embargo, esta nocin de consecuencia


lgica slo tiene una utilidad prctica si A se puede demostrar formalmente a partir
de
, es decir, mediante un proceso de manipulacin puramente sintctico

de las formulas lgicas (sin hacer referencia a la semntica subyacente). Adems,


computacionalmente nos interesa que este proceso se pueda realizar en forma
automtica.
Cuando se modela un universo utilizando lgica, se considera a

como un

conjunto de hiptesis dadas a priori, o axiomas, y a A como un teorema de la


teora axiomatizada. La ventaja de un mecanismo de demostracin formal es que
permite modelar un universo complejo mediante un conjunto relativamente
reducido de axiomas: no es necesario explicitar todos los teoremas que se
cumplen en el universo modelado ya que estos pueden ser deducidos.
Para verificar la validez de un teorema, una demostracin formal consta en
general de varios pasos que corresponden a generar nuevas frmulas lgicas a
partir de frmulas lgicas previamente validadas, empezando con los axiomas.
Cada uno de estos pasos debe respetar la semntica del universo modelado (esto
exige que cada nocin semntica tenga una contraparte sintctica).

Sistemas deductivos formales


Dado un lenguaje lgico L(S), una deduccin formal de A a partir de

una sucesin finita de frmulas de L(S)


A1 A2 ... Ai ... An-1 An

es

tal que:

cada Ai pertenece a L(S)

An es la frmula buscada A

cada Ai es, ya sea:


1. elemento de

(axioma de la teora)

2. axioma lgico (axioma independiente del universo modelado)


3. una expresin lgica obtenida a partir de algunas de las frmulas
precedentes en la sucesin, es decir, A1 A2 ... Ai-1, mediante la
aplicacin de una regla sintctica de deduccin (p. ej. la regla del
modus ponens)
Una deduccin formal se obtiene entonces mediante operaciones puramente
sintcticas. Para quedar completamente especificado, un sistema deductivo formal
requiere que se precisen los axiomas lgicos y las reglas de deduccin vlidas
(que respeten la semntica, esto es, que slo permitan deducir frmulas vlidas
con respecto a los axiomas).

Propiedades de un sistema deductivo formal


Cuando existe una demostracin formal de una frmula A a partir de un conjunto
de frmulas
, se escribe:

Esta notacin es muy similar a

A, lo que refleja la relacin intuitiva

entre la nocin semntica de consecuencia lgica y la nocin sintctica de


derivabilidad. Esto se expresa mediante dos propiedades fundamentales:

1. Si (

A)

A) se dice que el sistema

deductivo es correcto.
Esta propiedad indica que todo lo que se deriva sintcticamente
corresponde semnticamente a una verdad.
2. Si (

A)

A) se dice que el sistema

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). Esto permite en particular que si se conoce A y la identidad A = B se pueda


deducir B.
Existe una infinidad de axiomas lgicos. Sin embargo, en lgica proposicional,
todos se pueden generar a partir de los siguientes esquemas, instanciando y
utilizando modus ponens:
A

(B

A)

(A

(B

(A

B)

C))

(B

((A

B)

(A

C))

A)

En estos esquemas A, B y C son metavariables que pueden ser reemplazadas por


cualquier frmula lgica. La validez de estos axiomas lgicos puede verificarse
utilizando tablas de verdad.

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 y A son las premisas, B es la conclusin. Esta definicin es un

esquema en el que A y B son metavariables que denotan frmulas lgicas


arbitrarias.
El orden en el que aparecen las premisas no es relevante y esta misma regla se
puede expresar utilizando la notacin de derivabilidad:
{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}

En trminos ms generales, la conclusin de una regla debe ser consecuencia


lgica de las premisas.

Otras reglas de deduccin


La regla del modus ponens es las ms socorrida, pero no la nica regla que se
puede utilizar. Otras reglas habituales son:
A
B
modus tollens

B
A
A

eliminacin del and


A
B
A
B
introduccin del and

B
x A(x)

instanciacin universal
A(c)

Ejemplo de deduccin formal


Conociendo el conjunto

con las siguientes hiptesis:

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)

animal (x)), pertenece a

animal (fido)), aplicando instanciacin universal con

x=fido
4. animal (fido), aplicando modus ponens
5.

y (animal (y)

6. (animal (fido)

mortal (y)), pertenece a

mortal (fido)), aplicando instanciacin universal con

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

requiere de una regla de deduccin, llamada regla de resolucin.


Veremos que al restringir un sistema deductivo de esta manera no se pierde
generalidad porque existe un mecanismo de normalizacin que permite plantear
cualquier problema lgico mediante clusulas.

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

Ntese que la regla de resolucin produce un resolvente ms grande o del mismo


tamao que la ms grande de las clusulas padres, excepto si una de las
clusulas padres contiene slo un literal.
Demostracin por resolucin de contradiccin
Una manera de demostrar formalmente un teorema es encontrar una cadena de
derivaciones cuyo ltimo elemento es el teorema buscado. Sin embargo, existe
otra manera de enfrentar el problema:
1. suponer lo contrario de lo que se desea demostrar
2. probar que esa suposicin es contradictoria.
Si suponiendo algo se llega a una contradiccin, lo contrario de ese algo debe ser
verdadero. Este es un principio muy utilizado en matemtica en lo que se llama
demostracin por el absurdo. Se basa en la siguiente propiedad:
(
A)
(
+ {A} es insatisfacible)
Es decir, si A es consecuencia lgica de

, entonces no existe ninguna

interpretacin en que se verifiquen simultneamente todas las frmulas de


y A.

Cuando se opera con clusulas y la regla de resolucin, las contradicciones se


detectan cuando se llega a un resolvente vaco (
). Esto resulta evidente si

se considera que la nica manera de producir un resolvente vaco es tomando dos


clusulas padres de un slo un literal, positivo en un caso, negativo en el otro.
La ventaja de la demostracin por resolucin de contradiccin, o demostracin por
refutacin, es que la orientacin del proceso se mantiene invariable,
independientemente del problema lgico abordado: llegar a una contradiccin.
Concretamente, en el caso de operar con clusulas, el objetivo es encontrar
resolventes cada vez ms pequeos hasta llegar a un resolvente vaco. Se puede
demostrar que para lograr este objetivo basta la regla de resolucin (la regla de
resolucin es completa para la refutacin).

Normalizacin a forma clausal


Para aplicar el mtodo de demostracin por refutacin utilizando la regla de
resolucin binaria, es necesario que todas las frmulas lgicas involucradas en el
problema se puedan reescribir en forma de clusulas semnticamente
equivalentes. Esta normalizacin se puede llevar a cabo utilizando un algoritmo de
transformacin que consta de los siguientes pasos:
1. se elimina el conectivo

(A

utilizando la identidad lgica (A

B) =

B)

2. Se reduce el alcance de los conectivos aplicados a frmulas no atmicas


traspasndolo al interior de dichas frmulas. Se utilizan las siguientes
identidades lgicas:
A = A
(A

B) = (A

B)

(A

B) = (A

B)

x A(x) =

x A(x)

x A(x) =

x A(x)

3. Se estandarizan los nombres de variables colocndole nombres distintos a


variables asociadas con cuantificadores distintos.
4. Se eliminan los cuantificadores existenciales mediante un proceso llamado
skolemizacin que consiste en reemplazar las variables cuantificadas
existencialmente por:
o una constante c si el cuantificador existencial asociado no se
encuentra dentro del alcance de ningn cuantificador universal
o una funcin f(x) si el cuantificador existencial se encuentra dentro del
alcance del cuantificador universal correspondiente a x
o una funcin f(x, y) si el cuantificador existencial se encuentra dentro
del alcance de los cuantificadores de x e y, etc.
5. Se mueven todos los cuantificadores universales al principio de la frmula.
Esto se puede hacer porque previamente se estandarizaron los nombres de
las variables.
Al cumplirse la etapa 5 del algoritmo, se dice que la frmula resultante est en
forma normal prenex porque todos los cuantificadores aparecen al principio como
un prefijo (prefix) seguido del la expresin o matriz (matrix).
El algoritmo de normalizacin prosigue as:
1 Se eliminan todos los cuantificadores universales. Esto es posible porque
las nicas variables que quedan estn cuantificadas universalmente y no
hay conflictos de nombre, por lo tanto no es necesario explicitar los
cuantificadores ni su alcance. Por omisin, todas las variables estn
cuantificadas universalmente.
2 Se desarrolla la expresin resultante distribuyendo

sobre

para convertirla en una conjuncin de disyunciones. La distribucin se


apoya en la siguiente identidad lgica:

(A

(B

C)) = ((A

B)

(A

C))

3 Cada elemento de la conjuncin resultante se convierte en una clusula


independiente constituida por una disyuncin de frmulas atmicas
negadas o no negadas.
4 El ltimo paso es estandarizar de nuevo las variables ponindole nombres
distintos a variables que se encuentren en clusulas distintas

Ejemplo de normalizacin a forma clausal


Se tiene la frmula:
x ((hombre (x)

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))

(progenitor (x, f (x))

creado (x)))

5. mover cuantificadores al principio:


no cambia
6. eliminacin de cuantificadores:
((hombre (x)
mujer (x))

(progenitor (x, f (x))

(x)))
7. distribucin de

sobre

((hombre (x)

((mujer (x)

(progenitor (x, f (x))

(progenitor (x, f (x))

8. separacin de la conjuncin:
clausula 1: hombre (x)

clausula 2: mujer (x)

creado (x)))

creado (x)))

progenitor (x, f (x))

progenitor (x, f (x))

creado (x)

creado (x)

creado

9. estandarizacin de variables:
clausula 1: hombre (x)

clausula 2: mujer (y)

progenitor (x, f (x))

progenitor (y, f (y))

creado (x)

creado (y)

Ejemplo de resolucin por refutacin (lgica proposicional)


Planteamiento del problema
frmulas lgicas

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

Por demostrar: mortal-fido

animal-fido

mortal-fido

Negacin de hiptesis: 4. mortal-fido


Solucin
padre 1
(4) mortal-fido
(5) animal-fido
(6) perro-fido

padre 2
(3) animal-fido
(2) perro-fido

(1) perro-fido

resolvente
mortal-fido
animal-fido

(5) animal-fido
(6) perro-fido
(contradiccin)

Resolucin con unificacin


En lgica proposicional, los literales de una clusula son smbolos proposicionales
negados o no negados. Para aplicar la regla de resolucin se requiere que ambas
clusulas padres involucradas contengan un literal cuyo smbolo proposicional sea
idntico, pero que aparezca negado en una y no negado en la otra.
En lgica de predicados, los literales contienen una frmula atmica (un smbolo
de predicado con sus argumentos). La regla de resolucin se puede aplicar
cuando ambas clusulas padres contienen un literal, positivo en una y negativo en
la otra, que manifiesta la misma frmula atmica. Sin embargo, si las frmulas
atmicas que se intenta asimilar no son idnticas pero contienen variables que al
ser convenientemente substituidas producen el mismo resultado, la regla de
resolucin tambin se puede aplicar despus de hacer esta substitucin. El
proceso de encontrar una asignacin de variables que cumpla con este
requerimiento se llama unificacin.

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 }.

Tambin se podra utilizar la substitucin { juan / X, hermano(pedro) / Z, pedro /


Y }, pero aqu se introduce una asignacin suplementaria que no es necesaria
para unificar. Para evitar introducir substituciones arbitrarias, se utiliza el unificador
ms general, es decir, el que minimiza las restricciones impuestas a los valores de
las variables (en este caso concreto, Y puede tomar cualquier valor).
La unicacin es una operacin sintctica.
Por ejemplo, no se puede unificar padre(X, hermano(Y)) con padre(pedro, julio)
porque no hay ninguna substitucin de variables que haga sintcticamente iguales
a hermano(Y) y julio.

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:

Trminos simples (smbolos de constantes y variables): no se modifican.

Trminos compuestos: a ( t1, t2,... tn)

Ejemplo: padre(X, hermano(Y))

(at1t2... tn)

(padre X (hermano Y))

Para aplicar el algoritmo de unificacin, se distinguen cuatro tipos de trminos:

smbolos de constantes (incluyendo nombres de predicados y funciones)

smbolos de variables

lista vaca

lista no vaca

Una lista no vaca se puede descomponer en la cabeza de la lista y el resto de la


lista (en lisp el car y el cdr). La recursividad del algoritmo se basa en esta
descomposicin. El resto de una lista de un slo elemento es una lista vaca.
Algoritmo de unificacin
Hecha la transformacin a listas, el algoritmo se escribe de la siguiente manera:
function unify(t1, t2) {
if (t1 = t2)
return {} // unificador vaco
elsif (t1 es una variable)
if (t1 no aparece en t2) return {t2 / t1} // t1 se substituye por t2
else return FAIL // no se puede unificar
elsif (t2 es una variable)
if (t2 no aparece en t1) return {t1 / t2} // t2 se substituye por t1
else return FAIL
elsif (t1 y t2 son listas no vacas) {
ct1
cabeza de t1 ; ct2
cabeza de t2
sc

unify(ct1, ct2) ; if (sc = FAIL) return FAIL

rt1

(resto de t1) sc ; rt2

sr

unify(rt1, rt2) ; if (sr = FAIL) return FAIL

(resto de t2) sc

return composicion de sc seguido de sr


}
else return FAIL
}
Regla de resolucin con unificacin
Cuando se opera en lgica de predicados (con variables) la regla de unificacin se
expresa de la siguiente manera:
PA
Q1
Q2
...
Qn
PB

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.

Ejemplo de resolucin por refutacin (lgica de predicados)


Planteamiento del problema
frmulas lgicas
Base de conocimiento:
1. perro (fido)

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)

Negacin de hiptesis: 4. mortal (Z)


Solucin
padre 1

padre 2
(3) animal (Y)

unificador resolvente
mortal

(4) mortal (Z)

{Y/Z}

(5) animal (Y)

{X/Y}

(6) perro (X)

(Y)
(2) perro (X)
(5) animal (Y)

animal

(X)
(contradicci
(6) perro (X)

(1) perro (fido)

{ fido / X }
n)

La consulta se cumple para Z = Y = X = fido.


Como respuesta slo interesa desplegar el valor de las variables de la consulta.
En este caso concreto, la respuesta es Z = fido.

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.

2. Resolver la consulta negada con algn axioma, repetir la operacin para el


resolvente obtenido y as succesivamente hasta llegar a un resolvente
vaco. En cada etapa se resuelve la clusula ms recientemente generada
con algn axioma original.

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

en que P y Q1, Q2,... Qn son frmulas atmicas.


Una propiedad importante de las clusulas de Horn es que al resolver dos
clusulas de Horn se obtiene como resolvente otra clusula de Horn. Esto
garantiza que siempre se estar operando con el mismo formato durante el
proceso de demostracin.
Interpretacin intuitiva de clusulas de Horn
Una clusula de la forma
P
Q1

Q2

...

Qn

corresponde a una expresin lgica ms fcil de leer como


Q1
Q2
...
Qn
P
lo que se suele escribir de la siguiente manera

Q1, 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

Un hecho corresponde a la definicin de una relacin elemental.


Las clusulas que slo contienen literales negativos
Q1, Q2, ... Qn.
corresponden a objetivos que se deben satisfacer, es decir, a una consulta por
resolver. Ntese que la clusula es la negacin de la consulta original, por lo tanto
los cuantificadores universales implcitos en la clusula corresponden a
cuantificadores existenciales en la consulta original.
Construir una teora del universo mediante clusulas de Horn equivale a definir
relaciones relevantes, lo que puede hacerse recursivamente y especificando
varias reglas o hechos por cada relacin. Por ejemplo:
ancestro(X,Y)

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.

Las nicas contradicciones que es posible derivar mediante resolucin deben


originarse a partir de esta consulta negada, ya que la teora del universo no puede
ser inconsistente. Para aplicar resolucin se debe identificar entre las reglas (o
hechos) pertenecientes a la teora del universo, una regla de la forma
Q
R1, R2, ... Rm.
tal que la cabeza Q de la regla sea unificable con algn subobjetivo Qi de la
consulta. Si u es el unificador ms general para Q y Qi, entonces el resolvente de
la regla es la clusula
(Q1, Q2, ... Qi-1, R1, R2, ... Rm, Qi+1, ... Qn) u.
que conserva la misma forma que la consulta negada y constituye un nuevo
objetivo por satisfacer.
El algoritmo de resolucin consiste entonces en iterar la aplicacin de la regla de
resolucin mientras el objetivo resultante no sea vaco. Nunca se resuelven las
reglas o hechos de la teora del universo entre s. Siempre participa la clusula de
consulta o una clusula derivada de ella.
La expresin anterior del algoritmo de resolucin es no determinstica. Para
implementarlo en una mquina secuencial se requiere precisar un orden de
evaluacin, lo que se puede lograr mediante los siguientes criterios:
1. Satisfacer siempre primero el primer subobjetivo de la consulta, luego el
primer subobjetivo de la clusula resultante, y as succesivamente.
2. Ordenar las reglas y hechos de la teora del universo y elegir siempre la
primera regla unificable para resolver. Cada vez que se utiliza una regla o
un hecho, se reemplazan sus variables por variables frescas creadas
dinmicamente.
3. Cuando ya no se puede seguir resolviendo, volver al ltimo punto de
decisin y elegir la siguiente regla para resolver. Esto constituye un
backtracking que permite recorrer todas las soluciones posibles (siempre
que no hayan recursiones infinitas).
Estos son los criterios definidos en el lenguaje de programacin lgica PROLOG.
Adems, cada vez que se obtiene un resolvente vaco, se imprimen los valores
asociados a las variables de la consulta, componiendo todas las unificaciones que
fueron necesarias para llegar a ese resultado.

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.

Ejemplo de espacio de estados

Descripcin del problema:


Un arriero se encuentra en el borde de un rio llevando un puma, una cabra y una
lechuga. Debe cruzar a la otra orilla por medio de un bote con capacidad para dos
(el arriero y alguna de sus pertenecias). La dificultad es que si el puma se queda
solo con la cabra la devorar, y lo mismo suceder si la cabra se queda sola con
la lechuga. Cmo cruzar sin perder ninguna pertenencia?
Representacin de las configuraciones del universo del problema:
Basta precisar la situacin antes o despus de cruzar. El arriero y cada una de sus
pertenencias tienen que estar en alguna de las dos orillas. La representacin del
estado debe entonces indicar en que lado se encuentra cada uno de ellos. Para
esto se puede utilizar un trmino simblico con la siguiente sintxis:
estado(A,P,C,L), en que A, P, C y L son variables que representan,
respectivamente, la posicin del arriero, el puma, la cabra y la lechuga. Las
variables pueden tomar dos valores: i y d, que simbolizan respectivamente el
borde izquierdo y el borde derecho del rio. Por convencin se elige partir en el
borde izquierdo. El estado inicial es entonces estado(i,i,i,i). El estado objetivo es
estado(d,d,d,d).
Definicin de las reglas de transicin:
El arriero tiene cuatro acciones posibles: cruzar solo, cruzar con el puma, cruzar
con la cabra y cruzar con la lechuga. Estas acciones estn condicionadas a que
ambos pasajeros del bote estn en la misma orilla y a que no queden solos el
puma con la cabra o la cabra con la lechuga. El estado resultante de una accin
se determina intercambiando los valores i y d para los pasajeros del bote.
Generacin del espacio de estados
En este ejemplo se puede explicitar todo el espacio de estados (el nmero de
configuraciones est acotado por 24).
movidas
estado
cruza solo

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

Este espacio de estados tambin se puede representar mediante un grafo


equivalente.
Solucin del problema
El camino que pasa por la siguiente secuencia de estados es una solucin del
problema:
estado(i,i,i,i)
cruza con cabra
estado(d,i,d,i)
cruza solo
estado(i,i,d,i)
cruza con puma
estado(d,d,d,i)
cruza con cabra
estado(i,d,i,i)
cruza con lechuga
estado(d,d,i,d)
cruza solo
estado(i,d,i,d)
cruza con cabra
estado(d,d,d,d)

Bsqueda en espacio de estados


Existen varios algoritmos para encontrar un camino solucin en un espacio de
estados. El esquema general de estos algoritmos es el siguiente:
procedure Bsqueda {

open
closed

{estado_inicial}
{}

while (open no est vaco) {


remover un estado X del conjunto open
if (X es un estado objetivo) return xito
else {
generar el conjunto de sucesores del estado X
agregar el estado X al conjunto closed
eliminar sucesores que ya estn en open o en closed
agregar el resto de los sucesores al conjunto open
}
}
return fracaso
}
El conjunto open contiene a los estados generados que todava no han sido
visitados (no se ha verificado si son estados objetivo y no se han generado sus
sucesores). El conjunto closed contiene a los estados visitados. Al considerar slo
a los sucesores que no han sido previamente generados se evita entrar en ciclos.
Dependiendo del orden en que se visiten los estados del conjunto open se
obtienen distintos tipos de recorrido.

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

{}

while (open no est vaca) {

remover el primer estado X de la lista open


if (X es un estado objetivo) return xito
else {
generar el conjunto de sucesores del estado X
agregar el estado X al conjunto closed
eliminar sucesores que ya estn en open o en closed
agregar el resto de los sucesores al principio de open
}
}
return fracaso
}
Considerando que la cantidad promedio de sucesores de los nodos visitados es B
(llamado en ingls el branching factor y en castellano el factor de ramificacin), y
suponiendo que la profundidad mxima alcanzada es n, este algoritmo tiene una
complejidad en tiempo de O(Bn) y, si no se considera el conjunto closed, una
complejidad en espacio de O(B n). En vez de usar el conjunto closed, el control
de ciclos se puede hacer descartando aquellos estados que aparecen en el
camino generado hasta el momento (basta que cada estado generado tenga un
puntero a su padre).
El mayor problema de este algoritmo es que puede "perderse" en una rama sin
encontrar la solucin. Adems, si se encuentra una solucin no se puede
garantizar que sea el camino ms corto.

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

{}

while (open no est vaca) {


remover el primer estado X de la lista open
if (X es un estado objetivo) return xito
else {
generar el conjunto de sucesores del estado X

agregar el estado X al conjunto closed


eliminar sucesores que ya estn en open o en closed
agregar el resto de los sucesores al final de open
}
}
return fracaso
}
Si el factor de ramificacin es B y la profundidad a la cual se encuentra el estado
objetivo ms cercano es n, este algoritmo tiene una complejidad en tiempo y
espacio de O(Bn). Contrariamente a la bsqueda en profundidad, la bsqueda en
amplitud garantiza encontrar el camino ms corto.

Bsqueda iterativa en profundidad


En ingls, iterative deepening.
La idea es combinar las buenas caractersticas de la bsqueda en profundidad, en
cuanto a la complejidad en espacio, con las ventajas de la bsqueda en amplitud.
Esto se logra haciendo una bsqueda en profundidad acotada por una profundidad
mxima i que se hace variar iterativamente de 1 en adelante con incrementos de
1. Si el estado objetivo ms cercano se encuentra a una profundidad n, se hacen
n bsquedas en profundidad, a nivel 1, a nivel 2, hasta el nivel n.
Esta bsqueda iterativa garantiza encontrar el camino ms corto. Su complejidad
en espacio es de O(B n). Su complejidad en tiempo es la suma de la
complejidad en tiempo de cada una de las bsquedas en profundidad acotadas
que fueron necesarias, esto es

i=1,...,n

O(Bi), o sea O(Bn). La complejidad en

tiempo es por lo tanto equivalente a hacer una sola bsqueda acotada a la


profundidad 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

{}

while (open no est vaca) {


remover el primer estado X de la lista open
if (X es un estado objetivo) return camino hasta X
else {
generar el conjunto de sucesores del estado X
foreach (Y en sucesores) {
if (Y no est en open ni en closed) {
asignar a Y un valor heurstico
agregar Y en la lista open
}
elsif (Y est en open) {
if (el nuevo camino a Y es ms corto)
actualizar el camino almacenado en open
}
elsif (Y est en closed) {
if (el nuevo camino a Y es ms corto) {
remover el estado Y del conjunto closed
agregar el estado Y en la lista open
}
}
}
agregar el estado X al conjunto closed
reordenar la lista open segn valores heursticos
}
}
return fracaso
}
Adems de utilizar una cola de prioridad, este algoritmo se diferencia por
actualizar los caminos almacenados en la lista open cada vez que se encuentra un
camino ms corto, lo que mejora la probabilidad de encontrar el camino ptimo. El
camino se almacena en cada estado como un puntero al padre.

Cuando se llega a un estado en closed por un camino ms corto, habra que


transmitir esta informacin a todos sus sucesores. Sin embargo, algunos de estos
sucesores pueden haber sido generados o posteriormente actualizados por otro
camino que hasta el momento pareca ms corto, por lo cual estaran
desvinculados del ancestro que se est considerando. Administrar este problema
sera muy engorroso, entonces se opta por repetir la bsqueda.
Se puede obtener una versin simplificada de esta bsqueda heurstica
eliminando toda la informacin histrica contenida en open y closed. En cada paso
se generan los sucesores del estado actual y slo se conserva al mejor de ellos
para el paso siguiente. El algoritmo se detiene cuando ninguno de los sucesores
tiene una mejor evaluacin que el estado actual (sino entrara en un ciclo infinito).
Esta estrategia se llama algoritmo del gradiente (hill climbing en ingls). Funciona
adecuadamente cuando no hay ptimos locales.

Funciones de evaluacin heurstica


Un criterio importante para definir una buena funcin de evaluacin heurstica es
que las soluciones encontradas con su ayuda sean cercanas al ptimo. Para llegar
rpidamente a un estado objetivo basta tener una evaluacin local para elegir el
mejor sucesor del estado actual, pero esto es insuficiente si se quiere adems
minimizar el largo del camino.
Suponiendo que para cada estado o nodo n existe una evaluacin heurstica h(n)
que permite estimar la distancia que falta para llegar de n a un nodo objetivo, para
encontrar lo ms rpidamente posible una solucin conviene priorizar los estados
con la menor evaluacin h(n). Pero si lo que se est buscando es un camino
ptimo, la evaluacin de los nodos debe considerar el largo total del camino y no
slo lo que queda por recorrer. Las evaluaciones heursticas f(n) que cumplen con
este criterio se expresan como una una suma de dos estimaciones: f(n) = g(n) +
h(n), en que g(n) es una estimacin del largo del camino del estado inicial hasta el
nodo n y h(n) es una estimacin del largo del camino que queda por recorrer de n
hasta un nodo objetivo. La evaluacin g(n) corresponde al largo del camino por el
cual se lleg al nodo n, es una estimacin porque siempre queda la posibilidad de
encontrar un camino ms corto.
La evaluacin f(n) expresa por lo tanto una estimacin del largo total del camino
desde el nodo inicial a un nodo objetivo pasando por el nodo n. El algoritmo de
bsqueda heurstica que utiliza una evaluacin de este tipo se denomina algoritmo
A. Cuando dos estados tienen la misma evaluacin heurstica, se le da prioridad al

primero en ser generado ya que tiene ms probabilidades de corresponder a un


camino de largo mnimo.

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.

3. si es un nodo MIN no terminal, su valor se calcula tomando el mnimo de los


valores de sus sucesores.
La movida elegida corresponde al valor seleccionado en la raiz del rbol de
bsqueda.

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

Potrebbero piacerti anche