Практическое введение в квантовую запутанность

Этот пост является частью книги: Практическое квантовое машинное обучение с помощью Python.

Вы можете задаться вопросом, что такого особенного в квантовых вычислениях. Почему кажется, что всех это беспокоит?

Эйнштейн отверг идею квантовой запутанности как жуткого действия на расстоянии, которое невозможно.

Прежде чем мы рассмотрим запутанность, обычно первое, что приходит на ум, - это квантовая суперпозиция. Некоторые подчеркивают, что квантовый бит (кубит) находится в двух состояниях одновременно. И это так отличается от всего, что мы знаем. В мире, в котором мы живем, в мире, который мы переживаем, нет ничего, что находилось бы в двух взаимоисключающих состояниях одновременно.

Другие возражают, что это мнение неверно. Кубит - это не 0 и 1 одновременно. Скорее, это действительно случайная система. И это так отличается от всего, что мы знаем. В мире, в котором мы живем, в мире, в котором мы живем, нет по-настоящему случайных вещей. Все чутко зависит от начальных условий. Если бы вы могли измерить все с абсолютной точностью, случайность исчезла бы.

И снова другие возражают, что это мнение тоже неверно. Но вся концепция квантовой суперпозиции настолько отличается от всего, что мы знаем. В мире, в котором мы живем, в мире, в котором мы живем, нет ничего сопоставимого. Любая аналогия с тем, что мы знаем, просто неадекватна.

Но до сих пор единственный аспект квантовой суперпозиции, который мы рассмотрели, - это вероятности ее измерения как 0 или 1. Да, это интересно. Это может даже показаться немного странным. Но вполне можно себе представить систему, ценность которой зависит от случая. Пока что не имеет значения, находится ли кубит в обоих состояниях одновременно, в чисто случайном или совершенно другом состоянии. Пока что это вероятностная система. Не больше. Не менее.

Но до сих пор мы рассматривали только один кубит. Это изменится, если мы начнем работать с несколькими кубитами.

Мы уже знаем некоторые операции, которые работают с несколькими классическими битами. Например, and и or. Взгляд на таблицы истинности показывает, что они не подходят для преобразования кубитов. Они необратимы.

Хотя есть два входных значения (P и Q), либо and, либо or сам по себе имеет только одно выходное значение. Невозможно восстановить два входных бита, если у вас есть только один выходной бит в качестве информации. Таким образом, когда мы работаем с двумя кубитами, любой оператор (вентиль преобразования) должен иметь два входа и два выхода.

Можно ли использовать and и or в качестве двух выходов?

Нет, не можем. Эти две операции не позволяют нам отличить состояния, в которых одно из значений P и Q истинно, а другое - ложно.

Давай попробуем что-нибудь другое. Мы заменяем and-оператор простым и неизменным значением P. Теперь мы можем сказать разницу между двумя состояниями

  • P - истина, а Q - ложь
  • P неверно, а Q верно.

Но мы уже не можем отличить состояние, когда P и Q истинны, и состояние, когда истинно только P.

Причина в том, что обе операции, and и or, не сбалансированы. And неверно в трех случаях. Or верно в трех случаях. Другой выходной бит преобразования должен указывать разницу между тремя случаями. Это невозможно для единичной информации.

Итак, нам также нужно заменить или. Вместо этого мы можем использовать оператор «исключающее ИЛИ» (XOR). В математике символ ⊕ представляет собой оператор «исключающее ИЛИ». Верно ровно для одного из его входов. В противном случае это ложь. Следующая таблица истинности отображает определение «исключающее ИЛИ».

Комбинация P и PQ обратима. Это не только обратимо, но и наоборот. Если мы применим его дважды, на выходе снова будет P и Q.

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

Точка - это операция разветвления. В этой классической схеме, где линии являются проводами, она копирует значение P. Мы интерпретируем напряжение на проводе как 1, а отсутствие напряжения как 0. Если мы соединим провод с другим проводом, он получит одинаковый выход на обоих концах. Один провод, идущий от P, подключается к вентилю XOR. Другой служит выходом. Это неизменное значение P.

В квантовых вычислениях ситуация иная. На этот раз невозможно скопировать кубит (мы рассмотрим эту тему в другом посте). Во-вторых, преобразование не дает на выходе неизменную P.

Поэтому мы используем другое представление этого преобразования в квантовых вычислениях.

Хотя на кубите P тоже есть разветвление, это не подразумевает копирования кубита. Скорее, разветвление подразумевает, что кубит P управляет преобразованием кубита Q. Чтобы понять, что это означает, давайте с другой стороны взглянем на таблицу истинности. Разбиваем его на два блока.

В первом блоке P равно 0, а PQ равно Q. Так что вообще ничего не меняется.

Но во втором блоке, когда P равно 1, тогда PQ равно ¬ Q ('не Q '). Другими словами, если P равно 1, мы применяем квантовый X-вентиль к Q.

Кубит P контролирует, применяем ли мы X-вентиль к кубиту Q. Поэтому этот шлюз называется «неуправляемым» или CNOT-шлюзом. В Qiskit это cx-gate.

Следующий код показывает CNOT-gate в действии.

Когда мы инициализируем оба кубита с помощью | 0⟩ (строки 9–11) перед тем, как применить CNOT-вентиль (строка 13), мы всегда измеряем 00. Ничего не произошло.

Когда мы инициализируем управляющий кубит с | 1⟩ и управляемый кубит с | 0⟩, мы всегда измеряем 11.

Когда мы смотрим только на базовые состояния, здесь все равно ничего особенного не происходит. Результат равен результату, который производит классическая схема.

Но это становится интересным, когда управляющий кубит находится в состоянии суперпозиции. Мы снова инициализируем оба кубита в состоянии | 0⟩. Вентиль Адамара переводит кубит Q в состояние | +⟩. При измерении кубит в этом состоянии имеет значение 0 или 1 с вероятностью 50% каждый. На следующем рисунке изображена квантовая принципиальная схема.

Как эта схема влияет на управляемый кубит?

Мы измеряем контрольный кубит P как 0 или 1 с вероятностью 50% каждый. Это именно то, что мы ожидаем от кубита в состоянии | +⟩. И мы также измеряем контролируемый кубит Q как 0 или 1. Его значение идеально соответствует первому кубиту.

Вы можете подумать: «Конечно, есть!. Если управляющий кубит P равен 0, мы оставляем управляемый кубит Q нетронутым в его состоянии | 0⟩. Мы измеряем это как 0. Но если контрольный кубит 1, мы применяем X-вентиль к кубиту Q. Мы превращаем его из | 0⟩ в | 1⟩ и измеряем как 1.

Вы можете подумать: «Существует истинная причинно-следственная связь, - как в классической схеме». Если это так, что, если мы сначала измерим управляемый кубит Q?

Контрольный кубит P находится в состоянии суперпозиции, если вы его не измерили. Он контролирует, применяем ли мы X-вентиль ко второму кубиту Q. Если бы были причина и следствие, как бы мы могли видеть следствие раньше причины?

Давайте посмотрим.

Чтобы указать порядок измерения, нам нужно немного отредактировать наш код. Сначала мы создаем два регистра (строки 4 и 7) и инициализируем ими QuantumCircuit (строка 10). QuantumRegister - это набор кубитов. ClassicalRegister - это набор обычных битов. Регистры позволяют нам комбинировать эти два вида битов в одной схеме. Классические биты принимают результаты измерений кубитов (строки 23-24).

На этот раз мы выбираем другой симулятор серверной части. Мы используем qasm_simulator (строка 27), потому что он поддерживает многократное выполнение квантовой схемы. statevector_simulator, который мы использовали до сих пор, идеально подходит для исследования кубитов в состоянии суперпозиции. Но он поддерживает только одно выполнение схемы. Но на этот раз мы включаем в нашу схему измерение, которое разрушает состояние суперпозиции. Мы получаем единственную пару нормальных битов, вероятность измерения которых всегда равна 100%.

Чтобы исследовать вероятность лежащей в основе квантовой системы, мы должны выполнить схему несколько раз, для чего мы используем qasm_simulator. Параметр shots=1000 (строка 30) указывает количество запусков, которые мы хотим запустить.

Поскольку мы не вычисляем реальные вероятности, а получаем их эмпирически, результат не является полностью точным. Но это достаточно близко.

Измеренные значения обоих кубитов остаются идеально согласованными.

Если бы мы измеряли только управляемый кубит, он бы казался случайным, несмотря на его инициализацию состоянием | 0⟩. Но как только мы посмотрим на контрольный кубит, мы увидим, что оба значения равны. Всегда.

Неважно, какой кубит мы измеряем первым. Кажется, что другой кубит знает результат и соответственно выбирает свое состояние. Измерение одного кубита влияет на другой кубит. Но это только так кажется.

В классической схеме первый бит остается неизменным. Провода соединяют оба бита физически, и между ними существует четкая причинно-следственная связь. Входное напряжение (или его отсутствие) управляющего бита определяет выходное напряжение обоих проводов. Он напрямую определяет выход напрямую подключенного провода и определяет выход провода «исключающее ИЛИ» (вместе с другим входным напряжением).

Но в отличие от своего классического аналога, CNOT-квантовый вентиль не выводит неизменный кубит P вместе с кубитом Q, вывод которого равен P Q. Вместо этого он выводит запутанную пару кубитов. Они находятся в состоянии суперпозиции. Как только вы измеряете любую часть этой запутанной квантовой системы, вся система рушится.

Это происходит без обмена информацией между запутанными кубитами. Потому что кубиты физически не связаны. Мы могли бы даже разделить их на большое расстояние, и все же измерение одного кубита разрушило бы их обоих. Эйнштейн этому не верил. Он назвал это явление «жутким действием на расстоянии».

Но в этом суть. CNOT-вентиль фактически не изменяет значение управляемого кубита Q в зависимости от управляющего кубита P. Но он запутывает два кубита. Это переводит их в общее состояние. Запутанное состояние.

Хотя мы можем описать квантовое состояние запутанной системы в целом, мы больше не можем описать его независимо для каждого кубита.

Заключение

Вы спросите: «Но чем это вообще может быть полезно??

Это полезно, потому что позволяет нам построить квантовую систему за пределами одного кубита. Кубит - это вероятностная система, которая коллапсирует до 0 или 1. Запутанные кубиты могут схлопнуться до более широкого диапазона значений.

Что еще более важно, набор запутанных кубитов может более точно представить проблему. Набор кубитов может представлять структуру решаемой проблемы. Как только квантовая схема согласовывает все кубиты таким образом, чтобы они представляли проблему, одно измерение разрушает всю систему. И измеренные значения раскрывают решение.

В классических вычислениях мы много думаем о причине и следствии. Учитывая некоторый ввод, какие преобразования нам нужно применить для получения определенного вывода? Желаемый результат.

В квантовых вычислениях мы думаем о структуре проблемы. Учитывая специфику проблемы, какие преобразования нам необходимы, чтобы согласовать кубиты таким образом, чтобы при их измерении было найдено решение?

Этот пост является частью книги: Практическое квантовое машинное обучение с помощью Python.

Первые три главы получите бесплатно здесь.