programación en prolog para inteligencia artificial
DESCRIPTION
Presentación para el congreso IEEE CONESCAPAN XXIII, Tegucigalpa, HondurasTRANSCRIPT
![Page 1: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/1.jpg)
Programación en Prolog para Inteligencia Artificial
Presentado por:
Egdares Futch H.
![Page 2: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/2.jpg)
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).
![Page 3: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/3.jpg)
Qué dice el Web sobre la IA
IA es la reproducción de los métodos de razonamiento o intuición humanosUsar modelos computacionales para simular comportamiento (humano) y procesos inteligentesIA es el estudio de las facultades mentales a través del uso de métodos computacionales
Comportamientointeligente
Humanos
Computadora
![Page 4: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/4.jpg)
¿ Qué es la IA ?
Disciplina que sistematiza y automatiza tareas intelectuales
para crear máquinas que:
Actúen como humanos
Actúen racionalmente
Piensen como humanos
Piensen racionalmente
![Page 5: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/5.jpg)
Actuar como humanos
IA es el arte de crear máquinas que realicen funciones que requieren de inteligencia cuando la realizan humanosMetodología: Elija una tarea intelectual en la que los humanos son mejores y ponga a una computadora a hacerloTest de Turing
•Demostrar un teorema•Jugar ajedrez•Planear operación•Diagnosticar enfermedad•Navegar en el edificio
![Page 6: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/6.jpg)
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
![Page 7: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/7.jpg)
Pensar como humanos
La forma en la que la computadora hace sus funciones importaComparación de los pasos para hacer un razonamientoCiencias cognoscitivas teorías verificables de la mente humana
Pero, ¿queremos duplicar las imperfecciones humanas?
![Page 8: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/8.jpg)
Pensar y actuar racionalmente
Siempre tomar la mejor decisión con lo que se tenga a mano (tiempo, conocimiento, recursos)Conocimiento perfecto, recursos ilimitados razonamiento lógicoConocimiento imperfecto, recursos limitados racionalidad limitada
•Conexión a la economía, investigación de operaciones, y teoría de control•Pero ignora el rol de la conciencia, emociones, miedos, etc.
![Page 9: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/9.jpg)
Pensar (meditación de Feynman)
Todos conocemos la mente humana porque tenemos unaPensar 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?”
![Page 10: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/10.jpg)
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
![Page 11: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/11.jpg)
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.
![Page 12: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/12.jpg)
…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”
![Page 13: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/13.jpg)
…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.
![Page 14: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/14.jpg)
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).
![Page 15: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/15.jpg)
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.
![Page 16: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/16.jpg)
Ejemplo: concatenar listas A y B
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;}
En un lenguaje imperativo
En un lenguaje declarativo
En un lenguaje funcionalcat(a,b) if b = nil then aelse cons(head(a), cat(tail(a),b))
cat([], Z, Z).cat([H|T], L, [H|Z]) :- cat(T, L, Z).
![Page 17: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/17.jpg)
Sintaxis completa de Prolog
Término
Constante VariableTérmino compuesto
Atomo Númeroalpha17pagojuan_perezgripe+=/=’12Q&A’
01571.6182.04e-27-13.6
gusta(juan, maria)libro(cervantes, quijote)f(x)[1, 3, g(a), 7, 9]-(+(15, 17), t)15 + 17 - t
XQuincenaEnfermedad_257_
Nombra un individuo Reemplaza un individuoque no puede ser nombradocuando el programa seescribe
Nombra un individuo quetiene partes
![Page 18: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/18.jpg)
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
perditapongo
manchas
![Page 19: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/19.jpg)
Estructura de los programas
Los programas consisten en procedimientosLos procedimientos consisten en claúsulasCada claúsula es un hecho o una reglaLos programas se ejecutan haciendo preguntas
Por ejemplo…
![Page 20: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/20.jpg)
Ejemplo
elefante(dumbo).elefante(jumbo).elefante(X) :- gris(X), mamifero(X), tieneTrompa(X).
Procedimiento para elefante
Predicado
Claúsulas
Regla
Hechos
![Page 21: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/21.jpg)
Ejemplo
?- elefante(jumbo).
yes
?- elefante(pongo).
no
Pregunta
Respuesta
![Page 22: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/22.jpg)
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, …, Gn también puedan demostrarse.”
“Para evaluar el procedimiento H, se ejecutan los procedimientos G1, G2, …, Gn previamente.”
Interpretacióndeclarativa
Interpretaciónprocedimental
![Page 23: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/23.jpg)
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.
![Page 24: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/24.jpg)
EjemplosLos términos f(X, a(b,c)) y f(d, a(Z, c)) unifican.
Z c
ad
f
b c
aX
f
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.
![Page 25: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/25.jpg)
EjemplosLos términos f(X, a(b,c)) y f(Z, a(Z, c)) se unifican.
Z c
aZ
f
b c
aX
f
Nótese que Z se comparte dentro del mismo término.
![Page 26: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/26.jpg)
EjemplosLos términos f(c, a(b,c)) y f(Z, a(Z, c)) no se unifican
Z c
aZ
f
b c
ac
f
Estos dos términos no pueden hacerse idénticos sustituyendo variables.
![Page 27: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/27.jpg)
ListasLas 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.
![Page 28: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/28.jpg)
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
![Page 29: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/29.jpg)
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).
![Page 30: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/30.jpg)
Reevaluación (backtracking) y no determinismomiembro(X, [X|_]).
miembro(X, [_|T]) :- miembro(X, T).
?- miembro(fred, [john, paul, fred, ringo]).yes
?- miembro(X, [john, paul, fred, ringo]).X = john;
X = paul;
X = fred;
X = ringo;
no
Determinístico
No determinístico
![Page 31: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/31.jpg)
Controlando la reevaluación
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
![Page 32: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/32.jpg)
Claúsulas y bases de datosEn 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.
proveedorperez silla rojo 10lopez mesa negro 50
Usando claúsulas, se puede representar de la siguiente forma:
proveedor(perez, silla, rojo, 10).proveedor(lopez, mesa, negro, 50).
![Page 33: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/33.jpg)
Claúsulas y bases de datos
Ventajas de usar claúsulas:1. Reglas y hechos coexisten.2. Se permiten definiciones recursivas.3. Se permiten múltiples respuestas a la
misma consulta.4. No hay distinción de rol entre el input y
el output.5. La inferencia ocurre automáticamente.
![Page 34: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/34.jpg)
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
![Page 35: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/35.jpg)
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
![Page 36: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/36.jpg)
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.
![Page 37: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/37.jpg)
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.
![Page 38: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/38.jpg)
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 .
![Page 39: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/39.jpg)
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
![Page 40: Programación en Prolog para Inteligencia Artificial](https://reader036.vdocuments.pub/reader036/viewer/2022081506/556fa707d8b42a693e8b5371/html5/thumbnails/40.jpg)
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