Tại câu lạc bộ bóng quần địa phương của tôi, có một cái thang hoạt động như sau.
- Vào đầu mùa giải, chúng tôi xây dựng một bảng với tên của từng thành viên của câu lạc bộ trên một dòng riêng biệt.
- Sau đó chúng tôi viết số trò chơi đã thắng và số trò chơi được chơi bên cạnh mỗi tên (theo hình thức: người chơi thắng / trò chơi).
Do đó, vào đầu mùa, bảng trông như thế này:
Carol 0/0
Billy 0/0
Alice 0/0
Daffyd 0/0
Bất kỳ hai người chơi có thể chơi một trận đấu, với một người chơi chiến thắng. Nếu người chơi ở gần cuối bảng sẽ thắng, thì vị trí của người chơi sẽ được chuyển. Sau đó, chúng tôi lặp lại bước 2., cập nhật số trận thắng và trò chơi bên cạnh mỗi người chơi. Ví dụ, nếu Alice đánh bại Billy, chúng ta có
Carol 0/0
Alice 1/1
Billy 0/1
Daffyd 0/0
Các trận đấu này diễn ra trong suốt mùa giải và cuối cùng dẫn đến việc người chơi được liệt kê theo thứ tự sức mạnh gần đúng.
Thật không may, việc cập nhật xảy ra theo một cách khá khó hiểu, vì vậy những sai lầm được thực hiện. Dưới đây là một số ví dụ về các bảng không hợp lệ, nghĩa là các bảng không thể được tạo bằng cách thực hiện đúng các bước trên cho một số thứ tự bắt đầu (chúng tôi đã quên thứ tự chúng tôi sử dụng vào đầu mùa giải) và chuỗi kết quả và kết quả:
Alice 0/1
Billy 1/1
Carol 0/1
Daffyd 0/0
Alice 2/3
Billy 0/1
Carol 0/0
Daffyd 0/0
Alice 1/1
Billy 0/2
Carol 2/2
Daffyd 0/1
Đưa ra một bảng, làm thế nào chúng ta có thể xác định một cách hiệu quả liệu nó có hợp lệ không? Chúng ta có thể bắt đầu bằng cách lưu ý những điều sau:
Thứ tự của các tên không quan trọng, vì chúng ta đã quên thứ tự bắt đầu ban đầu.
Tổng số trận thắng phải bằng một nửa tổng số trận đã chơi. (Điều này cho thấy ví dụ đầu tiên ở trên không hợp lệ.)
- Giả sử bảng là hợp lệ. Sau đó, có một multigraph - một biểu đồ thừa nhận nhiều cạnh nhưng không có vòng lặp - với mỗi đỉnh tương ứng với một người chơi và mỗi cạnh cho một trận đấu được chơi. Sau đó, tổng số trò chơi của mỗi người chơi tương ứng với mức độ đỉnh của người chơi trong nhiều hình. Vì vậy, nếu không có nhiều chữ số với độ đỉnh thích hợp, thì bảng phải không hợp lệ. Ví dụ, không có nhiều chữ số với một đỉnh bậc một và một bậc ba, vì vậy ví dụ thứ hai không hợp lệ. [Chúng ta có thể kiểm tra hiệu quả sự tồn tại của một chữ số như vậy.]
Vì vậy, chúng tôi có hai kiểm tra mà chúng tôi có thể áp dụng để bắt đầu, nhưng điều này vẫn cho phép các bảng không hợp lệ, chẳng hạn như ví dụ thứ ba. Để thấy rằng bảng này không hợp lệ, chúng ta có thể làm việc ngược lại, làm cạn kiệt tất cả các cách có thể mà bảng có thể phát sinh.
Tôi đã tự hỏi liệu có ai có thể nghĩ về một thời gian đa thức (về số lượng người chơi và số lượng trò chơi) giải quyết vấn đề quyết định này không?