Уявіть, що ви знаходитесь у високій будівлі з котом. Кішка може пережити падіння з низького поверху, але загине, якщо її кинуть з високого поверху. Як можна зрозуміти найдовшу краплю, яку кішка може пережити, використовуючи найменшу кількість спроб?
Очевидно, що у вас є лише одна кішка, ви можете шукати лише лінійно. Спочатку киньте кота з першого поверху. Якщо вона виживе, киньте її з другої. Врешті-решт, після того, як його скинуть з підлоги f, кішка загине. Тоді ви знаєте, що підлога f-1 була максимально безпечною підлогою.
Але що робити, якщо у вас більше однієї кішки? Тепер ви можете спробувати якийсь логарифмічний пошук. Скажімо, що у будівлі 100 поверхів, а у вас дві однакові коти. Якщо ви викинете першу кішку з 50-го поверху і вона помирає, то вам доведеться лише шукати 50 поверхів лінійно. Ви можете зробити ще краще, якщо для своєї першої спроби виберете нижній поверх. Скажімо, ви вирішили вирішити проблему 20 поверхів одночасно і що перший фатальний поверх - №50. У такому випадку ваша перша кішка переживе польоти з 20 та 40 поверхів, перш ніж померти з поверху 60. Вам потрібно лише перевірити поверхи від 41 до 49 окремо. Це в цілому 12 спроб, що набагато краще, ніж 50, які вам знадобляться, якби ви намагалися використати бінарне усунення.
Загалом, яка найкраща стратегія та найгірша складність для n-поверхової будівлі з двома котами? А як щодо п яти поверхів і м котів?
Припустимо, що всі коти рівноцінні: всі вони виживуть або помруть від падіння з заданого вікна. Також кожна спроба є незалежною: якщо кішка переживе падіння, вона цілком неушкоджена.
Це не домашнє завдання, хоча я, можливо, колись вирішив це для шкільного завдання. Це просто примхлива проблема, яка сьогодні впала мені в голову, і я не пам'ятаю рішення. Бонусні бали, якщо хтось знає назву цієї проблеми або алгоритм рішення.