Está en la página 1de 41

Programacin en Prolog para

Inteligencia Artificial
Presentado por:
Egdares Futch H.

Qu dicen los expertos sobre


IA
El arte de crear mquinas con capacidad de
realizar funciones que realizadas por personas
requieren de inteligencia. (Kurzweil, 1990).
El estudio de cmo lograr que las computadoras
realicen tareas que por el momento, los
humanos hacen mejor. (Rich, Knight, 1991).
La rama de la ciencia de la computacin que se
ocupa de la automatizacin de la conducta
inteligente (Luger y Stubblefield, 1993).
Un campo de estudio que se enfoca a la
explicacin y emulacin de la conducta
inteligente en funcin de procesos
computacionales (Schalkoff, 1990).

Qu dice el Web sobre la


IA
IA es la reproduccin de los mtodos
Comportamiento
deinteligente
razonamiento o intuicin
humanos
Computadora
Usar modelos computacionales para
simular comportamiento (humano) y
procesos inteligentes
IA es el estudio de las facultades
mentales aHumanos
travs del uso de
mtodos computacionales

Qu es la IA ?
Disciplina que sistematiza y
automatiza tareas intelectuales
para crear mquinas que:
Acten como
humanos
Piensen como
humanos

Acten
racionalmente
Piensen
racionalmente

Actuar como humanos

IA es el arte de crear mquinas que


realicen funciones que requieren de
inteligencia cuando la realizan
humanos
Metodologa: Elija una tarea intelectual
en la que los humanos
son mejores
y
Demostrar
un teorema
ponga a una computadora
a hacerlo
Jugar ajedrez
Planear operacin
Test de Turing
Diagnosticar enfermedad
Navegar en el edificio

El caso del Ajedrez


Pro:

Decir que Deep Blue no piensa realmente sobre el


ajedrez es como decir que un avin realmente no vuela
porque no aletea Drew McDermott

Contra:

El ajedrez es la Drosophila de la IA. Si los geneticistas


se hubieran aplicado de esa manera, tendramos ahora
moscas muy rpidas John McCarthy

Autista vs. Sentido comn

Pensar como humanos


La forma en la que la computadora
hace sus funciones importa
Comparacin de los pasos para
hacer un razonamiento
Ciencias cognoscitivas teoras
verificables de la mente humana

Pero, queremos duplicar las imperfecciones hum

Pensar y actuar
racionalmente
Siempre tomar la mejor decisin
con lo
que
se tenga
a mano
Conexin
a la
economa,
investigacin
de operaciones,
(tiempo,
conocimiento, recursos)
y teora
de control
Pero ignora el rol de la conciencia, emociones, miedos,
Conocimiento perfecto, recursos
ilimitados razonamiento lgico
Conocimiento imperfecto, recursos
limitados racionalidad limitada

Pensar (meditacin de
Feynman)
Todos conocemos la mente
humana porque tenemos una
Pensar no requiere instrucciones

Pensar no es ms que hablarse a s


mismo dijo Richard. John contest:
Trata de pensar en un engranaje
cmo te lo contaste?

Algunas caractersticas
Frontera entre programacin tradicional e IA

La IA es programacin
Frontera se mueve: cuando algo funciona ya no es IA
La IA se ocupa de aquellos problemas para los que no existen
soluciones algortmicas satisfactorias y de aquellos que requieren el
manejo explcito del conocimiento

La IA se ocupa de tareas que, de momento, la gente realiza mejor


Tcnicas de la Inteligencia Artificial

Mtodos generales de la computacin+ tcnicas especficas


Enfoque algortmico clsico da por hecho que se dispone de toda la
informacin necesaria para llegar a 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 e.d compromiso entre exhaustividad del anlisis y
calidad del resultado
Las tcnicas computacionales desarrolladas dentro de este marco
metodolgico son llamadas heursticas

Introduccin a Prolog
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.

Ms

La unificacin es un mtodo interno de


manipulacin de datos que pasa parmetros,
retorna resultados, selecciona y construye
estructuras de datos.
El modelo de control de flujo bsico es la
reevaluacin (backtracking).
Las clasulas de programa y los datos tienen la
misma forma.
La forma relacional de los procedimientos hace
posible definirlos de forma que sean
reversibles

Ms
Las clasulas proveen de una forma
conveniente para analizar casos e
indeterminismo.
Algunas veces se requiere de
caractersticas que no pertenecen a la
lgica pura.
Un programa en Prolog puede ser
considerado como una base de datos
relacional que contiene reglas y hechos.

Nuestro primer programa


/* En el zoologico */
elefante(jorge).
elefante(maria).
panda(chi_chi).
panda(ming_ming).
peligroso(X) :- dientes_grandes(X).
peligroso(X) :- venenoso(X).
suponga(X, tiger) :- rayas(X), dientes_grandes(X), esFelino(X).
suponga(X, zebra) :- rayas(X), esEquino(X).

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


yB
list procedure cat(list a, list b)
En un lenguaje imperativo

{
list t = list u = copylist(a);
while (t.tail != nil) t = t.tail;
t.tail = b;
return u;
}

En un lenguaje funcional

En un lenguaje declarativo

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
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 silla
rojo
10
lopez mesa 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

Muchas gracias!
efutchh@unitec.edu
http://maestros.unitec.edu/~efut
ch

También podría gustarte