Apakah ada algoritma yang dikenal untuk penjadwalan pertandingan turnamen?


10

Hanya ingin tahu apakah ada algoritma penjadwalan turnamen di luar sana yang bisa saya gunakan atau bahkan sedikit adaptasi.

Inilah persyaratan saya:

  • Sejumlah variabel lawan yang termasuk dalam sejumlah variabel tim / klub masing-masing harus dipasangkan dengan lawan
  • Dua lawan tidak bisa berasal dari klub yang sama
  • Jika ada jumlah pemain ganjil, 1 dari mereka dipilih secara acak untuk mendapatkan bye

Algoritma apa pun yang terkait dengan jenis persyaratan ini akan dihargai.

EDIT: Saya hanya perlu menjalankan ini maksimal satu kali, menciptakan pertarungan untuk 'putaran' pertama turnamen.


Anda mungkin ingin melihat pencocokan maksimum .
svick

Jawaban:



1

Dari waktu singkat saya di Wikipedia dua puluh detik yang lalu sepertinya Anda harus memutuskan strategi eliminasi terlebih dahulu. Lihat Wikipedia:

  1. Sistem Swiss
  2. Single-elimination_tournament
  3. Double-elimination_tournament

Artikel eliminasi tunggal menjelaskan teknik penyemaian (algoritma yang Anda cari) cukup umum dan tampak membantu, meskipun tidak cukup algoritma.


Saya lebih suka Swiss, yang memberikan peringkat menengah tidak seperti eliminasi ganda / tunggal, dan menemukan pemain N teratas dalam jumlah putaran yang sama dengan turnamen eliminasi N.
Mooing Duck

1

Membuat ini sebagai saya pergi, sepertinya algoritma pencocokan awal cukup sederhana:

While two or more clubs have at least one member not paired  
    select the two clubs with the most unpaired members
    select a random unpaired member from each club
    pair those members

Jika satu orang dibiarkan, itu akan menjadi orang acak, dengan satu pengecualian. Jika satu klub memiliki lebih banyak anggota daripada semua pemain lawan disatukan, maka sisanya akan selalu berasal dari klub itu. Secara realistis, itu adalah situasi yang sangat langka, dan memilih membeli dari klub lain akan meninggalkan lebih banyak orang yang tersisa.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.