Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

1

19.03.2013, 11:26

Minimax bei Kartenspiel

Hi alle zusammen,

hab ne kurze frage, wenn ich den Minimax bei einem kartenspiel, wie zb. Spades oder Skat anwende, ist es ja so, dass man die Karten der Gegner nicht kennt.
Wäre es dann intelligent trotzdem den Minimax zu implementieren?
Oder müsste ich das dann so machen, dass ich als erste Unterknoten alle möglichen, verschiedene Kartenkombinationen ausprobieren, obwohl es dabei dann sein könnte,
dass ein ungültiger Zug möglich wäre?
zur Verdeutlichung:

Ich habe irgendwann im Spiel Karo 10 gelegt. so jetzt sehe ich ja nur, dass der Gegner vll nur noch 2 Karten hat, eine Herz 8 und eine Karo 6.
So wenn ich jetzt beide Möglichkeiten weiterspinne mit dem Algo, dann würde ja der kartenstapel in den Unterknoten so aussehen: 1. Karo 10 und Herz 8 ; 2 Karo 10 und Karo 6;
So da ich ja nicht weiß, welche Karten der Spieler hat würde ich mit beiden Möglichkeiten weiter rechnen, obwohl ja Kartenstapel 1 auf Grund von Zugzwang illegal wäre.

Was würdet ihr dazu sagen?
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

19.03.2013, 12:23

Wenn du die Spielsituation nicht kennst, kannst du auch keinen MiniMax implementieren. Das ist dabei nun mal Voraussetzung. Das soll aber natürlich nicht bedeuten, dass du dir das Prinzip hinter dem Algorithmus abgucken kannst. Im Prinzip besteht es ja nur aus der Bewertungsfunktion und den abwechselnden Aufrufen für die Spieler.
In deinem Fall musst du nur gucken ob das ganze nicht zu aufwendig wird. Du hast pro Zug im Prinzip schon sehr sehr viele Möglichkeiten. Hier könntest du einfach mal testen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Mastermind

unregistriert

3

19.03.2013, 16:44

Man kann sowas auch googlen.

State of the Art beim Skat scheint Monte Carlo zu sein. Das heißt, einen Solver für das offene Spiel zu schreiben (da kannst logischerweise MiniMax nehmen, es geht vor allem darum dass es schnell ist. So gesehen kein ganz triviales Vergnügen wenn man noch optimieren will) und dann in jedem Zug einige mögliche Decks zu generieren, diese mit dem Solver zu analysieren und dann den Zug zu nehmen, der im Mittel über alle Decks am Besten ist.

Das Problem ist dass die Wahrscheinlichkeiten in Wirklichkeit nicht unabhängig sind. D.h. nicht jedes Deck was, nachdem einige Züge gespielt sind, noch möglich ist, ist auch noch gleich wahrscheinlich. Das heißt man muss die gesamte Historie des Spiels mit berücksichtigen, es geht nicht nur darum den aktuellen Zustand des Spiels ("Position") zu bewerten, egal, wie es dazu gekommen ist. Und daran scheitern die mir bekannten Standardansätze für Spiel KIs. Nicht so sehr an der Unsicherheit. Backgammon z.B. hat relativ hohe Unsicherheit, ist aber praktisch "gelöst".

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

4

19.03.2013, 17:30

meint ihr nicht, dass man alle Möglichkeiten durchprobieren könnte und das Spiel bis zum Ende durchspielen kann?
Wenn man ja immer nur die Karten nimmt, die man legal legen kann, werden die verschiendenen Möglichkeiten wohl nicht so hoch werden.
Ich werde das gleich mal ausprobieren, sage dann mal bescheid, wie viele Möglichkeiten es so ungefähr gibt.
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

5

19.03.2013, 17:51

alle Möglichkeiten durchprobieren könnte und das Spiel bis zum Ende durchspielen kann [...] werden die verschiendenen Möglichkeiten wohl nicht so hoch werden.
Haha.

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

6

19.03.2013, 18:16

Hmm, ja ok also ich hab eben mal fünf Spielrunden Simuliert und mir aufgeschrieben, wie viele verschiedene Möglichkeiten die viel Spieler jeweils haben,
und bin dann letztenendes auf diese Werte für die gesamten Möglichkeiten gekommen:
1. 10^12
2. 10^10
3. 10^12
4. 10^11
5. 10^10

also ich glaube, dass sind wirklich zu viele Möglichkeiten, oder?
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

Mastermind

unregistriert

7

19.03.2013, 18:28

Nur damit du mal ein gefühl für "ungefähr" bekommst:

Es gibt 32! Sortierungen für das Skatblatt (Größenordnung 2^118)

Da beim Verteilen mehrere dieser Sortierungen zum gleichen Blatt führen (Reihenfolge ist egal) sind es wenn ich mich nicht ganz irre in Wirklichkeit

(32 choose 2)*(30 choose 10)*(20 choose 10) verschiedene Spiele. Erklärung: Skat, Vorhand, Mittelhand in der Reichenfolge gezogen, Hinterhand ist dann eindeutig. Da es nicht egal ist wer aufspielt sind die Spiele echt verschieden. (Größenordnung 2^51) Wie ich oben schon sagte kommt es sehr stark drauf an, wie lange dein Solver braucht um ein Spiel zu berechnen. Je nachdem ist es nicht ganz unmöglich die Spiele alle zu berechnen (DES hatte 56-bit Schlüssel, nur zur Orientierung). Der Ansatz ist aber nicht besonders pragmatisch weil er dir nur die perfeke Zugfolge für jedes Spiel liefert, aber...

... eine KI die gegen Menschen spielt muss ja "dynamisch" auf die Fehler des Spielers reagieren können. Mal nur als Beispiel KI als Alleinspieler gegen zwei Menschen, worst-case, jeder Zug der Menschen ist unerwartet und erfordert eine vollständige Neuberechnung:

Ich komme da, wenn ich mich nicht vertue auf:

(22 choose 2) * (20 choose 10) + [vor dem Spiel]
[danach Skat bekannt aber Neuberechnung in jedem Zug:]
sum k=0 to 9 ((20-2k) choose (10-k))

Insgesamt in der Größenordnung von 2^25 (etwa 42 Mio). Sagen wir mal du strebst eine Zeit von etwa 10 Minuten pro Spiel an. Dann kommst du in der Sekunde auf etwa 71500 Spiele die du durchrechnen musst. Und um auf die richtigen a posteriori Wahrscheinlichkeiten zu kommen, musst du mindestens jedes dieser Spiele von Anfang an berechnen, wenn nicht schlimmeres. Find ich sportlich.

Naja das sind jetzt Untergrenzen, wenn ich die Kombinatorik nicht irgendwo verhauen habe. Reizen ist z.B. noch gar nicht drin. Und wie nun schon mehrmal angeklungen, die intellektuelle Herausforderung ist die richtige Berechnung der a posteriori Wahrscheinlichkeiten. Aber das hast du ja geflissentlich ignoriert.

Mastermind

unregistriert

8

19.03.2013, 18:31

Hmm, ja ok also ich hab eben mal fünf Spielrunden Simuliert und mir aufgeschrieben, wie viele verschiedene Möglichkeiten die viel Spieler jeweils haben,
und bin dann letztenendes auf diese Werte für die gesamten Möglichkeiten gekommen:
1. 10^12
2. 10^10
3. 10^12
4. 10^11
5. 10^10

also ich glaube, dass sind wirklich zu viele Möglichkeiten, oder?



Darum geht es nicht. Das sind ja die Möglichkeiten in einem Spiel (wenn sie denn stimmen). Das Problem ist, du weißt nicht welches Spiel du spielst, da dir einige Karten nicht bekannt sind.

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

9

19.03.2013, 18:34

Ja, an Skat habe ich schon lang nicht mehr gedacht, wenn höchstens Spades, das is ja eig vom Typ her ähnlich wie Skat, nur ein wenig einfacher.
Wenn ich jetzt mal von 10^12 Möglichkeiten ausgehe, meist du das würde ein Algo noch in einer vertretbaren Zeit schaffen?
Nur mal angenommen...
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

Mastermind

unregistriert

10

19.03.2013, 18:51

Der Trick bei MiniMax ist ja eigentlich dass man mit alpha-beta Pruning nicht den ganzen Spielbaum durchsuchen muss, sondern nur einen Teil.

Implementier doch mal einen Solver für offene Skatspiele. Das löst zwar nicht das eigentliche Spiel, aber könnte dir helfen das einzuschätzen. Oder geht es hier nur um Hirnwichserei?

Werbeanzeige