• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 03:43
CET 09:43
KST 17:43
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Behind the Blue - Team Liquid History Book8Clem wins HomeStory Cup 289HomeStory Cup 28 - Info & Preview13Rongyi Cup S3 - Preview & Info5herO wins SC2 All-Star Invitational14
Community News
PIG STY FESTIVAL 7.0! (19 Feb - 1 Mar)9Weekly Cups (Jan 26-Feb 1): herO, Clem, ByuN, Classic win2RSL Season 4 announced for March-April7Weekly Cups (Jan 19-25): Bunny, Trigger, MaxPax win3Weekly Cups (Jan 12-18): herO, MaxPax, Solar win0
StarCraft 2
General
Rongyi Cup S3 - Preview & Info Behind the Blue - Team Liquid History Book Clem wins HomeStory Cup 28 How do you think the 5.0.15 balance patch (Oct 2025) for StarCraft II has affected the game? HomeStory Cup 28 - Info & Preview
Tourneys
PIG STY FESTIVAL 7.0! (19 Feb - 1 Mar) WardiTV Mondays $21,000 Rongyi Cup Season 3 announced (Jan 22-Feb 7) Sparkling Tuna Cup - Weekly Open Tournament $5,000 WardiTV Winter Championship 2026
Strategy
Custom Maps
Map Editor closed ? [A] Starcraft Sound Mod
External Content
Mutation # 512 Overclocked The PondCast: SC2 News & Results Mutation # 511 Temple of Rebirth Mutation # 510 Safety Violation
Brood War
General
Liquipedia.net NEEDS editors for Brood War BGH Auto Balance -> http://bghmmr.eu/ BW General Discussion Can someone share very abbreviated BW cliffnotes? StarCraft player reflex TE scores
Tourneys
[Megathread] Daily Proleagues Escore Tournament StarCraft Season 1 Small VOD Thread 2.0 KCM Race Survival 2026 Season 1
Strategy
Zealot bombing is no longer popular? Simple Questions, Simple Answers Current Meta Soma's 9 hatch build from ASL Game 2
Other Games
General Games
ZeroSpace Megathread Diablo 2 thread Battle Aces/David Kim RTS Megathread EVE Corporation Nintendo Switch Thread
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia Mafia Game Mode Feedback/Ideas
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread YouTube Thread The Games Industry And ATVI Things Aren’t Peaceful in Palestine
Fan Clubs
The herO Fan Club! The IdrA Fan Club
Media & Entertainment
[Manga] One Piece Anime Discussion Thread
Sports
2024 - 2026 Football Thread
World Cup 2022
Tech Support
TL Community
The Automated Ban List
Blogs
Play, Watch, Drink: Esports …
TrAiDoS
My 2025 Magic: The Gathering…
DARKING
Life Update and thoughts.
FuDDx
How do archons sleep?
8882
StarCraft improvement
iopq
Customize Sidebar...

Website Feedback

Closed Threads



Active: 2353 users

[Math] Tennis Schedule

Blogs > micronesia
Post a Reply
micronesia
Profile Blog Joined July 2006
United States24753 Posts
August 04 2010 01:44 GMT
#1
My friend has asked me to help him with a semi-mathematical problem. He is planning a 35 week tennis season for 10 players. Each week, 8 players will play on two courts (doubles) and 2 players will sit out. He needs to create a schedule that says who plays which weeks, who sits out each week, and who partners with and plays against who. The goal is to mix it up as much as possible so that each player plays approximately the same number of weeks, gets to play with each person as a partner, and has the most diversity with regards to their opponents.

He asked me because he knows I'm more adept at this sort of thing than him, but I'm not sure what the best/easiest way to approach this is without writing a somewhat complicated computer program (which I'm not prepared to do right now). I started playing around with Excel and did the following:

1: I created by hand a schedule which shows when players one through ten play (indicated by '1' ) and when they sit out (indicated by a blank). I wanted to randomize the order of weeks so I went to http://www.random.org/sequences/ and generated a randomized string from 1 to 35. I pasted it vertically on the rightmost column and sorted it as seen in picture 2.

Image 1:
http://img34.imageshack.us/img34/7913/tennisschedule1.jpg

Image 2:
http://img535.imageshack.us/img535/7431/tennisschedule2.jpg

The hard part now would be deciding who plays on which court and which team each week so the work I've done so far might have been a waste (not that it took long). I hoping to generate discussion about how to do this (there's probably some online tool that does it all automatically but I am also interested in ways to accomplish this goal).

*****
ModeratorThere are animal crackers for people and there are people crackers for animals.
kineSiS-
Profile Blog Joined September 2009
Korea (South)1068 Posts
Last Edited: 2010-08-04 01:49:03
August 04 2010 01:48 GMT
#2
I'll try doing it. Er... I guess I'll pm you.

Nvm..... -_- I was thinking math, but more mathematical computing.

I mean Mathematical Programming.
brian
Profile Blog Joined August 2004
United States9636 Posts
Last Edited: 2010-08-04 01:52:53
August 04 2010 01:52 GMT
#3
put all the names out in twice

with the name on top of itself

like

BOB JIM KIM
BOB JIM KIM

then move the bottom row once for each week.

last two people sit out.

the rest i just dont understand :D
micronesia
Profile Blog Joined July 2006
United States24753 Posts
August 04 2010 01:56 GMT
#4
Er, to clarify a bit. Doubles in tennis is when two people are on a team and against two people on a different team. There are two courts. That means Person 1 and 2 are playing against person 3 and 4. Likewise, person 5 and 6 are playing against person 7 and 8. Person 9 and 10 are sitting out. Each week we mix it up so that each person gets to be partners with everyone and against everyone, etc.
ModeratorThere are animal crackers for people and there are people crackers for animals.
brian
Profile Blog Joined August 2004
United States9636 Posts
Last Edited: 2010-08-04 02:01:19
August 04 2010 02:00 GMT
#5
so my answer was completely useless

lol. you didnt have to clarify i just should have read more carefully.

8 players on 2 courts should have given it away.
igotmyown
Profile Blog Joined April 2009
United States4291 Posts
August 04 2010 02:01 GMT
#6
10 person magic square, column 9 and 10 are byes, column 1 partners with 2, plays 3 and 4.

For 35 weeks, there's a more generalized version, but I forget what it's called.
qrs
Profile Blog Joined December 2007
United States3637 Posts
Last Edited: 2010-08-04 03:19:12
August 04 2010 02:10 GMT
#7
On August 04 2010 10:44 micronesia wrote:
My friend has asked me to help him with a semi-mathematical problem. He is planning a 35 week tennis season for 10 players. Each week, 8 players will play on two courts (doubles) and 2 players will sit out. He needs to create a schedule that says who plays which weeks, who sits out each week, and who partners with and plays against who. The goal is to mix it up as much as possible so that each player plays approximately the same number of weeks, gets to play with each person as a partner, and has the most diversity with regards to their opponents.

Well, it's not hard to see that each player should play for 28 weeks (8/10 of 35).

As far as pairings are concerned, there will be 140 pairings made (4 * 35), using the 45 possible pairs (10 choose 2) available. 140/45 (or 28/9) is almost exactly 3, so everyone can pair with everyone else 3 times, while 5 pairs will play with each other a fourth time.

For diversity of opponents, each player can potentially face 36 pairs that do not include himself (9 choose 2). He can only play 28 of them, however.

To actually create the schedule, I haven't thought about this too much, but would a naive iterative approach be too much work? For instance, you could start by randomly assigning the 5 pairs who partner an extra time (say, 1-2, 3-4, 5-6, 7-8, 9-10). Then you could start distributing each of the 45 pairs over 3 or 4 days. You could do the first few without overlapping. After that you have to start keeping in mind the rules about diversity: all you have to worry about is pairing a group twice with the same player on the opposite side. Maybe it would help to keep a master list for each player (of the 10) of which groups (of the 36) he has faced so far: that would only be 280 entries; seems manageable.
'As per the American Heart Association, the beat of the Bee Gees song "Stayin' Alive" provides an ideal rhythm in terms of beats per minute to use for hands-only CPR. One can also hum Queen's "Another One Bites The Dust".' —Wikipedia
xalo
Profile Blog Joined August 2009
Peru80 Posts
August 04 2010 02:37 GMT
#8
you can use linear programming and solve it in lindo if that helps, but there would be a lot of variables and equations
overpool
Profile Joined April 2008
United States191 Posts
Last Edited: 2010-08-07 18:58:44
August 04 2010 03:02 GMT
#9
Interesting problem, I'll play around with it and see if I can come up with anything.

edit: Well, I was able to enumerate every possible combination of "different" player configurations, by listing all permutations of the numbers from 1-10 and then eliminating duplicates. Each permutation of {1,2,...10} was represented as {(((p1,p2),(p3,p4)), ((p5,p6),(p7,p8))), (p9,p10)} , where {} brackets mean order matters, and parens () mean order doesn't matter. For each permutation, I sorted everything in parentheses. Then I removed duplicate permutations.

Here's a file with all different player configurations. The only problem is that there are 14175 of these combinations, so you'll need to choose a subset of these that maximizes "diversity". To do this, you'll first need to define "diversity" more concretely, e.g.; is it more important that a player's partner is not repeated, even if it means he plays the same opponents multiple times?
yay i love tl events
JodoYodo
Profile Blog Joined May 2009
Canada1772 Posts
August 04 2010 04:09 GMT
#10
I'm pretty sure this is a difficult problem to solve with an actual optimal solution; it's much like a minweight matching problem, but it's not bipartite so the problem is probably NP hard.

Don't listen to the linear programming guy, you'd have to use integer programming to model it properly, in which case you're probably better off just using some naive iterated method.
Dance dance dance 'till we run this town!
micronesia
Profile Blog Joined July 2006
United States24753 Posts
August 07 2010 22:25 GMT
#11
On August 04 2010 12:02 overpool wrote:
Interesting problem, I'll play around with it and see if I can come up with anything.

edit: Well, I was able to enumerate every possible combination of "different" player configurations, by listing all permutations of the numbers from 1-10 and then eliminating duplicates. Each permutation of {1,2,...10} was represented as {(((p1,p2),(p3,p4)), ((p5,p6),(p7,p8))), (p9,p10)} , where {} brackets mean order matters, and parens () mean order doesn't matter. For each permutation, I sorted everything in parentheses. Then I removed duplicate permutations.

Here's a file with all different player configurations. The only problem is that there are 14175 of these combinations, so you'll need to choose a subset of these that maximizes "diversity". To do this, you'll first need to define "diversity" more concretely, e.g.; is it more important that a player's partner is not repeated, even if it means he plays the same opponents multiple times?

Wow that's really cool. Yeah I understand I'm being a bit unclear about 'diversity' but that's just because we aren't that picky. Basically, as long as everyone plays the same number of weeks (preferably spread out but not a necessity) and gets to play with each partner approximately the same number of times, and gets to play nearly as many possible opponent-combinations as possible, it's good enough! Any more particular guidelines is unnecessary from my perspective but perfectly welcome if anyone wants to impose it.

Maybe I can just pick 35 random lines from there until it meets the requirements:

1) Each person plays the same number of weeks
2) Each person plays at least twice with each partner
3) Each person does not play the same opponent pair twice in the same season

Would that be fairly easy to do?
ModeratorThere are animal crackers for people and there are people crackers for animals.
Galois
Profile Blog Joined August 2010
United States124 Posts
Last Edited: 2010-08-08 00:12:12
August 08 2010 00:04 GMT
#12
i made this for another forum because they were wanting to have a new way to hold their tournament season whilst making it as fair as possible and while taking into account forfeitted games. i think this would help you ensure the first requirement you just made. i would imagine the other two are much easier to figure out:

http://img41.imageshack.us/img41/1887/formatw.png

http://img204.imageshack.us/img204/8097/format2.png

^^ in this one up there, the second picture, at the end the comment in gray wasn't completely true. let the decision lie with the team against whom the winning team will play next.

http://img257.imageshack.us/img257/2994/format3.png

^^ at the end of this picture, replace the code i wrote there with the code in the fourth picture, below~

http://img692.imageshack.us/img692/3570/format4.png

I felt like such a baller back then when I thought all of that up completely on my own.


I'll think about the other two requirements for you.
It's gonna take a lot to drag me away from you / There's nothing that a hundred men or more could ever do
overpool
Profile Joined April 2008
United States191 Posts
August 08 2010 00:46 GMT
#13
On August 08 2010 07:25 micronesia wrote:
Show nested quote +
On August 04 2010 12:02 overpool wrote:
Interesting problem, I'll play around with it and see if I can come up with anything.

edit: Well, I was able to enumerate every possible combination of "different" player configurations, by listing all permutations of the numbers from 1-10 and then eliminating duplicates. Each permutation of {1,2,...10} was represented as {(((p1,p2),(p3,p4)), ((p5,p6),(p7,p8))), (p9,p10)} , where {} brackets mean order matters, and parens () mean order doesn't matter. For each permutation, I sorted everything in parentheses. Then I removed duplicate permutations.

Here's a file with all different player configurations. The only problem is that there are 14175 of these combinations, so you'll need to choose a subset of these that maximizes "diversity". To do this, you'll first need to define "diversity" more concretely, e.g.; is it more important that a player's partner is not repeated, even if it means he plays the same opponents multiple times?

Wow that's really cool. Yeah I understand I'm being a bit unclear about 'diversity' but that's just because we aren't that picky. Basically, as long as everyone plays the same number of weeks (preferably spread out but not a necessity) and gets to play with each partner approximately the same number of times, and gets to play nearly as many possible opponent-combinations as possible, it's good enough! Any more particular guidelines is unnecessary from my perspective but perfectly welcome if anyone wants to impose it.

Maybe I can just pick 35 random lines from there until it meets the requirements:

1) Each person plays the same number of weeks
2) Each person plays at least twice with each partner
3) Each person does not play the same opponent pair twice in the same season

Would that be fairly easy to do?

Hm, choosing randomly might not be efficient enough to be viable as only a small percent of random combinations would fulfill even the most simple of requirements. Unfortunately, generating combinations that fit such requirements is above my ability level (just a high school student ), but I'm sure there's someone on TL who could do it. For instance, Day[9] is strong in combinatorics iirc.
yay i love tl events
Galois
Profile Blog Joined August 2010
United States124 Posts
Last Edited: 2010-08-08 01:44:35
August 08 2010 00:51 GMT
#14
Okay here's what I got:

These are all of the possible partnerships:
http://img811.imageshack.us/img811/5302/sany0110.jpg


This is how to get each team onto each court an equal number of times throughout the 10 weeks:
http://img186.imageshack.us/img186/634/sany0109d.jpg


Denote a group of 4 players, say α through δ, and have cycle through the team labelled as λ over the first group of 5 weeks. Then when the 5 weeks are up as shown in the second picture, redo the process of assigning players to groups as you please.


Then you have your 35 weeks in sets of 5 repeated over and over with at least 2 repeating partnerships per player, as you want.
It's gonna take a lot to drag me away from you / There's nothing that a hundred men or more could ever do
micronesia
Profile Blog Joined July 2006
United States24753 Posts
August 08 2010 03:28 GMT
#15
On August 08 2010 09:51 Galois wrote:
Okay here's what I got:

These are all of the possible partnerships:
http://img811.imageshack.us/img811/5302/sany0110.jpg


This is how to get each team onto each court an equal number of times throughout the 10 weeks:
http://img186.imageshack.us/img186/634/sany0109d.jpg


Denote a group of 4 players, say α through δ, and have cycle through the team labelled as λ over the first group of 5 weeks. Then when the 5 weeks are up as shown in the second picture, redo the process of assigning players to groups as you please.


Then you have your 35 weeks in sets of 5 repeated over and over with at least 2 repeating partnerships per player, as you want.

Wow your notation is confusing the hell out of me... first of all I stink with greek letters and second of all the week # symbols you are using I haven't seen before in my recollection.
ModeratorThere are animal crackers for people and there are people crackers for animals.
Galois
Profile Blog Joined August 2010
United States124 Posts
Last Edited: 2010-08-08 03:44:26
August 08 2010 03:41 GMT
#16
...but I thought that being an obnoxious elitist was what this community was all about. :x

it doesn't matter what the letters or symbols are, though~



you create 5 groups of 2. each of these 5 groups are represented by the letters λ through ο. the players in these guys are chosen as you wish so long as they are selected from the list in the first picture.

the second picture shows the play schedule that you repeat. even though there are a bunch of ways to scatter about the random teams and games, the matches can be rearranged to follow the pattern in the second post to get everybody to play together twice.

then at the end of the 35 weeks everyone will have had their time playing with eachother at least twice.

this is my reasoning in the other post.



edit - i will work harder to try to illustrate more in another post. hopefully i won't die in a duel immediately after staying up all night working on this pressing issue
It's gonna take a lot to drag me away from you / There's nothing that a hundred men or more could ever do
Please log in or register to reply.
Live Events Refresh
Next event in 17m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
WinterStarcraft597
StarCraft: Brood War
GuemChi 1663
Hyuk 1291
BeSt 1038
JYJ 417
JulyZerg 284
Larva 262
actioN 228
Leta 153
PianO 74
Soma 69
[ Show more ]
Sharp 68
Shinee 41
ZergMaN 35
Shuttle 33
910 29
ToSsGirL 27
Bale 20
soO 18
Free 16
GoRush 16
Noble 15
zelot 15
Backho 15
Sacsri 13
SilentControl 6
Sea.KH 6
Dota 2
XaKoH 361
NeuroSwarm118
League of Legends
JimRising 580
C9.Mang0323
Counter-Strike
shoxiejesuss718
allub49
kRYSTAL_28
Super Smash Bros
Mew2King148
Other Games
summit1g11859
ceh9369
singsing334
crisheroes36
Organizations
Other Games
BasetradeTV78
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 13 non-featured ]
StarCraft 2
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• Azhi_Dahaki28
• iopq 4
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Lourlo1220
Upcoming Events
Replay Cast
17m
Wardi Open
3h 17m
Monday Night Weeklies
8h 17m
Replay Cast
15h 17m
Sparkling Tuna Cup
1d 1h
LiuLi Cup
1d 2h
Reynor vs Creator
Maru vs Lambo
PiGosaur Monday
1d 16h
Replay Cast
2 days
LiuLi Cup
2 days
Clem vs Rogue
SHIN vs Cyan
The PondCast
3 days
[ Show More ]
KCM Race Survival
3 days
LiuLi Cup
3 days
Scarlett vs TriGGeR
ByuN vs herO
Replay Cast
3 days
Online Event
4 days
LiuLi Cup
4 days
Serral vs Zoun
Cure vs Classic
RSL Revival
4 days
RSL Revival
5 days
LiuLi Cup
5 days
uThermal 2v2 Circuit
5 days
RSL Revival
5 days
Replay Cast
5 days
Sparkling Tuna Cup
6 days
LiuLi Cup
6 days
Replay Cast
6 days
Liquipedia Results

Completed

CSL 2025 WINTER (S19)
Rongyi Cup S3
Underdog Cup #3

Ongoing

KCM Race Survival 2026 Season 1
Nations Cup 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual
eXTREMESLAND 2025
SL Budapest Major 2025
ESL Impact League Season 8

Upcoming

Escore Tournament S1: W8
Acropolis #4
IPSL Spring 2026
HSC XXIX
uThermal 2v2 2026 Main Event
Bellum Gens Elite Stara Zagora 2026
RSL Revival: Season 4
WardiTV Winter 2026
LiuLi Cup: 2025 Grand Finals
CCT Season 3 Global Finals
FISSURE Playground #3
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
BLAST Open Spring 2026
ESL Pro League Season 23
ESL Pro League Season 23
PGL Cluj-Napoca 2026
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.