Bạn đang tổ chức một giải đấu bóng rổ 1 v 1 với lịch thi đấu. Vào cuối giải đấu, bạn có mỗi người chơi báo cáo kỷ lục thắng thua của họ (không có ràng buộc), nhưng bạn muốn kiểm tra xem các bảng xếp hạng được đề xuất có thực sự có thể được đưa ra theo lịch trình hay không.
Ví dụ: bạn có bốn người chơi (Alice + Bob + Carol + Dave) và lịch trình của bạn là một vòng tròn đơn giản. Bảng xếp hạng được báo cáo [ A: 3-0 B: 1-2 C: 1-2 D: 1-2] và [ A: 2-1 B: 1-2 C: 1-2 D: 2-1] sẽ là có thể, nhưng đứng [ A: 3-0 B: 0-3 C: 0-3 D: 3-0] sẽ không được.
Bây giờ giả sử lịch trình thay vì 3 trò chơi đối đầu giữa Alice + Bob và Carol + Dave. Hiện tại đã có báo cáo [ A: 3-0 B: 0-3 C: 0-3 D: 3-0], nhưng [ A: 3-0 B: 1-2 C: 1-2 D: 1- 2] sẽ không còn nữa.
(Lịch trình không cần phải đối xứng theo bất kỳ cách nào. Bạn có thể cho Alice chỉ chơi với Bob 10 lần, sau đó khiến Bob + Carol + Dave chơi 58 vòng tròn với nhau.)
Vấn đề : Đưa ra một lịch trình với k người tham gia và n tổng số trò chơi, kiểm tra hiệu quả liệu một bảng xếp hạng thắng thua có thể thực sự xảy ra từ lịch trình đó hay không.
Phương pháp vũ phu O ( ) là hiển nhiên, liệt kê tất cả các kết quả trò chơi có thể và xem liệu có phù hợp với bảng xếp hạng đề xuất không. Và nếu k tăng nhỏ, n không tăng thêm độ phức tạp - rất dễ dàng để kiểm tra thứ hạng của hai người bất kể họ chơi mười trận hay mười tỷ trận. Ngoài ra, tôi đã không đi đầu trong việc tìm ra một phương pháp tốt hơn, và tò mò liệu có ai từng thấy một vấn đề tương tự trước đây không.