猫がいる高層ビルにいるとします。猫は低い階の窓から落ちても生き残ることができますが、高床から投げられると死にます。最小限の試行回数で、猫が生き残ることができる最長の落下をどのようにして把握できますか?
明らかに、猫が1匹しかいない場合、直線的にしか検索できません。まず1階から猫を投げます。生き残った場合は2回目から投げます。やがて、f階から投げ出された猫は死ぬ。すると、f-1フロアが最大安全フロアであったことがわかります。
しかし、猫が複数いる場合はどうでしょうか。これで、ある種の対数検索を試すことができます。ビルドが100階建てで、猫が2匹いるとします。最初の猫を50階から投げ出して死んだ場合、50階を直線的に検索するだけで済みます。あなたが最初の試みのために低い階を選択した場合、あなたはさらに良いことができます。一度に20フロアの問題に取り組むことを選択し、最初の致命的なフロアが#50であるとします。その場合、最初の猫は20階と40階のフライトを生き延びてから60階で死亡します。41階から49階を個別に確認するだけです。これは合計12回の試行であり、バイナリ除去を使用しようとした場合に必要な50回よりもはるかに優れています。
一般的に、2匹の猫がいるn階建ての建物の場合、最善の戦略は何ですか?それは最悪の場合の複雑さですか?n階とm猫はどうですか?
すべての猫が同等であると仮定します。それらはすべて、所定のウィンドウからの落下によって生き残るか、または死亡します。また、すべての試みは独立しています:猫が転倒を生き延びた場合、それは完全に無害です。
これは宿題ではありませんが、学校の課題のために一度解決したかもしれません。今日、気まぐれな問題が頭に浮かんだだけで、その解決策を思い出せません。この問題の名前またはソリューションアルゴリズムの名前を知っている人がいる場合は、ボーナスポイントになります。