PDA

View Full Version : Prolog, il mio cervello si è riavviato e non parte


-Ivan-
06-10-2006, 11:06
Sto seguendo un corso di intelligenza artificiale ed abbiamo iniziato un po' di prolog.
Non riesco a capirne i meccanismi base ed avrei bisogno di qualche manuale online se possibile. Qualcuno di voi ha delle dispense, dei link di riferimento o altro materiale da poter studiare? Io vengo dal c++ o al massimo assembler e capire un linguaggio come il prolog mi uccide.
Siamo proprio agli inizi quindi niente di avanzato.
Giusto per capire come istituire le regole e fare programmi come il fattoriale, il quick sort e cose del genere. Con la sintassi sono a posto è proprio il funzionamento a livello di computazione che non afferro.

mattia.pascal
06-10-2006, 15:26
Per imparare a programmare in prolog con un certa scioltezza ci vuole molta esperienza; all'inizio hanno tutti difficoltà. Non ti mettere a perdere tempo con manuali e cose del genere,fatti gli esempi svolti a lezione e cerca di capire qual'è la logica che ci sta dietro. Anche perchè il prolog non sarà certamente l'argomento principale del corso di AI.

clasprea
06-10-2006, 15:53
http://old.disco.unimib.it/simone/ling_prog_el/

Qui trovi un po' di slide nella sezione "programma e organizzazione lezioni"

Buon divertimento :D

Io per fortuna ho già dato :D

-Ivan-
08-10-2006, 11:38
Per imparare a programmare in prolog con un certa scioltezza ci vuole molta esperienza; all'inizio hanno tutti difficoltà. Non ti mettere a perdere tempo con manuali e cose del genere,fatti gli esempi svolti a lezione e cerca di capire qual'è la logica che ci sta dietro. Anche perchè il prolog non sarà certamente l'argomento principale del corso di AI.

Si infatti volevo solo manuali che spiegassero il funzionamento di alcuni esempi stupidi, in fondo ho fatto solo 2 lezioni fino ad ora ma non vorrei perdermi all'inizio, come sintassi non ho problemi, solo che non mi riesce di capire alcune cose di base, vi faccio un esempio:
il fattoriale che ci ha fatto vedere il rpof è il seguente:

fatt(0,1).
fatt(N,F):-M is N-1, fatt(M,H), F is N*H.

Il passo base è elementare ed ok, nel passo induttivo lui dice in sostanza che il nostro problema da risolvere comprende i termini N ed F.
Poi dice che M è N-1 e fa il fattoriale tra N-1 ed H, ma H dove acquisisce un valore e quando? Questo proprio non lo capisco...cioè quello che non capisco è il funzionamento di base del compilatore (a dire il vero non so nemmeno se alla base c'è un compilatore, un interprete o cosa), sono abituato a ragionare con l'assembly o il c che sono molto diversi come logica ed una espressione come quella sopra non capisco come la possa interpretare il computer.

thebol
08-10-2006, 13:48
Si infatti volevo solo manuali che spiegassero il funzionamento di alcuni esempi stupidi, in fondo ho fatto solo 2 lezioni fino ad ora ma non vorrei perdermi all'inizio, come sintassi non ho problemi, solo che non mi riesce di capire alcune cose di base, vi faccio un esempio:
il fattoriale che ci ha fatto vedere il rpof è il seguente:

fatt(0,1).
fatt(N,F):-M is N-1, fatt(M,H), F is N*H.

Il passo base è elementare ed ok, nel passo induttivo lui dice in sostanza che il nostro problema da risolvere comprende i termini N ed F.
Poi dice che M è N-1 e fa il fattoriale tra N-1 ed H, ma H dove acquisisce un valore e quando? Questo proprio non lo capisco...cioè quello che non capisco è il funzionamento di base del compilatore (a dire il vero non so nemmeno se alla base c'è un compilatore, un interprete o cosa), sono abituato a ragionare con l'assembly o il c che sono molto diversi come logica ed una espressione come quella sopra non capisco come la possa interpretare il computer.

se non ricordo male in prolog, non definisci delle procedure, ma delle regole

in questo caso definisci la regola che
M = al primo parametro -1
f = N * H
H e definito da fatt(n-1)

poi come lui interpreti sta roba non lo so...
cmq devi ragionare per regole non per procedure

jappilas
08-10-2006, 14:30
Sto seguendo un corso di intelligenza artificiale ed abbiamo iniziato un po' di prolog.
Non riesco a capirne i meccanismi base ed avrei bisogno di qualche manuale online se possibile. Qualcuno di voi ha delle dispense, dei link di riferimento o altro materiale da poter studiare? Io vengo dal c++ o al massimo assembler e capire un linguaggio come il prolog mi uccide.
sembra che ti manchino le basi di logica formale... ti consiglierei prima di dare una letta a qualcosa sul calcolo dei predicato del primo ordine ;)
Con la sintassi sono a posto è proprio il funzionamento a livello di computazione che non afferro.
è un paradigma opposto rispetto a quello della programmazione procedurale in cui istruisci la macchina sulla sequenza di operazioni da compiere , in prolog quello che viene programmato è la conoscenza iniziale del sistema, sotto forma di fatti e regole
una volta definita la conoscenza del sistema, non avviene una "compilazione"... ma il sistema parsa gli statements che componegono tale conoscenza per determinare se verificano o meno le query successivamente sottoposte

Johnn
08-10-2006, 15:28
Questo è il materiale su cui ho lavorato. Essendo a tratti molto teorico e molto vasto, non ti spaventare e muoviti opportunamente tra le sezioni che effettivamente ti servono (per adesso le prime).

E' un pdf di 300 pagine:

http://www.dimi.uniud.it/dovier/DID/lnc.pdf

-Ivan-
08-10-2006, 18:21
Grazie a tutti mi sto cimentando in letture ed esercizi, ho iniziato a comprendere alcune cose però sulle più complesse ancora non so dove mettere le mani. Fortunatamente ho ancora 4 giorni prima della prossima lezione.
Grazie a tutti dell'aiuto.