การสร้างลำดับการจับคู่ที่เป็นไปได้ทั้งหมดสำหรับผู้เล่น N แบ่งออกเป็นคู่ N/2

ฉันกำลังพยายามสร้างตารางการแข่งขันสำหรับลีกที่มีผู้เล่น N คน โดยที่ N%2=0

สมมติว่าฉันต้องการสร้างกำหนดการสำหรับผู้เล่น 6 คน (A, B, C, D, E, F) เพื่อสร้างคู่ที่แตกต่างกัน

พิจารณา AB != BA และควรติดตามเป็นคู่ที่แตกต่างกัน

การมีผู้เล่น 6 คนควรมี 30 คู่ที่แตกต่างกัน จำนวนคู่ที่รวมกันคือ pairsCount / (N / 2)

คู่การแข่งขันต่อไปนี้ไม่สามารถเหมือนกันได้ เช่น หากการแข่งขันที่ 1 มีคู่ AB การแข่งขันที่ 2 ก็ไม่ควรมี AB

(AB) (CD) (EF)
(AC) (BE) (CF)

...

(BA) (DC) (FE)

...

ฉันลองทำตามวิธีแก้ปัญหานี้

อัลกอริทึมเพื่อสร้างการเรียงสับเปลี่ยนของคู่ทั้งหมดโดยไม่ต้องทำซ้ำ< /ก>

ปัญหาคือคู่การแข่งขันต่อไปนี้จะเหมือนกับการแข่งขันครั้งก่อน ฉันหวังว่าคุณจะเข้าใจปัญหาของฉันและแสดงตัวอย่างที่ดีในการสร้างตารางเวลาประเภทนี้


person Mantas Naidzinavičius    schedule 16.04.2020    source แหล่งที่มา
comment
ฉันสูญเสียคุณไปที่นั่น คุณสร้างคู่ที่แตกต่างกัน 30 คู่ จากนั้นคุณสร้างคู่ที่แตกต่างกันอีก 30 คู่ และรู้ไหมว่ามันเหมือนกับรุ่นก่อนๆ นี่เป็นผลลัพธ์ที่คาดหวังไว้ไม่ใช่หรือเนื่องจากรุ่นที่ 1 ของคุณมีการเรียงสับเปลี่ยนคู่ที่เป็นไปได้ทั้งหมดแล้ว หรือฉันเข้าใจอาการของคุณผิด?   -  person tctham    schedule 16.04.2020
comment
ฉันคิดว่าคุณเข้าใจมันผิด ฉันสร้าง 30 คู่เพียงครั้งเดียว แต่การใช้วิธีแก้ปัญหาที่ฉันแนบมาทำให้ฉันได้ลำดับที่ผิด: (AB) พบคู่สามครั้งตามมา ฉันไม่ต้องการสิ่งนั้น ฉันไม่ต้องการให้ผู้เล่น A เล่นกับผู้เล่น B สามสัปดาห์ติดต่อกัน ฉันอยากจะผสมผสานสิ่งนี้เข้าด้วยกัน โดยในแต่ละสัปดาห์พวกเขาจะเล่นกับผู้เล่นที่แตกต่างกัน   -  person Mantas Naidzinavičius    schedule 16.04.2020
comment
คุณได้รับ pairs ถูกต้อง แต่ตอนนี้คุณกำลังพยายามเรียงลำดับให้ถูกต้องใช่หรือไม่ นักเตะสองคนไหนไม่ควรเจอกันในสองสัปดาห์ติดต่อกัน?   -  person shapiro yaacov    schedule 16.04.2020
comment
ถูกต้อง. ฉันคิดว่าฉันพบวิธีแก้ปัญหาหนึ่งที่นี่ stackoverflow.com/questions/56730923/ จนถึงตอนนี้ดีมาก   -  person Mantas Naidzinavičius    schedule 16.04.2020
comment
BA เหมือนกับ AB หรือไม่ ฉันคิดว่าโดยทั่วไปที่มีปัญหาเช่นนี้ ลำดับไม่สำคัญในกลุ่มใดกลุ่มหนึ่ง มิฉะนั้น คุณจะนับชุดค่าผสมเดียวกันหลายครั้ง ควรมีเพียง 15 ผลลัพธ์ทั้งหมด หากสิ่งนี้ถูกต้อง แสดงว่านี่คือปัญหาที่ทราบแล้ว เรียกว่าพาร์ติชันของกลุ่มที่มีขนาดเท่ากัน ฉันเขียนแพ็คเกจใน R ที่โจมตีปัญหาเช่นนี้โดยใช้ฟังก์ชัน comboGroups(v = c("A", "B", .. "F"), numGroups = 3) ดู stackoverflow.com/a/57861934/4408538   -  person Joseph Wood    schedule 17.04.2020