Физик строит новую теорию сложности из руин старой — обычные суперкомпьютеры окажутся бесполезными против квантовых задач

Собрали бесконечно мощный ПК? Забейте, против двух запутанных частиц он всё равно ничто.


a4ktmj3qttqythovg7m0qh2e26mj8ayg.jpg

Информатика в самом общем виде сводится к простой схеме: есть входные данные и есть результат, который нужно получить. Калькулятор — хороший пример. Вы вводите два числа, нажимаете умножение, на экране появляется произведение. Вход здесь понятен: два числа. Выход тоже понятен: одно число.

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

Именно такими различиями занимается теория вычислительной сложности. Она отвечает не на вопрос, как написать программу красивее, а на вопрос: сколько ресурсов в принципе нужно, чтобы решить задачу. Обычно речь о времени работы и объёме памяти. Проще говоря, у некоторых задач трудность растёт умеренно, и их можно решать даже для больших входных данных. У других трудность растёт настолько резко, что при увеличении размера входа всё быстро упирается в непрактичные сроки.

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