Квантовый алгоритм для решения задачи дискретного логарифмирования: различия между версиями

Перейти к навигации Перейти к поиску
Строка 63: Строка 63:
Инициализация;
Инициализация;


(b)<math> \mapsto r^{-1} \sum_{x, y \in \mathbb{Z}_r} |x \rangle |y \rangle |0 \rangle</math>
(b) <math> \mapsto r^{-1} \sum_{x, y \in \mathbb{Z}_r} |x \rangle |y \rangle |0 \rangle</math>


Применить <math>QFT_{\mathbb{Z}_r}</math> к первым двум регистрам;
Применить <math>QFT_{\mathbb{Z}_r}</math> к первым двум регистрам;
(c)
 
(c) <math> \mapsto r^{-1} \sum_{x, y \in \mathbb{Z}_r} |x \rangle |y \rangle |b^x a^y \rangle</math>
 
Применить U
Применить U
(d)
 
(d) <math> \mapsto r^{-1/2} \sum_{l = 0}^{r - 1} |sl mod r \rangle |l \rangle |\hat{l} \rangle</math>
 
Применить <math>QFT_{\mathbb{Z}_r}</math> к первым двум регистрам;
Применить <math>QFT_{\mathbb{Z}_r}</math> к первым двум регистрам;
(e)     7! (sl mod r; l)
 
(e) <math> \mapsto</math> (sl mod r, l)
 
Измерить первые два регистра;
Измерить первые два регистра;
2. Если l1 не совпадает с l2, прервать вычисление.
 
3. Пусть k1; k2 - целые числа, такие, что k1l1 + k2l2 = 1.
2. Если <math>l_1</math> не совпадает с <math>l_2</math>, прервать вычисление.
Вывести outputs = k1(sl1) + k2(sl2) m°d r.
 
3. Пусть <math>k_1, k_2</math> - целые числа, такие, что <math>k_1 l_1 + k_2 l_2 = 1</math>. Вывести <math>s = k_1(sl_1) + k_2(sl_2) mod r</math>.




4501

правка

Навигация