www.wikidata.de-de.nina.az
Das Springerproblem ist ein kombinatorisches Problem das darin besteht fur einen Springer auf einem leeren Schachbrett eine Route zu finden auf der dieser jedes Feld genau einmal besucht Eine mehrerer moglicher Verallgemeinerungen besteht darin zweidimensionale Bretter beliebiger Grosse n m oder gar n dimensionale Bretter zu verwenden Eine Springertour heisst geschlossen wenn das Endfeld des Springers einen Springerzug vom Startfeld entfernt ist Anderenfalls heisst der Weg offen wie im Diagramm Grafische LosungAnimierte LosungEine punktsymmetrische Losung fur eine geschlossene SpringertourDas Springerproblem ist auch unter dem Namen Rosselsprung bekannt Letzterer Ausdruck bezeichnet allerdings haufiger das Rosselsprungratsel bei dem Buchstaben oder Silben in den Feldern des Brettes eingetragen sind die in der richtigen Reihenfolge durch eine Springertour besucht einen Losungssatz oder ein Losungswort ergeben Es sei ferner angemerkt dass das Springerproblem etwas vollig anderes als das Damenproblem ist doch haben sich die beiden Bezeichnungen historisch eingeburgert Inhaltsverzeichnis 1 Geschichte 2 Mathematische Grundlagen 3 Losungsverfahren 3 1 Backtracking Verfahren 3 2 Warnsdorfregel 3 3 Teile und herrsche Verfahren 4 Schwenksches Theorem 4 1 1 Fall 4 2 2 Fall 4 3 3 Fall 5 Kombinatorik 6 Siehe auch 7 Einzelnachweise 8 Literatur 9 WeblinksGeschichte BearbeitenDas Problem findet sich in einem Sanskrit Gedicht von Rudrata aus dem 9 Jahrhundert 1 Im Westen wird es in einem Codex des 14 Jahrhunderts der Pariser Nationalbibliothek erwahnt 2 Abraham de Moivre und Pierre Remond de Montmort gaben Anfang des 18 Jahrhunderts Losungen an Der Schweizer Mathematiker Leonhard Euler behandelte das Springerproblem 1759 mathematisch Seitdem haben sich viele weitere Mathematiker unter ihnen Legendre und Vandermonde und unzahlige Hobby Tuftler mit der Materie beschaftigt In den 1950er Jahren entwickelte der Apotheker Gerard D Hooghe einen Automaten der eine Springerrundreise von einem beliebig vorgegebenen Ausgangsfeld demonstriert Die Grundlagen fur diesen Automaten stellte er 1962 in dem Buch Les Secrets du Cavalier Le Probleme d Euler dar Sein sogenannter t Zeepaard wurde 1960 wahrend der Schacholympiade in Leipzig offentlich gezeigt Mathematische Grundlagen Bearbeiten nbsp Darstellung des Springerproblems fur n 8 displaystyle n 8 nbsp als Instanz des Hamiltonkreisproblems In den jedem Knoten steht die Anzahl der benachbarten Knoten Das Springerproblem ist ein Spezialfall des Hamiltonpfadproblems eines bekannten Problems der Graphentheorie bei dem in einem Graphen alle Knoten genau einmal besucht werden mussen Wenn von dem letzten Feld der Zugfolge das erste Feld erreicht werden kann hat man einen Hamiltonkreis gefunden Das Hamiltonpfadproblem ist NP vollstandig ein effizienter Losungsalgorithmus ist also nicht bekannt und existiert wie allgemein vermutet wird auch nicht Dagegen existieren fur das Springerproblem effiziente Algorithmen die unten vorgestellt werden Losungsverfahren Bearbeiten nbsp Beispiele fur offene Springertouren G Mann 120 neue Rosselsprunge 1859 nbsp Beispiele fur geschlossene Springertouren G Mann 120 neue Rosselsprunge 1859 Backtracking Verfahren Bearbeiten Ein erster Ansatz fur einen Algorithmus besteht darin ein einfaches Backtracking Verfahren anzuwenden Hierbei wahlt man eine willkurliche Route und nimmt wenn man in einer Sackgasse angelangt ist den jeweils letzten Zug zuruck und wahlt stattdessen einen alternativen Zug aus Dieser Algorithmus findet auf jeden Fall eine Losung sofern eine existiert er ist jedoch sehr langsam Auf grosseren Brettern kann ein Mensch durch geschicktes Ausprobieren innerhalb viel kurzerer Zeit eine Losung finden als dass der einfache Backtracking Algorithmus zum Ziel kommt Das folgende Computerprogramm in der Programmiersprache C findet eine Losung des Springerproblem mit Hilfe eines rekursiven Algorithmus der Backtracking verwendet Wenn eine gefundene Tour alle n 2 8 2 64 displaystyle n 2 8 2 64 nbsp Felder des Schachbretts durchlauft wird die Losung ausgegeben und das Programm beendet 3 include lt iostream gt include lt sstream gt using namespace std const int n 8 Konstante fur die Anzahl der Felder pro Seite Gibt die Zuge der Springertour auf der Konsole aus string knightsTourToString int knightsTour n n stringstream text int weight 0 for int i 0 i lt n i for int j 0 j lt n j text lt lt knightsTour i j lt lt t text lt lt endl return text str Typumwandlung von stringstream nach string Diese rekursive Methode bestimmt eine Springertour und gibt true zuruck wenn gefunden sonst false bool getKnightsTourRecursive int x int y int moveNumber int knightsTour n n int xMove n int yMove n if moveNumber n n Wenn alle Felder besucht sind wird true zuruckgegeben return true Pruft die moglichen Zuge des Springers fur das aktuelle Feld mit den Koordinaten x y for int i 0 i lt 8 i Bestimmt die Koordinaten des nachsten Felds int nextX x xMove i int nextY y yMove i if nextX gt 0 amp amp nextX lt n amp amp nextY gt 0 amp amp nextY lt n amp amp knightsTour nextX nextY 1 Wenn das nachste Feld innerhalb des Schachbretts liegt und noch nicht besucht wurde knightsTour nextX nextY moveNumber Setzt die Zugnummer fur das nachste Feld if getKnightsTourRecursive nextX nextY moveNumber 1 knightsTour xMove yMove Rekursiver Aufruf der Methode fur den nachsten Zug return true Wenn Springertour gefunden else knightsTour nextX nextY 1 Wenn keine Springertour gefunden wurde wird der Zug ruckgangig gemacht return false Wenn keine Springertour gefunden Diese Methode bestimmt eine Springertour mithilfe von Backtracking und gibt true zuruck wenn vorhanden sonst false bool getKnightsTour int knightsTour n n Initialisiert die Felder des Schachbretts for int i 0 i lt n i Diese beiden for Schleifen durchlaufen alle Felder des Schachbretts for int j 0 j lt n j knightsTour i j 1 Diese Arrays definieren die moglichen Zuge des Springers int xMoves 8 2 1 1 2 2 1 1 2 Array fur die Anderung der x Koordinate int yMoves 8 1 2 2 1 1 2 2 1 Array fur die Anderung der y Koordinate knightsTour 0 0 0 Initialisiert das Startfeld links oben return getKnightsTourRecursive 0 0 1 knightsTour xMoves yMoves Aufruf der Methode Hauptmethode die das Programm ausfuhrt int main int knightsTour n n Deklariert ein zweidimensionales Array fur die Felder des Schachbretts if getKnightsTour knightsTour Aufruf der Methode cout lt lt knightsTourToString knightsTour Ausgabe auf der Konsole else cout lt lt Es gibt keine Springertour lt lt endl Ausgabe auf der Konsole Warnsdorfregel Bearbeiten Im Jahr 1823 schlug H C von Warnsdorf eine heuristische Regel vor die das Finden einer Losung stark vereinfacht Nach der Warnsdorfregel zieht der Springer immer auf das Feld von dem aus er fur seinen nachsten Zug am wenigsten freie d h noch nicht besuchte Felder zur Verfugung hat Diese Regel ist unmittelbar einleuchtend sie verhindert beispielsweise dass eines der beiden Felder die der Springer von einer Ecke aus erreichen kann fruhzeitig besucht wird so dass er spater nicht mehr aus der Ecke entkommen konnte Die Warnsdorfsregel gibt keine Anweisung was zu tun ist wenn es mehrere Felder gibt von denen es gleich wenige im nachsten Zug erreichbare Felder gibt Die Warnsdorfregel kann auch wenn eine Losung existiert nicht garantieren dass diese gefunden wird und in der Tat gerat der Springer fur grosse Bretter zunehmend oft in eine Sackgasse Selbst auf einem Schachbrett n 8 kann der Algorithmus scheitern wenn man unter mehreren moglichen Alternativen die falschen auswahlt dies ist allerdings sehr unwahrscheinlich Hier ansetzend wurden verbesserte Heuristiken entwickelt unter anderem ein Algorithmus von Squirrel der recht komplizierte Entscheidungsregeln fur den Fall mehrerer nach der Warnsdorfregel gleichwertiger Alternativen angibt jedoch anscheinend fur alle Bretter grosser als n 75 in linearer Zeit eine Losung findet der formale Korrektheitsbeweis ist bisher nur fur n 7 mod 8 gefuhrt Die Verbindung von Warnsdorfregel und Backtracking Verfahren ist moglich fuhrt aber bei grossen Brettern wiederum zu exponentiell anwachsender Laufzeit Teile und herrsche Verfahren Bearbeiten Im Rahmen einer Arbeit fur Jugend forscht entwickelte eine Gruppe verschiedene Algorithmen mit denen fur beliebig grosse n n displaystyle n times n nbsp Felder eine Losung in einer Laufzeitkomplexitat von O n 2 displaystyle mathcal O n 2 nbsp gefunden werden kann In ihrem 1994 veroffentlichten Aufsatz 4 stellten sie ein Verfahren vor das Teile und herrsche Verfahren bei dem sie beliebige Schachbretter in kleinere Teilrechtecke mit Grossen von 5 5 bis 9 9 aufteilen fur die spezielle Losungen existieren Schwenksches Theorem BearbeitenFur jedes m n displaystyle m times n nbsp Brett mit m n displaystyle m leq n nbsp n gt 1 displaystyle n gt 1 nbsp gibt es eine geschlossene Springertour es sei denn einer der folgenden drei Falle liegt vor 1 m displaystyle m nbsp und n displaystyle n nbsp sind beide ungerade 2 m 1 2 4 displaystyle m 1 2 4 nbsp 3 m 3 displaystyle m 3 nbsp und n 4 6 8 displaystyle n 4 6 8 nbsp Ein Beweis lasst sich anhand der in der oben genannten Jugend forscht Arbeit dargestellten Algorithmen herleiten 5 Unter den genannten Bedingungen konnen beliebige Start und Zielfelder gewahlt werden also auch solche bei denen von dem Zielfeld wieder auf das Startfeld gesprungen und damit die Springertour geschlossen werden kann 1 Fall Bearbeiten Man stelle sich vor die Felder seien schachbrettartig schwarzweiss gefarbt Start und Endfeld mussen bei einem geschlossenen Weg verschiedene Farben haben Da der Springer nach jedem Zug seine Feldfarbe wechselt muss er auf seinem Weg genauso viel weisse wie schwarze Felder uberschreiten also eine gerade Zahl an Feldern 2 Fall Bearbeiten Ist m 1 displaystyle m 1 nbsp oder m 2 displaystyle m 2 nbsp so kann der Springer offensichtlich nicht jedes Feld erreichen es sei denn im trivialen Fall des 1 1 Bretts Ist m 4 displaystyle m 4 nbsp so sei A 1 displaystyle A 1 nbsp die Menge der weissen Felder B 1 displaystyle B 1 nbsp die Menge der schwarzen Felder A 2 displaystyle A 2 nbsp die Menge der Randfelder an den beiden gegenuberliegenden langeren Brettkanten und B 2 displaystyle B 2 nbsp die Menge aller Felder die nicht zu A 2 displaystyle A 2 nbsp gehorten sprich B 2 A 2 displaystyle B 2 complement A 2 nbsp B 2 displaystyle B 2 nbsp hat gleich viele Elemente wie A 2 displaystyle A 2 nbsp In jedem Zug andert der Springer die Feldfarbe und die Feldart zwischen A 2 displaystyle A 2 nbsp und B 2 displaystyle B 2 nbsp Letzteres folgt aus folgender Uberlegung Von einem Randfeld Menge A 2 displaystyle A 2 nbsp kann der Springer nur auf ein Feld in der Mitte gelangen Menge B 2 displaystyle B 2 nbsp Wurde der Springer nun einen Zug innerhalb von B 2 displaystyle B 2 nbsp ausfuhren was moglich ist wurde er mehr Felder von B 2 displaystyle B 2 nbsp besuchen als von A 2 displaystyle A 2 nbsp was zu keiner Losung fuhren kann weil die beiden Mengen gleich viele Felder umfassen Ohne Einschrankung ist das Anfangsfeld ein Element aus A 1 displaystyle A 1 nbsp und A 2 displaystyle A 2 nbsp Vertausche hierfur notfalls die Rollen von A 1 displaystyle A 1 nbsp und B 1 displaystyle B 1 nbsp und die Rollen von A 2 displaystyle A 2 nbsp und B 2 displaystyle B 2 nbsp Im nachsten Zug ist die Feldfarbe Element aus B 1 displaystyle B 1 nbsp und B 2 displaystyle B 2 nbsp dann wieder aus A 1 displaystyle A 1 nbsp und A 2 displaystyle A 2 nbsp und so weiter Dies zeigt zum einen dass A 1 displaystyle A 1 nbsp die gleichen Elemente wie A 2 displaystyle A 2 nbsp hat und zum anderen dass B 1 displaystyle B 1 nbsp die gleichen Elemente wie B 2 displaystyle B 2 nbsp hat somit A 1 A 2 displaystyle A 1 A 2 nbsp und B 1 B 2 displaystyle B 1 B 2 nbsp was offensichtlich nicht stimmt 3 Fall Bearbeiten Auf den Brettern 3 4 3 6 und 3 8 lasst sich kein geschlossener Weg finden Wege fur die Brettgrossen 3 10 3 12 3 14 usw sind moglich wobei sich das Losungsmuster wiederholt Kombinatorik BearbeitenDie Anzahl der Losungen fur ein n n displaystyle n times n nbsp Schachbrett steigt schneller als exponentiell mit n displaystyle n nbsp Fur n 8 displaystyle n leq 8 nbsp ist die Anzahl der moglichen Touren bekannt 6 7 Anzahl der moglichen Springertourenn alle gerichteten Springertouren geschlossene ungerichtete Springertouren1 1 02 0 03 0 04 0 05 1728 06 6637920 98627 165575218320 08 19591828170979904 13267364410532Auf Brettern mit einer ungeraden Anzahl Feldern gibt es aus Paritatsgrunden keine geschlossene Tour siehe 1 Fall von Schwenksches Theorem Siehe auch BearbeitenLangster kreuzungsfreier Springerpfad DamenproblemEinzelnachweise Bearbeiten Bill Wall Earliest chess books and references Memento vom 21 Januar 2012 im Internet Archive Wilhelm Ahrens Mathematische Unterhaltungen und Spiele Teubner 1901 S 165 Er zitiert A von der Linde Geschichte und Literatur des Schachspiels Berlin 1874 Band 2 S 101 Siehe auch W W Rouse Ball Mathematical recreations and essays 4 Auflage Macmillan 1905 S 158ff Online bei Gutenberg GeeksforGeeks The Knight s tour problem Backtracking 1 Axel Conrad Tanja Hindrichs Hussein Morsy Ingo Wegener Solution of the Knight s Hamiltonian Path Problem on Chessboards Discrete Applied Mathematics Volume 50 Issue 2 May 1994 Pages 125 134 Eine kurze Reise durch die Welt des Springers Folge A165134 in OEIS Wolfram MathWorld Knight GraphLiteratur BearbeitenDouglas Squirrel Paul Cull A Warnsdorff Rule Algorithm for Knight s Tours on Square Chessboards Oregon State REU Program 1996 Beschreibung einer Erweiterung der Warnsdorfregel die das Springerproblem in linearer Zeit lost Allen J Schwenk Which Rectangular Chessboards Have a Knight s Tour Mathematics Magazine 64 1991 p 325 332 doi 10 1080 0025570X 1991 11977627Weblinks Bearbeiten nbsp Commons Knight s Tours Sammlung von Bildern Videos und Audiodateien Ausfuhrliche Seite mit einer optimalen Losung Seite zur Warnsdorfregel inklusive Applet zum Ausprobieren Memento vom 2 August 2012 im Internet Archive Abgerufen von https de wikipedia org w index php title Springerproblem amp oldid 234593476