Perché Prolog è buono per la programmazione AI? [chiuso]


25

Sto cercando linguaggi di programmazione utilizzati per la programmazione AI. So che LISP è insegnato come linguaggio di programmazione AI nella mia università, ma Prolog lo è raramente. Sono un po 'affezionato a Prolog, ma non sono un programmatore di intelligenza artificiale, quindi non credo di essere qualificato per giudicare da solo perché Prolog è meglio di LISP / Scheme. Mi chiedevo se i programmatori avessero qualche input su questo argomento.

Come puoi sostenere che Prolog sarebbe più utile per la programmazione AI?

L'ho studiato un po ', e l'argomento di base che ho visto più e più volte è che, poiché i pensieri sono presentati in modo logico e Prolog è un linguaggio di programmazione logico, Prolog può costruire facilmente macchine decisionali o qualcosa in tal senso.

C'è qualcos'altro che si può dire per Prolog in AI?


1
Scrivere un compilatore / interprete Prolog in Lisp non richiede molto lavoro. Paul Graham ha un esempio in On Lisp .
Larry Coleman,

Anche uno dei miei compagni di classe me lo stava dicendo. Ho trovato davvero interessante che la manipolazione simbolica di LISP mi avrebbe permesso di ricreare Prolog. Grazie per il bello a parte!
2

4
@Larry Coleman: non è molto difficile scrivere un compilatore / interprete Prolog ingenuo in Lisp. Realizzarne uno efficiente e perfettamente funzionante non è banale in nessuna lingua.
SOLO IL MIO OPINIONE corretta il

Risposte:


19

Dalla prefazione alla programmazione Prolog per l'intelligenza artificiale :

Prolog è un linguaggio di programmazione incentrato su una piccola serie di meccanismi di base, tra cui pattern matching, strutturazione dei dati basata su alberi e backtracking automatico. Questo piccolo set costituisce un framework di programmazione sorprendentemente potente e flessibile. Prolog è particolarmente adatto a problemi che coinvolgono oggetti - in particolare oggetti strutturati - e relazioni tra di loro. Ad esempio, in Prolog è facile esercitare le relazioni spaziali tra oggetti, come la sfera blu dietro quella verde. È anche facile stabilire una regola più generale: se l'oggetto X è più vicino all'osservatore rispetto all'oggetto Y e Y è più vicino di Z, allora X deve essere più vicino di Z. Prolog può ora ragionare sulle relazioni spaziali e sulla loro coerenza con rispetto alla regola generale. Funzionalità come questa rendono Prolog un linguaggio potente per l'intelligenza artificiale (AI) e la programmazione non numerica in generale. Esistono esempi ben noti di calcolo simbolico la cui implementazione in altri linguaggi standard ha richiesto decine di pagine di codice indigeribile. Quando gli stessi algoritmi furono implementati in Prolog, il risultato fu un programma cristallino che si adattava facilmente a una pagina.

Fondamentalmente è un ottimo linguaggio per esprimere varie relazioni e obiettivi in ​​modo succinto, (per lo più) leggibile e (semi) naturale. Codice equivalente, ad esempio, nel Lisps tende ad essere più verboso e più offuscato nel suo intento perché passi molto tempo nelle viscere e nell'impianto idraulico di gestione e ragionamento delle relazioni.


La mia aggiunta minore qui sarebbe che Prolog ti consente di dichiarare i fatti , e quindi le regole basate su quei fatti. Le regole possono quindi essere utilizzate da Prolog per ragionare e rispondere ad altre domande deducendo logicamente le risposte. Ad esempio, se un fatto afferma che A è un antenato di B e un altro fatto afferma che B è un antenato di C, allora Prolog può dedurre che A deve essere un antenato di C senza che tu debba scrivere un algoritmo per verificarlo.
code_dredd,

25

Ho fatto un'introduzione al corso di AI nei miei studi universitari che ha usato Prolog per farci implementare un sistema esperto.

Un sistema esperto è un software utilizzato per risolvere un problema molto specifico la cui soluzione dipende da un elevato numero di regole e variabili.

Ad esempio, potresti immaginare un sistema esperto che ti dice se dovresti prendere un ombrello con te quando esci o no; gli daresti una serie di dati (se è nuvoloso, se ha piovuto il giorno prima, che stagione è, ecc.) e il sistema esperto esaminerebbe le regole per darti una risposta (se è nuvoloso e ha piovuto il il giorno prima, allora dovresti prendere un ombrello).

La natura di Prolog rende molto semplice l'implementazione di regole e fatti (in Prolog, tutto è una regola o un fatto), e quindi "interroga il database" (ottieni una risposta alla tua domanda), anche quando hai migliaia di queste regole e fatti .

Se sei interessato all'argomento, ti consiglio di installare un interprete Prolog e di provare a implementare un sistema esperto di base per farti un'idea, potrebbe aiutarti a capire perché è uno strumento così potente per queste attività.


Ho letto nella mia ricerca che Prolog rende i sistemi esperti facili da implementare. Grazie per il backup con qualche spiegazione :)
2rs2ts

16

La differenza è un po 'come usare SQL per le query del database piuttosto che scrivere un programma in, diciamo, C. In SQL, dici quello che vuoi - ma non devi (direttamente) specificare l'algoritmo usato per derivarlo.

Un programma Prolog viene talvolta chiamato database, ma in realtà è un insieme di istruzioni logiche predicate. Il meccanismo di valutazione accetta la query ed esegue sostituzioni su di essa in base alle istruzioni logiche del predicato, effettuando una ricerca per trovare le soluzioni corrette. Tutti gli algoritmi di ricerca necessari (molto più coinvolti di una query SQL) sono integrati nel compilatore Prolog.

Una query SQL, se dovessi implementare la stessa logica in modo ingenuo in C, non richiederebbe molto di più che un ciclo e condizioni condizionali if / else.

Una query Prolog, implementata in C, avrebbe bisogno (almeno) di una ricerca di backtracking usando la tecnica union-find. E quella, ancora una volta, è una soluzione ingenua.

Un certo tipo di programmazione AI coinvolge molto il tipo di ricerca effettuata da Prolog. Non sorprende, in realtà - originariamente che la programmazione dell'IA fosse fatta in Lisp o in qualche altra lingua, ma Prolog è stato scritto appositamente per fare il lavoro.

La logica predicata è l'approccio naturale per definire quello stile di problema AI e, in Prolog, una volta che hai quella definizione puoi eseguirla direttamente, senza dover implementare tutti quegli algoritmi di ricerca scomodi.


3

Ho preso 2 moduli Prolog all'università e mi è piaciuto molto sviluppare la lingua.

È particolarmente utile per i sistemi esperti, ho scritto uno di diagnosi medica Symtom.

Il modo in cui mi è stato spiegato è che Lisp tende ad essere usato di più in alcuni paesi e Prolog negli altri.

In termini di ciò che è meglio, ho coperto Lisp solo brevemente quando ho fatto il calcolo lambda in un modulo di informatica teorica, quindi sono distorto verso Prolog.

Se stai sviluppando un'applicazione per gestire regole e fatti per ottenere risposte, Prolog è molto buono e supporta naturalmente il backtracking.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.