Dies ist ein (langer!) Kommentar zu der schönen Arbeit, die @vqv in diesem Thread gepostet hat. Es zielt darauf ab, eine endgültige Antwort zu erhalten. Er hat die harte Arbeit geleistet, das Wörterbuch zu vereinfachen. Alles, was bleibt, ist es, es in vollen Zügen zu nutzen. Seine Ergebnisse legen nahe, dass eine Brute-Force-Lösung möglich ist . Immerhin, einschließlich eines Platzhalters, gibt es höchstens Wörter, die man mit 7 Zeichen machen kann, und es sieht so aus, als ob weniger als 1/10000 von ihnen - sagen wir, ungefähr eine Million - werden Fehlt ein gültiges Wort. 277= 10 , 460 , 353 , 203
Der erste Schritt besteht darin, das minimale Wörterbuch mit einem Platzhalterzeichen "?" Zu erweitern. 22 der Buchstaben erscheinen in aus zwei Buchstaben bestehenden Wörtern (alle außer c, q, v, z). Fügen Sie diesen 22 Buchstaben einen Platzhalter hinzu und fügen Sie diese in das Wörterbuch ein: {a ?, b ?, d ?, ..., y?} Sind jetzt drin. Auf ähnliche Weise können wir die minimalen Wörter mit drei Buchstaben untersuchen und einige zusätzliche Wörter verursachen im Wörterbuch erscheinen. Schließlich fügen wir "??" zum Wörterbuch. Nach dem Entfernen von Wiederholungen enthält es 342 minimale Wörter.
Eine elegante Methode, um fortzufahren - eine, die in der Tat nur sehr wenig Codierung verwendet - besteht darin , dieses Problem als algebraisch anzusehen . Ein Wort, das als ungeordnete Buchstabenfolge betrachtet wird, ist nur ein Monom. Beispielsweise ist "Gamaschen" das Monom . Das Wörterbuch ist daher eine Sammlung von Monomen. Es sieht aus wiea p s2t
{ a2, a b , a d, . . . , O zψ,wxψ,ψ2}
(Um Verwechslungen zu vermeiden, habe ich für das Platzhalterzeichen geschrieben).ψ
Ein Rack enthält nur dann ein gültiges Wort, wenn dieses Wort das Rack unterteilt.
Eine abstraktere, aber äußerst leistungsfähige Art zu sagen ist, dass das Wörterbuch ein ideales im Polynomring R = Z [ a , b , … , z , ψ ] erzeugt und dass die Racks mit gültigen Wörtern im Quotienten Null werden Ring R / I , während Racks ohne gültige Wörter im Quotienten ungleich Null bleiben. Wenn wir die Summe aller Racks in R bilden und in diesem Quotientenring berechnen, entspricht die Anzahl der Racks ohne Wörter der Anzahl der verschiedenen Monome im Quotienten.ichR=Z[a,b,…,z,ψ]R/IR
Darüber hinaus ist die Summe aller Racks in einfach auszudrücken. Sei α = a + b + ⋯ + z + ψ die Summe aller Buchstaben im Alphabet. α 7 enthält ein Monom für jedes Rack. (Als zusätzlichen Bonus zählen die Koeffizienten die Anzahl der Arten, wie jedes Rack gebildet werden kann, so dass wir seine Wahrscheinlichkeit berechnen können, wenn wir möchten.)Rα=a+b+⋯+z+ψα7
Als einfaches Beispiel (um zu sehen, wie dies funktioniert) nehmen wir an, dass (a) wir keine Platzhalter verwenden und (b) alle Buchstaben von "a" bis "x" als Wörter betrachtet werden. Dann müssen die einzig möglichen Gestelle, aus denen Wörter nicht gebildet werden können, vollständig aus ys und zs bestehen. Wir berechnen modulo das Ideal, das von { a , b , c , … , x } schrittweise erzeugt wird, also:α=(a+b+c+⋯+x+y+z)7{a,b,c,…,x}
α0α1α2⋯α7=1=a+b+c+⋯+x+y+z≡y+zmodI≡(y+z)(a+b+⋯+y+z)≡(y+z)2modI≡(y+z)6(a+b+⋯+y+z)≡(y+z)7modI.
Aus der endgültigen Antwort können wir die Wahrscheinlichkeit ablesen, dass ein Nicht-Wort-Rack entsteht: : Jeder Koeffizient zählt die Möglichkeiten, wie das entsprechende Rack gezeichnet werden kann. Zum Beispiel gibt es 21 (von 26 ^ 7 möglichen) Möglichkeiten, 2 ys und 5 zs zu zeichnen, weil der Koeffizient von y isty7+7y6z+21y5z2+35y4z3+35y3z4+21y2z5+7yz6+z7 entspricht 21.y2z5
Aus elementaren Berechnungen geht hervor, dass dies die richtige Antwort ist. Der springende Punkt ist, dass dieses Verfahren unabhängig vom Inhalt des Wörterbuchs funktioniert.
Beachten Sie, wie das Reduzieren des Leistungsmoduls auf jeder Stufe die Berechnung reduziert: Dies ist die Abkürzung, die durch diesen Ansatz aufgedeckt wird. (Ende des Beispiels)
Polynomalgebrasysteme implementieren diese Berechnungen . Hier ist zum Beispiel Mathematica- Code:
alphabet = a + b + c + d + e + f + g + h + i + j + k + l + m + n + o +
p + q + r + s + t + u + v + w + x + y + z + \[Psi];
dictionary = {a^2, a b, a d, a e, ..., w z \[Psi], \[Psi]^2};
next[pp_] := PolynomialMod[pp alphabet, dictionary];
nonwords = Nest[next, 1, 7];
Length[nonwords]
(Das Wörterbuch kann auf einfache Weise aus @ vqvs min.dict erstellt werden. Ich habe hier eine Zeile eingefügt, die zeigt, dass es kurz genug ist, um direkt angegeben zu werden, wenn Sie möchten.)
Der Ausgang - die 10 Minuten der Berechnung nimmt - ist 577958. ( NB In einer früheren Version dieser Nachricht hatte ich einen kleinen Fehler bei der Vorbereitung des Wörterbuch gemacht und erhielt 577940. Ich habe den Text bearbeitet zu reflektieren , was ich hoffe , ist jetzt die richtigen Ergebnisse!) Etwas weniger als die Millionen, die ich erwartet hatte, aber in der gleichen Größenordnung.
Um die Wahrscheinlichkeit zu berechnen , ein solches Rack zu erhalten, müssen wir die Anzahl der Möglichkeiten berücksichtigen, mit denen das Rack gezeichnet werden kann. Wie wir im Beispiel gesehen haben, entspricht dies seinem Koeffizienten in . Die Chance, ein solches Rack zu ziehen, ist die Summe aller dieser Koeffizienten, die leicht zu finden sind, wenn alle Buchstaben gleich 1 gesetzt werden:α7
nonwords /. (# -> 1) & /@ (List @@ alphabet)
Die Antwort ist gleich 1066056120, was eine Chance von 10,1914% des Zeichnens eines Racks ergibt, aus dem kein gültiges Wort gebildet werden kann (wenn alle Buchstaben gleich wahrscheinlich sind).
Wenn die Wahrscheinlichkeiten der Buchstaben variieren, ersetzen Sie einfach jeden Buchstaben durch die Wahrscheinlichkeit, dass er gezogen wird:
tiles = {9, 2, 2, 4, 12, 2, 3, 2, 9, 1, 1, 4, 2, 6, 8, 2, 1, 6, 4, 6,
4, 2, 2, 1, 2, 1, 2};
chances = tiles / (Plus @@ tiles);
nonwords /. (Transpose[{List @@ alphabet, chances}] /. {a_, b_} -> a -> b)
Die Ausgabe ist 1.079877553303%, die genaue Antwort (wenn auch unter Verwendung eines ungefähren Modells, Zeichnung mit Ersatz). Rückblickend dauerte es vier Zeilen, um die Daten einzugeben (Alphabet, Wörterbuch und Alphabethäufigkeiten), und nur drei Zeilen, um die Arbeit zu erledigen: Beschreiben Sie, wie Sie die nächste Potenz von modulo I nehmen, die siebte Potenz rekursiv nehmen und die ersetzen Wahrscheinlichkeiten für die Buchstaben.αI