Está en la página 1de 38

Programacin en Prolog para

sistemas expertos

Presentado por:
Felipe Panaque Flrez

DEFINICION DE UN SE
Quesun sistemasexperto
Los sistemas expertossonprogramasque reproducen
el proceso intelectual de unexpertohumanoen
uncampoparticular,Estos sistemaspermiten la
creacin de mquinas querazonancomo elhombre,
restrinjindose a un espaciodeconocimientoslimitado.
Lossistemasexpertostienenla ventaja
frenteaotrotiposde
programasdeInteligenciaArtificial,deproporcionargra
n
flexibilidadalahoradeincorporarnuevosconocimient
os.
DescripcinDelEsquema
Pararealizarunsistemaexperto
integrandospersonaselExperto
delDominio(profesionalX) y
unIngenierodeConocimiento (programado)

Descripcin Del Esquema


Pararealizarunsistemaexpertointegrandos personaselExpertodel
Dominio(profesional X)yun IngenierodeConocimiento (programador)
LaBasede conocimiento nos halla labasedatos y estasesta
compuestasporlenguajes depredicado,estaesunodeloscomponentes
quecontieneelconocimiento delexpertootambin llamadobasede
datos Existendostiposdebasedeconocimiento: Elprocedural;
Seusaenlos lenguajes.estructurados comosonPascal,C,Visual Basic
etc. Eldeclarativo; Estabasadoen hechos quevienenaser
accionesquesedandentrodel problemase ulitizan
loslenguajesPrologyLisp.
Noesnecesarioreprogramar todo el sistemaexperto. Las
reglassuelenalmacenarse enalguna secuencia jerrquicalgica
metarreglas(reglas sobreotrasreglas)ysufuncines indicarbajo qu
condiciones debenconsiderarse unasreglasenvezde otras.
SIhayreglasque usanmateriasbaratas Yhayreglasque usanmaterias
caras ENTONCES usaranteslasprimerasque las segundas Labasede
datos obasede hechos es unapartede lamemoriadel ordenador
quese utilizaparaalmacenarlosdatos recibidos inicialmenteparala
resolucindeunproblema

Arquitectura bsica de los SE


Base de conocimientos. Es la parte del sistema experto
que contiene el conocimiento sobre el dominio. hay que
obtener el conocimiento del experto y codificarlo en la base
de conocimientos.
Una forma clsica de representar el conocimiento en un
sistema experto son las reglas.
Una regla es una estructura condicional que relaciona
lgicamente la informacin contenida en la parte del
antecedente con otra informacin contenida en la parte del
consecuente.
Base de hechos (Memoria de trabajo). Contiene los
hechos sobre un problema que se ha descubierto durante
una consulta. Durante una consulta con el sistema experto,
el usuario introduce la informacin del problema actual en
la base de hechos. El sistema empareja esta informacin
con el conocimiento disponible en la base de conocimientos
para deducir nuevos hechos.
Motor de inferencia. El sistema experto modela el
proceso de razonamiento humano con un mdulo conocido
como el motor de inferencia. Dicho motor de inferencia
trabaja con la informacin contenida en la base de

Subsistema de explicacin. Una caracterstica de los sistemas


expertos es su habilidad para explicar su razonamiento. Usando el
mdulo del subsistema de explicacin, un sistema experto puede
proporcionar una explicacin al usuario de por qu est haciendo
una pregunta y cmo ha llegado a una conclusin. Este mdulo
proporciona beneficios tanto al diseador del sistema como al
usuario. El diseador puede usarlo para detectar errores y el
usuario se beneficia de la transparencia del sistema.
Interfaz de usuario. La interaccin entre un sistema experto y un
usuario se realiza en lenguaje natural. Tambin es altamente
interactiva y sigue el patrn de la conversacin entre seres
humanos. Para conducir este proceso de manera aceptable para el
usuario es especialmente importante el diseo del interfaz de
usuario. Un requerimiento bsico del interfaz es la habilidad de
hacer preguntas. Para obtener informacin fiable del usuario hay
que poner especial cuidado en el diseo de las cuestiones.

SISTEMAS EXPERTOS
BASADOS EN REGLAS
Caractersticas de los Sistemas Expertos Basados en Reglas:

Razonamiento guiado por las metas y encadenamiento hacia atrs.


Una tcnica de inferencia que usa las reglas IF-THEN para descomponer las
metas en submetas ms fciles de probar.
Manejo de incertidumbre. La habilidad del SE para trabajar con reglas y
datos que no son conocidos con precisin.
Razonamiento guiado por los datos y encadenamiento hacia
adelante. Una tcnica de inferencia que usa las reglas IF-THEN para
deducir soluciones a un problema a partir de los datos iniciales disponibles.
Representacin de datos. La forma en que los datos especficos a un
problema dado, son almacenados y accesados por el SE.
Interfaz del usuario. La parte del SE que se usa para una interaccin ms
amigable con el usuario.
Explicacin. La habilidad del SE para explicar sus procesos de
razonamiento y su uso en el cmputo de recomendaciones.

. Representacin del
conocimiento
Las reglas si-entonces, tambin llamadas
reglas de produccin, constituyen el formalismo
ms popular para representar conocimiento. En
los sistemas expertos tienen las siguientes
caractersticas deseables: Modularidad: cada
regla define una parte de conocimiento
pequea y relativamente independiente.
Incremental: se pueden aadir nuevas reglas a
la base de conocimiento, que son relativamente
independientes de las otras reglas.
Modificable: se pueden cambiar reglas por
otras nuevas. Transparente: es capaz de
explicar las decisiones tomadas y las soluciones
planteadas.

Prolog es el lenguaje ms difundido


en la programacin lgica. Algunas de
sus caractersticas son:
Prolog usa variables lgicas, las cuales no
son comparables a las de otros lenguajes.
Los programadores las pueden usar como
blancos en estructuras de datos que se
llenan gradualmente mientras corre el
proceso.

Prolog es un lenguaje
declarativo
Las clasulas muestran lo que es cierto
sobre un problema, en vez de
instrucciones de cmo lograr la solucin.
El sistema interno de Prolog usa las
clasulas para buscar como lograr la
solucin buscando en el espacio de
soluciones.
No todos los problemas pueden ser
resueltos de esta forma, por lo que
incorpora sentencias extralgicas.

Ejemplo: concatenar listas A y B


En un lenguaje imperativo

En un lenguaje funcional

En un lenguaje declarativo

list procedure cat(list a, list b)


{
list t = list u = copylist(a);
while (t.tail != nil) t = t.tail;
t.tail = b;
return u;
}
cat(a,b)
if b = nil then a
else cons(head(a),
cat(tail(a),b))

cat([], Z, Z).
cat([H|T], L, [H|Z]) :- cat(T, L, Z).

Sintaxis completa de Prolog


Trmino

Constante

Trmino compuesto

Nombra un individuo

Nombra un individuo que


tiene partes

Atomo
alpha17
pago
juan_perez
gripe
+
=/=
12Q&A

Nmero
0
1
57
1.618
2.04e-27
-13.6

gusta(juan, maria)
libro(cervantes, quijote)
f(x)
[1, 3, g(a), 7, 9]
-(+(15, 17), t)
15 + 17 - t

Variable
Reemplaza un individuo
que no puede ser nombrado
cuando el programa se
escribe
X
Quincena
Enfermedad
_257
_

Trminos compuestos
padres(manchas, pongo, perdita)

Functor (un tomo) de arity 3.

componentes (trminos)

Se puede mostrar el trmino como un rbol


padres
manchas pong
o

perdita

Estructura de los programas

Los programas consisten en procedimientos


Los procedimientos consisten en clasulas
Cada clasula es un hecho o una regla
Los programas se ejecutan haciendo preguntas

Por ejemplo

Ejemplo
Predicado
Procedimiento para elefante
Hechos

Clasulas
Regla

elefante(dumbo).
elefante(jumbo).
elefante(X) :- gris(X), mamifero(X),
tieneTrompa(X).

Ejemplo

Pregunta

?- elefante(jumbo).
yes
?- elefante(pongo).

Respuesta
no

Interpretacin de las
clasulas
Las clasulas pueden leerse de forma declarativa o
procedimental

H :- G1, G2, , Gn.

Interpretacin
declarativa

Se puede demostrar H ssi G1, G2,


, Gn tambin puedan
demostrarse.

Interpretacin
procedimental

Para evaluar el procedimiento H,


se ejecutan los procedimientos G1,
G2, , Gn previamente.

Unificacin
Dos trminos se unifican si pueden
sustituirse variables de tal forma que los
trminos se hacen idnticos.
El algoritmo de unificacin procede por
descenso recursivo de los dos trminos.
Constantes unifican si son idnticas
Variables unifican con cualquier trmino,
incluyendo otras variables
Trminos compuestos unifican si el
functor y componentes unifican.

Ejemplos
Los trminos f(X, a(b,c)) y f(d, a(Z, c)) unifican.

f
f

d
a

X
b

Los trminos unifican si se sustituye d por X, y b


se sustituye por Z. Esta sustitucin tambin se
denomina instanciacin.

Ejemplos
Los trminos f(X, a(b,c)) y f(Z, a(Z, c)) se unifican.

f
f

Z
a

X
b

Z
c

Ntese que Z se comparte dentro del


mismo trmino.

Ejemplos
Los trminos f(c, a(b,c)) y f(Z, a(Z, c)) no se
unifican
f

Z
a

c
b

Z
c

Estos dos trminos no pueden hacerse


idnticos sustituyendo variables.

Listas
Las listas en Prolog son similares a
las de otros lenguajes ya que se
compone de trminos de cualquier
tamao agrupados.
La lista de largo 0 se llama nil, y se
escribe [].
La lista de largo n es [cabeza,cola],
donde cola es una lista de largo n-1.

Sintaxis de Prolog para


listas
Nil se escribe [].
La lista de n elementos t1, t2, ,tn se
escribe as: [t1, t2, ,tn]
[X|[]] se escribe [X]
Para la lista [X|Z] , X es un tomo y Z
es una lista, con la cabeza X removida

Trabajando con listas


/* miembro(Termino, Lista) */
miembro(X, [X|T]).
miembro(X, [H|T]) :- miembro(X, T).
Ejemplos:
?- miembro(john, [paul, john]).
?- miembro(X, [paul, john]).
?- miembro(yo, [marx, darwin, freud]).
?- miembro(quien, X).

Reevaluacin (backtracking) y no
determinismo
miembro(X, [X|_]).
miembro(X, [_|T]) :- miembro(X, T).

Determinstico
?- miembro(fred, [john, paul, fred, ringo]).
yes

?- miembro(X, [john, paul, fred, ringo]).


X = john;
X = paul;
X = fred;
X = ringo;
no

No determinstico

Controlando la reevaluacin
color(cereza, rojo).
color(banana, amarillo).
color(manzana, rojo).
color(manzana, verde).
color(naranja, naranja).
color(X, desconocido).

?- color(banana, X).
X = amarillo
?- color(sandia, X).
X = desconocido
?- color(cereza, X).
X = rojo;
X = desconocido;
no

Clasulas y bases de datos


En una base de datos relacional, las relaciones se consideran
tablas, en los que cada elemento de una relacin n-aria se
almacena como una fila de la tabla, que cuenta con n
columnas.
proveedor
perez
lopez

silla
mesa

rojo
10
negro 50

Usando clasulas, se puede representar de la siguiente


forma:
proveedor(perez, silla, rojo, 10).
proveedor(lopez, mesa, negro, 50).

Clasulas y bases de datos


Ventajas de usar clasulas:
1. Reglas y hechos coexisten.
2. Se permiten definiciones recursivas.
3. Se permiten mltiples respuestas a la
misma consulta.
4. No hay distincin de rol entre el input y el
output.
5. La inferencia ocurre automticamente.

Casos de aplicacin
Sistemas expertos
Un sistema informtico que simula el
proceso de aprendizaje, de
memorizacin, de razonamiento, de
comunicacin y de accin de un experto
humano en una determinada rama de la
ciencia, suministrando, de esta forma,
un consultor que puede sustituirle con
unas ciertas garantas de xito

Casos de aplicacin
Sistemas expertos
Estas caractersticas le permiten
almacenar datos y conocimiento, sacar
conclusiones lgicas, tomar decisiones,
aprender de la experiencia y los datos
existentes, comunicarse con expertos
humanos u otros Sistemas Expertos,
explicar el porqu de las decisiones
tomadas y realizar acciones como
consecuencia de todo lo anterior

Casos de aplicacin
Procesamiento de lenguaje natural (NLP)
Prolog es un lenguaje muy expresivo para
plantear algoritmos de lingstica
computacional. Para el Procesamiento de
Lenguaje Natural (NLP), se requiere la
manipulacin de smbolos (palabras, fonemas
y otras partes del lenguaje), basados en
objetos estructurados (secuencias, rboles,
grafos). Prolog facilita la expresin de
operaciones sobre los smbolos y estructuras
sin preocuparse de la representacin y
manipulacin interna del computador.

Casos de aplicacin
Asignacin de recursos limitados
El laboratorio de investigacin de la IBM Haifa
ha desarrollado un sistema en Prolog para
asignar aviones en las lneas areas israeles ElAl. Este proyecto se llev a cabo para ahorrar
costos operativos y para reducir el uso de los
espacios de las compuertas del aeropuerto, que
tienen un costo elevado por ocupacin.
El sistema est conectado en lnea con el
sistema de programacin del El-Al y se
actualiza en tiempo real en cuanto a cambios
de horarios de vuelo.

Casos de aplicacin
Diseo experto de productos
En este sistema, el diseo de anteojos se hace a la
medida. Una fotografa de la cara del cliente se alimenta
como datos de entrada. El sistema experto en Prolog
propone un diseo y si el cliente aprueba el diseo, ste
se transmite desde las estaciones grficas a la fbrica
usando una red. El tiempo promedio de entrega es de
una hora
La base de conocimiento para proponer el diseo incluye
entre otros, datos sobre el color de la piel y del pelo del
cliente, preferencias individuales, conocimientos tcnicos
pticos, conocimiento del diseador de proponer forma y
los colores y formas de moda .

Casos de aplicacin
Verificacin de circuitos digitales
Siemens ha desarrollado en Prolog el sistema CVE, el
cual es utilizado para verificar de forma automtica el
comportamiento de salida de un circuito digital como
una funcin Booleana como una funcin de la entrada.
Las funciones que se obtienen se comparan de manera
simblica con las funciones correspondientes del
circuito usando algoritmos especializados que
garantizan que se detectan las diferencias encontradas
El sistema garantiza 100% de seguridad, ya que la
comparacin simblica es equivalente a simular un
circuito con todos los posibles patrones de entrada,
verificando todas las salidas de la simulacin

Casos de aplicacin
Configurador (Wizard) de red de
Windows NT

El sistema operativo Microsoft Windows NT utiliza un


intrprete interno de Prolog para configurar sus sistemas de
red de rea local (LAN) y de la red de rea amplia (WAN). Los
componentes interdependientes del software y de hardware
se abstraen en un marco orientado a objetos simplificado
usando la informacin declarativa proporcionada por el script
de instalacin de cada componente. Esta informacin, se
almacena junto al intrprete interno, que es consultada para
generar la mejor configuracin.
Los resultados de la consulta, almacenados en la base de
datos de la configuracin del NT (registry), informan a cada
componente o driver su orden de la carga y asociacin de
componentes