Hej!
Lad os sige, at vi skal planlægge en skakturnering med N spillere,
hvor alle spillere skal møde hinanden netop en gang. Er f.eks. N=4,
kunne vi have følgende rundelægning
4 2 3
3 1 4
2 4 1
1 3 2,
hvor første række betyder, at spiller 1 i første runde møder
spiller 4, i anden runde spiller 2 og i sidste runde spiller 3.
Tilsvarende for de følgende rækker.
En simpel måde at lægge runder på (for N lige) er beskrevet på:
http://en.wikipedia.org/wiki/Round-robin_tournament
Den går i al sin enkelthed ud på, at man i eksemplet ovenfor skriver
spillerne op på følgende måde:
1 2
4 3.
Heraf læser man, at 1 møder 4, og at 2 møder 3. Man holder nu
spiller 1 fast og roterer de øvrige med/mod uret. Mod uret giver det
følgende:
1 3
2 4
1 4
3 2.
Vi får på denne måde rundelægningen som i eksemplet.
Jeg har implementeret algoritmen i Java, og for N=6 får man følgende:
6 2 3 4 5
5 1 4 6 3
4 6 1 5 2
3 5 2 1 6
2 4 6 3 1
1 3 5 2 4.
Her er "startopstillingen" givet ved
1 2 3
6 5 4.
Spiller 1 holdes fast, og der roteres mod uret.
Der findes tilsyneladende andre måder at planlægge sådan en
turnering på. Kigger man f.eks. på side 176 i "Skakhåndbogen" (se
http://www.dsu.dk/dsu-dok/skakhand/2005/shb-14-0.pdf), vil man opdage,
at rundelægningen for 4 spillere passer med den ovenfor, men for 6
spillere er resultatet
6 2 3 4 5
5 1 6 3 4
4 5 1 2 6
3 6 5 1 2
2 3 4 6 1
1 4 2 5 3.
Rundelægningerne ser også ud til at afvige for N>6. Er der nogen, der
kender andre algoritmer? Jeg har forsøgt at modificere algoritmen fra
Wikipedia ved bl.a. at ændre den spiller, der holdes fast, men jeg har
ikke haft heldet med mig.
Med venlig hilsen
Michael Knudsen