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.

barfoon
sumber
Anda mungkin ingin melihat pencocokan maksimum .
svick

Jawaban:

10

Seperti yang saya lihat, Anda ingin menemukan pencocokan maksimum dalam grafik. Sebenarnya node adalah pemain, mereka terhubung satu sama lain jika mereka tidak berada di klub yang sama, sekarang Anda harus menemukan jumlah ujung maksimum yang tidak memiliki simpul yang sama. Lihat Edmonds Pencocokan maksimum algoritma .

Saeed
sumber
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.

Chris Pfohl
sumber
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.

Mooing Duck
sumber