Upload
infomedia-editori-coop
View
233
Download
1
Embed Size (px)
DESCRIPTION
CP pensare–progettare–programmare — n. 138 — settembre 2004Un software può batterci a Mastermind?di Gianni FrattolilloUn gioco puo costituire un interessante spunto per studiare l’approccio all’intelligenza artificiale tipico della tesi debole.Gianni Frattolillo Laureatosi in Ingegneria Informatica presso l’Università Federico II di Napoli, lavora nel settore ICT da diversi anni. Tra i suoi interessi vi sono le metodologie di project management, la gestione della qualità del softwar
Citation preview
5/11/2018 Un software può batterci a Mastermind? - slidepdf.com
http://slidepdf.com/reader/full/un-software-puo-batterci-a-mastermind 1/6
CP pensare–progettare–programmare — n. 138 — settembre 2004
Un software puo batterci a
Mastermind?di Gianni Frattolillo
Un gioco puo costituire un interessante spunto per studiare l’approccio all’intelligenza artifi-ciale tipico della tesi debole.
Gianni Frattolillo
Laureatosi in Ingegne-ria Informatica pressol’Universita FedericoII di Napoli, lavora nelsettore ICT da diversianni. Tra i suoi interessi
vi sono le metodologiedi project manage-ment, la gestione dellaqualita del software,l’intelligenza artificiale.
5/11/2018 Un software può batterci a Mastermind? - slidepdf.com
http://slidepdf.com/reader/full/un-software-puo-batterci-a-mastermind 2/6
pubblicato su
WWW.INFOMEDIA.IT
stampa digitale da
Lulu Enterprises Inc.
stores.lulu.com / infomedia
Infomedia
Infomedia e l’impresa editoriale che da quasi venti an-
ni ha raccolto la voce dei programmatori, dei sistemi-
sti, dei professionisti, degli studenti, dei ricercatori e dei
professori d’informatica italiani.
Sono piu di 800 gli autori che hanno realizzato per le te-
state Computer Programming, Dev, Login, Visual Basic
Journal e Java Journal, molte migliaia di articoli tecnici,
presentazioni di prodotti, tecnologie, protocolli, strumen-ti di lavoro, tecniche di sviluppo e semplici trucchi e stra-
tagemmi. Oltre 6 milioni di copie distribuite, trentamila
pagine stampate, fanno di questa impresa la piu grande ed
influente realta dell’editoria specializzata nel campo della
programmazione e della sistemistica.
In tutti questi anni le riviste Infomedia hanno vissuto del-
la passione di quanti vedono nella programmazione non
solo la propria professione ma un’attivita vitale e un vero
divertimento.
Nel 2009, Infomedia e cambiata radicalmente adottando
un nuovo modello aziendale ed editoriale e si e organiz-
zata attorno ad una idea di Impresa Sociale di Comunita,
partecipata da programmatori e sistemisti, separando le
attivita di gestione dell’informazione gestite da un board
comunitario professionale e quelle di produzione gesti-
te da una impresa strumentale. Questo assetto e in linea
con le migliori esperienze internazionali e rende Infome-
dia ancora di piu parte della Comunita nazionale degli
sviluppatori di software.
Infomedia e media-partner di manifestazioni ed eventi in
ambito informatico, collabora con molti dei pi u impor-tanti editori informatici italiani come partner editoriale e
fornitore di servizi di localizzazione in italiano di testi in
lingua inglese.
L’impaginazione automatica di questa rivista e realizzata al
100% con strumenti Open Source usando OpenOffice,
Emacs, BHL, LaTeX, Gimp, Inkscape e i linguaggi Lisp,
Python e BASH
For copyright information about the contents of Compu-
ter Programming, please see the section “Copyright” at
the end of each article if exists, otherwise ask authors. Infomedia contents is© 2004 Infomedia and released as
Creative Commons 2.5 BY-NC-ND. Turing Club content
is © 2004 Turing Club released as Creative Commons
2.5 BY-ND.
Le informazioni di copyright sul contenuto di Computer
Programming sono riportate nella sezione “Copyright”
alla fine di ciascun articolo o vanno richieste direttamen-
te agli autori. Il contenuto Infomedia e© 2004 Infome-
dia e rilasciato con Licenza Creative Commons 2.5 BY-
NC-ND. Il contenuto Turing Club e© 2004 Turing Club
e rilasciato con Licenza Creative Commons 2.5 BY-ND.
Siapplicano tuttele normedi tuteladeimarchie deisegni
distintivi.
` E in ogni caso ammessa la riproduzione parziale o tota-
le dei testi e delle immagini per scopo didattico purch´ e
vengano integralmente citati gli autori e la completa
identificazione della testata.
Manoscritti e foto originali, anche se non pubblicati, non
si restituiscono.
Contenuto pubblicitario inferiore al 45%.
La biografia dell’autore riportata nell’articolo e sul
sito www.infomedia.it e di norma quella disponibi-
le nella stampa dell’articolo o aggiornata a cu-
ra dell’autore stesso. Per aggiornarla scrivere a
[email protected] o farlo in autonomia all’indirizzo
http: // mags.programmers.net / moduli / biografia
5/11/2018 Un software può batterci a Mastermind? - slidepdf.com
http://slidepdf.com/reader/full/un-software-puo-batterci-a-mastermind 3/6
Programmi Intelligenti
Computer Programming • n. 138 - Settembre 2004 15
Probabilmente quasi tutti ricordiamo Master-mind: il gioco, di moda un po’ di anni fa, in cuiun giocatore compone una sequenza di simbo-li e l’altro giocatore la deve indovinare, effet-
tuando il minor numero di tentativi e basandosi solo suindicazioni circa la bontà della sequenza proposta divolta in volta.Questo articolo illustra l’architettura e l’implementa-zione di un sistema intelligente capace di indovinareuna sequenza incognita pensata dall’utente ed in gradodi utilizzare nel miglior modo possibile la conoscenza amano a mano acquisita. Dopo aver formalizzato leregole del gioco, sono presentati l’architettura delsistema, l’algoritmo risolutivo ed una sua implementa-zione in Prolog.
Descrizione del gioco Mastermind
Il gioco si svolge tra due giocatori che inizialmenteconcordano la lunghezza della sequenza incognita el’alfabeto di riferimento, costituito da un insieme fini-to di simboli. Il primo giocatore compone una sequen-za C di simboli estratti dall’alfabeto ed avente lun-ghezza concordata.
Il secondo giocatore propone una soluzione di tenta-tivo G e la mostra al primo giocatore. Questi la con-fronta con la sequenza incognita e indica al secondogiocatore il punteggio ottenuto con la soluzione di ten-tativo G. Il punteggio è rappresentato come una cop-pia di valori (B,W)=Score(G,C) secondo la definizio-ne riportata nel Riquadro 1. Il gioco termina quandoil secondo giocatore individua la sequenza incognita
oppure si arrende, eventualmente ritenendo che leinformazioni fornite dal proprio avversario non sianocoerenti tra loro.
Un sistema intelligente
Il sistema deve avere la capacità di giocare nel ruolodel secondo giocatore e dovrà rapportarsi all’utenteche gioca con il ruolo del primo giocatore. È quindievidente che esso deve possedere la capacità di appren-dere nuove informazioni durante il gioco e di utilizzar-le in modo intelligente. Tuttavia per una verifica piùrigorosa è opportuno riferirsi alle definizioni di ‘sistemaintelligente’ esistenti in letteratura. Esistono diversedefinizioni di intelligenza: la definizione di Binet cheimplica concetti quali giudicare bene, comprenderebene e ragionare bene oppure la definizione diSpearman che afferma che l’intelligenza è la capacitàdi rapportarsi ad altre macchine. Tuttavia questi tenta-tivi di definire l’intelligenza sono astratti e poco con-creti. Una definizione più pratica che può essere utiliz-zata per verificare che un sistema sia “intelligente” èquella di Turing. Essa afferma che una macchina èintelligente se, nascosti un uomo e la macchina in que-
stione dietro un paravento, un utente che proponedelle domande tramite un’interfaccia omogenea non èin grado di capire se la risposta proviene dall’uomo odalla macchina.
Un software
può battercia Mastermind?Un gioco può costituire un interessante spunto per studiare l’approccio all’intelligenzaartificiale tipico della tesi debole
di Gianni Frattolillo
Gianni Frattolillo
Laureatosi in Ingegneria Informatica presso l’Università FedericoII di Napoli, lavora nel settore ICT da diversi anni. Tra i suoi inte-ressi vi sono le metodologie di project management, la gestio-ne della qualità del software, l’intelligenza artificiale.
RIQUADRO 1 Definizione di punteggio
Siano C1 e C2 due sequenze composte dal medesimonumero di simboli e sia B il numero di elementi presen-ti in C1 ed in C2 nella medesima posizione e W il nume-ro di elementi presenti in C1 ed in C2 ma non nellamedesima posizione. Definiamo Score(C1,C2)=(B,W) ilpunteggio di C1 rispetto a C2. Le sigle B e W stannorispettivamente per Black e White come dal gioco origi-
nario.
5/11/2018 Un software può batterci a Mastermind? - slidepdf.com
http://slidepdf.com/reader/full/un-software-puo-batterci-a-mastermind 4/6
16 Computer Programming • n. 138 - Settembre 2004
FOCUS
Architettura del sistema
Il sistema è stato realizzato utilizzando l’approccio
all’intelligenza artificiale tipico della tesi debole. Tale
metodo prevede la formalizzazione da parte di unesperto esterno della conoscenza relativa al problema
da risolvere. La conoscenza, descritta in modo rigoroso
come sistema formale, è inserita nella Knowledge Base.
Il Motore Inferenziale quindi mediante l’utilizzo di tec-
niche di ricerca, costruisce una serie di potenziali solu-
zioni derivate dagli assiomi della Knowledge Base fino a
quando non trova la soluzione al problema oppure, se
questa non esiste, fino a quando non ha esaurito la
Knowledge Base. Durante la ricerca il Motore
Inferenziale utilizza un Dynamic Database per annotare
lo stato corrente del processo inferenziale. Tale data-
base viene inizialmente caricato con gli assiomi della
Knowledge Base ed in seguito il Motore Inferenziale vi
aggiunge i teoremi derivati mediante le regole di infe-
renza. L’architettura è illustrata in Figura 1.
Il sistema formale memorizzato nella Knowledge Base
può anche essere rappresentato con un grafo degli
stati: lo stato iniziale (o di partenza) So può essere rica-
vato dagli assiomi, poi applicando le regole di inferen-
za si passa da uno stato ai successivi. La soluzione da
raggiungere è indicata da un predicato che deve essere
verificato.
In generale la soluzione non è
unica, tuttavia di seguito si farà riferi-
mento al caso più semplice in cui esi-ste un unico stato obiettivo SG. Per
un alfabeto A={1,2,3} e una lunghez-
za della sequenza incognita N=3 si
può rappresentare la Knowledge Base
relativa al gioco Mastermind con il
diagramma in Figura 2.
Algoritmo di ricerca A*
Il Motore Inferenziale può utilizzare
due classi di algoritmi per la ricerca
della soluzione al problema che gli è
stato proposto:
• Ricerca cieca
• Ricerca informata
Gli algoritmi di ricerca cieca sono indipendenti dal
problema, ma hanno uno svantaggio a livello compu-
tazionale. Infatti per sistemi formali un po’ più com-
plessi, il tempo di esplorazione diviene troppo elevato.
Nel caso di algoritmi informati il Motore Inferenziale
viene indirizzato al fine di ridurre il costo computazio-
nale.Una seconda distinzione riguarda la direzione in cui
il Motore Inferenziale procede all’interno del grafo.
Supposto di conoscere lo stato iniziale S0 e lo stato
finale SG, si hanno tre possibili modi di procedere:
• Forward Search (o Data Driven): si applicano le
regole del sistema formale a partire da S0 fino ad
arrivare a SG;
• Backward Search (o Goal Driven): a partire da SG si
applicano le regole al contrario fino a risalire a S0;
• Ricerca Ibrida: vengono iniziati due percorsi uno
verso l’alto e uno verso il basso; la soluzione è otte-nuta quando i due percorsi si incontrano.
La versione semplificata di un generico algoritmo di
ricerca di tipo Forward, utilizzabile solo quando il grafo
degli stati può essere ricondotto ad un albero, utilizza
una lista OPEN per memorizzare gli stati non ancora
esplorati.
La lista è inizializzata con il solo stato iniziale S0.
Durante l’esecuzione, ad ogni passo viene prelevato uno
stato dalla lista: se esso è una soluzione allora l’algorit-
Il sistema deve possedere
la capacità di apprendere
nuove informazioni durante
il gioco
FIGURA 1 Architettura del sistema▼
FIGURA 2 Esempio di albero degli stati
▼
5/11/2018 Un software può batterci a Mastermind? - slidepdf.com
http://slidepdf.com/reader/full/un-software-puo-batterci-a-mastermind 5/6
Computer Programming • n. 138 - Settembre 2004 17
Programmi Intelligenti
mo termina con esito positivo, in caso contrario lo statoviene esploso applicando le regole del sistema formaleed i nuovi stati sono inseriti nella lista OPEN. Il ciclo siripete fino a quando la lista diviene vuota oppure vienetrovata una soluzione. Nella Figura 3 quest’algoritmo èdescritto con un diagramma a blocchi.
Un algoritmo per la ricerca informata sufficiente-mente generico da poter essere adattato a diverse tipo-logie di problemi è l’algoritmo A*. Questo tipo di algo-ritmo, nel caso ideale, riduce al minimo il costo com-putazionale per la ricerca della soluzione grazie ad unbuon livello di conoscenza relativamente al problemada trattare. Nel caso ideale infatti si assume di cono-scere sia il costo necessario per arrivare da S0 allo statocorrente, sia il costo minimo per arrivare dallo statocorrente ad uno stato obiettivo SG. Si definiscono allo-ra tre funzioni:
• g(s): costo associato allo stato corrente S• h(s): costo minimo del percorso che parte da S earriva a SG
• f(s) = g(s)+h(s), funzione di costo
L’algoritmo A* deriva, nella sua versione sem-plificata per gli alberi, dall’algoritmo di Figura
3. La particolarità è nella gestione della listaOPEN che, in questo caso, è ordinata in basealla funzione di costo: ad ogni passo viene prele-vato il nodo a cui è associato il valore minimo di
f(s). Per molti problemi h(s) non è conosciutaoppure non è ricavabile e diviene necessarioeffettuare qualche approssimazione. Si puòdimostrare che, sotto le ipotesi di seguito ripor-tate, la h(s) approssimata porta comunque aduna soluzione ottimale, anche senza potareeccessivamente l’albero. La funzione euristicah(s) è detta ammissibile se, detta h*(s) quellaideale, si ha 0 ≤ h(s) ≤ h*(s) per ogni s.
Se la stima h(s) è una stima per difetto, alloral’uso di tale funzione assicura che la soluzionetrovata è ottimale. Se h(s) è identicamente
nulla, allora ci si riduce al caso a costo uniforme.Se vi sono due approssimazioni h1(s) e h2(s)
entrambe ammissibili e con h1(s) ≤ h2(s), si puòdimostrare che con h2(s) si ottiene una potaturamaggiore e si dice che h2(s) è un’euristica piùinformata. In realtà in tal caso è possibile sce-
gliere h3(s) = max{h1(s), h2(s)}. Un modo per valutareuna h(s), stimata per difetto, è di considerare un pro-blema, semplificato rispetto a quello di partenza, per ilquale sia possibile costruire un’euristica ammissibile.Più è elevato il limite inferiore, più informata è l’euri-stica.
Risoluzione del gioco MastermindUn sistema che gioca a Mastermind utilizzando una
ricerca cieca avrebbe prestazioni tali da non poterloneppure classificare come intelligente rispetto alladefinizione di Turing. Esso infatti si limiterebbe adesplorare l’albero degli stati in cerca della soluzionesenza acquisire alcuna conoscenza dalle informazioniottenute durante il gioco. È necessario quindi ricorreread una ricerca informata.
Per determinare l’euristica da usare ci si può basaresulle considerazioni mostrate di seguito con un esem-pio. Fissato l’alfabeto A={1,2,3,4}, una sequenza inco-
gnita C e la sua lunghezza N=3, supponiamo che ilsistema sottoponga all’utente una propria soluzione ditentativo G1=[1,2,3] riportando un punteggio(B,W)=Score(G1,C)=(1,1). Come può essere utilizzataquesta nuova informazione? Si può, ad esempio, ipotiz-
TABELLA 1 Ricavare i vincoli dal punteggio
B W Vincolo1 3 [1,3,X] con X≠21 2 [1,X,2] con X≠32 3 [3,2,X] con X≠1
2 1 [X,2,1] con X≠33 1 [X,1,3] con X≠23 3 [2,X,3] con X≠1
FIGURA 3 Diagramma a blocchi di un generico algoritmodi ricerca cieca
▼
Utilizzando maggiore
conoscenza sul problema
è possibile indirizzare
il Motore Inferenziale
durante la ricerca
5/11/2018 Un software può batterci a Mastermind? - slidepdf.com
http://slidepdf.com/reader/full/un-software-puo-batterci-a-mastermind 6/6
18 Computer Programming • n. 138 - Settembre 2004
FOCUS
zare che i simboli che hanno contribuito al punteggiosiano ‘1’ per la componente B e ‘3’ per la componenteW. Con questa assunzione è opportuno costruire laprossima soluzione di tentativo nella forma G2=[1,3,X]con X≠2 in quanto si sta ritenendo errato il simbolo ‘2’.Ma questa non è l’unica alternativa: come riassunto
nella Tabella 1 è possibile effettuare altre ipotesiugualmente valide ottenendo vincoli alternativi per lacostruzione della prossima soluzione.
In generale al passo i-esimo, proposta una soluzionedi tentativo Gi ed ottenuto il corrispondente punteg-gio Si=(Bi,Wi), è possibile ottenere una limitazionedello spazio di ricerca tramite l’introduzione di oppor-tuni vincoli. Questi possono essere rappresentati dasequenze in cui compaiono simboli e variabili vincola-te. I vincoli si ottengono dalla soluzione di tentativo,mantenendo nella posizione originaria i simboli che siè ipotizzato abbiano contribuito al fattore B i del pun-
teggio, spostando di posizione quelli che si è ipotizzatoabbiano contribuito al fattore Wi del punteggio ed infi-ne impostando per i restanti simboli un simbolo diver-so da quelli ritenuti errati.
Analizzando meglio la ‘forma’ che i vincoli assumo-no appare evidente che essi possono essere resi inmodo sintetico. Infatti una sequenza di simboli Gj èuna nuova soluzione ammissibile se verifica la condi-zione espressa nel Riquadro 2. Riferendoci ancoraall’esempio relativo alla Tabella 1 si haScore(G1,C)=Score(G1,G2)=(1,1) se G2=[1,3,X] conX≠2 oppure se G2=[1,X,2] con X≠3 oppure seG
2=[3,2,X] con X≠1, e così via. La relazione indivi-
duata può essere utilizzata per costruire la funzioneeuristica da utilizzare per l’algoritmo di ricerca.
Definendo con Qi il sottospazio di soluzioni ammis-sibili indotto dai vincoli derivanti dalle informazioniottenute al passo i-esimo, si può assumere come fun-zione euristica quella riportata in Figura 4. È evidenteche poiché ad ogni passo le informazioni circa lasequenza incognita aumentano è corretto che la fun-zione euristica vari ad ogni passo. Indicando con hi(s)
l’euristica al passo i-esimo deve essere hi(s) ≤ h j (s) sei<j, in accordo col fatto che ad ogni passo si ottieneuna potatura maggiore. Poiché h(s) ha come condomi-
nio l’insieme {0,+∞} l’algoritmo di ricerca A* va modi-ficato in modo da eliminare gli stati con costo infinito.Inoltre in questo caso, poiché la soluzione, se esiste, èsempre una foglia dell’albero degli stati (la lunghezza
della sequenza è fissata a priori) conviene assumere,per comodità, g(s) identicamente nullo.
L’implementazione
Per l’implementazione si è utilizzato il linguaggioProlog che di base utilizza la ricerca cieca di tipoBackward. È necessario quindi costruire, al di sopradell’interprete, una macchina capace di attuare il tipodi ricerca richiesto. L’ algoritmo implementato è una
specializzazione dell’algoritmo di ricerca A* per questoparticolare problema. Ad ogni iterazione viene prodot-ta una nuova soluzione di tentativo Gj che soddisfaquanto espresso nel Riquadro 2. Ad ogni passo quindilo spazio di ricerca si riduce fino ad essere costituito daun solo elemento: la soluzione.
Nel caso in cui si dovesse pervenire ad un insiemevuoto si può certamente affermare che l’utente ha for-nito informazioni contrastanti tra loro. Il codice sor-gente è disponibile al sito ftp di Infomedia e può esse-re utilizzato con una qualsiasi implementazione diProlog standard. Il software è stato sviluppato utiliz-zando lo Swi-Prolog che è disponibile gratuitamente[2]. Il programma può essere caricato in memoria edeseguito dall’interprete Prolog con i comandi (tutti ter-minati con il carattere punto):
consult(mm).
mmind.
Il sistema visualizzerà la schermata iniziale attenden-do l’inserimento prima dell’alfabeto di simboli (comeuna lista) e poi della lunghezza della sequenza incogni-ta. A questo punto il gioco comincia: il sistema propo-ne una soluzione di tentativo ed attende l’inserimento
del punteggio da parte dell’utente. Si ricorda che moltiinterpreti Prolog richiedono che tutti gli input sianoterminati con il carattere punto, come mostrato prece-dentemente per i comandi.
FIGURA 4 Possibile funzione euristica per il giocoMastermind
▼
RIQUADRO 2 Generazione di una nuova soluzionedi tentativo
Al passo j-esimo G j è una nuova soluzione di tentativoammissibile se per ogni precedente soluzione di tentati-vo Gi si ha Score(Gi,C)= Score( Gi,G j) e (ovviamente)G j≠Gi
BIBLIOGRAFIA & RIFERIMENTI
[1] Douglas R. Hofstadter – “Gödel, Escher, Bach:un’Eterna Ghirlanda Brillante”, Adelphi Edizioni,1984
[2] http://www.swi-prolog.org
CODICE ALLEGATO
Mastermindftp.infomedia.it