Testo (dalle slide). Un quiz ha quattro domande di difficoltà e premio crescenti: la prima da 100 euro, la seconda da 1 000, la terza da 10 000, la quarta da 50 000. Probabilità di rispondere correttamente: 109, 43, 21, 101. A ogni passo ci sono due azioni: ritirarsi incassando quanto vinto finora, oppure rispondere alla domanda successiva: se si sbaglia si perde tutto. Rispondere correttamente alla quarta porta a 100+1000+10000+50000=61100 euro e il gioco finisce. Prima della domanda Qk il montepremi accumulato è: Q1: 0; Q2: 100; Q3: 1 100; Q4: 11 100.
(a) Per ogni domanda, conviene ritirarsi o rispondere? Qual è l'utilità di ogni stato? (b) Per quale probabilità di successo p4 della domanda Q4 conviene rispondere? (c) Cosa cambia se p4=0,3?
Soluzione
Idea. L'utilità U(Qk) è il guadagno atteso partendo dallo stato "sono davanti a Qk" supponendo di agire in modo ottimale da lì in poi. Dipende dall'utilità dello stato successivo, quindi si calcola partendo dalla fine (come nell'equazione di Bellman, senza cicli):
U(Qk)=max(ritirarsi,pk⋅U(Qk+1)),
dove il ritirarsi vale il montepremi accumulato, e la risposta sbagliata vale 0 (perde tutto). Per Q4 la risposta esatta porta a 61 100 e il gioco finisce.
(a)
Q4: ritirarsi 11100; rispondere 0,1⋅61100+0,9⋅0=6110. Si ritira, U(Q4)=11100. (Rischiare per 50000 con probabilità 101 non conviene: 6110<11100.)
Q3: ritirarsi 1100; rispondere: 0,5⋅U(Q4)=0,5⋅11100=5550. Si risponde, U(Q3)=5550. Si usa U(Q4)=11100 e non 61 100, perché arrivati a Q4 ci si ritira: il valore di passare la terza domanda è quello dello stato successivo giocato in modo ottimale.
Q1: ritirarsi 0; rispondere 0,9⋅4162,5=3746,25. U(Q1)=3746,25 (3 747 nelle slide).
La strategia ottima (la politica) è: rispondere a Q1, Q2, Q3 e ritirarsi davanti a Q4. Il premio atteso del gioco, partendo da zero, è 3746,25 euro.
(b) Davanti a Q4 si risponde se p4⋅61100>11100, cioè p4>6110011100=0,1817. Con p4=0,1 si resta sotto la soglia.
(c) Con p4=0,3: rispondere a Q4 vale 0,3⋅61100=18330>11100, quindi U(Q4)=18330. Allora U(Q3)=0,5⋅18330=9165; U(Q2)=0,75⋅9165=6873,75; U(Q1)=0,9⋅6873,75=6186,375. Una domanda più facile alza l'utilità di tutti gli stati precedenti, perché l'informazione si propaga all'indietro.
Verifica con Python.
python
defquiz(p, premi=(11100, 1100, 100, 0), finale=61100):
"""p = probabilita' di successo di Q1..Q4; premi = montepremi accumulato prima di Q4, Q3, Q2, Q1."""
U = max(premi[0], p[3] * finale) # Q4: si ritira o si risponde (e si vince 61100)
risultato = [U]
for k in (2, 1, 0): # Q3, Q2, Q1, sempre all'indietro
U = max(premi[3 - k], p[k] * U)
risultato.append(U)
return risultato[::-1] # [U(Q1), U(Q2), U(Q3), U(Q4)]print(quiz([0.9, 0.75, 0.5, 0.1])) # [3746.25, 4162.5, 5550.0, 11100]print(quiz([0.9, 0.75, 0.5, 0.3])) # [6186.375, 6873.75, 9165.0, 18330.0]
Formula.U(Qk)=max(ritirarsi,pk⋅U(Qk+1)), calcolata dall'ultima domanda all'indietro. Ritirarsi vale il montepremi accumulato (0, 100, 1 100, 11 100 prima di Q1,…,Q4); sbagliare vale 0; la risposta esatta alla quarta porta a 61100.
Passaggi (probabilità 109,43,21,101).
Q4: max(11100;0,1⋅61100=6110), quindi U=11100 (ci si ritira).
Q3: max(1100;0,5⋅11100)=5550.
Q2: max(100;0,75⋅5550)=4162,5.
Q1: max(0;0,9⋅4162,5)=3746,25.
Politica: rispondere a Q1,Q2,Q3, ritirarsi davanti a Q4.
Soglia su Q4: si risponde se p4>11100/61100=0,1817. Con p4=0,3: U(Q4)=18330, U(Q3)=9165, U(Q2)=6873,75, U(Q1)=6186,375.
python
U = max(11100, p[3] * 61100)
for k, premio in ((2, 1100), (1, 100), (0, 0)):
U = max(premio, p[k] * U)
Errori tipici: usare 61 100 invece di U(Q4)=11100 nel calcolo di Q3; andare avanti invece che all'indietro; contare la ricompensa dell'ultima domanda come se fosse certa.