Einleitung :
Das Kollisionsproblem bezieht sich meist auf die 2-zu-1-Version, die Scott Aaronson in seiner Doktorarbeit beschrieben hat. Da gerade ist und eine Funktion f : { 1 , . . . , N } → { 1 , . . . , n } wir wissen vorher, dass entweder f 1-zu-1 oder 2-zu-1 ist. Wir sind nur zu machen , Anfragen über den Wert der erlaubten f ( i ) für jedes i ∈ { 1 , 2 ,nf:{1,...,n}→{1,...,n}ff(i) . Das Problem fragt dann, wie viele Abfragen wir machen müssen, um mit Sicherheit zu bestimmen, ob f 1-zu-1 oder 2-zu-1 ist.i ∈ { 1 , 2 , . . . , N }f
Das deterministische Lösen der 2-zu-1-Version erfordert Abfragen, und im Allgemeinen erfordert das Unterscheiden von r-zu-1-Funktionen von 1-zu-1-Funktionen n / r + 1- Abfragen.n / 2 + 1n/r+1
Deterministische klassische Lösung :
Dies ist eine einfache Anwendung des Pigeonhole-Prinzips: Wenn eine Funktion r-to-1 ist, dann ist nach Abfragen garantiert, dass wir eine Kollision gefunden haben. Wenn eine Funktion 1 zu 1 ist, liegt keine Kollision vor. Wenn wir Pech haben, können n / r Anfragen unterschiedliche Antworten liefern. Es sind also n / r + 1 Abfragen erforderlich.n/r+1n/rn/r+1
Randomisierte klassische Lösung :
Wenn wir Zufälligkeit zulassen, ist das Problem einfacher. Nach dem Geburtstagsparadoxon finden wir mit hoher Wahrscheinlichkeit eine Kollision in einer festen 2-zu-1-Funktion nach Θ ( √ ), wenn wir zufällig (verschiedene) Abfragen auswählen
Abfragen.Θ(n−−√)
Quantum BHT Lösung :
Intuitiv kombiniert der Algorithmus die Quadratwurzel-Beschleunigung aus dem
Geburtstagsparadoxon unter
Verwendung der (klassischen) Zufälligkeit mit der Quadratwurzel-Beschleunigung aus dem (Quanten-) Algorithmus von Grover.
Erstens Eingaben f werden zufällig ausgewählt , und f bei allen von ihnen abgefragt. Wenn es eine Kollision zwischen diesen Eingaben gibt, geben wir das kollidierende Paar von Eingaben zurück. Andernfalls werden alle diese Eingaben unterschiedlichen Werten durch f zugeordnet . Dann wird der Algorithmus von Grover verwendet, um eine neue Eingabe für f zu finden , die kollidiert. Da es nur ist
n 2 / 3 solche Eingaben f kann Grover-Algorithmus nur einen finden , indem sie (falls vorhanden)
O ( √n1/3ffffn2/3fO(n2/3−−−−√)=O(n1/3)f