Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kvantovye_kompyutery2.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
391 Кб
Скачать
☆

Описание алгоритмов:

1) Алгоритм Шора (1994) — по заданному целому числу n, найти его простые множители.

В 2001 квантовый компьютер на 7 кубитах с помощью этого алгоритма смог разложить 15 на 3×5. (Наибольшее число, разложенное на квантовом устройстве = 56153 — 2014 год, но не Шором, а адиабатическое вычисление)

Алгоритм состоит из двух частей:

  1. классическая часть - свести задачу к нахождению периода функции.

  2. квантовая часть — найти период.

Классическая часть:

  1. берём произвольное число a < N.

  2. вычисляем НОД(a,N) (наибольший общий делитель). Например, с помощью алгоритма Эвклида — вычитаем из большего числа меньшее.

  3. Если НОД(a,N)≠1, то нетривиальный множитель найден, конец.

  4. В противном случае, с помощью квантового алгоритма, основанного на дискретном преобразовании Фурье, находим период функции , т. е. такое целое число r, что

  5. если r нечётное, или a r /2 ≡ −1 (mod N) - возвращаемся к шагу 1.

  6. НОД(ar/2 + 1, N) и НОД(ar/2 - 1, N) — нетривиальные множители N. Конец.

Например: . , где

и

(Примечание: самый быстрый классический алгоритм решения этой задачи — квадратичное решето — основан на той же идее. Но медленнее, т. к. задача поиска порядка функции тяжело решается классическим компьютером)

Квантовая часть:

Квантовая цепочка создаётся каждый раз отдельно для каждого N, и каждого случайного выбора a.

Находим некоторое Q = 2q,такое что , что означает .

Вход и выход будут содержать суперпозиции состояний от 0 до Q − 1, поэтому состоят из q кубитов.

  1. Создаём суперпозицию всех состояний — с помощью вентилей Адамара, или к. преобразования Фурье

  2. Конструируем f(x) как к. функцию, и применяем к состоянию выше

(Шор использовал алгоритм быстрого возведения в степень, чтобы достичь этого. Это самый долгий шаг. Он заметно сложнее, чем QFT – нужно много вентилей. По сути, он имитирует классический обратимый алгоритм для этой задачи)

  1. Применяем к. преобразование Фурье ко входу.

(Шор использовал для реализации QFT вентили фазового сдвига и вентили Адамара)

(Вентиль Адамара: переводит n кубитов, инициализированных в |0>, в суперпозицию всех 2n ортогональных состояний в базисе (|0>,|1>) с равными весами)

QFT использует Qтый комплексный корень единицы: , чтобы равномерно распределить амплитуду любого данного состояния |x> между всеми Q для состояния |y> - и делать это по-разному для каждого |x>.

В результате приходим к состоянию , или если записать иначе:

Возьмём x0 - наименьший x, что f(x) = z (x0<r), и b — индексирует эти x, пробегая от 0 до (Q- x0-1)/r, так что x0+rb<Q. Тогда получим:

Каждое слагаемое в этой сумме даёт разные пути к одной цели — и возникает к. интерференция: амплитуды состояний, для которых единичные векторы направлены практически в одну сторону (что значит что вектор направлен вдоль положительной вещественной оси), усиливаются; остальные ослабевают.

  1. Производим измерение, и получаем y на входе, и z на выходе. Вероятность получить данные y и z тем выше, чем ближе к положительной вещественной оси, или чем ближе yr/Q к целому числу.

  2. Т.к. yr/Q близко к некоторому целому c, то и звестное значение y/Q близко к неизвестному c/r. Осуществив (классически) непрерывную дробную последовательность, мы найдём такие аппроксимации d/s, что:

  • s<N

  • |y/Q - d/s| < 1/2Q.

Если d/s не упрощаемая дробь, то s — весьма вероятно наш искомый период r.

  1. Проверяем (классически), что . Если да, то конец. Иначе, пробуем прогнать всю эту часть ещё раз.

Говоря просто, алгоритм Шора разбивает задачу на Q состояний, каждое из которых — один из возможных r – периодов функции. И затем, благодаря к. спутанности и интерференции, вычисление производится по всем путям одновременно (по сути, это аналог алгоритма к. оценки фазы: вследствие интерференции, амплитуды состояний вдоль перспективных путей стремительно растут, остальные стремительно падают). Отсюда к. выигрыш в скорости.

Также алгоритм Шора может использоваться для нахождения дискретного логарифма.

2) Алгоритм Гровера (Leo Grover, 1996) — найти х по заданному у, такой что f(x)=y. Это, по сути, алгоритм инвертирования функции — но он может быть и переформулирован как алгоритм поиска по базе данных (f(x) тогда будет функцией, возвращающей 1 для искомого х, и 0 для всех остальных). В общем виде, f(x) - это чёрный ящик, или оракул, как-то отвечающий на запрос «да» или «нет».

Алгоритм Гровера работает за время O(N1/2), где N – размер области определения f(x). Классический алгоритм не может решить этой проблемы за время меньше O(N). И доказано, что O(N1/2) — наименьшее возможное время для любого квантового алгоритма решения, т.е. алгоритм Гровера — оптимальный.

На практике, этот алгоритм тоже можно использовать для взлома 128-битного криптографического ключа - методом перебора за 264 итераций. Т.е., алгоритм Гровера даёт не экспоненциальное ускорение, по сравнению с классическим (как другие квантовые алгоритмы, применимые в более специфических случаях) — а лишь квадратичное. Но и то неплохо.

Алгоритм — вероятностный, т. е. даёт правильный ответ с вероятностью <1. Но предполагается, что количество повторов, чтобы приблизить вероятность к 1 — это постоянная величина, и не зависит от N.

Описание:

А лгоритм работает на N-мерном пространстве состояний H - для которого надо n=log2 N кубитов. У нас есть унитарный оператор Uω, который зеркально отражает вектор состояния относительно гиперплоскости, перпендикулярной ω.

М ы начинаем с состояния - равномерной суперпозиции всех возможных состояний величин x:

Т огда , Осуществляем «гроверовскую итерацию» r(N) раз ( ):

    1. Применяем оператор .

    2. Применяем оператор .

Осуществляем измерение, и получаем искомую ω с вероятностью, стремящейся к 1.

Геометрическое объяснение:

- кет, перпендикулярный :

Оператор - это, по сути, отражение вектора по отношению к . Оператор - это отражение по отношению к . Таким образом, каждая итерация алгоритма (т. е. применение оператора ) поворачивает его вектор состояния на угол .

Нам нужно остановиться, когда вектор состояния подойдёт достаточно близко к ; дальнейшие итерации будут удалять вектор состояния от , снижая вероятность правильного ответа. Вероятность измерения правильного ответа будет , где r — это количество гроверовских итераций.

С мысл GSA состоит в «подскоке амплитуды» (amplitude amplification) целевого состояния за счёт убывания амплитуды всех других состояний.

На практике, в 2012м, реализовали алгоритм Гровера для четырёх вариантов перебора.

19

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]