7
 CP pensare–progettare–programmare — n. 138 — settembre 2004 Un software pu ` o batterci a Mastermind? di Giann i Frattolillo Un gioco pu ` o costituire un interessante spunto per studiare l’approccio all’intelligenza arti- ciale tipico della tesi debole. Gianni Frattolillo Laureatosi in Ingegne- ria Informatica presso l’Universit ` a Federico II di Napoli, lavora nel settore ICT da diversi anni. Tra i suoi interessi vi sono le metodologie di project manage- ment, la gestione della qualit ` a del software, l’intelligenza articiale.

Un software può batterci a Mastermind?

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

Page 1: Un software può batterci a Mastermind?

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.

Page 2: Un software può batterci a Mastermind?

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

Page 3: Un software può batterci a Mastermind?

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.

[email protected]

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.

Page 4: Un software può batterci a Mastermind?

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

Page 5: Un software può batterci a Mastermind?

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

Page 6: Un software può batterci a Mastermind?

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