Ich erstelle ein Puzzle-Spiel, das, während für einfache Ebenen von Hand bespielbar ist, soll durch Computer-Programme für härtere gelöst werden. Das Puzzle ist eine Flutfüllung auf einem sechseckigen Brett. Sie können einen Prototyp here versuchen.Algorithmus zum Erstellen von Hex Flood Puzzle
alt text http://www.hacker.org/flood/screen.png
Hier ist, wie das Puzzle funktioniert: durch eine Farbe aus der Top-Auswahl, können Sie eine Flutfüllung ausgehend von der oberen linken Kachel ausführen. Dies wandelt die Platine progressiv in eine feste Farbe um. Die Herausforderung besteht darin, dies in einer bestimmten Anzahl von Zügen zu tun.
Ich habe mehrere ähnliche Rätsel erstellt, und der Schlüssel ist, einen Algorithmus zu verwenden, der Boards generiert, die schwer zu lösen sind, ohne zu wissen, wie sie erstellt wurden. Zum Beispiel könnten wir hier ein Board produzieren, indem wir die Flutfüllung umkehren: Wir arbeiten rückwärts von einem festen Board, bis es unbelastet ist. Wir wissen, wie viele Schritte erforderlich waren, und können dies als untere Grenze für eine Lösung festlegen.
Das Problem, mit dem ich konfrontiert bin, ist, dass, wenn ich diesen Ansatz versuche, meine obere Grenze viel zu hoch ist. Es wird trivial, das Puzzle innerhalb dieser Anzahl von Zügen zu lösen, selbst wenn man sich zufällig bewegt.
Ein Ansatz, bei dem es sich nicht um eine Lösung handelt, ist die Erzeugung einer zufälligen Karte, die dann optimal gelöst und als Ziel festgelegt wird. Der Punkt ist, ein Puzzle zu erstellen, wo es optimal zu lösen ist NP Zeit oder zumindest eine harte P.
Also was ich suche ist ein Algorithmus, der extrem harte Boards erzeugen kann, wo sie zu lösen, wenn sie größer werden, wird zu einer ernsthaften Herausforderung.
Bitte verschieben Sie den Satz "Das Problem, ich stehe ..." an den Anfang eines Absatzes. Am Ende des längsten Absatzes geht es verloren. –
Sieht aus wie ein cooles Puzzle :) – yairchu
Es ist zwei Jahre später, können Sie uns Ihre aktuellen Gedanken schreiben? – smci