Введение :
Проблема столкновения чаще всего относится к версии 2 к 1, которая была описана Скоттом Ааронсоном в его диссертации. Учитывая , что четно и функция F : { 1 , . , , , П } → { 1 , . , , , n } мы заранее знаем, что f равно 1-к-1 или 2-к-1. Нам разрешено только делать запросы о значении f ( i ) для любого i ∈ { 1 , 2 ,Nе: { 1 , . , , , П } → { 1 , . , , , n }ее( я ) . Затем проблема спрашивает, сколько запросов нам нужно сделать, чтобы с уверенностью определить,являетсяли f 1-к-1 или 2-к-1.i∈{1,2,...,n}f
Решение версии 2-к-1 детерминировано требует запросов, и, в общем, для отличия функций r-to-1 от функций 1-к-1 требуется n / r + 1 запросов.n/2+1n/r+1
Детерминированное классическое решение :
Это прямое применение принципа голубя: если функция r-to-1, то после запросов мы гарантированно обнаружим столкновение. Если функция 1-к-1, то столкновения не существует. Если нам не повезет, то n / r- запросы могут дать разные ответы. Так что n / r + 1 запросов необходимы.п / г + 1н / рп / г + 1
Рандомизированное классическое решение :
Если мы допустим случайность, проблема будет проще. По парадоксу дня рождения, если мы выбираем (различные) запросы случайным образом, то с большой вероятностью мы находим столкновение в любой фиксированной функции 2-в-1 после
запросы.Θ ( н--√)
Квантовое решение BHT :
Интуитивно, алгоритм объединяет ускорение квадратного корня из
парадокса дня рождения
с использованием (классической) случайности с ускорением квадратного корня из алгоритма Гровера (квантового).
Во- первых, входы F выбраны случайным образом и е опрашивается на всех из них. Если между этими входами есть коллизия, мы возвращаем пару входов. В противном случае все эти входные данные отображаются в различные значения на f . Затем алгоритм Гровера используется, чтобы найти новый вход для f, который сталкивается. Поскольку существует только
п 2 / 3 такие входы в F , алгоритм Гровера может найти один (если она существует), сделав только
O ( √N1 / 3ееееN2 / 3езапросы ке.O ( n2 / 3----√) = O ( n1 / 3)е