Pendahuluan :
Masalah tabrakan paling sering merujuk pada versi 2-ke-1 yang dijelaskan oleh Scott Aaronson dalam tesis PhD-nya. Mengingat bahwa adalah genap dan fungsi kita tahu sebelumnya bahwa adalah 1-ke-1 atau 2-ke -1. Kami hanya diperbolehkan membuat pertanyaan tentang nilai untuk setiap . Masalahnya kemudian bertanya berapa banyak pertanyaan yang perlu kita buat untuk menentukan dengan pasti apakah adalah 1-ke-1 atau 2-ke-1.f : { 1 , . . . , N } → { 1 , . . . , N } f f ( i ) i ∈ { 1 , 2 , . . . , n } fnf:{1,...,n}→{1,...,n}ff(i)i∈{1,2,...,n}f
Memecahkan versi 2-ke-1 secara deterministik membutuhkan query, dan secara umum membedakan fungsi r-to-1 dari fungsi 1-ke-1 membutuhkan query.n / r + 1n/2+1n/r+1
Solusi klasik deterministik :
Ini adalah penerapan langsung prinsip pigeonhole: jika suatu fungsi r-to-1, maka setelah kueri kami dijamin telah menemukan tabrakan. Jika suatu fungsi adalah 1-ke-1, maka tidak ada tabrakan. Jika kita kurang beruntung maka query dapat memberikan jawaban yang berbeda. Jadi permintaan diperlukan.n / r n / r + 1n/r+1n/rn/r+1
Solusi klasik acak :
Jika kita membiarkan keacakan, masalahnya lebih mudah. Dengan paradoks ulang tahun, jika kita memilih kueri (berbeda) secara acak, maka dengan probabilitas tinggi kita menemukan tabrakan dalam fungsi 2-ke-1 yang tetap setelah
kueri .Θ(n−−√)
Solusi BHT kuantum :
Secara intuitif, algoritma menggabungkan speedup akar kuadrat dari
paradoks ulang tahun
menggunakan keacakan (klasik) dengan speedup akar kuadrat dari algoritma (kuantum) Grover.
Pertama, input ke dipilih secara acak dan dipertanyakan semuanya. Jika ada tabrakan di antara input ini, maka kami mengembalikan pasangan input yang bertabrakan. Jika tidak, semua input ini dipetakan ke nilai yang berbeda oleh . Kemudian algoritma Grover digunakan untuk mencari input baru untuk yang bertabrakan. Karena hanya ada
input untuk , algoritma Grover dapat menemukan satu (jika ada) dengan membuat hanya
kueri ke . f f f f n 2 / 3n1/3ffffn2/3fO(n2/3−−−−√)=O(n1/3)f