Das Kumite-Problem

Tuesday, 24 February 2009, 13:45 von Blackflash

Gelegentlich findet man Probleme im realen Leben, die man mithilfe von Algorithmen lösen kann. Ich habe ein solches gefunden: Das Kumite-Problem. Nach einer kurzen Problembeschreibung werde ich Lösungen anbieten und skizzieren, weshalb der Algorithmus korrekt ist. Sollte jemand Fehler finden oder Fragen haben: Ich bin für Feedback aller Art offen.

Trainiert man Kumite (Partnerkampf) in einer größeren Gruppe, möchte man mit allen kämpfen. Um dieses zu ermöglichen und dabei genügend Komfort zu bieten, ist ein einfacher Algorithmus notwendig, der kaum oder keine Einmischungen von außen benötigt. Bisher wurde es meist so gehandhabt, dass jeder sich um eine Position gegen den Uhrzeigersinn weiterbewegt, wie folgendes Beispiel illustriert, wobei eine Ziffer einem Kämpfer entspricht:


12 -> 24 -> 43 -> 31 -> 12
34    13    21    42    34

Die untereinander stehenden Ziffern kämpfen jeweils miteinander, wobei die Reihenfolge der Partner irrelevant ist, d.h. x vs. y ist äquivalent zu y vs. x. Bei genauerm Hinsehen bemerkt man, dass z.B. die 1 nie mit der 4 kämpft und dies nach dem Algorithmus nie tun wird, da man nach viermaligem Ausführen bei den ursprünglichen Paarungen endet. Ein anderer Fall tritt ein, wenn die Gruppe aus einer ungeraden Anzahl von Kämpfern besteht. Sei n, die Anzahl der Gruppenmitglieder, gleich 5, dann ergibt sich folgender Ablauf.


1. Lauf
123
45

2. Lauf
235
14

3. Lauf
354
21

4. Lauf
541
32

5. Lauf
412
53

6. Lauf
123
45

Nach fünfmaligen Ausführen des Algorithmus gelangt man zu den ursprünglichen Begegnungen, wobei jeder mit jedem gekämpft hat. Überträgt man diesen Fall auf diejenigen Fälle, in denen n gerade ist, ändert man den Algorithmus leicht ab: Ein einziger Kämpfer, der sich in einer Ecke der Anordnung befindet, bleibt immer auf seiner Position, er befindet sich an der sog. Fixposition. Im Fall für ungerade n entspricht dieser Kämpfer dem nicht-existierenden Kämpfer, womit sich beide Fälle auf einen Fall reduzieren lassen. Nachfolgend nochmal das Beispiel für n = 4 und der Annahme, dass sich die Fixposition unten rechts befindet, mit dem modifizierten Algorithmus:


12 -> 23 -> 31 -> 12
34    14    24    34

Offensichtlich hat jeder mit jedem gekämpft und nach drei Schritten erhält man die ursprüngliche Anordnung.

Um ein Gefühl dafür zu geben, weshalb der Algorithmus korrekt ist, werde ich den Beweis skizzieren. Es ist dabei irrelevant, in welcher Ecke sich die Fixposition befindet, da man jede Anordnung in andere Anordnungen umformen kann, in denen sich die Fixposition an einer anderen Stelle befindet.
Der Begriff "Schritt" wird mit der Ausführung des Algorithmus gleichgesetzt, d.h. zwei Schritte entspricht drei Anordnungen (Ursprungsanordnung und den beiden Ergebnissen der Ausführung).
Außerdem ist es wesentlich, dass man nach n-1 Schritten zur ursprünglichen Anordnung gelangt. Dass dies stimmt, lässt sich leicht überprüfen: Jeder Kämpfer, der nicht auf der Fixposition steht, legt n-2-mal genau eine Position und einmal genau zwei Positionen (beim Überspringen der Fixposition) zurück, dadurch bewegt sich jeder dieser Kämpfer um genau n Schritte und steht nach n-1-maligem Ausführen auf seiner ursprünglichen Position. Der Kämpfer auf der Fixposition bleibt lt. Definition immer auf seiner Position, womit obige Aussage bewiesen wäre.
Da man nach n-1 Schritten zur Ursprungsanordnung gelangt, genügt es zu zeigen, dass innerhalb von n-1 Schritten keine Paarung mehrfach gewählt wurde. Denn würde eine Paarung mehrfach auftauchen, könnte ein Partner nicht alle anderen Partner gewählt haben, da es n-1 andere Kämpfer gibt und man bei jedem Schritt nur einen Partner wählen kann. Beim Kämpfer auf der Fixposition ist dies offensichtlich, denn jeder Kämpfer betritt jedes Feld (bis auf die Fixposition) genau einmal. Dass dieser Fall nicht für die restlichen Kämpfer eintritt, lässt sich indirekt beweisen: Angenommen, es gibt eine Paarung, die sich innerhalb von n-1 Schritten wiederholt. Da sich die Reihenfolge der (sich bewegenden) Kämpfer nicht ändert, müssen die Partner die Seiten wechseln, sodass derjenige, der beim ersten Treffen in der oberen Reihe stand, nun in der unteren steht und vice versa. Da sich die Fixposition auf einer Ecke befindet, legt genau ein Partner einen Schritt mehr zurück als der andere. Dieser Schritt wird erst ausgeglichen, wenn der zurückliegende Partner auch diese Ecke überspringt. Dies passiert allerdings erst nach n Schritten, also nach n-maligem Ausführen des Algorithmus. Damit ist die Annahme widerlegt und die Behauptung bewiesen. Übrigens folgt aus dieser Argumentation die Bedingung, dass sich eine Fixposition auf einer Ecke befinden muss. Ein Gegenbeispiel lässt sich sehr leicht konstruieren (n=6 und Fixposition 2):


1. Lauf
123
456

2. Lauf
326
145

3. Lauf
625
314

4. Lauf
524
631

5. Lauf
421
563

6. Lauf
123
456

Die Begenung 1 gegen 4 taucht in diesem Beispiel zweimal auf.

Kommentare


Kommentiere!

Your Name:


Your Email:


Your URL:


Spam Prevention:
Enter the text above into the box below.
If you are unable to read it, refresh the page.


Your Comment: