Вы находитесь на странице: 1из 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 de Comportamiento inteligente razonamiento o intuicin humanos Computadora Usar modelos computacionales para simular comportamiento (humano) y procesos inteligentes IA es el estudio de las facultades mentales a travs del uso de mtodos Humanos 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 hacerlo ponga a una computadora aun teorema Jugar ajedrez Test de Turing Planear operacin

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 humanas?

Pensar y actuar racionalmente


Siempre tomar la mejor decisin con lo que se economa, investigacin de operaciones, Conexin a la tenga a mano (tiempo, conocimiento, recursos) y teora de control Pero ignora el rol de la conciencia, emociones, miedos, etc. 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 engranajecmo te lo contaste?

Algunas caractersticas
Frontera entre programacin tradicional e IA

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

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

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 y B


En un lenguaje imperativo
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).

En un lenguaje funcional

En un lenguaje declarativo cat([H|T], L, [H|Z]) :- cat(T, L, Z).

Sintaxis completa de Prolog


Trmino Constante
Nombra un individuo

Trmino compuesto
Nombra un individuo que tiene partes 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 _

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

Nmero
0 1 57 1.618 2.04e-27 -13.6

Trminos compuestos
padres(manchas, pongo, perdita)

Functor (un tomo) de arity 3.

componentes (trminos)

Se puede mostrar el trmino como un rbol padres

manchas pongo

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
?- elefante(jumbo). Pregunta 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.


Para evaluar el procedimiento H, se ejecutan los procedimientos G1, G2, , Gn previamente.

Interpretacin procedimental

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
f X a

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


d Z a c

Los trminos unifican si se sustituye d por X, y b se sustituye por Z. Esta sustitucin tambin se denomina instanciacin.

Ejemplos
f X a

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


Z Z a c

Ntese que Z se comparte dentro del mismo trmino.

Ejemplos
f c a

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


Z Z a 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 negro

10 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 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 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/~efutch