Có một thuật toán hiệu quả để tìm ra sự thân yêu thứ i không?


9

Đây là nền tảng cho câu hỏi này. Bạn bè và tôi đang chơi một trò chơi mà mọi người cần tặng cho người khác một món quà. Để xác định ai nên tặng quà cho ai, chúng tôi quyết định rút thăm. Nhưng vấn đề là, cuối cùng ai đó có thể tặng quà cho anh ấy / cô ấy, điều này không vui chút nào. Bạn có thể thấy rằng số lượng người không may như vậy dự kiến ​​là 1, vì vậy điều này xảy ra khá thường xuyên.

Đối với mục đích này, sự thân yêu dường như là một sự phù hợp tuyệt vời. Nếu tôi hoàn toàn có thể tạo ra một sự thân yêu, thì tôi chỉ có thể chọn một sự thân yêu và sử dụng nó để quyết định ai tặng quà cho ai.

Việc tạo ngẫu nhiên ngẫu nhiên có thể được thực hiện bằng phương pháp Las Vegas. Nhưng vấn đề là, nó chỉ có thời gian chạy đa thức dự kiến. Vì vậy, tôi đã đi đến vấn đề này trong việc tìm kiếm sự thân yêu của tôi. Nếu tôi có thể chọn ngẫu nhiên một i trong [1, D_n] và sử dụng một số thuật toán thời gian đa thức (hiệu quả) trong trường hợp xấu nhất để đạt được yêu cầu thứ i, thì đã xong.


1
Bạn có thể vui lòng giải thích động lực cho câu hỏi? tức là tại sao bạn quan tâm đến câu hỏi này?
Kaveh

2
Có lẽ bạn muốn chơi santa bí mật và không sẵn sàng nắm lấy bất kỳ cơ hội nào :)
Lev Reyzin

Bạn có thể thêm một dòng về những gì bạn có nghĩa là bằng cách thân yêu?
Vijay D

Câu trả lời:


9

Trên thực tế đây có thể là một câu hỏi hay nhưng nó được xây dựng không tốt trong hình thức hiện tại của nó. Các thuật toán nổi tiếng để tạo ra các phép khử ngẫu nhiên có thời gian dự kiến ​​tuyến tính, nhưng có lẽ đó là một vấn đề mở để tìm ra thuật toán thời gian đa thức tồi tệ nhất.

Xem ví dụ: http://www.siam.org/proceedings/analco/2008/anl08_022martinezc.pdf (và các slide: http://www.lsi.upc.edu/~conrado/research/talks/analco08.pdf )


Đây dường như là câu trả lời đúng cho tôi.
Suresh Venkat

10
Không tái diễn! N = (n 1) (! (N − 1) +! (N − 2)) được mô tả trong en.wikipedia.org/wiki/Derangement ngay lập tức dẫn đến thuật toán đa thức tồi tệ nhất cho ngẫu nhiên thế hệ?
David Eppstein

Vâng, bạn đúng. Tôi đã nghĩ rằng có một nhược điểm nhỏ bởi vì bạn phải có thể tạo các số ngẫu nhiên trong các tập con tùy ý của {1, ..., n} trong trường hợp đa thời gian xấu nhất, nhưng điều đó rất dễ thực hiện.
didest

0

Tại sao không, cho mỗi vị trí i , chọn ngẫu nhiên từ tất cả các yếu tố khác ngoài i ? Ví dụ: bạn có thể chọn một chỉ mục vào mảng ban đầu từ [0..n-2] và nếu bạn nhận được j> = i, bạn sử dụng j + 1 .


3
Điều đó làm cho tất cả các loạn trí có khả năng như nhau?
David Eppstein

oh, điểm tốt - điều này sẽ đặt các phần tử sau trong mảng tốt hơn sớm hơn trong mảng. Nếu bạn điền vào các vị trí trong mảng mục tiêu theo thứ tự ngẫu nhiên thì tất cả các biến động sẽ có khả năng như nhau (bằng cách đối xứng).
vỗ
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.