Учи Кванты! → Курс → Алгоритмы
Алгоритм Бернштейна–Вазирани: продолжение Дойча, но ещё интереснее!
Алгоритм Бернштейна–Вазирани: за один-единственный запрос к функции вытащить целую секретную строку из битов.
Функция с секретом
Разберём сначала саму задачу, без квантовой схемы.
Вам дают чёрный ящик. Внутри него спрятана секретная строка s — в нашем примере s = 101. Саму строку вы не видите. Ваша цель — узнать s целиком.
Чёрный ящик умеет только одно: вы подаёте на вход строку из нулей и единиц той же длины и получаете один бит ответа: 0 или 1. Важно: он не отвечает, угадали вы секрет или нет. На каждый вход он отвечает по своему фиксированному правилу.
Правило такое. Единицы в секрете s показывают, какие позиции входа «важны». В строке 101 единицы стоят на первом и третьем месте — значит, важны только эти два бита. Второй бит входа он полностью игнорирует, потому что на втором месте в секрете стоит ноль.
Дальше чёрный ящик считает, сколько единиц стоит на важных позициях вашего входа. Если их нечётное число — отвечает 1. Если чётное, или ни одной — отвечает 0.
Один такой ответ — всего один бит. Чтобы собрать всю строку s обычным способом, пришлось бы спрашивать чёрный ящик много раз. Алгоритм Бернштейна–Вазирани — это квантовый способ сделать то же самое за один запрос. Сейчас разберём, как устроен сам чёрный ящик; схему алгоритма пройдём чуть позже.
Это платный урок курса. Дальше — интерактив: виджеты, схемы и контрольные вопросы. Продолжение — в полном курсе «Учи Кванты!»: открыть полный курс.