Einfache Kombinations- / Wahrscheinlichkeitsfrage basierend auf Stringlänge und möglichen Zeichen

9

Unter der Annahme einer "vollständigen Zufälligkeit" und einer Zeichenfolge mit einer Länge von 20 Zeichen, wobei jedes Zeichen eines von 62 möglichen Zeichen sein kann:

  • Wie viele Kombinationen sind insgesamt möglich? (Errate 20 hoch 62.)
  • Wenn neue Zeichenfolgen nacheinander zufällig ausgewählt und zu einer Liste der bisher ausgewählten Zeichenfolgen hinzugefügt werden, liegt die Anzahl der Zeichenfolgen, die ausgewählt werden müssen, bevor eine bereits ausgewählte Zeichenfolge ausgewählt werden kann, unter 1 zu 100000 ( )?105

Hinweis: 62 stammt aus: Ziffern (0-9), Großbuchstaben (AZ) und Kleinbuchstaben (az).

Fehler
quelle
2
Ihr zweiter Aufzählungspunkt kann auf (mindestens) zwei Arten gelesen werden. Ich frage mich, woran Sie interessiert sind. ( 1 ) Die Wahrscheinlichkeit, dass die te Zeichenfolge mit einer der vorherigen Zeichenfolgen übereinstimmt, oder ( 2 ) Die Wahrscheinlichkeit, dass zum Zeitpunkt der Auswahl der ten Zeichenfolge ein Duplikat in der Sammlung vorhanden ist von bisher gezogenen Saiten. Die Antworten auf diese beiden Fragen werden sehr unterschiedlich sein. :)nn
Kardinal
1
Vielleicht macht die Betrachtung eines zweistelligen Alphabets den Unterschied deutlich. Lassen Sie die Buchstaben sein und . Wir können fragen: ( 1 ) Für welches haben wir eine 99% ige Chance, dass die te Zeichenfolge ein Duplikat einer vorherigen Zeichenfolge ist? Das hier ist 8, da der einzige Weg, auf dem wir versagen, darin besteht, dass unsere Sequenz entweder oder , was eine Gesamtwahrscheinlichkeit von . Oder fragen wir ( 2 ) Für das, was haben wir mindestens eine 99% ige Chance, etwas Duplikat zu sehen? In diesem Fall ist da wir zu dem Zeitpunkt drei Zeichenfolgen gesehen haben, entwederHTnnnTTTTHHHHHT2(n1)nn=3Hoder wurde mindestens einmal wiederholt. T
Kardinal
1
Matts Antwort behandelt ( 1 ), was im Wesentlichen die Frage beantwortet, ob "meine" Zeichenfolge mit der eines anderen übereinstimmt. Aber, wenn Sie über einige andere zwei Leute Saiten besorgt sind auch potentiell passende, dann sind Sie interessiert ( 2 ). Es kommt darauf an, ob Sie eine bestimmte interessierende Zeichenfolge haben, mit der Sie alle anderen vergleichen, oder ob Sie alle Zeichenfolgen miteinander vergleichen. Ich bin mir jedoch nicht sicher, ob ich das klarer mache. (Ihr Problem läuft auf eine von zwei Varianten des berühmten sogenannten "Geburtstagsproblems" hinaus.)
Kardinal
1
Kardinal ist wie immer richtig. Ich nahm an, Sie hatten eine "Ziel" -String, für die Sie eine Liste mit Vermutungen erstellt haben. Wenn Sie stattdessen zufällig Zeichenfolgen generieren und wissen möchten, welche Zahl sicher generiert werden kann, bevor zwei Zeichenfolgen übereinstimmen, ist die Antwort in der Tat sehr unterschiedlich. Ich werde meine Antwort ändern, um diesen Fall anzusprechen, wenn es Ihnen recht ist.
Matt Krause
1
Ich habe mein vorheriges Beispiel nicht ganz klar gemacht. Das tut mir leid. Ich dachte an ein aus zwei Buchstaben bestehendes Alphabet und zeichnete Zeichenfolgen der Länge eins . Daher wird , wenn Ich schrieb , die für stand , , ..., , . {H,T}HHHHTs1=Hs2=Hsn1=Hsn=T
Kardinal

Antworten:

11

Gesamtzahl der Möglichkeiten

1) Schließen! Sie haben 62 Auswahlmöglichkeiten für das erste Zeichen, 62 für das zweite usw., so dass Sie am Ende , was eine absurd große Zahl ist.62626262=6220

Kollision mit einer "Ziel" -String

2) Wie oben festgestellt, gibt es mögliche Zeichenfolgen. Sie möchten wissen, wie viele Sie erraten müssen, um eine bessere Wahrscheinlichkeit als 1 von 100.000 zu haben, die "Ziel" -String zu erraten. Im Wesentlichen fragen Sie, was Um es genau zu finden, müssten Sie x aufrunden (oder eins hinzufügen, wenn sie genau gleich sind), aber wie Sie gleich sehen werden, spielt es keine Rolle.6220

x62201105

Durch grundlegende Algebra können wir das neu ordnen, wenn

105x6220105x(6.210)20105x6.2201020x6.2201015

Wenn man rechnet, ist ungefähr , also nennen wir das Ganze oder, genauer gesagt, eine ganze Menge.6.2207101571030

Dies ist natürlich der Grund, warum lange Passwörter sehr gut funktionieren :-) Bei echten Passwörtern müssen Sie sich natürlich Gedanken über Zeichenfolgen mit einer Länge von höchstens zwanzig machen, was die Anzahl der Möglichkeiten noch weiter erhöht.

Duplikate in der Liste

Betrachten wir nun das andere Szenario. Zeichenfolgen werden zufällig generiert und wir möchten bestimmen, wie viele Zeichenfolgen generiert werden können, bevor die Wahrscheinlichkeit besteht, dass zwei Zeichenfolgen übereinstimmen. Die klassische Version dieses Problems heißt Geburtstagsproblem (oder 'Paradox') und fragt nach der Wahrscheinlichkeit, dass zwei von n Personen denselben Geburtstag haben. Der Wikipedia-Artikel [1] sieht anständig aus und enthält einige Tabellen, die Sie möglicherweise nützlich finden. Trotzdem werde ich versuchen, Ihnen auch hier den Geschmack für die Antwort zu geben.

Einige Dinge zu beachten:

-Die Wahrscheinlichkeit, dass eine Übereinstimmung muss 1 ergeben, sodass und umgekehrt.P(match)=1P(no match)

-Für zwei unabhängige Ereignisse und ist die Wahrscheinlichkeit von .ABP(A&B)=P(A)P(B)

Um die Antwort zu erhalten, berechnen wir zunächst die Wahrscheinlichkeit, dass für eine feste Anzahl von Zeichenfolgen keine Übereinstimmung gefunden wird . Sobald wir wissen, wie das geht, können wir diese Gleichung gleich dem Schwellenwert (1 / 100.000) setzen und nach . Nennen wir der Einfachheit halber die Anzahl der möglichen Zeichenfolgen ( ).kkN6220

Wir werden die Liste durchgehen und die Wahrscheinlichkeit berechnen, dass die Zeichenfolge ^ {th} mit einer der Zeichenfolgen "darüber" in der Liste übereinstimmt. Für die erste Zeichenfolge haben wir Gesamtzeichenfolgen und nichts in der Liste, also . Für die zweite Zeichenfolge gibt es noch Gesamtmöglichkeiten, aber eine davon wurde von der ersten Zeichenfolge "aufgebraucht", sodass die Wahrscheinlichkeit einer Übereinstimmung für diese Zeichenfolge Für die dritte Zeichenfolge gibt es zwei Möglichkeiten, eine Übereinstimmung zu und daher Möglichkeiten, dies nicht zu tun, also und so weiter. Im Allgemeinen ist die Wahrscheinlichkeit derkNPk=1(no match)=NN=1N N-2Pk=3(keine Übereinstimmung)=N-2Pk=2(no match)=N1NN2 kPk(keine Übereinstimmung)=N-k+1Pk=3(no match)=N2Nk te Zeichenfolge, die nicht mit den anderen übereinstimmt, ist

Pk(no match)=Nk+1N

Wir wollen jedoch die Wahrscheinlichkeit, dass keine der Zeichenfolgen übereinstimmt . Da alle Ereignisse unabhängig sind (gemäß der Frage), können wir diese Wahrscheinlichkeiten einfach wie multiplizieren: Das kann ein wenig vereinfacht werden: Der erste Schritt multipliziert nur die Brüche, der zweite verwendet die Definition von Fakultät ( ), um die Produkte von zu ersetzenP ( keine Übereinstimmungen ) = N.k

P(No Matches)=NNN1NN2NNk+1N
P(No Matches)=N(N1)(N2)(Nk+1)NkP(No Matches)=N!Nk(Nk)!P(No Matches)=k!(Nk)Nk
k!=(k)(k1)(k2)1Nk+1N mit etwas etwas überschaubarerem, und der letzte Schritt tauscht einen Binomialkoeffizienten ein. Dies gibt uns eine Gleichung für die Wahrscheinlichkeit, dass nach dem Erzeugen von Strings überhaupt keine Übereinstimmungen vorliegen. Theoretisch könnte man das gleich und nach . In der Praxis wird es schwierig sein, eine Antwort zu finden, da Sie mit großen Zahlen multiplizieren / dividieren werden - Fakultäten wachsen sehr schnell ( Ist mehr als 150 Stellen lang).k1100,000k100!

Es gibt jedoch Annäherungen, sowohl für die Berechnung der Fakultät als auch für das gesamte Problem. Diese Arbeit [2] schlägt wobei p die Wahrscheinlichkeit ist, keine Übereinstimmung zu sehen. Seine Tests sind maximal , aber dort ist es immer noch ziemlich genau. Wenn Sie Ihre Zahlen eingeben, erhalte ich ungefähr .

k=0.5+0.252Nln(p)
N=48,0003.71015

Verweise

[1] http://en.wikipedia.org/wiki/Birthday_problem

[2] Mathis, Frank H. (Juni 1991). "Ein allgemeines Geburtstagsproblem". SIAM Review (Gesellschaft für industrielle und angewandte Mathematik) 33 (2): 265–270. JSTOR Link

Matt Krause
quelle
+1 Genial, da meine schlechten mathematischen Fähigkeiten eindeutig dazu geführt haben, dass die Frage gestellt wurde, lasse ich die Frage einen Tag lang unbeantwortet, sehe aber für mich gut aus und ist weitaus klarer als erwartet - danke!
Fehler
1
Froh, dass ich Helfen kann! Lassen Sie mich wissen, wenn etwas unklar ist. Zum Spaß habe ich die Zahlen eingegeben. Sie benötigen 7044234255469980229683302646164 Vermutungen; wie ich schon sagte - viel!
Matt Krause
+1 @Matt Krause: +1 zu deinem Kommentar unter der Antwort; Ihre Antwort und Ihr Engagement, die bestmögliche Antwort zu geben, sind vorbildlich, bemerkenswert und danken Ihnen für all Ihre harte Arbeit!
Fehler