Ich weiß nicht, wie es 20Q konkret gemacht hat, aber es gibt viele Informationen darüber, wie man ein Spiel mit 20 Fragen umsetzt .
Es gibt viele Möglichkeiten, dies zu lösen, aber ich beschreibe einen Weg. Diese Spiele können eine Art Entscheidungsbaum implementieren . Für ein elektronisches Spiel wie 20Q wäre dieser Baum vorberechnet und ziemlich einfach zu durchlaufen. Es gibt Methoden zum Verwenden von Lernentscheidungsbäumen, bei denen das Spiel am Ende seiner Fragen neue Objekte akzeptieren kann, wenn es nicht in der Lage ist, die Fragen des Benutzers zu erraten.
Wenn es sich bei den Fragen um eine Reihe von Ja- oder Nein-Antworten handelt, erhalten Sie einen Binärbaum. Jeder Knoten ist eine Frage und die Blätter sind Antworten. Wenn Fragen mit unbekannt oder nicht sicher beantwortet werden, können die untergeordneten Knoten kombiniert und ihre Fragen in Reihe gestellt werden, um die möglichen Antworten weiter zu ermitteln.
Grundsätzlich ist dies der Prozess:
- Beginnen Sie mit einer vollständigen Liste der Objekte. Diese können alle mit gleicher Wahrscheinlichkeit beginnen oder nach der Wahrscheinlichkeit sortiert werden, mit der das Objekt beim Testen ausgewählt wurde.
- Beginnen Sie mit der ersten Frage im Entscheidungsbaum. Schieben Sie es in die Fragenwarteschlange.
- Stellen Sie die Frage oben in der Warteschlange.
- Prozessantwort:
- Ja / Nein-Antworten entfernen / addieren eine vorgegebene Wahrscheinlichkeitsmenge aus jeder Antwort basierend auf der Frage.
- Die Antwort "Vielleicht" entfernt / fügt einen Bruchteil der vorgegebenen Menge eines "Ja" hinzu.
- "Unbekannt" ändert die Wahrscheinlichkeiten nicht
- Eine "Unbekannte" oder "Vielleicht" Antwort schiebt beide Fragen des nächsten Knotens in die Fragenwarteschlange. Eine "Ja" - oder "Nein" -Antwort fügt nur den einen entsprechenden Ja / Nein-Knoten in die Fragenwarteschlange ein.
- Fahren Sie mit Schritt 3 fort, bis keine Fragen mehr vorliegen oder die Wahrscheinlichkeit einer einzelnen Antwort einen vordefinierten "Sicherheitsschwellenwert" überschreitet.
- Geben Sie die wahrscheinlichste Antwort.
Das Generieren des Baums ist wahrscheinlich das Thema einer anderen Frage. Aber im Grunde geht es darum, Fragen zu wählen, die die Antworten so weit wie möglich aufteilen. Platzieren Sie die Fragen, die die Fragen am gleichmäßigsten aufteilen, am Anfang, damit die meisten Fragen am schnellsten geklärt werden können.
Ich habe "20q code" gegoogelt und Folgendes gefunden: http://mosaic.cnfolio.com/B142LCW2008A197
Diese Version ist nur für Tiere, aber die eigentlichen 20 Fragen haben wahrscheinlich einen ähnlichen Algorithmus.
Hier ist ein kurzer Überblick über den Code, den ich verlinkt habe:
Es gibt verschiedene Antworten, die im Programm fest programmiert sind. Ihnen werden dann mehrere TRUE- oder FALSE-Attribute zugewiesen:
Wie Sie sehen, ist eine Biene kein Säugetier, sondern fliegt usw.
Für jede Gruppe gibt es ein Array:
Wenn jede Frage gestellt wird:
Das Programm überprüft die Definition der entsprechenden Kategorie und ermittelt anhand der WAHR- oder FALSCH-Werte und der von Ihnen eingegebenen Ja- oder Nein-Antwort auf die Frage, welches Tier am wahrscheinlichsten dasjenige ist, an das Sie denken.
Dies geschieht in:
quelle
Es ist kein massiver Entscheidungsbaum oder eine Reihe von hartcodierten if / else-Anweisungen. Der Erfinder Robin Burgener hat seinen Algorithmus in seiner Patentanmeldung von 2005 vollständig dokumentiert . Es ist genial einfach.
quelle