Intelligenza artificiale.. un assaggio
elementi struttura condizioni Cifre (9,8 … 0) Non ci sono riporti Riporto colonna unità Riporto colonna decine Riporto colonna decine e colonna unità Le cifre…lettere rispettano le regole aritmetiche Le cifre delle lettere sono tutte diverse Contemporaneità Alternativa AND OR
Universiteit van Amsterdam SWI - Prolog Digitare nel motore di ricerca: www. Swi-prolog.org Download SWI-Prolog
Stable release SWI-Prolog for Windows XP/Vista/7/8 Istallare il programma Eseguire il programma
Descriviamo il campo del problema New … Scriviamo il nome del file cripto.. salviamo
I commenti consentono non perdere la visione d’insieme /* testo del commento */ apertura commentochiusura commento Finestra dell’editor
La descrizione del campo del problema /* elementi */ /* non vi sono riporti */ /* riporto colonna unità */ /* riporto colonna decine */ /* riporto colonna unità e colonna decine */ /* le cifre/lettere rispettano le regole dell’aritmetica AND le cifre sono tutte diverse */ /* le cifre/lettere rispettano le regole dell’aritmetica AND le cifre sono tutte diverse */ /* le cifre/lettere rispettano le regole dell’aritmetica AND le cifre sono tutte diverse */ /* le cifre/lettere rispettano le regole dell’aritmetica AND le cifre sono tutte diverse */ Il connettivo OR si realizza scrivendo più volte la regola Condizioni:
Iniziamo definendo gli elementi: asseriamo.. nove è una cifra cifra(9). lettera minuscola: le lettere maiuscole indicano le incognite fine asserzione /* elementi */ 9 è una cifra
cifra(9). cifra(8). cifra(7). cifra(6). cifra(5). cifra(4). cifra(3). cifra(2). cifra(1). cifra(0). /* elementi */
Per esplorare il campo del problema il motore di PROLOG deve conoscere l’obiettivo dalla ricerca
/* non vi sono riporti */ cifra(0). La testa della regola di ricerca delle soluzioni Scritte in maiuscolo perché sono le incognite …….. soluzione(Due,Sei,Otto) :- seDue, Sei, Otto sono la soluzione
/* non vi sono riporti */ cifra(0). Asseriamo: le lettere sono delle cifre cifra(D), D appartiene all’insieme delle cifre maiuscolo perché è un’incognita D …….. soluzione(Due,Sei,Otto) :- Due, Sei, Otto sono la soluzione SE
/* non vi sono riporti */ cifra(0). Asseriamo: le lettere sono delle cifre cifra(D), …….. soluzione(Due,Sei,Otto) :- Due, Sei, Otto sono la soluzione SE la virgola esprime AND D appartiene all’insieme delle cifre
/* non vi sono riporti */ cifra(0). Asseriamo: le lettere sono delle cifre cifra(D), …….. soluzione(Due,Sei,Otto) :- Due, Sei, Otto sono la soluzione SE D appartiene all’insieme delle cifre cifra(E), cifra(S), cifra(I), cifra(U), cifra(O), cifra(T), AND U appartiene all’insieme delle cifre AND E appartiene all’insieme delle cifre AND …………
cifra(I), cifra(O), cifra(T), /* le cifre/lettere rispettano le regole dell’aritmetica */ La colonna delle unità O is E + I, O e E+I hanno lo stesso valore due + sei= otto …….. Due, Sei, Otto sono la soluzione SE
cifra(I), cifra(O), cifra(T), /* le cifre/lettere rispettano le regole dell’aritmetica */ O is E + I, T is U + E, T is D + S, O is 1, diverse(O,E,I,T,U,D,S), La regola/condizione diverse sarà enunciata in seguito due + sei= otto …….. Due, Sei, Otto sono la soluzione SE
/* le cifre/lettere rispettano le regole dell’aritmetica */ O is E + I, T is U + E, T is D + S, O is 1, diverse(O,E,I,T,U,D,S), Prepariamo la comunicazione della soluzione …….. Due is D*100 + U*10 + E, Sei is S*100 + E*10 + I, Otto is O* T*100 + T*10 + O, Due, Sei, Otto sono la soluzione SE
/* le cifre/lettere rispettano le regole dell’aritmetica */ O is E + I, T is U + E, T is D + S, O is 1, diverse(O,E,I,T,U,D,S), …….. Due is D*100 + U*10 + E, Sei is S*100 + E*10 + I, Otto is O* T*100 + T*10 + O, write(Due), write(Sei), write(Otto). Due, Sei, Otto sono la soluzione SE
…….. Definiamo la regola DIVERSE diverse(A,B,C,D,E,F,G) :- PROLOG distingue gli argomenti di una regola dalla loro posizione A =/= B, A =/= C, A =/= D, A =/= E, A =/= F, A =/= G, B =/= C, B =/= D, B =/= E, B =/= F, B =/= G, C =/= D, … F =/= G.
La prima parte “non ci sono riporti” è stata descritta Fatti Regole Obiettivi/Domande make click Controlliamo se abbiamo commesso degli errori di scrittura Appare la richiesta di conferma del salvataggio SAVE
Gli eventuali errori sono evidenziati: correggeteli e salvate nuovamente Fatti Regole Obiettivi/Domande make click
Si richiami la descrizione del problema [cripto] consult(cripto). L’esecutore risponde: sono riuscito a leggere e a memorizzare true. 2 ?- Si chieda di ricercare la soluzione soluzione(A,B,C). false. Nessuna soluzione è stata trovata
Richiamare l’editor per aggiungere la regola: riporto colonna unità
click copia e incolla
Quando il motore di Prolog restituisce la prima soluzione potete terminare la ricerca … RETURN cercarne un’altra … BARRA SPAZIATRICE