Imaginez que vous êtes dans un grand immeuble avec un chat. Le chat peut survivre à une chute d'une fenêtre à un étage bas, mais mourra s'il est jeté d'un étage élevé. Comment pouvez-vous déterminer la plus longue goutte à laquelle le chat peut survivre, en utilisant le moins de tentatives possible?
De toute évidence, si vous n'avez qu'un seul chat, vous ne pouvez rechercher que linéairement. Jetez d'abord le chat du premier étage. S'il survit, lancez-le dès le second. Finalement, après avoir été jeté du sol f, le chat mourra. Vous savez alors que l'étage f-1 était l'étage maximal de sécurité.
Mais que faire si vous avez plus d'un chat? Vous pouvez maintenant essayer une sorte de recherche logarithmique. Disons que la construction a 100 étages et que vous avez deux chats identiques. Si vous jetez le premier chat hors du 50e étage et qu'il meurt, vous n'avez qu'à fouiller 50 étages linéairement. Vous pouvez faire encore mieux si vous choisissez un étage inférieur pour votre première tentative. Disons que vous choisissez de vous attaquer au problème 20 étages à la fois et que le premier étage mortel est le # 50. Dans ce cas, votre premier chat survivra aux vols des étages 20 et 40 avant de mourir à partir du 60e étage. Il vous suffit de vérifier les étages 41 à 49 individuellement. Cela représente un total de 12 tentatives, ce qui est bien mieux que les 50 dont vous auriez besoin si vous tentiez d'utiliser l'élimination binaire.
En général, quelle est la meilleure stratégie et le pire des cas de complexité pour un bâtiment de n étages avec 2 chats? Et pour n étages et m chats?
Supposons que tous les chats sont équivalents: ils survivront tous ou mourront d'une chute d'une fenêtre donnée. De plus, chaque tentative est indépendante: si un chat survit à une chute, il est complètement indemne.
Ce ne sont pas des devoirs, même si je l'ai peut-être résolu une fois pour une affectation scolaire. C'est juste un problème fantaisiste qui m'est venu à l'esprit aujourd'hui et je ne me souviens pas de la solution. Des points bonus si quelqu'un connaît le nom de ce problème ou de l'algorithme de solution.