+ Antworten
Ergebnis 1 bis 6 von 6

Algorithmus für Spielplan....

Eine Diskussion über Algorithmus für Spielplan.... im Forum Technik Ecke. Teil des Off Topic-Bereichs; Hey, ich hab mir jetzt schon nen paar Gedanken gemacht zu einem Algorithmus mit welchem man einen Spielplan für beliebig ...

  1. #1

    Algorithmus für Spielplan....

    Hey, ich hab mir jetzt schon nen paar Gedanken gemacht zu einem Algorithmus mit welchem man einen Spielplan für beliebig viele Mannschaften erstellen kann....

    im Moment sieht mein Programm so aus, dass ich die Spiele so erstelle:

    ich nehme Mannschaft 1 und erstelle Spiele von 1 gegen 2 - 1 gegen n dann nehme ich Mannschaft 2 und erstelle Spiele von 2 gegen 3 - 2 gegen n etc. das klappt soweit auch sehr gut, diese ganzen Spiele speicher ich in einer Liste ab und würfel sie per Randomfunktion durcheinander. Leider ist das Problem hierbei, dass ab und zu eine Mannschaft 3x hintereinander spielt und wir immer etwas improvisiert haben...

    nun suche ich ne Lösung wie ich diese 3 Spiele hintereinander wegbekomme .... ich hab mir schon verschiedene Sachen ausgedacht aber ich kommt immer in eine Sackgasse.... obwohl eigentl. gar nicht so schwer sein könnte ... aber ich finde keine Sachen wodraus ich nen Algorithmus bauen könnte.... wisst ihr da was?....

    zur Info es kann auch vorgekommen, dass die Mannschaftsanzahl ungerade is ...

    Meine Lösungsansätze bisher waren ...
    z.b.

    2 Listen -> mit 1 - n Mannschaften Problem hierbei war, dass man irgendwenn wenn man sie gleichmäßig mischt 1-4 und 4-1 bekommt... nach genau der Hälfte der Spieltage....

    dann dass ich die vorhandene Liste nach irgendwelchen Zahlen tausche aber ich hab dort keine kontinuierliche Veränderung gesehn.....

    hoffe ihr wisst da was
    WICHTIG: Rückrunde wird automatisch erstellt, die soll nicht dabei sein, ich drehe dann einfach alle Spiele der Vorrunde um das is kein Problem

  2. #2
    Ich würde dich bitten den zu starken Gebrauch von "..."-Zeichenfolgen etwas einzuschrenken - es verwirrt zumindest mich.

    Du möchtest also eine pseudo-Zufallsfunktion, das ist generell kein Problem.
    Mit welchem Programm oder welcher Programmiersprache erstellst du denn deinen Spielplan?

  3. #3
    ich programmiere in JAVA. Ich erklär dir nochmal kurz was ich eigentl. will.

    Also ich habe n Mannschaften, wobei jeder einmal gegen jede Mannschaft spielen soll, dass klappt auch soweit in dem ich wie oben beschrieben vorgehe. Problem hierbei ist, dass es dann ab und zu Reihnfolgen gibt, wo zum Beispiel bei 6 versch. Mannschaften eine Mannschaft 2 oder 3x hintereinander spielt, was ja nicht wirklich schön ist. Hoffe jetzt is alles klar soweit

    Ps. ich könnte zwar die ganzen Spiele im Nachhinein prüfen und tauschen lassen, aber dann will ich das lieber schon bei der Erstellung abfangen bloss habe ich bisher noch keinen geeigneten Algorithmus dafür gefunden, habe schon alles auf Papier ausprobiert...

  4. #4
    Zunächst benötigst du eine Mindestanzahl an Teams, sofern kein Team mehrfach hintereinander spielen darf.
    Angenommen es gebe die Teams A, B, C und D, dann erhalten wir nach der zweiten Bestimmung der Paarungen ohne Beschränkung der Allgemeinheit die Paarungen (A,B) und (C,D).
    Nun sind nur noch die Paarungen (A,C), (A,D), (B,C) und (B,D) übrig, jedoch ist jeweils immer eine der zuletzt beteiligten Manschaften enthalten.
    Sofern die Anzahl der Teams jedoch die Zahl vier übersteigt, sollte es möglich sein eine Lösung zu finden.

    Des Weiteren nützt es auch wenig, nach jeder Paarung die zuletzt beteiligten Manschaften bei der zufälligen Bestimmung der nächsten Paarung auszuschließen.
    Angenommen es gebe die Teams A, B, C, D und E, dann erhalten wir nach der neunten pseudo-zufälligen Bestimmung der Paarungen die Paarungen (A,B), (C,D), (A,E), (B,D), (A,C), (D,E), (B,C), (A,D), (B,E).
    Nun ist nur noch die Paarung (C,E) übrig, jedoch würde dann Team E zweimal hintereinander spielen.

    Jedoch gibt es die Anordnungen der Paarungen (A,B), (C,D), (A,E), (B,C), (D,E), (A,C), (B,E), (A,D), (C,E) und (B,D), welche die Bedingung, dass kein Team mehrfach hintereinander spielen darf, erfüllt.

    Als Algorithmus würde ich daher empfehlen, die Teams zunächst zufällig anzuordnen und dann bestimme Paarungen zu nehmen, welche die obige Bedingung erfüllen.
    Man erfüllt diese Bedingung generell immer, wenn man die Paarungen zunächst Anhand einer bestimmten "Entfernung" bestimmt und nachdem alle Möglichkeiten erschöpft wurden, diese entsprechend erhöht.
    Da der Begriff "Entfernung" vergleichsweise schwammig formuliert ist, möchte ich ihn anhand eines Beispiels mit sechs Teams erklären.

    Angenommen es gebe die Teams A, B, C, D, E und F, dann haben die Paarung (A,B), (B,C), (C,D), (D,E), (E,F) und (F,A) die "Entfernung" eins, die Paarungen (A,C), (B,D), (C,E), (D,F), (E,A) und (F,B) die "Entfernung" zwei, die Paarungen (A,D), (B,E), (C,F), (D,A), (E,B) und (F,C) die "Entfernung" drei, usw.

    Zum Initialisieren des muss man zunächst die möglichen Paarungen kennen.
    Bei den hier angenommen Teams gibt es die zulässigen Paarungen:
    (A,B), (A,C), (A,D), (A,E), (A,F),
    (B,C), (B,D), (B,E), (B,F),
    (C,D), (C,E), (C,F),
    (D,E), (D,F),
    (E,F)

    Nun ordnet man zunächst sämtliche Paarungen mit einer "Entfernung" von eins entsprechend der Bedingung und danach die Paarungen mit einer "Entfernung" von zwei, usw.
    So erhällt man Anordnungen, welche deine Bedingung erfüllen.

  5. #5
    danke für deine Zeit und Antwort.... werde mir das gleich nochmal genauer anschauen ... und das mit den mindest Teams is klar, stellt auch kein Problem dar
    sehr gute Idee mit der Entfernung .... wär ich so jetzt nicht drauf gekommen

    danke also hast auch nen + bekommen :P

  6. #6
    mm... wobei wenn ich gerade dadrüber nachdenke eigentl. müsste das alles noch etwas erweitert werden, dass alle ungefähr gleich viele Spiele haben ... also zur gleichen Zeit aber das hatte ich ja net beschrieben aber da wird mir schon was einfallen

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •