Criterio di valutazione per la prova del 25/5/1999

 

La presente prova verrà valutata secondo i seguenti criteri:

 

Problema risolto

Si

No

Si

No

Problema inpostato correttamente ma non risolto

-

Si

-

No

Discussione bilanciata fra i 3 componenti del gruppo

Si

Si

No

-

Punteggio

3

2

1

0

 

Inoltre verrà attribuito un punto in più al gruppo (e quindi a tutti e tre i membri comnponenti) che risulterà migliore per la qualita' degli interventi e per la strategia di ragionamento seguita.

 

Il punteggio acquisito a seguito dello svolgimento della prova odierna verrà sommato a quello che verrà acquisito a seguito dello svolgimento della prova del 2/6/1999 ed al punteggio che verrà acquisito a seguito dello svolgimento dei progettini individuali, al fine di comporre la valutazione finale degli esami di Ingegneria della Conoscenza e Sistemi Esperti e Sistemi Informativi.

 

 

 

Il mondo dei blocchi

 

Un robot può spostare dei blocchi che stanno su un tavolo. I blocchi sono dei cubi contrassegnati dalle lettere A, B e C che possono essere appoggiati direttamente sul tavolo oppure posati uno sull' altro.

 

Un possibile problema è quello di partire da una configurazione iniziale come la seguente:

 

      ___
     |   |
     | c |
     |___|      ___
     |   |     |   | 
     | A |     | B |
_____|___|_____|___|______
                    TAVOLO

 

e arrivare alla configurazione finale:

___

     |   |
     | A | 
     |___| 
     |   |
     | B |
     |___|     
     |   |      
     | C |     
_____|___|______________
                    TAVOLO

 

Il robot può eseguire una sequenza di mosse elementari, ciascuna consistente nello spostamento di un singolo blocco.

Un blocco può essere spostato solo se è libero, cioè se non c'è alcun altro blocco appoggiato su di esso, e può essere posato solo su un altro blocco libero o sul tavolo.

La soluzione del problema consiste nell' individuare una sequenza di mosse elementari (singoli spostamenti) che porti dallo stato iniziale a quello finale.

La soluzione può essere specificata dalla sequenza di stati che debbono essere attraversati per raggiungere lo stato finale.

Trovare una rappresentazione Prolog degli stati del problema e le regole di passaggio da uno stato all'altro.

Scrivere un programma che risolva il problema di passare da una generico stato iniziale (qualunque disposizione di blocchi sul tavolo) allo stato finale (la configurazione finale dell'esempio sopra riportato), utilizzando il meccanismo di ricerca fornito dall'interprete Prolog ed il backtracking.

Il programma realizzato deve permettere, forzando il backtracking, di esplorare le soluzioni alternative del problema.