4 Gewinnt auf Seeeduino Xiao: Keine Chance gegen den Rechner?

Gast #6751887
Lesenswert?

Hallo,

inzwischen habe ich mit dem Seeeduino XIAO (Mini Arduino auf SAMD Basis, 
48Mhz, 256kb Flash, 32 kb RAM) und einem Display mit Tastenbedienung das 
Spielt 4 Gewinnt an nur 2 Abenden implementiert. Die Engine habe ich von 
1998 aus dem Netz von einem Programmierer den den MinMax Algorithmus und 
Alpha Beta Pruning umgesetzt hat und sie in die Arduino IDE eingepasst. 
Grundsätzlich ist das ein binärer Baum, mit Vorausberechnung, 8 
Rekursionsstufen sind möglich mit den 32kb des Xiao. 1 Zug dauert 
zwischen 1s und 8s, je nach Komplexität.

Inzwischen haben etliche Personen versucht den XIAO zu schlagen, nicht 
ein einziger hat jemals ein Spiel gewonnen.

Lässt man es gegen sich selbst spielen enden die meisten Spiele 
unentschieden, weil das Board voll ist. Dauert aber, rund 2 Minuten pro 
Spiel.

Ein Arbeitskollege fluchte nur als er den winzigen XIAO sah, dass dieses 
Teilchen bei diesem Spiel immer besser war als er.

Hat man überhaupt eine Chance den zu schlagen?
Beitrag #6751917 wurde von einem Moderator gelöscht.
#6751933
Lesenswert?

Schnedermann schrieb im Beitrag #6751917:
> Hallo Christian,
>
> laut Wikipedia gewinnt der perfekte Spieler wenn er beginnt und mit dem
> ersten Stein in der Mitte anfängt.
>
> Ist wie beim Schach .... :-)

Beim Schach gewinnt man so aber nur wenn man gleich am Anfang eine 6 
würfelt.
Gast #6751957
Lesenswert?

A. S. schrieb:
> Wenn man anfängt, soll es eine einfach Möglichkeit geben, nicht zu
> verlieren. Einfach im Sinne von jeder Dreijährige kann das nach kurzer
> Instruktion.

Das kannste wohl getrost vergessen, da der Rechner nicht immer die 
gleichen Züge spielt, sondern der Zufall (rand()) da mit im Spiel ist 
und zu Beginn natürlich mit randomSeed aus einem AD Port eine Startzahl 
erzeugt wird. Sonst würde ja jede Partie die er gegen sich selbst spielt 
gleich ablaufen. Tun sie aber nicht.
#6751996
Lesenswert?

Die Regeln um ein "perfekter Spieler" zu werden sind bei 4 Gewinnt 
wesentlich einfacher als beim Schach:

https://www.wired.co.uk/article/maths-christmas-board-games-win

So how do you become a perfect player? Allis’ Connect Four-winning 
computer program VICTOR holds the answer. VICTOR’s moves are dictated by 
nine rules. One of the simpler ones, called ‘baseinverse’, says that you 
can always block a four-in-a-row that needs two playable squares. 
Another, called ‘vertical’, says you can always block a vertical 
four-in-a-row by playing one of the two squares directly above. If you 
want to be a Connect Four champion every time, you can find the other 
more complicated and hard-to-master rules in Allis’ 91-page thesis. 
Enjoy!
http://www.informatik.uni-trier.de/~fernau/DSL0607/Masterthesis-Viergewinnt.pdf
Gast #6752355
Lesenswert?

Christian J. schrieb:
> Das kannste wohl getrost vergessen, da der Rechner nicht immer die
> gleichen Züge spielt, sondern der Zufall (rand()) da mit im Spiel ist
> und zu Beginn natürlich mit randomSeed aus einem AD Port eine Startzahl
> erzeugt wird.

Wie kannst Du, ohne die Regeln zu kennen, wissen, dass sie nicht 
funktioniert? Und wie kann die Zugfolge des Rechners eine Rolle spielen, 
wenn ein Dreijähriger es spielen können soll?

Regel A: Setze immer auf den Gegner.
Regel B: sonst möglichst mittig.

Ich habe es nie ausprobiert, es scheint aber sehr plausibel:

Durch den "Versatz (B)" in der Mitte gibt es niemals eine Waagerechte 
Straße.

Durch das "drüber (A)" gibt es niemals eine senkrechte Straße

Durch die "waagerechten Streifen (A)" gibt es niemals eine schräge 
Straße.

Also wenn es einer schaft, meine Nichte zu schlagen, ... 1000€! Der 
Jüngere fängt an.
Gast #6752874
Lesenswert?

Hi,

ich spiele ab und an For In A Line von A Design Studio auf dem Handy.
Wenn ich aufpassse und keine Fehler mache, Gewinne ich auf Stufe 10.
Bisher habe ich noch kein stärkes Spiel gefunden.
Gegen deine Nichte würde ich es mal versuchen.
Gast #6753358
Lesenswert?

A. S. schrieb:
> Regel A: Setze immer auf den Gegner.
> Regel B: sonst möglichst mittig.

So einfach ist das nicht. Es macht schon Sinn sich theoretisch mit dem 
Spiel zu beschäftigen. Es gibt genug paper dazu - das kann jeder durch 
selbst anschauen.

Ich habe in meiner Schulzeit auch Mal ein Engine für einen atmega8 
geschrieben. Alpha-Beta, Suchtiefe 4. Das Ziel des Engines war es, die 
Steine taktisch zu setzen. Das Engine hat auch die meisten Spiele 
gewonnen - meist erst, wenn fast alle Felder belegt waren durch 
Zugzwang.
Gast #6753477
Lesenswert?

avr schrieb:
> So einfach ist das nicht.

Es geht darum, dass niemand gegen einen Dreijährigen gewinnen kann, wenn 
er die beiden Regeln befolgt und anfängt.

Natürlich kann er mit der Regel auch selber nie gewinnen, zudem versagt 
sie vollkommen (Matt in 4 Zügen) wenn der andere anfängt.
Gast #6753864
Lesenswert?

Ich habe jetzt Dutzende Spiele ohne Vorbildung über Strategien gemacht. 
Und den Xioa auch stundenlang gegen sich selbst spielen lassen. Spielt 
er gegen sich selbst baut er hauptsächlich Türme auf, die gefüllt werden 
bis oben und gewinnt oder verliert meist wegen Zugzwang wenn das Brett 
nahezu voll ist. Die Spiele sehen ziemlich langweilig aus.

Spiele ich sieht das alles etwas abwechslungsreicher aus, ich verliere 
aber hauptsächlich deswegen weil ich kaum mehr als 2 Züge voraus denke 
und stolpere dann meist in Fallen, also dass "er" nur einen Stein legen 
muss, um dann zwei Möglichkeiten zu haben 4er fertig zu stellen.

Die AI verfügt natürlich über keine Strategien oder kann Fallen bauen. 
Die geht nur stur nach Erfolgsaussichten in 2-3-4 Zügen einen Vierer 
bauen zu können. Und da sie dabei alle meine möglichen Züge vorhersehen 
kann ist sie im Vorteil.

Zumindest nicht verlieren geht über Blockade, aber auch das endet oft 
damit dass gegen Ende doch verloren wird wegen Zugzwang.

Bei Schach früher habe ich nur gegen Menschen gespielt, weil die Fehler 
machen können. Gegen einen Rechner, die es schon in den 80igern in guter 
Spielstärke gab fand ich es stinklangweilig.
Persönliche Seite #6754038
Lesenswert?

Genau, find ich auch.

Ohne jetzt groß recherchiert zu haben, denke ich es ist ein Spiel der 
Klasse:

2 Personen Nullsummenspiel mit vollständiger Information

und daraus folgt, daß der der anfängt strategisch im Vorteil ist und 
normalerweise gewinnt. Dessen Gegner kann bei eigener optimaler 
Spielweise im allgemeinen nur maximal ein Unentschieden 
herauswirtschaften.
Das gilt im Prinzip auch für Schach.


Das aber eine Dreijährige schon so weit die Sache durchschaut, finde ich 
außergewöhnlich. Oder hat Papa es zu genau erklärt?
Gast #6754516
Lesenswert?

Abdul K. schrieb:
> Das aber eine Dreijährige schon so weit die Sache durchschaut, finde ich
> außergewöhnlich. Oder hat Papa es zu genau erklärt?

anfängt und nicht verlieren

A. S. schrieb:
> Wenn man anfängt, soll es eine einfach Möglichkeit geben, nicht zu
> verlieren. Einfach im Sinne von jeder Dreijährige kann das nach kurzer
> Instruktion.

Die Instruktion:

A. S. schrieb:
> Regel A: Setze immer auf den Gegner.
> Regel B: sonst möglichst mittig.
Gast #6754560
Lesenswert?

A. S. schrieb:
> A. S. schrieb:
>> Regel A: Setze immer auf den Gegner.
>> Regel B: sonst möglichst mittig.

Ja, funktioniert aber nicht. Bei den Instruktionen gewinne man immer, 
indem man eine 3er Reihe baut, die in einer geraden Zeile den vierten 
Stein benötigt.
1
.......
2
.......
3
.~o....
4
..xo...
5
..oxo..
6
..xox..

Das ist der Startaufbau. Das mit ~ markierte Feld wird am Ende der 4. 
Stein sein, den der Gegner durch Zugzwang erlauben muss. Nachdem man 
diesen Aufbau erzeugt hat (und verhindert hat, dass er trivial gewinnt), 
bringt man den Gegner durch füllen der mittleren Reihe in Zugzwang und 
gewinnt letztendlich.
Beitrag #6754574 wurde von einem Moderator gelöscht.
Gast #6754582
Lesenswert?

avr schrieb:
> bringt man den Gegner durch füllen der mittleren Reihe in Zugzwang und
> gewinnt letztendlich.

Spiel das Mal durch. Das wird nicht passieren. Es ist zwar möglich, dass 
man die Regel A (möglichst Mittig) noch erweitern muss. Glaube ich aber 
nicht.
Gast #6754729
Lesenswert?

Was verstehst du nicht an nicht trivial gewinnen lassen? Ich hab dir den 
Startaufbau gezeigt. Ab da verhinderst du, dass er gewinnt und 
irgendwann muss er in die 2. Spalte setzen und du gewinnst. Spiel es 
durch, du gewinnst jedes Mal.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren