¿Por qué Prolog es bueno para la programación de IA? [cerrado]

25

Estoy investigando lenguajes de programación utilizados para la programación de IA. Sé que LISP se enseña como un lenguaje de programación de IA en mi universidad, pero Prolog rara vez lo es. Soy aficionado a Prolog, pero no soy un programador de IA, así que no creo que esté calificado para juzgar por mí mismo por qué Prolog es mejor que LISP / Scheme. Me preguntaba si los programadores tenían alguna aportación sobre este tema.

¿Cómo podría argumentar que Prolog sería más útil para la programación de IA?

Lo he estado investigando un poco, y el argumento básico que he visto una y otra vez es que, dado que los pensamientos se presentan en lógica, y Prolog es un lenguaje de programación lógico, Prolog puede construir máquinas de decisión fácilmente, o algo por el estilo.

¿Hay algo más que se pueda decir de Prolog en AI?

2rs2ts
fuente
1
No es mucho trabajo escribir un compilador / intérprete Prolog en Lisp. Paul Graham tiene un ejemplo en On Lisp .
Larry Coleman
Uno de mis compañeros de clase también me dijo esto. Me pareció realmente interesante que la manipulación simbólica de LISP me permitiera recrear Prolog. Gracias por el agradable a un lado!
2rs2ts
44
@Larry Coleman: No es mucho trabajo escribir un ingenuo compilador / intérprete de Prolog en Lisp. Hacer uno que sea eficiente y totalmente funcional no es trivial en ningún idioma.
SOLO MI OPINIÓN correcta

Respuestas:

19

Del prefacio a la Programación Prolog para la Inteligencia Artificial :

Prolog es un lenguaje de programación centrado en un pequeño conjunto de mecanismos básicos, que incluyen la coincidencia de patrones, la estructuración de datos basada en árboles y el retroceso automático. Este pequeño conjunto constituye un marco de programación sorprendentemente potente y flexible. Prolog es especialmente adecuado para problemas que involucran objetos, en particular objetos estructurados, y relaciones entre ellos. Por ejemplo, es un ejercicio fácil en Prolog expresar relaciones espaciales entre objetos, como la esfera azul está detrás de la verde. También es fácil establecer una regla más general: si el objeto X está más cerca del observador que el objeto Y, e Y está más cerca que Z, entonces X debe estar más cerca que Z. Prolog ahora puede razonar sobre las relaciones espaciales y su coherencia con Respeto a la regla general. Características como esta hacen de Prolog un lenguaje poderoso para la inteligencia artificial (IA) y la programación no numérica en general. Hay ejemplos bien conocidos de computación simbólica cuya implementación en otros lenguajes estándar tomó decenas de páginas de código no digerible. Cuando se implementaron los mismos algoritmos en Prolog, el resultado fue un programa claro como el cristal que se ajusta fácilmente en una página.

Básicamente es un gran lenguaje para expresar diversas relaciones y objetivos de una manera sucinta, (en su mayoría) legible y (semi) natural. El código equivalente en, por ejemplo, el Lisps tiende a ser más detallado y más ofuscado en su intento porque pasas mucho tiempo en las entrañas y la plomería de la gestión y el razonamiento sobre las relaciones.

SOLO MI OPINIÓN correcta
fuente
Mi pequeña adición aquí sería que Prolog le permite declarar hechos y luego reglas basadas en esos hechos. Prolog puede utilizar sus reglas para razonar y responder otras consultas deduciendo lógicamente las respuestas. Por ejemplo, si un hecho indica que A es un ancestro de B y otro hecho indica que B es un ancestro de C, entonces Prolog puede deducir que A debe ser un ancestro de C sin que tenga que escribir un algoritmo para verificarlo.
code_dredd
25

Tomé una introducción al curso de IA en mi licenciatura que usó Prolog para hacernos implementar un sistema experto.

Un sistema experto es un software que se utiliza para resolver un problema muy específico cuya solución depende de un gran número de reglas y variables.

Por ejemplo, podrías imaginar un sistema experto que te diga si debes llevar un paraguas contigo cuando salgas o no; le daría un conjunto de datos (si está nublado, si llovió el día anterior, en qué estación es, etc.) y el sistema experto revisará las reglas para darle una respuesta (si está nublado y llovió el día anterior, entonces deberías llevar un paraguas).

La naturaleza de Prolog hace que sea muy sencillo implementar reglas y hechos (en Prolog, todo es una regla o un hecho), y luego "consultar la base de datos" (obtener una respuesta a su pregunta), incluso cuando tenga miles de estas reglas y hechos .

Si está interesado en el tema, le recomiendo que instale un intérprete de Prolog e intente implementar un sistema experto muy básico para tener una idea del mismo; podría ayudarlo a comprender por qué es una herramienta tan poderosa para estas tareas.

Bitgarden
fuente
Leí en mi investigación que Prolog hace que los sistemas expertos sean fáciles de implementar. Gracias por respaldar eso con alguna explicación :)
2rs2ts
16

La diferencia es un poco como usar SQL para consultas de bases de datos en lugar de escribir un programa en, digamos, C. En SQL, usted dice lo que quiere, pero no tiene que (directamente) especificar el algoritmo utilizado para derivarlo.

Un programa Prolog a veces se llama una base de datos, pero en realidad es un conjunto de declaraciones de lógica de predicados. El mecanismo de evaluación toma la consulta y realiza sustituciones basadas en las declaraciones de lógica de predicados, haciendo una búsqueda para encontrar las soluciones correctas. Todos los algoritmos de búsqueda necesarios (mucho más involucrados que una consulta SQL) están integrados en el compilador de Prolog.

Una consulta SQL, si fuera a implementar la misma lógica ingenuamente en C, no necesitaría mucho más que bucles y condicionales if / else.

Una consulta de Prolog, implementada en C, necesitaría (al menos) una búsqueda de retroceso utilizando la técnica union-find. Y eso, de nuevo, es una solución ingenua.

Un cierto tipo de programación de IA implica mucho del tipo de búsqueda que hace Prolog. Como era de esperar, realmente: originalmente, la programación de IA se realizó en Lisp o en algún otro idioma, pero Prolog se escribió específicamente para hacer el trabajo.

La lógica de predicados es el enfoque natural para definir ese estilo de problema de IA y, en Prolog, una vez que tenga esa definición, puede ejecutarla directamente, sin tener que implementar todos esos algoritmos de búsqueda incómodos.

Steve314
fuente
3

Tomé 2 módulos Prolog en la Universidad y disfruté mucho el desarrollo en el idioma.

Es particularmente bueno para sistemas expertos, escribí un diagnóstico de síntomas médicos.

La forma en que me lo explicaron fue que Lisp tiende a usarse más en ciertos países y Prolog en otros.

En términos de cuál es el mejor, solo cubrí a Lisp brevemente cuando hice el cálculo lambda en un módulo de Ciencias de la Computación Teórica, así que soy parcial hacia Prolog.

Si está desarrollando una aplicación para lidiar con reglas y hechos para obtener respuestas, Prolog es muy bueno y, naturalmente, admite el retroceso.

DazManCat
fuente