Учи Кванты!Курс → Алгоритмы

Алгоритм Бернштейна–Вазирани: продолжение Дойча, но ещё интереснее!

Алгоритм Бернштейна–Вазирани: за один-единственный запрос к функции вытащить целую секретную строку из битов.

Функция с секретом

Разберём сначала саму задачу, без квантовой схемы.

Вам дают чёрный ящик. Внутри него спрятана секретная строка s — в нашем примере s = 101. Саму строку вы не видите. Ваша цель — узнать s целиком.

Чёрный ящик умеет только одно: вы подаёте на вход строку из нулей и единиц той же длины и получаете один бит ответа: 0 или 1. Важно: он не отвечает, угадали вы секрет или нет. На каждый вход он отвечает по своему фиксированному правилу.

Правило такое. Единицы в секрете s показывают, какие позиции входа «важны». В строке 101 единицы стоят на первом и третьем месте — значит, важны только эти два бита. Второй бит входа он полностью игнорирует, потому что на втором месте в секрете стоит ноль.

Дальше чёрный ящик считает, сколько единиц стоит на важных позициях вашего входа. Если их нечётное число — отвечает 1. Если чётное, или ни одной — отвечает 0.

Один такой ответ — всего один бит. Чтобы собрать всю строку s обычным способом, пришлось бы спрашивать чёрный ящик много раз. Алгоритм Бернштейна–Вазирани — это квантовый способ сделать то же самое за один запрос. Сейчас разберём, как устроен сам чёрный ящик; схему алгоритма пройдём чуть позже.

Это платный урок курса. Дальше — интерактив: виджеты, схемы и контрольные вопросы. Продолжение — в полном курсе «Учи Кванты!»: открыть полный курс.

Состояние

Измерение

Нажмите «Выполнить» — появится гистограмма исходов.

Сфера Блоха