Алгоритм Шора
Мы собираемся пояснить этот метод на примере. Пусть N = 989 и это число следует факторизовать. Мы хотим найти порядок m для g = 2 в мультипликативной группе , используя алгоритм Шора. Так как
, то
. После Шага 2 алгоритма Шора получим кубит:
![\frac{1}{2^{10}}\sum_{k=0}^{2^{20}-1}|k \rangle |2^k\; mod\;989 \rangle](/sites/default/files/tex_cache/298f18816d450b675333088490856b11.png)
На Шаге 3 измерим значение последних 10 битов с наблюдаемым случайным значением. Предположим, что результат этого измерения . Тогда только слагаемые, где
выживут в результирующей сумме. Эти значения k формируют арифметическую прогрессию k = 50, 50 + m, 50 + 2m, .... Следовательно, последовательность коэффициентов в кубите теперь периодическая с периодом m. Применяя КПФ -квантовое преобразование Фурье на Шаге 5, получим состояние:
![\sum_{r=0}^{2^{19}-1}a_r|r \rangle|0 \rangle |h \rangle+b_r|r \rangle|1 \rangle|h \rangle,](/sites/default/files/tex_cache/b176d10173558a4dcc4102c1af9aa7b9.png)
Коэффициенты Фурье имеют инки в точках r, близких к целым кратным . Для иллюстрации построим график вероятностей ау + Ь для r в пределах от 0 до 40000. Мы понимаем, что значения коэффициентов
кубита, хранимые в квантовом компьютере, недоступны непосредственно, и мы смогли построить этот график только лишь потому, что значение N мало и для него возможно вычислить коэффициенты Фурье на обычном компьютере. Этот графин показывает вероятности наблюдения каждого значения r, если бы мы проводили измерения первых 19 кубитов. Мы четко различаем пики на графине, которые означают, что некоторые значения r намного чаще появляются при измерениях, чем другие.
Приведем список вероятностей наблюдения значений r вблизи двух пиков:
![]() |
![]() |
---|---|
251926 251927 251928 251929 251930 251931 251932 251933 251934 |
0.0000071 0.0000124 0.0000271 0.0000991 0.0125868 0.0001465 0.0000329 0.0000141 0.0000078 |
![]() |
![]() |
---|---|
435767 435768 435769 435770 435771 435772 435773 435774 435775 |
0.000054 0.000091 0.000186 0.000567 0.008652 0.002382 0.000373 0.000145 0.000076 |
Из этих таблиц видно, что некоторые значения r имеют намного большую вероятность наблюдения. Предположим мы выполнили квантовый алгоритм дважды и получили r = 435771 в качестве первого наблюдения, и r = 251930 как результат выполнения при втором запуске квантового алгоритма. Мы ожидаем, что эти значения близки к кратным частоты .
Давайте выполним алгоритм Эвклида для поиска наибольшего общего множителя и
. Разделим
на
с остатком:
![r_3=r_1-r_2=183841](/sites/default/files/tex_cache/beddcf21bd25c0cb86ad5d70c7c38910.png)
Этот остаток всегда меньше делителя
, но мы не ожидаем, что он на порядки меньше значения делителя. В самом деле, для 0 < с < 1 вероятность того, что
равна с.
Давайте продолжим выполнять алгоритм Эвклида:
![r_4= r_2- r_3 = 68089,\\
r_5= r_3- 2 * r_4= 47663,\\
r_6= r_4- r_5=20426,\\
r_7= r_5-2 * r_6= 6811,\\
r_8= r6-3 * r_7= 7.](/sites/default/files/tex_cache/df4086ff1986962ec02c1dd7b7499055.png)
На последнем шаге мы замечаем, что значение остатка на несколько порядков меньше значения делителя
. Это и является признаком, когда алгоритм следует заканчивать, поскольку
. Следовательно,
является приближенным
. Давайте определим соответствующие целые кратные:
![\frac{r_1}{r_7}=\frac{435771}{6811}=63.98\dots,\;\; \frac{r_2}{r_7}=\frac{251930}{6811}=36.98\dots](/sites/default/files/tex_cache/36d9356ab53d086913523663c24f164c.png)
Теперь можно получить более точное значение базовой частоты :
![\omega\approx \frac{435771}{64} \appros 6808.921\dots,\;\;\omega \approx\frac{251930}{37}\approx 6808.918\dots](/sites/default/files/tex_cache/fad80e548dc173567092b91f822de7a4.png)
Из соотношения определим значение порядка m для элемента g = 2 в группе
:
![m\approx \frac{2^{20}}{\omega}\approx\frac{1048576}{6808.92}\approx154.0003\dots](/sites/default/files/tex_cache/5b4ade90dd27229a14d4f746d6a28d76.png)
Мы заключаем, что элемент группы g = 2 имеет порядок m = 154.
По теореме Лагранжа размер М = (р - 1) (q - 1) группы является целым, кратным порядку любого элемента, М = mК. Так как величина М сравнима с N = рq = 989, то можно аппроксимировать значение неизвестного множителя К как:
![K=\fracMm < \fracNm=\frac{989}{154}\approx6.42\dots](/sites/default/files/tex_cache/7b18213df8c1c1b14b4ed14d9ff47c0a.png)
Взяв К = 6, получим значение М = 6m = 924.
Так как N = рq, М = (р - 1) (q - 1) = pq - р - q + 1, то имеем:
![р+ = N- М+ 1 =989-924+1 =66.](/sites/default/files/tex_cache/31dd9f94825e32904334a96851db2de3.png)
В итоге неизвестные множители р и q находятся как корни квадратного уравнения с известными коэффициентами:
![Х^2 - (р + q)Х + рq = 0,\\
Х^2 -66Х+989=0,\\
p=\frac{66+\sqrt{66^2-4*989}}{2}=43,\;\;q=\frac{66-\sqrt{66^2-4*989}}{2}=23](/sites/default/files/tex_cache/b48563d66e6020023a17d695184ea36b.png)
Можно проверить справедливость результатов факторизации:
![43 * 23= 989.](/sites/default/files/tex_cache/7735a1c39141aa5df925455363174301.png)
Упражнение. Покажите, что в нашем описании алгоритма Шора шаг 3 может быть опущен.