Intro Prolog

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 41

Programación en Prolog para

Inteligencia Artificial

Presentado por:

Egdares Futch H.
Qué dicen los expertos sobre IA
El arte de crear máquinas con capacidad de realizar
funciones que realizadas por personas requieren de
inteligencia. (Kurzweil, 1990).
El estudio de cómo lograr que las computadoras
realicen tareas que por el momento, los humanos
hacen mejor. (Rich, Knight, 1991).
La rama de la ciencia de la computación que se
ocupa de la automatización de la conducta
inteligente (Luger y Stubblefield, 1993).
Un campo de estudio que se enfoca a la explicación y
emulación de la conducta inteligente en función de
procesos computacionales (Schalkoff, 1990).
Qué dice el Web sobre la IA
IA es la reproducción de los métodos de
Comportamiento
razonamiento
inteligente o intuición humanos
Usar modelos computacionales para
Computadora
simular comportamiento (humano) y
procesos inteligentes
IA es el estudio de las facultades
mentales a través del uso de métodos
computacionalesHumanos
¿ Qué es la IA ?
Disciplina que sistematiza y automatiza
tareas intelectuales para crear
máquinas que:

Actúen como Actúen


humanos racionalmente
Piensen como Piensen
humanos racionalmente
Actuar como humanos
IA es el arte de crear máquinas que
realicen funciones que requieren de
inteligencia cuando la realizan humanos
Metodología: Elija una tarea intelectual
en la que los humanos son mejores y
•Demostrara un
ponga a una computadora teorema
hacerlo
•Jugar ajedrez
Test de Turing •Planear operación
•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 avión 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, tendríamos ahora moscas
muy rápidas” – John McCarthy

Autista vs. Sentido común


Pensar como humanos
La forma en la que la computadora
hace sus funciones importa
Comparación de los pasos para hacer
un razonamiento
Ciencias cognoscitivas  teorías
verificables de la mente humana

Pero, ¿queremos duplicar las imperfecciones humanas?


Pensar y actuar racionalmente
Siempre tomar la mejor decisión con lo
que asela tenga
•Conexión economía, a mano (tiempo,
investigación de operaciones,
conocimiento,
y teoría de control recursos)
•Pero ignora el rol de la conciencia, emociones, miedos, etc.
Conocimiento perfecto, recursos
ilimitados  razonamiento lógico
Conocimiento imperfecto, recursos
limitados  racionalidad limitada
Pensar (meditación de Feynman)

Todos conocemos la mente humana


porque tenemos una
Pensar no requiere instrucciones
 “Pensar no es más que hablarse a sí
mismo” dijo Richard. John contestó:
“Trata de pensar en un engranaje…cómo
te lo contaste?”
Algunas características
Frontera entre programación tradicional e IA
 La IA es programación
 Frontera se mueve: cuando algo funciona ya no es IA
 La IA se ocupa de aquellos problemas para los que no existen soluciones
algorítmicas satisfactorias y de aquellos que requieren el manejo explícito del
conocimiento
La IA se ocupa de tareas que, de momento, la gente realiza mejor
Técnicas de la Inteligencia Artificial
 Métodos generales de la computación+ técnicas específicas
 Enfoque algorítmico clásico da por hecho que se dispone de toda la
información necesaria para llegar a una solución ó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 máximo provecho a la
información disponible para tratar de obtener el resultado deseado e.d
compromiso entre exhaustividad del análisis y calidad del resultado
 Las técnicas computacionales desarrolladas dentro de este marco
metodológico son llamadas heurísticas
Introducción a Prolog
Prolog es el lenguaje más difundido en
la programación lógica. Algunas de sus
características son:
 Prolog usa variables lógicas, 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.
…Más
 La unificación es un método interno de
manipulación de datos que pasa
parámetros, retorna resultados, selecciona
y construye estructuras de datos.
 El modelo de control de flujo básico es la
reevaluación (backtracking).
 Las claúsulas de programa y los datos
tienen la misma forma.
 La forma relacional de los procedimientos
hace posible definirlos de forma que sean
“reversibles”
…Más
Las claúsulas proveen de una forma
conveniente para analizar casos e
indeterminismo.
Algunas veces se requiere de
características que no pertenecen a la
lógica 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 claúsulas muestran lo que es cierto sobre
un problema, en vez de instrucciones de
cómo lograr la solución.
El sistema interno de Prolog usa las claúsulas
para buscar como lograr la solución buscando
en el espacio de soluciones.
No todos los problemas pueden ser resueltos
de esta forma, por lo que incorpora
sentencias extralógicas.
Ejemplo: concatenar listas A y B
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;
}

cat(a,b) ≡
En un lenguaje funcional if b = nil then a
else cons(head(a),
cat(tail(a),b))
cat([], Z, Z).
En un lenguaje declarativo cat([H|T], L, [H|Z]) :- cat(T, L, Z).
Sintaxis completa de Prolog
Término

Constante Término compuesto Variable


Nombra un individuo Reemplaza un individuo
Nombra un individuo que
que no puede ser nombrado
tiene partes
cuando el programa se
escribe
Atomo Número gusta(juan, maria) X
alpha17 0 libro(cervantes, quijote) Quincena
pago 1 f(x) Enfermedad
juan_perez 57 [1, 3, g(a), 7, 9] _257
gripe 1.618 -(+(15, 17), t) _
+ 2.04e-27 15 + 17 - t
=/= -13.6
’12Q&A’
Términos compuestos
padres(manchas, pongo, perdita)

Functor (un átomo) de arity 3. componentes (términos)

Se puede mostrar el término como un árbol


padres

manchas pongo perdita


Estructura de los programas

Los programas consisten en procedimientos


Los procedimientos consisten en claúsulas
Cada claúsula es un hecho o una regla
Los programas se ejecutan haciendo
preguntas

Por ejemplo…
Ejemplo
Predicado

Procedimiento para elefante

Hechos

elefante(dumbo).
Claúsulas elefante(jumbo).
elefante(X) :- gris(X), mamifero(X),
Regla tieneTrompa(X).
Ejemplo

?- elefante(jumbo).
Pregunta
yes

?- elefante(pongo).
Respuesta
no
Interpretación de las claúsulas
Las claúsulas pueden leerse de forma declarativa o procedimental

H :- G1, G2, …, Gn.

“Se puede demostrar H ssi G1, G2,


Interpretación
declarativa …, Gn también puedan
demostrarse.”

Interpretación “Para evaluar el procedimiento H, se


procedimental ejecutan los procedimientos G1, G2,
…, Gn previamente.”
Unificación
Dos términos se unifican si pueden sustituirse
variables de tal forma que los términos se
hacen idénticos.
El algoritmo de unificación procede por
descenso recursivo de los dos términos.
 Constantes unifican si son idénticas

 Variables unifican con cualquier término,

incluyendo otras variables


 Términos compuestos unifican si el functor

y componentes unifican.
Ejemplos
Los términos f(X, a(b,c)) y f(d, a(Z, c))
unifican. f

f a
d

X a
Z c

b c

Los términos unifican si se sustituye d por X, y b se


sustituye por Z. Esta sustitución también se
denomina instanciación.
Ejemplos
Los términos f(X, a(b,c)) y f(Z, a(Z, c)) se
unifican. f

f a
Z

X a
Z c

b c

Nótese que Z se comparte dentro del


mismo término.
Ejemplos
Los términos f(c, a(b,c)) y f(Z, a(Z, c)) no
se unifican f

f a
Z

c a
Z c

b c

Estos dos términos no pueden hacerse


idénticos sustituyendo variables.
Listas
Las listas en Prolog son similares a las
de otros lenguajes ya que se compone
de términos de cualquier tamaño
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).
Reevaluación (backtracking) y no
determinismo
miembro(X, [X|_]).
miembro(X, [_|T]) :- miembro(X, T).
Determinístico
?- miembro(fred, [john, paul, fred, ringo]).
yes

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


X = john;
No determinístico
X = paul;
X = fred;
X = ringo;
no
Controlando la reevaluación
?- color(banana, X).
color(cereza, rojo). X = amarillo
color(banana, amarillo).
color(manzana, rojo). ?- color(sandia, X).
color(manzana, verde). X = desconocido
color(naranja, naranja).
color(X, desconocido). ?- color(cereza, X).
X = rojo;
X = desconocido;
no
Claúsulas y bases de datos
En una base de datos relacional, las relaciones se
consideran tablas, en los que cada elemento de una
relación 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 claúsulas, se puede representar de la siguiente


forma:

proveedor(perez, silla, rojo, 10).


proveedor(lopez, mesa, negro, 50).
Claúsulas y bases de datos
Ventajas de usar claúsulas:
• Reglas y hechos coexisten.
• Se permiten definiciones recursivas.
• Se permiten múltiples respuestas a la misma
consulta.
• No hay distinción de rol entre el input y el
output.
• La inferencia ocurre automáticamente.
Casos de aplicación
Sistemas expertos
 Un sistema informático que simula el

proceso de aprendizaje, de memorización,


de razonamiento, de comunicación y de
acción de un experto humano en una
determinada rama de la ciencia,
suministrando, de esta forma, un consultor
que puede sustituirle con unas ciertas
garantías de éxito
Casos de aplicación
Sistemas expertos
 Estas características le permiten almacenar

datos y conocimiento, sacar conclusiones


lógicas, 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 aplicación
Procesamiento de lenguaje natural (NLP)
 Prolog es un lenguaje muy expresivo para
plantear algoritmos de lingüística computacional.
Para el Procesamiento de Lenguaje Natural (NLP),
se requiere la manipulación de símbolos (palabras,
fonemas y otras partes del lenguaje), basados en
objetos estructurados (secuencias, árboles,
grafos). Prolog facilita la expresión de operaciones
sobre los símbolos y estructuras sin preocuparse
de la representación y manipulación interna del
computador.
Casos de aplicación
Asignación de recursos limitados
 El laboratorio de investigación de la IBM Haifa ha
desarrollado un sistema en Prolog para asignar
aviones en las líneas aéreas israelíes El-Al. 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 ocupación.
 El sistema está conectado en línea con el sistema
de programación del El-Al y se actualiza en tiempo
real en cuanto a cambios de horarios de vuelo.
Casos de aplicación
Diseño experto de productos
 En este sistema, el diseño de anteojos se hace a la
medida. Una fotografía de la cara del cliente se alimenta
como datos de entrada. El sistema experto en Prolog
propone un diseño y si el cliente aprueba el diseño, éste
se transmite desde las estaciones gráficas a la fábrica
usando una red. El tiempo promedio de entrega es de una
hora

 La base de conocimiento para proponer el diseño incluye


entre otros, datos sobre el color de la piel y del pelo del
cliente, preferencias individuales, conocimientos técnicos
ópticos, conocimiento del diseñador de proponer forma y
los colores y formas de moda .
Casos de aplicación
Verificación de circuitos digitales

 Siemens ha desarrollado en Prolog el sistema CVE, el cual


es utilizado para verificar de forma automática el
comportamiento de salida de un circuito digital como una
función Booleana como una función de la entrada. Las
funciones que se obtienen se comparan de manera
simbólica 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


comparación simbólica es equivalente a simular un circuito
con todos los posibles patrones de entrada, verificando
todas las salidas de la simulación
Casos de aplicación
Configurador (Wizard) de red de
Windows NT
 El sistema operativo Microsoft Windows NT utiliza un
intérprete 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 información declarativa proporcionada
por el script de instalación de cada componente. Esta
información, se almacena junto al intérprete interno, que es
consultada para generar la mejor configuración.

 Los resultados de la consulta, almacenados en la base de


datos de la configuración del NT (registry), informan a cada
componente o driver su orden de la carga y asociación de
componentes
Muchas gracias!
[email protected]
http://maestros.unitec.edu/~efutch

También podría gustarte