4551
правка
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) |
||
Строка 54: | Строка 54: | ||
Пусть имеется обращение оракула к функции f, определяющей отношение <math>C \subseteq [n]^k \;</math>. Процедура поиска, предложенная Амбайнисом, решает задачу ''k-коллизии'': найти пару <math>(a_1, ..., a_k) \in C \;</math>, если таковая существует. Процедура поиска использует в работе три квантовых регистра <math>| A \rangle | D(A) \rangle | y \rangle \;</math>: ''регистр множеств'' <math>| A \rangle \;</math> хранит множество <math>A \subseteq [n] \;</math> размера |A| = r, ''регистр данных'' <math>| D(A) \rangle \;</math> хранит структуру данных D(A), а ''регистр монет'' <math>| y \rangle \;</math> хранит элемент <math>i \notin A \;</math>. Проверяя структуру данных D(A) при помощи процедуры квантовых запросов <math>\Phi \;</math> со ''стоимостью проверки'' c(r), можно определить, имеет ли место <math>A^k \cap C \ne \empty \;</math>. Предположим, что структура D(A) может быть построена с нуля со ''стоимостью построения'' cost s(r) либо модифицирована из D(A) в D(A'), где <math>|A \cap A'| = r - 1 \;</math>, со ''стоимостью модификации'' u(r). Тогда процедура квантового блуждания Амбайниса решает задачу k-коллизии за <math>\tilde{O} (s(r) + \frac{n}{r}^{k/2} \cdot (c(r) + \sqrt{r} \cdot u(r))) \;</math> квантовых запросов. (Более подробное изложение см. в статье «[[Квантовый алгоритм различения элементов]]»). | Пусть имеется обращение оракула к функции f, определяющей отношение <math>C \subseteq [n]^k \;</math>. Процедура поиска, предложенная Амбайнисом, решает задачу ''k-коллизии'': найти пару <math>(a_1, ..., a_k) \in C \;</math>, если таковая существует. Процедура поиска использует в работе три квантовых регистра <math>| A \rangle | D(A) \rangle | y \rangle \;</math>: ''регистр множеств'' <math>| A \rangle \;</math> хранит множество <math>A \subseteq [n] \;</math> размера |A| = r, ''регистр данных'' <math>| D(A) \rangle \;</math> хранит структуру данных D(A), а ''регистр монет'' <math>| y \rangle \;</math> хранит элемент <math>i \notin A \;</math>. Проверяя структуру данных D(A) при помощи процедуры квантовых запросов <math>\Phi \;</math> со ''стоимостью проверки'' c(r), можно определить, имеет ли место <math>A^k \cap C \ne \empty \;</math>. Предположим, что структура D(A) может быть построена с нуля со ''стоимостью построения'' cost s(r) либо модифицирована из D(A) в D(A'), где <math>|A \cap A'| = r - 1 \;</math>, со ''стоимостью модификации'' u(r). Тогда процедура квантового блуждания Амбайниса решает задачу k-коллизии за <math>\tilde{O} (s(r) + (\frac{n}{r})^{k/2} \cdot (c(r) + \sqrt{r} \cdot u(r))) \;</math> квантовых запросов. (Более подробное изложение см. в статье «[[Квантовый алгоритм различения элементов]]»). | ||
Рассмотрим задачу поиска коллизии в графе на примере графа G | Рассмотрим задачу поиска ''коллизии в графе'' на примере графа <math>G \subseteq [n]^2 \;</math>, где f определяет бинарное отношение <math>C \subseteq [n]^2 \;</math>, удовлетворяющее <math>C(u, u') \;</math>, если <math>f(u) = f(u') = 1 \;</math> и <math>(u, u') \in G \;</math>. Процедура поиска Амбайниса решает эту задачу за <math>\tilde{O} (n^{2/3}) \;</math> квантовых запросов при помощи следующих рассуждений. Зафиксируем <math>k = 2 \;</math> и <math>r = n^{2/3} \;</math> в алгоритме задачи k-коллизии и для каждого <math>U \subseteq [n] \;</math> определим <math>D(U) = \{ (v, f(v)) : v \in U \} \;</math> и <math>\Phi (D(U)) = 1 \;</math>, если некоторые <math>u, u'0 \in U \;</math> удовлетворяют C. В таком случае для построения D(U) необходимо s(r) = r начальных запросов f(v), u(r) = 1 новый запрос f(v) необходим для обновления D(U), c(r) = 0 дополнительных запросов f(v) необходимо для проверки условия <math>\Phi(D(U)) \;</math>. Таким образом, всего требуется <math>\tilde{O} (r + frac{n}{r} ( \sqrt{r} )) = \tilde{O} ( n^{2/3} ) \;</math> запросов. | ||
правка