Immagina di essere in un edificio alto con un gatto. Il gatto può sopravvivere a una caduta da una finestra bassa, ma morirà se lanciato da un piano alto. Come puoi capire la goccia più lunga che il gatto può sopravvivere, usando il minor numero di tentativi?
Ovviamente, se hai un solo gatto, puoi cercare solo linearmente. Prima lancia il gatto dal primo piano. Se sopravvive, lancialo dal secondo. Alla fine, dopo essere stato gettato dal pavimento f, il gatto morirà. Allora sai che il piano f-1 era il piano massimo sicuro.
E se avessi più di un gatto? Ora puoi provare una sorta di ricerca logaritmica. Diciamo che la build ha 100 piani e hai due gatti identici. Se lanci il primo gatto fuori dal 50 ° piano e muore, devi solo cercare 50 piani in modo lineare. Puoi fare ancora meglio se scegli un piano inferiore per il tuo primo tentativo. Diciamo che hai scelto di affrontare il problema 20 piani alla volta e che il primo piano fatale è il numero 50. In tal caso, il tuo primo gatto sopravviverà ai voli dai piani 20 e 40 prima di morire dal piano 60. Devi solo controllare i piani da 41 a 49 individualmente. Sono in totale 12 i tentativi, che è molto meglio dei 50 di cui avresti bisogno se avessi tentato di usare l'eliminazione binaria.
In generale, qual è la strategia migliore e la complessità peggiore per un edificio a due piani con 2 gatti? Che dire di n piani e m gatti?
Supponiamo che tutti i gatti siano equivalenti: sopravviveranno o moriranno da una caduta da una determinata finestra. Inoltre, ogni tentativo è indipendente: se un gatto sopravvive a una caduta, è completamente illeso.
Non si tratta di compiti a casa, anche se potrei averlo risolto per un incarico scolastico una volta. È solo un problema stravagante che mi è saltato in testa oggi e non ricordo la soluzione. Punti bonus se qualcuno conosce il nome di questo problema o dell'algoritmo della soluzione.