Realizzazione di un videogioco: SOLUZIONE

Il videogioco va interpretato come un automa in cui l'ingresso è il tasto battuto dal giocatore. La conseguenza della decisione del giocatore è il numero di palline che restano sul tavolo dopo che anche il calcolatore ha effettuato la propria mossa. Affinchè il programma che realizza il videgioco sia il più compatto possibile (requisito (f)), è necessario che l'automa sia minimo. 

INGRESSI
Il giocatore può battere cinque tasti diversi che costituiscono gli ingressi dell'automa: 

 
1 = tolgo 1 pallina dal tavolo 
2 = tolgo 2 palline dal tavolo 
3 = tolgo 3 palline dal tavolo
4 = stop: smetto di giocare 
5 = start: decido di giocare 
Se il tasto 1, 2 o 3 viene battuto a macchina ferma, il comando deve essere interpretato come uno stop. Se il tasto start viene battuto mentre la partita è in corso, il gioco ricomincia da capo con 25 palline sul tavolo. 

USCITE 
Le uscite possibili sono quattro: 
 

1 = macchina ferma 
2 = partita in corso 
3 = ha vinto il giocatore
4 = ha vinto la macchina 
 
STATI
Intuire quanti siano gli stati dell'automa minimo non è certo banale. Tuttavia, dalla descrizione del gioco è ovvio che debba essere possibile realizzare il videogioco con n = 28 stati, aventi il seguente significato: 
 
 
1 = macchina spenta 
i (= 2,..., 25) = partita in corso con i palline sul tavolo (prima che il giocatore effettui la sua mossa)
26 = una pallina sul tavolo prima che il giocatore effettui la sua mossa (ciò implica la vittoria del calcolatore)
27 = una pallina sul tavolo dopo che il giocatore abbia effettuato la sua mossa
28 = è stata effettuata una mossa illecita (ciò comporta la vittoria del calcolatore)

TABELLE DI TRANSIZIONE E DI USCITA
Il videogioco può essere realizzato come automa di Moore, ovvero come un sistema:
 

x(t+1) = f(x(t),u(t))
y(t) = h(x(t))

la cui funzione di transizione è descritta da una tabella di n = 28 righe e m = 5 colonne (l'elemento (i,j) è lo stato f(i,j) che l'automa nello stato i raggiunge dopo l'applicazione dell'ingresso j) e la cui trasformazione di uscita h è descritta da una colonna di n = 28 righe (l'elemento i è l'uscita h(i) dell'automa nello stato i). 

Dalla descrizione del gioco risulta chiaro che, per vincere, un giocatore deve lasciare sul tavolo 4k+1 palline, essendo k un intero qualsiasi. Un giocatore che abbia raggiunto questo scopo ha potenzialmente vinto la partita. Infatti, qualsiasi sia la mossa dell'avversario (1, 2 o 3), il giocatore potrà operare in modo che, dopo la sua mossa, rimangano sul tavolo 4(k-1)+1 palline. Continuando così, il giocatore riuscirà a lasciare sul tavolo soltanto una pallina. 

Poichè il numero di palline è inizialmente pari a 25, il giocatore non può attuare la strategia proposta sin dalla prima mossa, in quanto deve lasciare sul tavolo 22, 23, o 24 palline (e nessuno di questi numeri soddisfa la regola vincente del 4k+1). Il calcolatore potrebbe quindi risolvere subito la partita a suo favore, lasciando comunque 21 palline sul tavolo, indipendentemente dalla prima mossa del giocatore. Tuttavia, volendo realizzare un videogioco che offra al giocatore la possibilità di vincere, il calcolatore deve agire in modo diverso. Pertanto, se, alla sua prima mossa, il giocatore preleva 1 o 2 palline, il calcolatore ne preleverà , a sua volta, 2 o 1 (lasciando così 22 palline sul tavolo) mentre nel caso il giocatore prelevi 3 palline, il calcolatore ne preleverà 2 (lasciando così 20 palline sul tavolo). In tutti e tre i casi viene data al giocatore la possibilità di soddisfare la regola vincente del 4k+1. Se egli non ne approfitta, il calcolatore agirà in modo da soddisfare il requisito (e), chiudendo quindi la partita a proprio favore, attraverso l'uso sistematico della regola del 4k+1.

Quanto sinora esposto consente la compilazione delle tabelle di transizione e uscita (vedi Tab. 1). Di ciascuna tabella sono riportate solo cinque righe (le 1, 3, 7, 25 e 28), in modo che il lettore possa esercitarsi nel determinare le altre. 

 
1
2
3
4
5
1
1
1
1
1
25
2
         
3
26
27
28
1
25
4
         
5
         
6
         
7
5
4
26
1
25
8
         
9
         
10
         
11
         
12
         
13
         
14
         
15
         
16
         
17
         
18
         
19
         
20
         
21
         
22
         
23
         
24
         
25
22
22
20
1
25
26
         
27
         
28
1
1
1
1
25
 
1
.
1
.
.
 .
2
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
 .
1
 
 
4
Tab. 1: tabelle di transizione e di uscita
ANALISI DI MINIMALITA'
Per sapere se l'automa A proposto in Tab.1 è il più semplice tra tutti quelli che si comportano nel modo desiderato, si deve verificare se esso è minimo. Naturalmente, nel caso l'automa non sia minimo, si deve trovare un automa equivalente in forma minima (Amin). Per questo si può procedere nel seguente modo.
  • INDISTINGUIBILITA' innanzitutto si può effettuare, per esempio per mezzo dell'algoritmo di Paull-Unger, un'analisi di indistinguibilità di A. Il risultato di questa analisi è una partizione dell'insieme di stato X={1, 2, ..., n} in classi di indistinguibilità C1, C2, ..., Cnrid. Se ogni classe Ci è costituita da un solo elemento, allora nrid=n. In questo caso non esistono coppie di stati indistinguibili e l'automa è in forma ridotta (A=Arid). Se invece nrid<n l'automa ammette un automa equivalente in forma ridotta Arid, costituito da nrid stati. Questo automa è facilmente determinabile eliminando tutti gli stati, ad eccezione di uno scelto a caso, di ogni classe di indistinguibilità contenente almeno due stati. Il risultato di questa analisi è quindi in ogni caso un automa Arid in forma ridotta.
  • RAGGIUNGIBILITA': dato che all'istante iniziale l'automa Arid (con insieme di stato Xrid) è in un particolare stato di riposo (i=17 nel caso specifico), si deve determinare l'insieme Xragg degli stati raggiungibili dallo stato di riposo. Se Xragg coincide con Xrid tutti gli stati sono raggiungibili e pertanto Arid è in forma minima (Amin=Arid). Se invece Xragg è contenuto in Xrid si possono eliminare da Xrid tutti gli stati non raggiungibili ottenendo così un automa di dimensioni nmin<nrid. Tale automa, che ha come insieme di stato l'insieme Xragg, è l'automa Amin cercato. 
APPLICAZIONE PRECEDENTE
Testo
 APPLICAZIONE SUCCESSIVA