Imagina que estás en un edificio alto con un gato. El gato puede sobrevivir a una caída por una ventana de piso bajo, pero morirá si lo arroja desde un piso alto. ¿Cómo puedes calcular la caída más larga que el gato puede sobrevivir, utilizando el menor número de intentos?
Obviamente, si solo tienes un gato, entonces solo puedes buscar linealmente. Primero tira al gato desde el primer piso. Si sobrevive, tírelo desde el segundo. Finalmente, después de ser arrojado desde el piso f, el gato morirá. Entonces sabrá que el piso f-1 era el piso seguro máximo.
Pero, ¿y si tienes más de un gato? Ahora puede intentar algún tipo de búsqueda logarítmica. Digamos que la construcción tiene 100 pisos y tienes dos gatos idénticos. Si arrojas al primer gato fuera del piso 50 y muere, entonces solo tienes que buscar 50 pisos linealmente. Puede hacerlo aún mejor si elige un piso inferior para su primer intento. Digamos que elige abordar el problema de 20 pisos a la vez y que el primer piso fatal es el # 50. En ese caso, su primer gato sobrevivirá a los vuelos desde los pisos 20 y 40 antes de morir desde el piso 60. Solo tiene que revisar los pisos 41 a 49 individualmente. Eso es un total de 12 intentos, que es mucho mejor que los 50 que necesitarías si hubieras intentado usar la eliminación binaria.
En general, ¿cuál es la mejor estrategia y su peor complejidad para un edificio de dos pisos con 2 gatos? ¿Qué pasa con n pisos ym gatos?
Suponga que todos los gatos son equivalentes: todos sobrevivirán o morirán de una caída desde una ventana determinada. Además, cada intento es independiente: si un gato sobrevive a una caída, no sufre ningún daño.
Esto no es tarea, aunque puede que la haya resuelto para la asignación escolar una vez. Es solo un problema caprichoso que me vino a la cabeza hoy y no recuerdo la solución. Puntos de bonificación si alguien sabe el nombre de este problema o del algoritmo de solución.