Тепер звернімо увагу на задачу факторизації цілих чисе л і подивимося, як її можна ефективно розв'язати на квантовому комп'ютері за допомогою оцінки фази.
Алгоритм, який ми отримаємо, — це алгоритм Шора для факторизації цілих чисел.
Шор не описував свій алгоритм саме в термінах оцінки фази, але це природний та інтуїтивний спосіб пояснити, як він працює.
Почнемо з обговорення проміжної задачі, відомої як задача знаходження порядку, і побачимо, як оцінка фази дає її розв'язок.
Потім з'ясуємо, як ефективний розв'язок задачі знаходження порядку дає нам ефективний розв'язок задачі факторизації цілих чисел.
(Коли розв'язок однієї задачі забезпечує розв'язок іншої подібним чином, кажуть, що друга задача зводиться до першої — тобто в даному випадку ми зводимо факторизацію цілих чисел до знаходження порядку.)
Ця друга частина алгоритму Шора взагалі не використовує квантові обчислення — вона цілком класична.
Квантові обчислення потрібні лише для розв'язання задачі знаходження порядку.
Задача знаходження порядку
Деякі основи теорії чисел
Щоб пояснити задачу знаходження порядку та те, як її можна розв'язати за допомогою оцінки фази, корисно почати з кількох базових понять теорії чисел і попутно ввести зручні позначення.
Для початку: для будь-якого заданого натурального числа N визначимо множину ZN таким чином.
ZN={0,1,…,N−1}
Наприклад,
Z1={0},
Z2={0,1},
Z3={0,1,2},
і так далі.
Це множини чисел, але можна розглядати їх ширше.
Зокрема, можна думати про арифметичні операції над ZN, такі як додавання та множення — і якщо ми домовимося завжди брати результати за модулем N
(тобто ділити на N і брати залишок як результат), ми завжди залишатимемося в цій множині під час виконання цих операцій.
Дві конкретні о перації — додавання та множення, обидві за модулем N, — перетворюють ZN на кільце, яке є фундаментально важливим типом об'єкта в алгебрі.
Наприклад, 3 і 5 — елементи Z7, і якщо ми перемножимо їх, отримаємо 3⋅5=15, що дає залишок 1 при діленні на 7.
Іноді це записують так.
3⋅5≡1(mod 7)
Але можна також просто писати 3⋅5=1, якщо зрозуміло, що ми працюємо в Z7, — щоб позначення були якомога простішими.
Як приклад, ось таблиці додавання та множення для Z6.
+012345001234511234502234501334501244501235501234⋅012345000000010123452024024303030340420425054321
Серед N елементів ZN особливими є елементи a∈ZN, що задовольняють gcd(a,N)=1.
Множину, що містить ці елементи, часто позначають зірочкою ось так.
ZN∗={a∈ZN:gcd(a,N)=1}
Якщо зосередитися на операції множення, множина ZN∗ утворює групу — зокрема абелеву групу — що є ще одним важливим типом об'єкта в алгебрі.
Відомий базовий факт про ці множини (і скінченні групи загалом): якщо взяти будь-який елемент a∈ZN∗ і послідовно множити a на себе, ми врешті-решт завжди отримаємо число 1.
Як перший приклад, розглянемо N=6.
Маємо 5∈Z6∗, бо gcd(5,6)=1, і якщо перемножити 5 на себе, отримаємо 1,
що підтверджує таблиця вище.
52=1(working within Z6)
Як другий приклад, розглянемо N=21.
Якщо перебрати числа від 0 до 20, ті з них, що мають НСД рівний 1 з 21, такі.
Z21∗={1,2,4,5,8,10,11,13,16,17,19,20}
Для кожного з цих елементів можна піднести це число до деякого натурального степеня й отримати 1.
Ось найменші степені, для яких це виконується:
11=126=143=156=182=1106=1116=1132=1163=1176=1196=1202=1
Звичайно, ми працюємо в Z21 для всіх цих рівнянь, що ми не стали вказувати — це вважається неявним, щоб не захаращувати запис. Так само будемо робити і далі впродовж усього уроку.
Формулювання задачі та зв'язок з оцінкою фази
Тепер можна сформулювати задачу знаходження порядку.
Знаходження порядку
Вхід: натуральні числа N і a, що задовольняють gcd(N,a)=1
Вихід: найменше натуральне число r таке, що ar≡1 (mod N)
Інакше кажучи, у термінах щойно введених позначень, нам дано a∈ZN∗ і ми шукаємо найменше натуральне число r таке, що ar=1.
Це число r називається порядком a за модулем N.
Щоб пов'язати задачу знаходження порядку з оцінкою фази, подумаймо про операцію, визначену на системі, класичні стани якої відповідають ZN, де ми множимо на фіксований елемент a∈ZN∗.
Ma∣x⟩=∣ax⟩(for each x∈ZN)
Для ясності: ми виконуємо множення в ZN, тому неявно мається на увазі, що ми беремо добуток за модулем N всередині кета у правій частині рівняння.
Наприклад, якщо взяти N=15 і a=2, то дія M2 на стандартний базис {∣0⟩,…,∣14⟩} така.
M2∣0⟩=∣0⟩M2∣1⟩=∣2⟩M2∣2⟩=∣4⟩M2∣3⟩=∣6⟩M2∣4⟩=∣8⟩M2∣5⟩=∣10⟩M2∣6⟩=∣12⟩M2∣7⟩=∣14⟩M2∣8⟩=∣1⟩M2∣9⟩=∣3⟩M2∣10⟩=∣5⟩M2∣11⟩=∣7⟩M2∣12⟩=∣9⟩M2∣13⟩=∣11⟩M2∣14⟩=∣13