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