Input: un sacchetto di cioccolatini.
1. se il sacchetto contiene al più un cioccolatino,
allora mangiatelo e termina.
2. prendi un cioccolatino dal sacchetto ricevuto
in input, leccalo, e mettilo in un sacchetto
di cioccolatini leccati.
3. se il sacchetto ricevuto in input
non è ancora vuoto,
e finchè non ti assale lo scrupolo per
il fatto di essere in dieta, puoi ripetere il passo 2.
4. preso dallo scrupolo (o dai rimpianti),
conta i cioccolatini leccati,
siano essi .
5. nel tentativo di nascondere la tua debolezza,
sposta
cioccolatini
dal sacchetto dei leccati al sacchetto ricevuto in input.
6. agisci da Goloson
sul sacchetto dei cioccolatini leccati.
7. agisci da Goloson
sul sacchetto dei cioccolatini ricevuto in input.
Sia il numero massimo di degustazioni di cioccolatino (leccatine + magnate) in cui si può incorrere partendo da un sacchetto di cioccolatini. Descrivere tramite una ricorrenza. Condurre analisi asintotica per . Riesci ad estrapolare od intuire la politica da tenere (quando conviene farsi prendere da scrupolo) qualora si voglia massimizzare il numero di degustazioni? Quale potrà essere invece il minor numero di degustazioni possibili partendo da un sacchetto di cioccolatini? Riesci ad estrapolare anche formalmente quale politica porti a questo minimo.
Chiaramente, e sono le nostre condizioni al contorno. Indicato con il numero di cioccolatini leccati ad una generica chiamata della procedura, otteniamo facilmente la seguente ricorrenza.
Nel caso si abbia sempre , allora otteniamo la ricorrenza
Che ha soluzione
, vista la condizione al contorno .
Nel caso si abbia sempre , allora otteniamo la ricorrenza
Che ha soluzione
(è la stessa ricorrenza che per il MergeSort),
come si può dedurre dal Master Theorem,
e verificare per induzione.
Vorremmo ora evidenziare che i due casi esaminati sono effettivamente
due casi estremi (in senso asintotico,
ma provate voi a vedere se sia possibile
condurre un'analisi più sottile).
Per fare ciò verificheremo che,
comunque il nostro Goloson scelga i valori di ,
avremo
, per induzione.
Verifichiamo , per induzione:
Dove nella diseguaglianza
abbiamo poggiato sull'ipotesi induttiva ma abbiamo
sfruttato anche il fatto che nessuno può trattenere
Goloson dal dare almeno una leccatina ().
Verifichiamo
, per induzione:
E l'induzione si chiude non appena .