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

c) Sistematizzazione