Forum: Offtopic Solitär - Wege zur Lösung


von D. I. (Gast)


Angehängte Dateien:

Lesenswert?

Ich beschäftige mich gerade mit der Variante auf dem Bild und mir stellt 
sich die Frage wieviele unterschiedliche Lösungen es gibt ohne die, die 
durch Symmetrie (Spiegelung/Rotation) entstehen.
Ich hab mir ein Programm geschrieben, welches allerdings auf einer 
Annahme basiert die ich noch nicht verifizieren kann und dieses spuckt 
nach knapp 2 Minuten als Antwort 24 aus. Nimmt man symmetrische dazu 
sind es ca. 80 Billiarden.

Kann die 24 jemand (- zu Yalu rüberschiel - ;) ) veri-/falsifizieren?

von Markus B. (mbo_ap)


Lesenswert?

Muss man dein Bild in Zusammenhang mit Solitär verstehen? Oder gehts da 
nicht um das Windows Spiel?

von Vlad T. (vlad_tepesch)


Lesenswert?

Ich kenn das Spiel unter dem Namen Solo-Halma.
rein vom Gefühl her kommt mir 24 aber arg wenig vor.

von D. I. (Gast)


Lesenswert?

Markus B. schrieb:
> Muss man dein Bild in Zusammenhang mit Solitär verstehen? Oder gehts da
> nicht um das Windows Spiel?

http://de.wikipedia.org/wiki/Solit%C3%A4r_%28Brettspiel%29

Vlad Tepesch schrieb:
> Ich kenn das Spiel unter dem Namen Solo-Halma.
> rein vom Gefühl her kommt mir 24 aber arg wenig vor.

Dachte ich auch erst, beim französischen Brett sinds aber je nach 
Startposition aber auch nur 280. Fürs englische mit obiger 
Startkonfiguration habe ich jedoch keinen Wert im Netz gefunden und 
deswegen habe ich selbst Hand angelegt.

von D. I. (Gast)


Lesenswert?

Zu gutes Wetter oder zu schwierig?

von Guido C. (guidoanalog)


Lesenswert?

Hallo,

in der c't Ausgabe 7/1999 gab es den Artikel "Spielverderber - Solitaire 
mit dem Computer lösen". Dieser Artikel behandelt die von Dir angegebene 
Variante. Kennst Du diesen Artikel?

Mit freundlichen Grüßen
Guido

von D. I. (Gast)


Lesenswert?

Guido C. schrieb:
> Kennst Du diesen Artikel?

Nein, danke für den Tipp, mal sehen ob er die 2,50€ wert ist...

von D. I. (Gast)


Lesenswert?

Der Artikel ist tatsächlich nicht schlecht, er beantwortet zwar meine 
Frage nicht, liefert aber wertvollen Input die meine Berechnung 
beschleunigt.

von Yalu X. (yalu) (Moderator)


Lesenswert?

D. I. schrieb:
> Zu gutes Wetter oder zu schwierig?

Ersteres, wenn man "gutes" durch "heißes" ersetzt. Weder Computer noch 
Hirn sind für Temperaturen über 30 °C optimiert :)

Ich hätte eigentlich gedacht, das Spiel sei auf Grund seiner Popularität 
schon komplett analysiert. So findet man bspw. Informationen über die 
Anzahl der Spielstellungen insgesamt oder nach dem n-ten Zug:

http://www.durangobill.com/Peg33.html

Über die Anzahl der möglichen Lösungswege habe ich auf die Schnelle auch 
nichts gefunden. Man kann jetzt entweder weiter googeln, ein 
Scuhprogramm schreiben oder eines der im Web verfügbaren Programme so 
anpassen, dass es die gewünschte Information ausgibt. Der obige Link 
enthält am Ende zwei C-Programme (eins mit Tiefe- und eins mit 
Breitensuche). Vielleicht stellen diese eine brauchbare Basis dar.

von D. I. (Gast)


Lesenswert?

Yalu X. schrieb:
> D. I. schrieb:
>> Zu gutes Wetter oder zu schwierig?
>
> Ersteres, wenn man "gutes" durch "heißes" ersetzt. Weder Computer noch
> Hirn sind für Temperaturen über 30 °C optimiert :)

In der Tat.

>
> Ich hätte eigentlich gedacht, das Spiel sei auf Grund seiner Popularität
> schon komplett analysiert. So findet man bspw. Informationen über die
> Anzahl der Spielstellungen insgesamt oder nach dem n-ten Zug:
>
> http://www.durangobill.com/Peg33.html

Die Seite habe ich auch gefunden, mit der konnte ich immerhin einige 
Dinge verifizieren.

>
> Über die Anzahl der möglichen Lösungswege habe ich auf die Schnelle auch
> nichts gefunden. Man kann jetzt entweder weiter googeln, ein

Mit Google bin ich mittlerweile am Ende.

> Scuhprogramm schreiben oder eines der im Web verfügbaren Programme so
> anpassen, dass es die gewünschte Information ausgibt. Der obige Link
> enthält am Ende zwei C-Programme (eins mit Tiefe- und eins mit
> Breitensuche). Vielleicht stellen diese eine brauchbare Basis dar.

Die berechnen eben nur die Gesamtzahl aller Lösungen, was ja auch 
mithilfe von DP sehr einfach ist, da wird noch keine Symmetrie 
berücksichtigt.

Um genau zu sein interessiert mich nicht nur die Anzahl, sondern auch 
die tatsächlichen Wege und das ist ziemlich knifflig. Breitensuche und 
Wege merken scheidet aus, explodiert der Speicher. Also bleibt nur 
Tiefensuche und sobald man einen Weg gefunden hat kann man ihn direkt 
ausgeben. Tiefensuche und Symmetrieerkennung gemeinsam scheint nicht 
ohne.

Edit: Wie ich gerade sehe ist der Lauf meines überarbeiteten Programms 
von dem ich mir relativ sicher bin, dass es stimmt, fertig nach 10 
Minuten Rechenzeit. Es sind scheinbar wirklich 24 Wege.

von Dumdi D. (dumdidum)


Lesenswert?

D. I. schrieb:
> als Antwort 24 aus. Nimmt man symmetrische dazu
> sind es ca. 80 Billiarden.

Ist die Symmetriegruppe da nicht etwas zu gross? Sollten nicht die 
Anzahl der Lösungen sich nur so um den Faktor 8 vergrößern?

von D. I. (Gast)


Lesenswert?

dumdi dum schrieb:
> D. I. schrieb:
>> als Antwort 24 aus. Nimmt man symmetrische dazu
>> sind es ca. 80 Billiarden.
>
> Ist die Symmetriegruppe da nicht etwas zu gross? Sollten nicht die
> Anzahl der Lösungen sich nur so um den Faktor 8 vergrößern?

Dachte ich auch erst, aber wie gesagt beim französischen Brett ist es 
ähnlich.

Jetzt will ich meine Berechnung noch etwas beschleunigen.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Ich glaube, ich habe – ähnlich wie "dumdi dum" – missverstanden, was du 
unter symmetrischen Lösungen verstehst. Wenn man sich alle 31 Züge einer 
Lösung aufmalt, kann diese Grafik in vier unterschiedlichen 
Orientierungen ausgerichtet und optional gespiegelt werden, so dass die 
Gesamtzahl der Lösungen maximal um den Faktor 8 größer als die durch 
Symmetrien reduzierte Anzahl ist.

Kannst du mal eine Definition dafür geben, wann genau zwei Lösung als 
gleich gelten?

von D. I. (Gast)


Lesenswert?

Yalu X. schrieb:
> Kannst du mal eine Definition dafür geben, wann genau zwei Lösung als
> gleich gelten?

Im Original der Aufgabenstellung steht lediglich man soll alle 
unterschiedlichen Wege ausgeben, alle radiär/spiegelsymmetrischen Wege 
zählen als ein Weg.

Ich verstehe das folgendermaßen:

Zwei Lösungen sind gleich wenn die Wege die zu den Lösungen führen durch 
Spiegelung / Drehung ineinander übergeführt werden können.

Nimmt man z.b. das Feld so:

.. .. 01 02 03 .. ..
.. .. 04 05 06 .. ..
07 08 09 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
.. .. 28 29 30 .. ..
.. .. 31 32 33 .. ..

Dann wären für meine Begriffe diese Zugketten identisch:

5->17, 24->10, 22->24
5->17, 24->10, 26->24

Ich versuche nochmal die Quelle zum französischen Brett mit 280 Lösungen 
zu finden, aber die spart sich auch die Definition von unterschiedlich 
aus.


Edit: Hab noch nen Bug bei mir gefunden, noch läuft das Programm...

von D. I. (Gast)


Lesenswert?


von D. I. (Gast)


Lesenswert?

Darüberhinaus kann man ja schonmal folgendes sagen:

Nach dem 1. Zug kann man schonmal 75% killen, weil es egal ist wie man 
anfängt.

Nach dem 2. Zug ist nochmal 50% weg. wären dann schonmal 82,5% weg.

Ist da schon Ende?

Ich glaube ich muss mal ne Clarification des Aufgabenstellers 
einfordern...

von D. I. (Gast)


Lesenswert?

Also ich vermute die Aufgabe macht nur Sinn, wenn man das Vertauschen 
zweier unabhängiger Züge als gleich behandelt.

Gemeint ist: Also wenn man 2 Züge innerhalb einer Zugkette tauscht und 
dann immer noch auf dieselbe Konfiguration kommt, diese beiden Ketten 
als gleich zu behandeln sind.

von Yalu X. (yalu) (Moderator)


Lesenswert?

D. I. schrieb:
> Ich verstehe das folgendermaßen:
>
> Zwei Lösungen sind gleich wenn die Wege die zu den Lösungen führen durch
> Spiegelung / Drehung ineinander übergeführt werden können.
>
> Nimmt man z.b. das Feld so:
>
> .. .. 01 02 03 .. ..
> .. .. 04 05 06 .. ..
> 07 08 09 10 11 12 13
> 14 15 16 17 18 19 20
> 21 22 23 24 25 26 27
> .. .. 28 29 30 .. ..
> .. .. 31 32 33 .. ..
>
> Dann wären für meine Begriffe diese Zugketten identisch:
>
> 5->17, 24->10, 22->24
> 5->17, 24->10, 26->24

Das wäre auch meine Interpretation von "identisch". Man könnte die 
beiden Zugfolgen auch als "kongruent" bezeichnen.

Da bei dem Spiel aber nur 4 Rotationswinkel möglich sind, ist die Anzahl 
der zu einer Kongruenzklasse gehörenden Lösungen maximal 8. In deinem 
Beispiel lauten die 8 kongruenten Lösungen
1
05->17, 24->10, 22->24 
2
05->17, 24->10, 26->24
3
15->17, 18->16, 30->18
4
15->17, 18->16, 06->18
5
29->17, 10->24, 12->10
6
29->17, 10->24, 08->10
7
19->17, 16->18, 04->16
8
19->17, 16->18, 28->16

D. I. schrieb:
> Ich glaube ich muss mal ne Clarification des Aufgabenstellers
> einfordern...

Woher stammt die Aufgabe denn?

D. I. schrieb:
> Also ich vermute die Aufgabe macht nur Sinn, wenn man das Vertauschen
> zweier unabhängiger Züge als gleich behandelt.

Ja, solche Zugfolgen könnte man ebenfalls als gleich ansehen.

Auch nicht kongruente Zugfolgen, die sich aber aus kongruenten 
Teilfolgen zusammensetzen, würde ich als gleich betrachten.

Aber welche "Gleichheitskriterien" hast du denn in deinem Programm 
implementiert, um auf die Anzahl voin 24 zu kommen? 24 ist ja schon eine 
sehr übersichtliche Anzahl. Wenn man zeigen kann, dass sich die 
restlichen 80 Billiarden auf triviale Weise aus diesen 24 ableiten 
lassen, ist das doch ein Superergebnis.

von D. I. (Gast)


Lesenswert?

Yalu X. schrieb:
> Aber welche "Gleichheitskriterien" hast du denn in deinem Programm
> implementiert, um auf die Anzahl voin 24 zu kommen? 24 ist ja schon eine
> sehr übersichtliche Anzahl. Wenn man zeigen kann, dass sich die
> restlichen 80 Billiarden auf triviale Weise aus diesen 24 ableiten
> lassen, ist das doch ein Superergebnis.

In dem ich einfach einen fiesen Bug drin hatte, der dafür gesorgt hat 
unerlaubt viel abzuschneiden ;) Also, nicht der Rede wert.

Ich sitze gerade dran Zug vertauschen zu implementieren. Im Moment habe 
ich kein Programm welches in absehbarer Zeit terminiert :/
Aber für heut ists dann erstmal gut, außerdem gehts in 3 Tagen erstmal 
nach Ungarn und dann schau mer mal weiter.

Yalu X. schrieb:
> D. I. schrieb:
>> Ich glaube ich muss mal ne Clarification des Aufgabenstellers
>> einfordern...
>
> Woher stammt die Aufgabe denn?

Aus der Firma in der ich aktuell arbeite, da gibts zum Sommerurlaub 
immer so eine "Challenge" für den schnellsten Algo zu einem Problem.
Allerdings zweifel ich im Moment daran, dass die Aufgabensteller eine 
Musterlösung gemacht haben und naja als ICPC'ler a.D. bin ich präzisiere 
Aufgabenstellungen gewöhnt :)
Ich denke ich bringe mal die Schokoladenaufgabe ein :x

von D. I. (Gast)


Lesenswert?

Die Aufgabensteller haben sich nochmal ans Herz gefasst und die 
Aufgabenstellung dahingehend angepasst, dass man keine Wege mehr ausgibt 
sondern nur noch die Anzahl aller möglichen Gewinnwege möglichst 
effizient berechnen soll (~8.1 * 10^16).
Da terminiert mein Algo auch zu vertretbaren Zeiten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.