
EinfĂŒhrung
Angenommen, ich frage Sie, wie viele Personen sich in einem Raum befinden sollen, damit zwei von ihnen mit einer Wahrscheinlichkeit von 50% eines Tages Geburtstag haben. Was wird die Antwort sein? Dies nennt man das Geburtstagsparadoxon.
Das Paradoxon lautet:
Befinden sich 23 Personen im Raum, wurden mit einer Wahrscheinlichkeit von 50% zwei von ihnen am selben Tag geboren.
Einige Versionen des Paradoxons machen noch stÀrkere Aussagen:
Wenn der Raum 70 Personen hat, wurden mit einer Wahrscheinlichkeit von 99% zwei von ihnen am selben Tag geboren.
Anfangs schien mir das ĂŒberraschend und nicht intuitiv zu sein. Lassen Sie uns herausfinden, warum dies wahr ist. Um die Aufgabe zu vereinfachen, gehen wir von folgenden Annahmen aus:
- Wir gehen davon aus, dass nicht alle Personen im Raum in einem Schaltjahr geboren wurden. Wir gehen davon aus, dass wir nicht zwei verschiedene FĂ€lle analysieren mĂŒssen.
- Es sind keine Zwillinge im Raum. Mit einem Paar Zwillinge ist die Lösung trivial.
- Wir gehen davon aus, dass Menschen gleichmĂ€Ăig und zufĂ€llig geboren werden. Was bedeutet das? Menschen werden mit gleicher Wahrscheinlichkeit an jedem Tag des Jahres geboren. Wenn dies ein wenig formalisiert wird, ist die Wahrscheinlichkeit einer Geburt an einem ausgewĂ€hlten Tag gleich frac1365 .
- Menschen werden unabhÀngig voneinander geboren. Dies bedeutet, dass das Geburtsdatum einer Person das Geburtsdatum einer anderen Person nicht beeinflusst.
Es ist erwÀhnenswert, dass diese Bedingungen in der realen Welt nicht unbedingt eingehalten werden. Insbesondere in der realen Welt werden Menschen nicht mit einheitlicher ZufÀlligkeit geboren.
Dieser Link enthĂ€lt Statistiken fĂŒr die Tage, an denen Menschen geboren werden. Obwohl unser Modell die reale Welt nicht genau widerspiegelt, erleichtert seine Einfachheit die Analyse des Problems erheblich.
Ich muss sagen, wenn sich 366 oder mehr Personen in einem Raum befinden, sind garantiert zwei Personen mit demselben Geburtstag anwesend. Dies folgt aus dem Dirichlet-Prinzip (dem âPrinzip der Tauben und Kistenâ): Wenn es 366 Personen und 365 Tage gibt, mĂŒssen mindestens zwei Personen denselben Geburtstag haben.
Stellen Sie sich vor, es befindet sich eine Person im Raum, und die Wahrscheinlichkeit, dass er gemeinsam mit einer anderen Person Geburtstag hat, betrÀgt 0. Lassen Sie
(An) wird das Ergebnis sein, in dem unter
n Menschen haben keinen einzigen Geburtstag. Lass
Pr[An] - die Wahrscheinlichkeit, dass unter
n Von den Menschen im Raum hat jeder an seinem Tag Geburtstag. Ebenso lassen
overlineAn wird ergÀnzt
An d.h. ein Ergebnis, in dem unter
n Menschen zwei Menschen haben den gleichen Geburtstag.
Pr[An]+ Pr[ overlineAn]=1
Pr[A1]=1 textweilsichnureinePersonimRaumbefindet
Angenommen, es befinden sich zwei Personen im Raum, A und B. Stellen Sie sich ohne Verlust der Verallgemeinerung vor, dass Person A am 1. Januar geboren wurde. Damit B und A unterschiedliche Geburtstage haben, muss B an jedem Tag auĂer dem 1. Januar geboren werden. Person B hat 364 Geburtstagsoptionen.
Pr[A2]= Pr[ textBunterscheidetsichvonA]= frac364365
Stellen Sie sich vor, es befinden sich drei Personen im Raum, A, B und C. Angenommen, Person A wurde am 1. Januar geboren, sodass alle an verschiedenen Tagen geboren wurden. Person B hatte nur 364 Tage, wie im vorherigen Beispiel. Da A und B zwei Tage dauern, kann Person C nur mit 365 - 2 = 363 Tagen geboren werden.
Pr[A3]= Pr[ textBistandersAundCistandersalsB,A]= frac364365 times frac363365
Hier passiert etwas Interessanteres: Angenommen, der Raum hat bereits
kâ1 Menschen. Wenn er den Raum betritt
k diese Person
k Menschen hatten unterschiedliche Geburtstage, zwei Ergebnisse mĂŒssen wahr sein
- Alle kâ1 Personen, die den Raum vor ihm betreten haben, sollten unterschiedliche Geburtstage haben. Wie hoch ist die Wahrscheinlichkeit dafĂŒr? Pr[Akâ1] .
- k - Diese Person muss einen anderen Geburtstag haben als alle anderen kâ1 Leute im Raum. Wie hoch ist die Wahrscheinlichkeit dafĂŒr? frac365â(kâ1)365 .
Es sollte auch beachtet werden, dass die beiden oben dargestellten Ergebnisse unabhÀngig voneinander sind, da nach der Annahme (4), die zu Beginn des Beitrags getroffen wurde,
k Die zweite Person wurde unabhÀngig von allen anderen geboren.
$$ Anzeige $$ \ begin {Gleichung *} \ begin {split} \ Pr [A_k] & = \ Pr [k - 1 \ text {Personen im Raum haben unterschiedliche Geburtstage} \ textbf {AND} \\ & \ \ \ \ \ \ \ \ text {person k hat einen anderen Geburtstag als} k - 1 \ text {people}] \\ & = \ Pr [k - 1 \ text {Personen im Raum haben unterschiedliche Geburtstage}] \\ & \ \ \ \ \ times \ Pr [\ text {person k hat einen anderen Geburtstag als} k - 1 \ text {people}] \\ & = \ Pr [A_ {k-1}] \ times \ frac { 365 - (k-1)} {365} \ end {split} \ end {Gleichung *} $$ display $$
Nun berechnen wir die Wahrscheinlichkeiten:
$$ Anzeige $$ \ begin {Gleichung *} \ begin {split} \ Pr [A_1] & = 1 \\ \ Pr [A_2] & = \ Pr [A_1] \ times \ frac {364} {365} = \ frac {364} {365} \ ca. 0,997 \\ \ Pr [A_3] & = \ Pr [A_2] \ times \ frac {363} {365} = \ frac {364} {365} \ times \ frac {363} {365} \ ca. 0,991 \\ \ Pr [A_4] & = \ Pr [A_3] \ times \ frac {362} {365} \ ca. 0,983 \\ & \ vdots \\ \ Pr [A_ {22}] & = \ Pr [A_ {21}] \ times \ frac {344} {365} \ ca. 0,525 \\ \ Pr [A_ {23}] & = \ Pr [A_ {22}] \ times \ frac {343} {365 } \ ca. 0,493 \\ \ end {split} \ end {Gleichung *} $$ display $$
Da haben wir bekommen
Pr[A23]=0,493<0,5 Dies bedeutet, dass die Wahrscheinlichkeit eines gemeinsamen Geburtstages fĂŒr zwei Personen gleich ist
Pr[ overlineA23]=1â Pr[A23]=1â0,493=0,507>0,5
Mit zunehmender Zunahme
n Wahrscheinlichkeit tendiert zu 1 und erreicht es.
Schwierigere Aufgabe
Angenommen, wir möchten dieses Problem auf den Fall verallgemeinern, wenn es einen gibt
n Menschen und
m mögliche Geburtstage. Haben
n,m Können wir die Wahrscheinlichkeit bestimmen, dass zwei Personen einen gemeinsamen Geburtstag haben?
Sie können das gleiche System verwenden: Wir werden ein Ergebnis haben
An alles bezeichnen
n Menschen, die an verschiedenen Tagen geboren wurden. Bei einer Person Àndert sich nichts
Pr[A1]=1
Wenn zwei Personen anwesend sind, bezeichnen wir sie als A und B. Damit Person B an einem anderen Tag geboren wird, muss Person B einen Geburtstag haben
mâ1 andere Optionen.
Pr[A2]= fracmâ1m
Bei drei Personen muss Person B einen anderen Geburtstag als A haben. Person C muss einen anderen Tag als A und B haben.
Pr[A3]= fracmâ1m times fracmâ2m
Generell fĂŒr jeden
n Wir können dieselbe rekursive Formel wie im vorherigen Abschnitt verwenden:
Pr[An]= Pr[Anâ1] times fracmâ(nâ1)m
Angenommen, wir möchten einen Ausdruck in geschlossener Form fĂŒr finden
Pr[An] , dann zerlegen wir den Ausdruck
$$ Anzeige $$ \ begin {Gleichung *} \ begin {split} \ Pr [A_n] & = \ Pr [A_ {n-1}] \ times \ frac {m - (n-1)} {m} \ \ & = \ Pr [A_ {n-2}] \ times \ frac {m - (n-2)} {m} \ times \ frac {m - (n-1)} {m} \\ & = \ Pr [A_ {n-3}] \ times \ frac {m - (n-3)} {m} \ times \ frac {m - (n-2)} {m} \ times \ frac {m - (n -1)} {m} \\ & \ \ vdots \\ & = \ Pr [A_2] \ times \ frac {m-2} {m} \ times \ frac {m-3} {m} \ times \ cdots \ times \ frac {m - (n-3)} {m} \ times \ frac {m - (n-2)} {m} \ times \ frac {m - (n-1)} {m} \\ & = \ prod_ {i = 1} ^ {n-1} \ frac {mi} {m} = \ prod_ {i = 1} ^ {n-1} 1 - \ frac {i} {m} \\ & \ approx \ prod_ {i = 1} ^ {n-1} e ^ {\ frac {-i} {m}} \ text {unter Verwendung der IdentitÀt} 1 - x \ approx e ^ {- x} \\ & = e ^ {- \ sum_ {i = 1} ^ {n-1} \ frac {i} {m}} \\ & = e ^ {\ frac {-n (n-1)} {2m}} \ ca. e ^ {\ frac {-n ^ 2} {2m}} \ end {split} \ end {Gleichung *} $$ display $$
Eine AnnÀherung an dieses Ergebnis ist
Pr[An] ungefĂ€hre fracân22m . Obwohl wir ungefĂ€hrere Grenzen finden können, gibt uns dies eine ausreichende AnnĂ€herung. Die einzige IdentitĂ€t, die wir in dieser AnnĂ€herung verwendet haben:
1âx approxeâx
In seiner abstrakten Form hat das Geburtstagsparadox viele Verwendungsmöglichkeiten im Computercomputer. Insbesondere wird es beim Hashing verwendet, das an sich viele Verwendungszwecke hat. Die in dieser Aufgabe gemachten Schlussfolgerungen sind der SchlĂŒssel zur Analyse der Wahrscheinlichkeit, zwei Elemente zu einem SchlĂŒssel zusammenzufassen. Dieses Problem kann weiter auf das Wahrscheinlichkeitsproblem von BĂ€llen und Becken (Problem mit BĂ€llen und BehĂ€ltern) verallgemeinert werden, das wir fĂŒr einen anderen Beitrag belassen werden.
Anwendung
Das Geburtstagsparadoxon ist nicht nur eine kĂŒnstliche Aufgabe oder ein interessanter Partytrick, es hat viele reale Anwendungen. Persönlich glaube ich, dass die in den Beweisen verwendete Wahrscheinlichkeitsanalyse nĂŒtzlich ist, um andere Aufgaben zu analysieren, an denen die Randomisierung beteiligt ist. Dies betrifft insbesondere die Entwicklung kryptografischer Hash-Funktionen. Wir werden sehen, wie nĂŒtzlich die oben durchgefĂŒhrte Analyse sein kann, um Hash-Funktionen mit Schutz vor Angriffen von âGeburtstagenâ zu erstellen.
Definieren wir zunÀchst, was eine Hash-Funktion ist. Hash-Funktion
h:U rightarrow[0,mâ1] Ist eine Funktion, die eine Zuordnung aus einer Menge ausfĂŒhrt
U in einer Zahl im Bereich
[0,mâ1] . Funktion
h definiert als
h(x)=x modm - Beispiel einer Hash-Funktion von
mathbbN rightarrow[0,mâ1] . Hash-Funktionen haben viele Verwendungsmöglichkeiten, insbesondere in Kombination mit der beliebten Hash-Tabellen-Datenstruktur. Es wird auch in der Kryptographie verwendet, wo eine bestimmte Art von Hash-Funktion verwendet wird, die als "kryptoraphische Hash-Funktion" bezeichnet wird.
Eine der vielen Eigenschaften, die eine kryptoraphische Hash-Funktion haben muss, ist die KollisionsbestÀndigkeit. Es muss schwierig sein, zwei solche zu finden
u1,u2 inU so dass sie eine Kollision bilden, d.h.
h(u1)=h(u2) .
Wir werden uns auf den Widerstand gegen Kollisionen konzentrieren. ZunĂ€chst werde ich erklĂ€ren, warum es eine wĂŒnschenswerte Eigenschaft ist. Dazu betrachten wir zunĂ€chst digitale Signaturen.
In der Vergangenheit verwendeten Personen und Organisationen Unterschriften und Siegel, um Dokumente zu âsignierenâ. In letzter Zeit gab es einen Ăbergang zu elektronischen oder digitalen Signaturen. Eine digitale Signatur muss drei grundlegende Eigenschaften erfĂŒllen.
- Wenn Sie ein Dokument signieren, mĂŒssen Sie ĂŒberprĂŒfen können, wer das Dokument signiert hat.
- Nach der Unterzeichnung des Dokuments sollte niemand in der Lage sein, es zu fÀlschen.
- Die Person, die das Dokument unterschrieben hat, kann die Unterzeichnung des Dokuments spÀter nicht widerlegen.
Eine digitale Signatur ist eine Möglichkeit, die Wahrheit eines Dokuments oder einer Nachricht nachweislich zu ĂŒberprĂŒfen. Eine digitale Signatur stellt sicher, dass die empfangene Nachricht von einem bekannten Absender erstellt und nicht geĂ€ndert wurde.
Nehmen wir an, wir haben ein Dokument
m . Wie unterschreiben wir es?
Jeder Benutzer / jede Organisation verfĂŒgt ĂŒber einen eindeutigen privaten SchlĂŒssel
pk und öffentlicher SchlĂŒssel
pubk . Sie verwenden die Signaturfunktion, um ein Dokument mit ihrem eigenen privaten SchlĂŒssel zu signieren. Eine digitale Signatur kann jedoch nur eine kleine Anzahl von Dokumenten signieren. Der Umfang der Signaturfunktion ist gering. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, ein kleineres Dokument zu erstellen, das das Originaldokument darstellt, jedoch in einer viel kleineren GröĂe. Am hĂ€ufigsten wird eine Hash-Funktion auf dieses groĂe Dokument angewendet. Eine Hash-Funktion wird verwendet, um es von einem groĂen Raum auf einen kleineren abzubilden, und das Ergebnis einer solchen Operation wird als "Fingerabdruck" bezeichnet. Die Signatur verwendet den Fingerabdruck und den privaten SchlĂŒssel, um die Signatur zu erstellen. Das Verfahren kann wie folgt beschrieben werden:
- Holen Sie sich den privaten SchlĂŒssel pk .
- Hash ein Dokument m und bekommen h(m) .
- Zeichen h(m) mit dem privaten SchlĂŒssel pk .
- Wir senden sign(h(m),pk) und öffentlicher SchlĂŒssel pubk Jeder, der das Dokument bestĂ€tigen möchte.
Wer hat
sign(h(m),pk)) und öffentlicher SchlĂŒssel, kann ĂŒberprĂŒfen, ob das Dokument wirklich ist
m von der richtigen Person unterschrieben.
Problem: Angenommen, die Angreiferin Eva hat zwei Dokumente gefunden
m,mâČ wo
m - Dies ist der vorliegende Vertrag, und
mâČ - ein betrĂŒgerisches Dokument, so dass
h(m)=h(mâČ) . Angenommen, Eva weiĂ im Voraus, dass Alice nur unterschreiben wird
m , aber nicht
mâČ . Vor dem Signieren wird eine kryptografische Hash-Funktion auf das Dokument angewendet
h . Eve geht zu Alice und bittet sie, ein Dokument zu unterschreiben
m unter Verwendung der oben beschriebenen Sequenz. Nun kann Eve behaupten, Alice habe ein betrĂŒgerisches Dokument unterschrieben
mâČ , weil
h(m)=h(mâČ) . Alice wird in keiner Weise beweisen können, dass sie nicht unterschrieben hat
mâČ .
Im obigen Beispiel
h Es stellte sich heraus, dass es sich um eine kollisionssichere Funktion handelt, sodass Eve zwei eingehende DatensÀtze mit demselben Wert finden konnte. Eve konnte behaupten, dass Alice unterschrieben hatte
mâČ obwohl sie tatsĂ€chlich nur unterschrieb
m . Dies unterstreicht die Bedeutung der KollisionsbestÀndigkeit und zeigt, warum digitale Signaturen anfÀllig sind, wenn die Hash-Funktion instabil ist.
Lass
h:U rightarrow[0,mâ1] wird eine Hash-Funktion sein. Angenommen, die Eingabedaten werden zufĂ€llig gleichmĂ€Ăig und unabhĂ€ngig in eines der Elemente gehasht
m .
Die Aufgabe des "Geburtstag" -Angriffs besteht darin, die geringste Anzahl von Elementen zu finden
n was mit gehasht werden kann
h so dass wir zwei Elemente finden können
x,y inU bei denen
h(x)=h(y) .
Wenn der Angreifer âGeburtstageâ angreift, nimmt er zufĂ€llig auf
x inU und Paare halten
(x,h(x)) . Ein Angreifer wÀhlt diese Paare wiederholt aus und speichert sie, bis er zwei Werte gefunden hat
x,y bei denen
h(x)=h(y) . Wir mĂŒssen bestimmen, wie oft der Angreifer diesen Vorgang wiederholen muss, bis er eine Kollision findet.
Um den Angriff auf âGeburtstageâ zu analysieren, können Sie dieselben Prinzipien verwenden, die wir fĂŒr das Geburtstagsparadoxon verwendet haben. Bei dem Angriff "Geburtstage"
m bezeichnet die Anzahl der Tage in einem Jahr und
U Àhnlich wie Menschen, die einen Raum betreten. Menschen werden an ihren Geburtstagen gehasht, was eine der Bedeutungen sein kann.
m . Nehmen wir an, wir mĂŒssen eine Kollision mit einer Wahrscheinlichkeit von 99% finden. Wir mĂŒssen wissen, was das kleinste ist
n , in dem der Hash zweier Werte einen Geburtstag hat (in der Welt der Hash-Funktionen bedeutet dies, dass zwei EingabedatensÀtze in denselben Wert gehasht werden).
Das haben wir vorher gezeigt
Pr[An] ungefĂ€hre fracân22mWir wollen fragen
Pr[ overlineAn] approxe fracân22m= frac99100 , also
Pr[An] ungefĂ€hre fracân22m= frac1100 .
$$ display $$ \ begin {Gleichung *} \ begin {split} e ^ {\ frac {-n ^ 2} {2m}} & = \ frac {1} {100} \\ \ frac {n ^ 2} {2m} & = \ ln 100 \\ n ^ 2 & = 2 m \ ln 100 \\ n & = \ sqrt {2 m \ ln 100} \ end {split} \ end {Gleichung *} $$ display $$
Die oben gezeigte Analyse zeigt, dass Kollisionen in Hash-Funktionen mit einem GröĂenintervall abgerufen werden mĂŒssen
m Ein Angreifer muss ungefÀhr einheitlich und unabhÀngig hashen
sqrt2m ln100=O( sqrtm) fĂŒr eine fast vollstĂ€ndige Garantie (99% Wahrscheinlichkeit), dass zwei Elemente mit demselben Wert gehasht werden.
Angenommen, wir möchten eine Kollision mit einer Wahrscheinlichkeit von 50% erhalten. dann brauchen wir
n= sqrt2m ln2 . Die wichtige Schlussfolgerung hier ist, dass wir die Reihenfolge hashen mĂŒssen, um eine Kollision mit einer Wahrscheinlichkeit von mehr als 0,5 zu erhalten
sqrtm Elemente. Dies steht im Einklang mit unserer vorherigen Analyse fĂŒr
m=365 , weil
sqrt2 ln2 cdot365 ungefÀhr gleich 23.
ZusÀtzliche Aufgaben
- Haben n von Menschen m Tage und eine bestimmte Anzahl k Finden Sie die Wahrscheinlichkeit, dass genau k Leute haben den gleichen Geburtstag.
- Lassen Sie uns die obige Aufgabe ein wenig transformieren. Nehmen wir an, wir haben m Tage und eine bestimmte Anzahl k . Was wird der kleinste Wert sein n bei denen nicht weniger k Menschen haben den gleichen Geburtstag mit einer Wahrscheinlichkeit von mindestens 0,5? Können Sie diese Aufgabe mit beliebiger Wahrscheinlichkeit verallgemeinern? p>0 ?
- Angenommen, wir haben 100 Zahlen von 1 bis 100 sowie eine Maschine, die eine Zufallszahl von 1 bis 100 in einer einheitlichen und zufĂ€lligen Reihenfolge errĂ€t. Wie oft mĂŒssen wir die Maschine wie erwartet verwenden, damit die Maschine alle Zahlen von 1 bis 100 errĂ€t?
- Können Sie diese Aufgabe auf eine beliebige verallgemeinern? n ?
- Angenommen, wir haben eine Hash-Funktion, die Elemente in einem Speicherbereich zufĂ€llig gleichmĂ€Ăig anzeigt. GesamtflĂ€chen lassen m . Wie viele Elemente n MĂŒssen wir unserer Datenstruktur mathematische Erwartungen hinzufĂŒgen, damit in jeder Region mindestens zwei Elemente gehasht werden?