Sei sulla pagina 1di 6

CP pensareprogettareprogrammare n.

138 settembre 2004

` Un software puo batterci a Mastermind?


di Gianni Frattolillo
` Un gioco puo costituire un interessante spunto per studiare lapproccio allintelligenza articiale tipico della tesi debole.

Gianni Frattolillo Laureatosi in Ingegneria Informatica presso ` lUniversita 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 ` qualita del software, lintelligenza articiale.

pubblicato su WWW.INFOMEDIA.IT stampa digitale da Lulu Enterprises Inc. stores.lulu.com/infomedia


Infomedia
` Infomedia e limpresa editoriale che da quasi venti anni ha raccolto la voce dei programmatori, dei sistemisti, dei professionisti, degli studenti, dei ricercatori e dei professori dinformatica italiani. Sono pi` di 800 gli autori che hanno realizzato per le teu state Computer Programming, Dev, Login, Visual Basic Journal e Java Journal, molte migliaia di articoli tecnici, presentazioni di prodotti, tecnologie, protocolli, strumenti di lavoro, tecniche di sviluppo e semplici trucchi e stratagemmi. Oltre 6 milioni di copie distribuite, trentamila pagine stampate, fanno di questa impresa la pi` grande ed u inuente realt` delleditoria specializzata nel campo della a programmazione e della sistemistica. In tutti questi anni le riviste Infomedia hanno vissuto della passione di quanti vedono nella programmazione non solo la propria professione ma unattivit` vitale e un vero a divertimento. ` Nel 2009, Infomedia e cambiata radicalmente adottando ` un nuovo modello aziendale ed editoriale e si e organizzata attorno ad una idea di Impresa Sociale di Comunit` , a partecipata da programmatori e sistemisti, separando le attivit` di gestione dellinformazione gestite da un board a comunitario professionale e quelle di produzione gesti` te da una impresa strumentale. Questo assetto e in linea con le migliori esperienze internazionali e rende Infomedia ancora di pi` parte della Comunit` nazionale degli u a sviluppatori di software. ` Infomedia e media-partner di manifestazioni ed eventi in ambito informatico, collabora con molti dei pi` imporu tanti editori informatici italiani come partner editoriale e fornitore di servizi di localizzazione in italiano di testi in lingua inglese.

Limpaginazione 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 Computer 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 ne di ciascun articolo o vanno richieste direttamente agli autori. Il contenuto Infomedia e 2004 Infome` dia e rilasciato con Licenza Creative Commons 2.5 BYNC-ND. Il contenuto Turing Club e 2004 Turing Club ` e rilasciato con Licenza Creative Commons 2.5 BY-ND. Si applicano tutte le norme di tutela dei marchi e dei segni distintivi. ` E in ogni caso ammessa la riproduzione parziale o totale dei testi e delle immagini per scopo didattico purch e vengano integralmente citati gli autori e la completa identicazione della testata. Manoscritti e foto originali, anche se non pubblicati, non si restituiscono. Contenuto pubblicitario inferiore al 45%. La biograa dellautore riportata nellarticolo e sul sito www.infomedia.it e di norma quella disponibi` le nella stampa dellarticolo o aggiornata a cura dellautore stesso. Per aggiornarla scrivere a info@infomedia.it o farlo in autonomia allindirizzo http://mags.programmers.net/moduli/biograa

Programmi Intelligenti

Un software pu batterci a Mastermind?


Un gioco pu costituire un interessante spunto per studiare lapproccio allintelligenza artificiale tipico della tesi debole
di Gianni Frattolillo

robabilmente quasi tutti ricordiamo Mastermind: il gioco, di moda un po di anni fa, in cui un giocatore compone una sequenza di simboli e laltro giocatore la deve indovinare, effettuando il minor numero di tentativi e basandosi solo su indicazioni circa la bont della sequenza proposta di volta in volta. Questo articolo illustra larchitettura e limplementazione di un sistema intelligente capace di indovinare una sequenza incognita pensata dallutente ed in grado di utilizzare nel miglior modo possibile la conoscenza a mano a mano acquisita. Dopo aver formalizzato le regole del gioco, sono presentati larchitettura del sistema, lalgoritmo risolutivo ed una sua implementazione in Prolog.

oppure si arrende, eventualmente ritenendo che le informazioni fornite dal proprio avversario non siano coerenti tra loro.

Un sistema intelligente
Il sistema deve avere la capacit di giocare nel ruolo del secondo giocatore e dovr rapportarsi allutente che gioca con il ruolo del primo giocatore. quindi evidente che esso deve possedere la capacit di apprendere nuove informazioni durante il gioco e di utilizzarle in modo intelligente. Tuttavia per una verifica pi rigorosa opportuno riferirsi alle definizioni di sistema intelligente esistenti in letteratura. Esistono diverse definizioni di intelligenza: la definizione di Binet che implica concetti quali giudicare bene, comprendere bene e ragionare bene oppure la definizione di Spearman che afferma che lintelligenza la capacit di rapportarsi ad altre macchine. Tuttavia questi tentativi di definire lintelligenza sono astratti e poco concreti. Una definizione pi pratica che pu essere utilizzata per verificare che un sistema sia intelligente quella di Turing. Essa afferma che una macchina intelligente se, nascosti un uomo e la macchina in questione dietro un paravento, un utente che propone delle domande tramite uninterfaccia omogenea non in grado di capire se la risposta proviene dalluomo o dalla macchina.

Descrizione del gioco Mastermind


Il gioco si svolge tra due giocatori che inizialmente concordano la lunghezza della sequenza incognita e lalfabeto di riferimento, costituito da un insieme finito di simboli. Il primo giocatore compone una sequenza C di simboli estratti dallalfabeto ed avente lunghezza concordata. Il secondo giocatore propone una soluzione di tentativo G e la mostra al primo giocatore. Questi la confronta con la sequenza incognita e indica al secondo giocatore il punteggio ottenuto con la soluzione di tentativo G. Il punteggio rappresentato come una coppia di valori (B,W)=Score(G,C) secondo la definizione riportata nel Riquadro 1. Il gioco termina quando il secondo giocatore individua la sequenza incognita

Gianni Frattolillo

gfrattolillo@infomedia.it

Laureatosi in Ingegneria Informatica presso lUniversit 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 software, lintelligenza artificiale.

Siano C1 e C2 due sequenze composte dal medesimo numero di simboli e sia B il numero di elementi presenti in C1 ed in C2 nella medesima posizione e W il numero di elementi presenti in C1 ed in C2 ma non nella medesima posizione. Definiamo Score(C1,C2)=(B,W) il punteggio di C1 rispetto a C2. Le sigle B e W stanno rispettivamente per Black e White come dal gioco originario.

RIQUADRO 1 Definizione di punteggio

Computer Programming n. 138 - Settembre 2004

15

FOCUS
FIGURA 1
Architettura del sistema

Gli algoritmi di ricerca cieca sono indipendenti dal problema, ma hanno uno svantaggio a livello computazionale. Infatti per sistemi formali un po pi complessi, il tempo di esplorazione diviene troppo elevato. Nel caso di algoritmi informati il Motore Inferenziale viene indirizzato al fine di ridurre il costo computazionale. Una seconda distinzione riguarda la direzione in cui il Motore Inferenziale procede allinterno 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 lalto e uno verso il basso; la soluzione ottenuta quando i due percorsi si incontrano.

Architettura del sistema


Il sistema stato realizzato utilizzando lapproccio allintelligenza artificiale tipico della tesi debole. Tale metodo prevede la formalizzazione da parte di un esperto 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 lutilizzo di tecniche di ricerca, costruisce una serie di potenziali soluzioni 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 database viene inizialmente caricato con gli assiomi della Knowledge Base ed in seguito il Motore Inferenziale vi aggiunge i teoremi derivati mediante le regole di inferenza. Larchitettura 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 ricavato dagli assiomi, poi applicando le regole di inferenza 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 riferiFIGURA 2 mento al caso pi semplice in cui esiste un unico stato obiettivo SG. Per un alfabeto A={1,2,3} e una lunghezza della sequenza incognita N=3 si pu rappresentare la Knowledge Base relativa al gioco Mastermind con il diagramma in Figura 2.

Il sistema deve possedere


la capacit di apprendere nuove informazioni durante il gioco
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 lesecuzione, ad ogni passo viene prelevato uno stato dalla lista: se esso una soluzione allora lalgorit-

Esempio di albero degli stati

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

16

Computer Programming n. 138 - Settembre 2004

Programmi Intelligenti

FIGURA 3

Diagramma a blocchi di un generico algoritmo di ricerca cieca

mo termina con esito positivo, in caso contrario lo stato viene esploso applicando le regole del sistema formale ed i nuovi stati sono inseriti nella lista OPEN. Il ciclo si ripete fino a quando la lista diviene vuota oppure viene trovata una soluzione. Nella Figura 3 questalgoritmo descritto con un diagramma a blocchi.

Lalgoritmo A* deriva, nella sua versione semplificata per gli alberi, dallalgoritmo di Figura 3. La particolarit nella gestione della lista OPEN che, in questo caso, ordinata in base alla funzione di costo: ad ogni passo viene prelevato il nodo a cui associato il valore minimo di f(s). Per molti problemi h(s) non conosciuta oppure non ricavabile e diviene necessario effettuare qualche approssimazione. Si pu dimostrare che, sotto le ipotesi di seguito riportate, la h(s) approssimata porta comunque ad una soluzione ottimale, anche senza potare eccessivamente lalbero. La funzione euristica h(s) detta ammissibile se, detta h*(s) quella ideale, si ha 0 h(s) h*(s) per ogni s. Se la stima h(s) una stima per difetto, allora luso di tale funzione assicura che la soluzione trovata 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 potatura maggiore e si dice che h2(s) uneuristica pi informata. In realt in tal caso possibile scegliere h3(s) = max{h1(s), h2(s)}. Un modo per valutare una h(s), stimata per difetto, di considerare un problema, semplificato rispetto a quello di partenza, per il quale sia possibile costruire uneuristica ammissibile. Pi elevato il limite inferiore, pi informata leuristica.

Utilizzando maggiore
conoscenza sul problema possibile indirizzare il Motore Inferenziale durante la ricerca
Un algoritmo per la ricerca informata sufficientemente generico da poter essere adattato a diverse tipologie di problemi lalgoritmo A*. Questo tipo di algoritmo, nel caso ideale, riduce al minimo il costo computazionale per la ricerca della soluzione grazie ad un buon livello di conoscenza relativamente al problema da trattare. Nel caso ideale infatti si assume di conoscere sia il costo necessario per arrivare da S0 allo stato corrente, sia il costo minimo per arrivare dallo stato corrente ad uno stato obiettivo SG. Si definiscono allora tre funzioni: g(s): costo associato allo stato corrente S h(s): costo minimo del percorso che parte da S e arriva a SG f(s) = g(s)+h(s), funzione di costo

Risoluzione del gioco Mastermind


Un sistema che gioca a Mastermind utilizzando una ricerca cieca avrebbe prestazioni tali da non poterlo neppure classificare come intelligente rispetto alla definizione di Turing. Esso infatti si limiterebbe ad esplorare lalbero degli stati in cerca della soluzione senza acquisire alcuna conoscenza dalle informazioni ottenute durante il gioco. necessario quindi ricorrere ad una ricerca informata. Per determinare leuristica da usare ci si pu basare sulle considerazioni mostrate di seguito con un esempio. Fissato lalfabeto A={1,2,3,4}, una sequenza incognita C e la sua lunghezza N=3, supponiamo che il sistema sottoponga allutente una propria soluzione di tentativo G1=[1,2,3] riportando un punteggio (B,W)=Score(G1,C)=(1,1). Come pu essere utilizzata questa nuova informazione? Si pu, ad esempio, ipotizTABELLA 1
B 1 1 2 2 3 3
Ricavare i vincoli dal punteggio

W 3 2 3 1 1 3

Vincolo [1,3,X] con [1,X,2] con [3,2,X] con [X,2,1] con [X,1,3] con [2,X,3] con

X2 X3 X1 X3 X2 X1

Computer Programming n. 138 - Settembre 2004

17

FOCUS
zare che i simboli che hanno contribuito al punteggio siano 1 per la componente B e 3 per la componente W. Con questa assunzione opportuno costruire la prossima soluzione di tentativo nella forma G2=[1,3,X] con X2 in quanto si sta ritenendo errato il simbolo 2. Ma questa non lunica alternativa: come riassunto nella Tabella 1 possibile effettuare altre ipotesi ugualmente valide ottenendo vincoli alternativi per la costruzione della prossima soluzione. In generale al passo i-esimo, proposta una soluzione di tentativo Gi ed ottenuto il corrispondente punteggio Si=(Bi,Wi), possibile ottenere una limitazione dello spazio di ricerca tramite lintroduzione di opportuni vincoli. Questi possono essere rappresentati da sequenze in cui compaiono simboli e variabili vincolate. I vincoli si ottengono dalla soluzione di tentativo, mantenendo nella posizione originaria i simboli che si ipotizzato abbiano contribuito al fattore Bi del punteggio, spostando di posizione quelli che si ipotizzato abbiano contribuito al fattore Wi del punteggio ed infine impostando per i restanti simboli un simbolo diverso da quelli ritenuti errati. Analizzando meglio la forma che i vincoli assumono appare evidente che essi possono essere resi in modo sintetico. Infatti una sequenza di simboli Gj una nuova soluzione ammissibile se verifica la condizione espressa nel Riquadro 2. Riferendoci ancora allesempio relativo alla Tabella 1 si ha Score(G1,C)=Score(G1,G2)=(1,1) se G2=[1,3,X] con X2 oppure se G2=[1,X,2] con X3 oppure se G2=[3,2,X] con X1, e cos via. La relazione individuata pu essere utilizzata per costruire la funzione euristica da utilizzare per lalgoritmo di ricerca. Definendo con Qi il sottospazio di soluzioni ammissibili indotto dai vincoli derivanti dalle informazioni ottenute al passo i-esimo, si pu assumere come funzione euristica quella riportata in Figura 4. evidente che poich ad ogni passo le informazioni circa la sequenza incognita aumentano corretto che la funzione euristica vari ad ogni passo. Indicando con hi(s) leuristica al passo i-esimo deve essere hi(s) hj (s) se i<j, in accordo col fatto che ad ogni passo si ottiene una potatura maggiore. Poich h(s) ha come condominio linsieme {0,+} lalgoritmo di ricerca A* va modificato in modo da eliminare gli stati con costo infinito. Inoltre in questo caso, poich la soluzione, se esiste, sempre una foglia dellalbero degli stati (la lunghezza
Al passo j-esimo Gj una nuova soluzione di tentativo ammissibile se per ogni precedente soluzione di tentativo Gi si ha Score(Gi,C)=Score(Gi,Gj) e (ovviamente) GjGi

RIQUADRO 2 Generazione di una nuova soluzione


di tentativo

della sequenza fissata a priori) conviene assumere, per comodit, g(s) identicamente nullo.

Limplementazione
Per limplementazione si utilizzato il linguaggio Prolog che di base utilizza la ricerca cieca di tipo Backward. necessario quindi costruire, al di sopra dellinterprete, una macchina capace di attuare il tipo di ricerca richiesto. L algoritmo implementato una specializzazione dellalgoritmo di ricerca A* per questo particolare problema. Ad ogni iterazione viene prodotta una nuova soluzione di tentativo Gj che soddisfa quanto espresso nel Riquadro 2. Ad ogni passo quindi lo spazio di ricerca si riduce fino ad essere costituito da un solo elemento: la soluzione. Nel caso in cui si dovesse pervenire ad un insieme vuoto si pu certamente affermare che lutente ha fornito informazioni contrastanti tra loro. Il codice sorgente disponibile al sito ftp di Infomedia e pu essere utilizzato con una qualsiasi implementazione di Prolog standard. Il software stato sviluppato utilizzando lo Swi-Prolog che disponibile gratuitamente [2]. Il programma pu essere caricato in memoria ed eseguito dallinterprete Prolog con i comandi (tutti terminati con il carattere punto):
consult(mm). mmind.

Il sistema visualizzer la schermata iniziale attendendo linserimento prima dellalfabeto di simboli (come una lista) e poi della lunghezza della sequenza incognita. A questo punto il gioco comincia: il sistema propone una soluzione di tentativo ed attende linserimento del punteggio da parte dellutente. Si ricorda che molti interpreti Prolog richiedono che tutti gli input siano terminati con il carattere punto, come mostrato precedentemente per i comandi.

FIGURA 4

Possibile funzione euristica per il gioco Mastermind

BIBLIOGRAFIA & RIFERIMENTI


[1] Douglas R. Hofstadter Gdel, Escher, Bach: unEterna Ghirlanda Brillante, Adelphi Edizioni, 1984 [2] http://www.swi-prolog.org

CODICE ALLEGATO
ftp.infomedia.it
Mastermind

18

Computer Programming n. 138 - Settembre 2004