Có một số dạng đóng toán học (hoặc dạng không có triệu chứng chặt chẽ) cho Trò chơi Google Trứng Câu đố?


8

Mô tả ngắn gọn sau đây về "Câu đố về Trứng của Google" được biết đến chủ yếu từ trang web Google Trứng :

Câu đố về Trứng của Google: Cho n tầng và m trứng, cách tiếp cận để tìm tầng cao nhất từ ​​đó trứng có thể được ném an toàn, trong khi giảm thiểu tối đa việc ném (không làm vỡ trứng).

Cái gọi là "tầng cao nhất" trong vấn đề trên xứng đáng được định nghĩa chính thức hơn:

"cao nhất:" phải có một tầng f (trong bất kỳ tòa nhà nào đủ cao) sao cho một quả trứng rơi từ tầng thứ f bị vỡ, nhưng một quả rơi từ tầng thứ nhất ( f-1 ) thì không. Sau đó, f-1 ở đây là tầng cao nhất.

Trên thực tế, mô tả "cao nhất" là một đoạn trích từ cuốn sách "Cẩm nang thiết kế thuật toán (Ấn bản thứ hai)" của Steven S. Skiena. Là một bài tập trong Chương 8 "Lập trình động", có rất nhiều tài nguyên trên Web dành cho việc giải câu đố bằng phương tiện lập trình động, như Google TrứngVấn đề hai quả trứng .

Tuy nhiên, có một câu hỏi từ cuốn sách trên:

E(n,m)=Θ(n1m)E()

Đó là câu hỏi thúc đẩy vấn đề của tôi:

E(n,m)=Θ(n1m)


4
mm=lognΘ(minkmkn1/k)mlognm

@RobinKothari Tôi đồng ý với bạn. Các thí nghiệm bằng số trong vật liệu Niềm vui của việc thả trứng hỗ trợ sự quan sát của bạn. Tuy nhiên, tôi không nắm bắt được ý nghĩa của . Theo dự đoán của tôi, tham số là số lượng trứng thực tế đang sử dụng. Vậy thì, yếu tố trong gì? Cảm ơn rất nhiều. Θ(minkmkn1k)kkn1k
hengxin

Tôi có thể cố gắng giải thích ý nghĩa, nhưng nó hơi dài nên tôi sẽ đăng nó dưới dạng câu trả lời.
Robin Kothari

Câu trả lời:


8

Với số đo m trứng và k, hầu hết các tầng có thể được kiểm tra chính xác là (có thể tùy thuộc vào def chính xác). Bằng chứng là tầm thường bởi cảm ứng. Biểu thức này không có dạng đóng ngược nhưng cho tiệm cận tốt.

n(m,k)=(k0)+(k1)++(km),
±1

4
Chỉ cần phác thảo chiến lược thả một chút sẽ làm cho câu trả lời đầy đủ hơn. Có lẽ nó không phù hợp, vì tôi đoán nó không phải là cấp độ nghiên cứu. Dù sao, với 2 quả trứng, bạn có thể bỏ qua tầng trong lần thả đầu tiên của mình và nếu nó không vỡ, hãy bỏ qua và nếu nó không phá vỡ thì bỏ qua , v.v ... Điều đó mang lại cho là tầng cao nhất bạn có thể đạt được bằng chiến lược này. kk1k2k(k+1)/2
Joe

@domotorp Có vẻ xây dựng để kiểm tra câu đố từ quan điểm bạn vừa thể hiện. Và phương trình về có thể được chứng minh bằng cảm ứng trên và . Mặc dù không có dạng đóng rõ ràng cho phía bên phải của phương trình này, nhưng nó có thể đưa ra biểu thức tiệm cận không? n(m,k)mkk(n,m)=Θ(n1m)
hengxin

2
@hengxin, yesish, bởi vì là một đa thức tính bằng độ , vì vậy điều này cho thấy việc giữ hằng số cho . Nhưng hãy xem bình luận của Robin về câu hỏi. Câu hỏi thú vị hơn là liệu biểu thức chính xác này có cho phép ràng buộc chính xác hơn bằng cách xấp xỉ đuôi nhị thức hay không, ví dụ như với erf. (km)kmmn(m,k)=Θ(km)
Peter Taylor

2

Trong nhận xét của tôi ở trên, tôi đã nói có lẽ là một ràng buộc chặt chẽ. Tôi không chắc chắn về giới hạn dưới, nhưng vì bạn chỉ muốn một lời giải thích cho ý nghĩa của , tôi có thể giải thích trực giác bằng cách sử dụng giới hạn trên.Θ(minkmkn1k)k

Như bạn đoán, là số lượng trứng thực sự được sử dụng. Điều đó giải thích ở bên ngoài. Bây giờ, một khi chúng tôi đã quyết định sử dụng trứng, đây là một chiến lược hoạt động: Hãy nghĩ về số như được viết ra trong cơ sở . Vì vậy, đại diện của sẽ có "chữ số" (từ "chữ số" thường được dành riêng cho cơ sở 10, nhưng tôi sẽ sử dụng nó ở đây) và mỗi chữ số giữ một giá trị từ 0 đến . Với trứng của chúng tôi, chúng tôi đang cố gắng trích xuất từng chữ số của . Đầu tiên chúng ta bắt đầu với chữ số có ý nghĩa nhất. Điều này có thể được xác định bằng cách ném một quả trứng từ sàn được đánh sốkminknn1/knkn1/k1kn100..00 , , v.v. Sau nhiều lần ném , chúng tôi đã biết được bit đáng kể nhất là gì và trong trường hợp xấu nhất chúng tôi chỉ làm vỡ 1 quả trứng. Bây giờ chúng tôi làm điều này cho tất cả các chữ số khác. Vì có chữ số, chúng tôi sẽ cần ném .200..00n1/k1kO(kn1/k)

Để kiểm tra độ tỉnh táo, hãy quan sát rằng khi , chiến lược này sẽ rút từng quả trứng xuống từng tầng một bắt đầu từ tầng 1. Khi , chúng ta chỉ làm việc ở cơ sở 2. Vì vậy, điều này mang lại thuật toán tìm kiếm nhị phân.k=1k=logn


1
Một tính năng thú vị của giải pháp của domotorp, không giống như của bạn, là nó không yêu cầu phải biết trước!
Jeffε
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.