Алгоритм Саймона
Алгоритм Саймона — це квантовий алгоритм запитів для задачі, відомої як задача Сайм она. Це задача з обіцянкою, що за своїм характером схожа на задачі Дойча-Жожа та Бернштейна-Вазірані, але відрізняється деталями.
Алгоритм Саймона є значущим, оскільки він забезпечує експоненційну перевагу квантових алгоритмів над класичними (включаючи ймовірнісні), а використана в ньому техніка надихнула Пітера Шора на відкриття ефективного квантового алгоритму факторизації цілих чисел.
Задача Саймона
Функція на вхід задачі Саймона має вигляд
для натуральних чисел та З метою спрощення можна було б обмежитися випадком але це не дає суттєвої переваги — алгоритм Саймона та його аналіз залишаються практично однаковими в обох випадках.
Ми незабаром детальніше розберемо обіцянку, але вже зараз очевидно, що вона вимагає від функції дуже специфічної структури — більшість функцій не задовольняють цю обіцянку. Варто також зазначити, що ця задача не призначена мати практичне значення. Це штучна задача, спеціально створена, щоб бути простою для квантових комп'ютерів і складною для класичних.
Є два основні випадки: перший — коли є рядком із самих нулів другий — коли не є рядком із самих нулів.
-
Випадок 1: Якщо — рядок із самих нулів, то обіцянка спрощується до Це рівносильно тому, що є функцією «один до одного» (ін'єкцією).
-
Випадок 2: Якщо не є рядком із самих нулів, то виконання обіцянки для цього рядка означає, що є функцією «два до одного», тобто для кожного можливого вихідного рядка існує рівно два вхідних рядки, що дають цей вихід. Більше того, ці два вхідних рядки мають вигляд та для деякого рядка
Важливо розуміти, що існує лише один рядок який задовольняє обіцянку, — тобто для функцій, що задовольняють обіцянку, завжди є єдина правильна відповідь.
Ось приклад функції вигляду яка задовольняє обіцянку для рядка
Тут різних вхідних рядків і різних вихідних рядки, кожен із яких зустрічається двічі — тобто це функція «два до одного». Більше того, для будь-яких двох різних вхідних рядків, що дають однаковий вихід, порозрядне XOR цих рядків дорівнює що рівносильно тому, що один із них дорівнює іншому, XOR-ованому з
Зауважимо, що насправді важливо лише те, чи збігаються вихідні рядки для різних вхідних, а не конкретні значення цих рядків. Наприклад, у наведеному прикладі як виходи зустрічаються чотири рядки: Ці чотири рядки можна замінити на будь-які чотири різних рядки, і правильна відповідь не зміниться.
Опис алгоритму
Нижче наведено діаграму квантової схеми алгоритму Саймона.