Optimale Algorithmus für das Gewinnen Henker
In das Spiel Hangman ist es der Fall, dass ein greedy-Brief-Frequenz-Algorithmus entspricht einem best-chance-von-gewinnen-Algorithmus?
Ist es jemals einen Fall, wo es sich lohnt, zu opfern die Erhaltung Ihres verbleibenden Lebens, für den Willen eine bessere chance, zu erraten, die richtige Antwort?
Weiteren Klärung des Problems:
- Das ausgewählte Wort zu erraten wurde Sie von einem bekannten Wörterbuch.
- Die Sie gegeben sind N Leben, und somit zur Maximierung der Wahrscheinlichkeit erraten alle Buchstaben des Wortes ohne N Fehler (d.h. Sie können eine unbegrenzte Anzahl von richtig errät).
- Jedes Wort im Wörterbuch hat gleiche Wahrscheinlichkeit, für die Zwecke dieser übung (d.h. das Wort wird zufällig ausgewählt)
- eine schwieriger übung zu kommen mit einer Strategie gegen eine schädliche, allwissendes word-Dialog (ich bin nicht zu Fragen, dass die hier)
Motivation: Diese Frage ist inspiriert durch eine interessante Diskussion, bei http://www.datagenetics.com/blog/april12012/index.html
Sie schlagen vor, einen Algorithmus für die Lösung des Wort-Spiel "Hangman" optimal.
Ihre Strategie können wie folgt zusammengefasst werden (editiert zur Klarstellung):
- Wir können davon ausgehen, das Wort ist gezogen aus einem bestimmten Wörterbuch
- Wir wissen, die Anzahl der Buchstaben im Wort
- Beseitigen Sie alle Wörter im Wörterbuch, die nicht die richtige Anzahl von Buchstaben.
- Wählen, der noch nicht erratenen Buchstaben, die sich in die größte Anzahl von Wörtern in der verbleibenden Teilmenge des Wörterbuchs.
- Wenn dieser Brief kommt, werden wir wissen, seine Lage.
- Wenn dieser Brief nicht auftreten, wir wissen, es kommt nicht in dem Wort.
- Beseitigen Sie alle Wörter im Wörterbuch Teilmenge, die nicht passen genau das richtige Muster und wiederholen.
- Wenn es 2 (oder mehr) Buchstaben erscheinen gleich oft vor, die der Algorithmus durchführen kann, um eine tiefere Analyse der Positionen zu bestimmen, welche von Ihnen bevorzugt wird (ob das sinnvoll ist?)
In jeder Phase sind wir erraten die Buchstaben (vorher nicht vermutete), das Auftritt, in der größten Anzahl der verbleibenden möglichen Wörter.
Gibt es eine motivation zu dieser Algorithmus - wir sind immer minimal wahrscheinlich verlieren Sie ein Leben.
Aber, es scheint mir, dass dies nicht unbedingt die beste Lösung: wenn wir versuchen, das Wort zu erraten (innerhalb einer bestimmten Anzahl von Leben), es ist nicht unbedingt immer der Fall, dass der am häufigsten vorkommende Buchstabe ist nützlich, die meisten Buchstaben zu unterscheiden zwischen der verbleibenden Wörter.
Ich bin mir nicht sicher, aber, wie es scheint opportun, um nicht zu verlieren ein Leben, wo immer möglich. Wird es jemals der Fall sein, dass eine optimale Strategie ermöglicht es uns, zu opfern, ein Leben für eine bessere Gelegenheit, um zu gewinnen?
Frage: ist es der Fall, dass dieser greedy-Algorithmus entspricht, die beste-chance-von-gewinnen-Algorithmus, oder nicht?
Und können Sie es beweisen?
Beispiel dictionary+game wäre ideal, um zu zeigen, eine disproof.
- Was tun Sie sich beziehen, als
best-chance-of-winning algorithm
? - Durch die "standard" - Regeln von Hangman - gewinnen Sie ein Spiel, wenn Sie das Wort ohne N Leben (N falschen Buchstaben erraten). Die beste-chance-von-gewinnen-Algorithmus ist, nehme ich an, ein theoretischer Algorithmus, der Ihnen die chance auf den maximal möglichen Prozentsatz der Wörter im Wörterbuch.
- zum Wohle der Frage, können Sie davon ausgehen, das Wort Auswahl ist zufällig, eher als durch eine ominiscient Gegner
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angenommen, das folgende Wörterbuch:
ABC ABD AEF EGH
. (Ich werde kapitalisieren, unguessed Buchstaben.)Angenommen, Sie haben nur 1 Leben (macht den Nachweis so viel einfacher...).
Der Algorithmus, der oben vorgeschlagen:
Beginnend mit
A
Sie verlieren (1/4) oder sind Links mitaBC aBD aEF
(3/4).Jetzt ratet mal
B
und verlieren (1/3) oder sind Links mitabC abD
(2/3).Jetzt ratet mal
C
oderD
und Sie verlieren (1/2) oder win (1/2).Die Wahrscheinlichkeit zu gewinnen: 3/4 * 2/3 * 1/2 = 1/4.
Jetzt etwas anderes versuchen:
Beginnend mit
E
Sie verlieren (1/2) oder sind Links mitAeF eGH
(1/2).Jetzt wissen Sie, was zu erraten und zu gewinnen.
Die Wahrscheinlichkeit zu gewinnen: 1/2.
Klar die vorgeschlagene Algorithmus ist nicht optimal.
Gibt es einige kritische Annahmen, die Sie machen müssen, was für ein Spiel "Hangman" ist.
Eine Sache zu erinnern ist, dass, wenn Sie wählen einen richtigen Buchstaben, verlieren Sie nicht eine Vermutung.
Ich werde eine Lösung für den ein-Wort-&-gleich-wahrscheinlichen Fall. Die zwei-Wort-Fall verallgemeinert werden kann, indem eine neue Wörterbuch gleich dem kartesischen Produkt der Ihre aktuelle Wörterbuch, etc. Die mehr-wahrscheinlich-als-andere Fall verallgemeinert werden kann mit ein wenig Wahrscheinlichkeit.
Bevor wir definieren unser Algorithmus definieren wir den Begriff der Reduktion. Wenn wir zu erraten, Buchstaben L1,L2,L3,..., LN alle auf EINMAL, dann würden wir reduzieren das Wörterbuch zu einem kleineren Wörterbuch: einige Worte wäre beseitigt, und zusätzlich einige Buchstaben können auch beseitigt werden. Zum Beispiel, wenn wir hatten das Wörterbuch
{dog, cat, rat}
- und wir Ahnena
wir beseitigen, {d,g}, wenn die Vermutung wahr war, oder auch zu beseitigen, {c,r,t}, wenn es falsch war.Den optimalen Algorithmus ist wie folgt:
Natürlich so lösen Sie jedes Spiel, und für die meisten Teil ist es unlösbar aufgrund des exponentiellen Platzbedarf. Sie können nicht optimal, es sei denn, Sie perfekt zu replizieren, und ich bezweifle ernsthaft, dass eine Strategie, die nicht "sehen", die zwei oder mehr Züge im Voraus können hoffen, dass dies replizieren. Sie können jedoch versuchen, die für die Berechnung der optimalen Strategie folgt.
Wiederholen Sie die folgenden bei jedem Schritt:
frac words with L
#words without L
+frac words without L
#words with L
)/(# words without L
/# words total
)... beachten Sie, dass dies kann unendlich sein, wenn alle Wörter haben einen bestimmten Buchstaben, in diesem Fall gehen Sie vor und erraten Sie, da gibt es keine Strafe.Natürlich, wenn Ihr Wörterbuch hat mehr als
2^[max number of guesses]
Einträge, die "Hangman" - Spiel ist es meist unmöglich, in die gleich-Wahrscheinlichkeit Welt (es sei denn, das Wörterbuch ist sehr beschränkt), so haben Sie zu arbeiten, in der ungleichen Wahrscheinlichkeit Welt. In dieser Welt, anstatt der Maximierung der Menge der Ausscheidung, die Sie tun, maximieren Sie die "erwartete surprisal" (auch Entropie genannt). Jedes Wort, das Sie verknüpfen eine Vorherige Wahrscheinlichkeit (z.B. sagen wir mal es gibt ein 0.00001 die chance, dass das Wort 'putrescent" und ein 0.002 chance, das Wort als 'hangman'). Die surprisal gleich die chance, gemessen in bits (die negative log der chance). Eine Antwort zu "erraten" wird entweder Ausbeute keine Briefe, einen einzelnen Buchstaben, oder mehr als einen Buchstaben (viele Möglichkeiten). Also:{A__, _A_, __A, AA_, A_A, _AA, AAA}
. Für jedes Ergebnis die Wahrscheinlichkeit berechnen mit Bayes-Regel, und auch die neuen Wörterbücher möglich (z.B. in einem Fall hätten Sie ein Wörterbuch der_A_:{cAt, bAt, rAt, ...}
undA__:{Art, Ark, Arm, ...}
etc.). Jedes dieser neuen Wörterbücher hat auch ein likelihood-ratio, der die formsize(postOutcomeDictionary dictionary)/size(preOutcomeDictionary)
; die negative log-dieses Verhältnis ist die Menge an information (in bits), die die Wahl vermittelt Sie.bitsGainedFromOutcome[i] = -log(size(postOutcomeDictionary)/size(preOutcomeDictionary))
. Wir nehmen die gewichtete Summe dieser:sum{i}( prob(outcome[i])*bitsGainedFromOutcome[i] )
, dann geteilt durch die Wahrscheinlichkeit, wir sind falsch:prob(outcome=='___')
.sum{i}( prob(outcome[i])*bitsGainedFromOutcome[i] )/prob(outcome=='___')
; in diesem Fall ist unendlich, es gibt nichts zu verlieren, und wir automatisch abholen es.Also um deine Frage zu beantworten:
Eindeutig nicht: wenn das Wörterbuch wurde
dein Algorithmus würde vermuten
a
odert
, die haben ein 5/8-Wahrscheinlichkeit zu reduzieren Wörterbuch zu 5/8 Größe für frei, und ein 3/8-Wahrscheinlichkeit zu reduzieren Wörterbuch-3/8-Größe zum Preis von 1. Sie wollen wählen Briefe, die zeigen, das die meisten Informationen. In diesem Fall sollten Sie denke N, weil es eine 4/8-Wahrscheinlichkeit zu reduzieren Wörterbuch zu 4/8 Größe kostenlos, eine 1/8 chance, reduzieren Sie Ihr Wörterbuch zu 1/8 Größe für frei, und ein 3/8-Wahrscheinlichkeit zu reduzieren Wörterbuch-3/8-Größe zum Preis von 1. Dies ist strikt besser.edit: wollte ich mit einem Englisch-Wörterbuch Beispiel (oben) zu demonstrieren, wie dies ist nicht die künstliche, und davon ausgegangen, dass die Menschen extrapolieren aus dem Beispiel ohne hing bis auf die nicht-strikte Gleichheit. Allerdings ist hier ein eindeutig klares Gegenbeispiel: Sie haben 2000 Wörter. 1000 Wörter enthalten den Buchstaben
A
in den ersten Platz. Die anderen 1000 Worte enthalten eine einzigartige Kombination vonB
s embedded anderswo. Zum Beispiel,?B???
,??B??
,???B?
,????B
,?BB??
,?B?B?
, etc. Die?
s darstellen zufällig ausgewählten Zeichen. Es gibt keineA
s in die erste ?, außer für ein Wort (dessen ? ist Ein, a'), so dass die Frequenz derA
s größer ist als die Frequenz derB
s. Der vorgeschlagene Algorithmus würde vermutenA
führen würde {50%: choices_halved, 50%: choices_halved & lose_one_life}, in der Erwägung, dass dieser Algorithmus diktieren möchten, die WahlB
die Ergebnisse in {50%: YOU_WIN, 50%: choices_halved & lose_one_life}. Prozentsätze wurden gerundet, sehr leicht. (Und Nein, ein Wort mit Doppel-Buchstaben trägt nicht zweimal auf die "Frequenz", aber auch wenn Sie es unter einem wahnsinnigen definition, könnte man trivial das Beispiel modifizieren, indem Sie die Wörter beginnen mitAAA...A
.)(bezüglich der Kommentare: Es ist unvernünftig, sich darüber zu beschweren strikte Gleichheit in diesem Beispiel, z.B. "999/2000", da können Sie machen, sind die Wahrscheinlichkeiten, die beliebig nahe beieinander.)
(Die Punkte aus der amüsanten Seite-Hinweis: Wenn das Wörterbuch ist groß genug, um hangman manchmal unmöglich, eine Strategie sollte wegwerfen Vermutungen, dass Sie nicht erwarten, um in der Lage sein, zu erraten. Zum Beispiel, wenn es nur 2 nach Links verschoben, es sollte die höchste Wahrscheinlichkeit Annahme kann die eliminiert Teilbäume mit mehr als 2-Züge im Wert von bits der überraschung.)
cats, bats, rats, rate
- Wahla
undt
ist völlig in Ordnung, wie du nicht verlieren, das Leben.Habe ich ein Skript geschrieben, dass löst der Henker optimal [github].
Meine grundlegende Strategie ist diese:
[^est][^est]e[^est][^est]
Über Ihre Idee, um zu versuchen und erraten das Wort, anstatt zu versuchen zu erraten, Buchstaben, es gibt sicher kann in einigen vereinzelten Fällen, wo Sie erraten das Wort aus dem ersten Versuch, oder so was, aber das heißt nicht, dass der Algorithmus besser auf den durchschnittlichen Fall. Es ist über die erwartete Wahrscheinlichkeit.
Einige Verbesserungen, die getan werden könnte, um diesen Algorithmus (in der Fassung gepostet von Lajos) ist etwas mehr informiert pick von Buchstaben, die versucht werden.
Dies könnte erreicht werden, indem mehr Gewicht: beachten Sie die Verwendung von jedem Wort des Vokabulars der Sprache.
Beispielsweise technische, medizinische, juristische etc.. Worte haben viel geringere Chancen.
Nehmen Sie das Wörterbuch (mit einigen Beispiel-GEWICHTE):
Hier
e
ist der häufigste Buchstabe, so würde es gewählt zu werden. Dies würde bedeuten, wobei nur die medizinischen Begriffe, die sehr unwahrscheinlich sind. Aber wenn die Entscheidung getroffen:dann, wahrscheinlich
t
gewählt würde.Weil (sagen wir mal
w = 0.2
):Hinweis: Wir sollten natürlich die Verwendung der normalisierten GEWICHTE, wie
frequency /num_words
zu bekommen genaue Gewicht Messen.Anmerkung: Dieser Algorithmus kann und sollte angepasst werden, um den Gegner:
Nein, dieser greedy-Algorithmus ist nicht die beste überhaupt und ich kann es beweisen, indem Sie eine bessere Lösung:
In jedem Schritt, den wir wissen, die Zahl der Buchstaben, und wir kennen einige Buchstaben. Wir wählen Sie alle Wörter aus unserer Reihe von Wörtern, die den gegebenen Briefe an die gegebenen Positionen und deren Länge mit der Länge des Wortes in Frage. Wählen wir die häufigsten Buchstaben aus der gewählten Untermenge der Worte und denke über die gegebene Brief. Für jedes Vermutungen erratenen Buchstaben wird markiert, erraten, und Sie werden nicht erraten werden wieder in die Zukunft. Auf diese Weise haben Sie viel bessere überlebenschancen als in der greedy-Algorithmus beschrieben, die in Ihrer Frage.
EDIT:
Nachdem die Frage geklärt war und weitere Angaben wurden gemacht, ich bin zu dem Schluss gekommen, dass der Algorithmus optimal ist.
Wenn wir n Worte mit der angegebenen Länge, mit den richtigen Vermutungen ("gute Briefe"), und nicht mit irgendwelchen falschen Vermutungen ("böse Briefe"), x wohnt, können wir uns mit der Häufigkeit der Buchstaben in der noch möglichen Wörtern und wählen Sie den Buchstaben mit der größten Häufigkeit, nehmen wir an, dass y Wörter enthalten den Buchstaben.
In diesem Fall das Vertrauen rate dieser Vermutung ist, y/n, das größer ist als das Vertrauen-rate von einem anderen Buchstaben, die eine höhere chance zu überleben. Also, so ein Schritt ist optimal. Wenn Sie eine Reihe von Schritten, die nur die Schritte in diesem Geiste die Reihe der Schritte wird optimal sein, damit dieser Algorithmus ist optimal.
Aber, wenn wir haben keine zusätzlichen Informationen (wie eine Beschreibung des Wortes, oder zu wissen, dass die Wahrscheinlichkeit, dass das gleiche Wort zweimal in einem kurzen Zeitraum), dieser Algorithmus verbessert werden kann, basierend auf den zusätzlichen Informationen, die die Worte in die Menge der Wörter wird ein fitness-Wert (die Wahrscheinlichkeit, auf der Grundlage der zusätzlichen Informationen) und alle Buchstaben-Typen, in den Worten wird gewichtet auf der Grundlage der fitness-score.
given that this letter appears/does not appear in the word
enthalten diese.Wählen Sie einen Buchstaben teilt, dass die noch gültige Wörter in 2 Sätze von nahezu gleicher Größe. Mit positions-Informationen könnte es mehr als 2 Sätze. Wiederholen, bis Ihr set hat die Größe 1. Das ist der beste Weg. Der Beweis wird als übungsaufgabe.