Consideriamo il gioco Indovina numero.
Un giocatore G1 pensa e scrive su un foglio un numero intero che può
andare da 0 a 100. Un altro giocatore G2 tenta di indovinare il numero.
Ad ogni tentativo G1 deve dire a G2 se ha indovinato il numero (e in
tal caso la partita è finita), se l'ha superato o se è
rimasto al di sotto.
Nelle partita successiva G1 e G2 invertono i ruoli. E così via.
Alla fine vince chi ha fatto complessivamente meno tentativi a vuoto.
Le istruzioni numerate seguenti rappresentano il comportamento che deve avere un giocatore per fare via via tentativi
che lo avvicinino al numero da indovinare:
| 1. | Devo cercare un numero compreso tra A = 0 e B = 100. |
| 2. | Dico un numero N compreso tra A e B. |
| 3. | Se ho indovinato la partita è finita. |
| 4. | Se mi viene detto che N supera il numero cercato restringo la zona di ricerca a sinistra di N prendendo come nuovo B il numero N, altrimenti restringo la ricerca a destra di N, cioè prendo N come nuovo B. |
| 5. | Ripeto a partire dall'istruzione 2. |
Prova a trovare una strategia più efficiente, che (al passo 2) non si limiti a prendere un qualunque numero N compreso tra A e B.
Se ci si riflette, si capisce facilmente che
conviene precisare il passo 2 così:
dico N che stia a metà
tra A e B (a seconda dei casi, di N ce n'è 1 o ce ne sono 2). Ovvero:
considero N = (A+B)/2 e, se N non è intero, prendo l'intero immediatamente precedente o immediatamente successivo.
Se ad esempio il numero da indovinare fosse 22 avremmo proceduto così:
A = 0, B = 100, N = 50
A = 0, B = 50, N = 25
A = 0, B = 25, N = 13
A = 13, B = 25, N = 19
A = 19, B = 25, N = 22, FINE
Al peggio, quanti tentativi sono necessari? 7 (se ad esempio il numero cercato è 0, procedendo così posso tentare con 50, 25, 12, 6, 3, 1, 0).