Hãy tưởng tượng bạn đang ở trong một tòa nhà cao tầng với một con mèo. Con mèo có thể sống sót khi rơi ra khỏi cửa sổ câu chuyện thấp, nhưng sẽ chết nếu bị ném từ trên cao xuống. Làm thế nào bạn có thể tìm ra giọt nước dài nhất mà con mèo có thể sống sót, sử dụng số lần thử ít nhất?
Rõ ràng, nếu bạn chỉ có một con mèo, thì bạn chỉ có thể tìm kiếm tuyến tính. Đầu tiên ném con mèo từ tầng một. Nếu nó sống sót, ném nó từ thứ hai. Cuối cùng, sau khi bị ném từ tầng f, con mèo sẽ chết. Sau đó, bạn biết rằng tầng f-1 là tầng an toàn tối đa.
Nhưng nếu bạn có nhiều hơn một con mèo thì sao? Bây giờ bạn có thể thử một số loại tìm kiếm logarit. Giả sử tòa nhà có 100 tầng và bạn có hai con mèo giống hệt nhau. Nếu bạn ném con mèo đầu tiên ra khỏi tầng 50 và nó chết, thì bạn chỉ phải tìm kiếm 50 tầng một cách tuyến tính. Bạn có thể làm tốt hơn nữa nếu bạn chọn tầng thấp hơn cho lần thử đầu tiên. Giả sử bạn chọn giải quyết vấn đề 20 tầng một lần và tầng chết người đầu tiên là # 50. Trong trường hợp đó, con mèo đầu tiên của bạn sẽ sống sót sau các chuyến bay từ tầng 20 và 40 trước khi chết từ tầng 60. Bạn chỉ cần kiểm tra từng tầng 41 đến 49. Đó là tổng cộng 12 lần thử, tốt hơn nhiều so với 50 lần bạn cần nếu bạn đã cố gắng sử dụng loại bỏ nhị phân.
Nói chung, chiến lược tốt nhất và sự phức tạp trong trường hợp xấu nhất đối với một tòa nhà n tầng có 2 con mèo là gì? Còn đối với n tầng và m mèo thì sao?
Giả sử rằng tất cả các con mèo là tương đương: tất cả chúng sẽ sống sót hoặc chết vì ngã từ một cửa sổ nhất định. Ngoài ra, mọi nỗ lực đều độc lập: nếu một con mèo sống sót sau một cú ngã, nó hoàn toàn không hề hấn gì.
Đây không phải là bài tập về nhà, mặc dù tôi có thể đã giải quyết nó cho bài tập ở trường một lần. Đó chỉ là một vấn đề hay thay đổi xuất hiện trong đầu tôi hôm nay và tôi không nhớ giải pháp. Điểm thưởng nếu bất cứ ai biết tên của vấn đề này hoặc thuật toán giải pháp.