Когда Н Адамар Гейтс действует на N Кубитов

Один из наиболее важных и часто встречающихся вентилей с несколькими кубитами - вентиль Адамара. Раньше мы видели матричное представление гейта Адамара и на отдельном посте изучали несколько простых квантовых схем, включающих вентиль Адамара. В этом посте мы рассмотрим равномерную суперпозицию, которая является основой алгоритма Гровера. Этот пост будет коротким и будет связан с математикой, но если вы прочитали предыдущие посты и разбирались в математике на уровне выпускников, это не составит труда. Давайте начнем!

Параллельно 2 ворот Адамара:

Мы обсуждали эту схему раньше, и давайте рассмотрим ее еще раз. Мы начинаем с импорта qiskit, а затем добавляем 2 H гейта соответственно к 2 кубитам параллельно. Ниже приведен код для создания этой простой схемы.

!pip3 install qiskit
import qiskit as q 
qr = q.QuantumRegister(2)
cr = q.ClassicalRegister(2)
circuit = q.QuantumCircuit(qr, cr)
circuit.h(qr[0]) # apply hadamard gate on first qubit.
circuit.h(qr[1]) # apply hadamard gate on second qubit.
circuit.measure(qr, cr)
circuit.draw(scale=2)

Ранее мы узнали, как использовать qiksit для отображения схемы и построения векторов состояний, а ниже это изображение -

Математика двух параллельных ворот H:

Давайте вкратце рассмотрим математику двух параллельных ворот H. Начальные стадии кубитов всегда равны нулю, если они не инициализированы в другое состояние. Таким образом, вентиль H, действующий на этапе | 0⟩, даст нам | +⟩ = (| 0⟩ + | 1⟩) / sqrt (2). Поскольку на этапе | 0⟩ параллельно действуют 2 H вентильных элемента, на выходе мы получаем тензорное произведение | +⟩ ⊗ | +⟩ = 0,5 (| 00⟩ + | 01⟩ + | 10 ⟩ + | 11⟩). Мы можем смоделировать схему на нашем локальном компьютере и построить гистограмму распределения выходных данных, как показано ниже -

Параллельно 3 H ворот:

Продолжая предыдущую простую схему, мы рассматриваем 3 вентиля Адамара параллельно. Следуя приведенным выше математическим выкладкам для 2 H гейтов параллельно, для 3 H гейтов у нас будет тензорное произведение как - (H⊗ H⊗ H) (| 0⟩ | 0⟩ | 0⟩), это можно записать более математически, как показано ниже -

Как и раньше, векторы состояния и принципиальную схему можно нарисовать с помощью qiskit -

Мы можем смоделировать схему на нашем локальном компьютере и построить гистограмму распределения выходных данных -

qr1 = q.QuantumRegister(3)
cr1 = q.ClassicalRegister(3)
circuit1 = q.QuantumCircuit(qr1, cr1)
circuit1.h(qr1[0]) # apply the H gate on q_0
circuit1.h(qr1[1]) # apply H gate on q_1
circuit1.h(qr1[2]) # add H gate on q_2
circuit1.measure(qr1, cr1)
### simulate result on local computer
simulator1 = q.Aer.get_backend(‘qasm_simulator’)
results1 = q.execute(circuit1, backend=simulator1, ).result()
q.visualization.plot_histogram(results1.get_counts(circuit1))

Мы обсуждали ранее, что каждый результат будет иметь вероятность ~ 1/8 = 0,125, и мы можем видеть это на графике гистограммы (рис. 4).

Мы можем смоделировать ту же схему на квантовом компьютере с помощью IBM Quantum Experience. Опыт работы с IBM-Q обсуждался ранее в отдельном посте. Давайте посмотрим на результаты запуска той же схемы на реальном квантовом компьютере -

from qiskit import IBMQ
IBMQ.save_account(‘your token’)
IBMQ.load_account()
provider = IBMQ.get_provider(‘ibm-q’)
qcomp = provider.get_backend(‘ibmq_valencia’) # check which computer has 0 jobs on queue
job = q.execute(circuit1, backend=qcomp)
q_result = job.result()
q.visualization.plot_histogram(q_result.get_counts(circuit1))

Теперь мы видим значительное отклонение от вероятности 1/8 для каждого выхода. Это связано с тем, что кубиты в симуляторе считаются префектным состоянием и ими можно манипулировать с идеальной точностью, эти кубиты можно рассматривать как логические кубиты. Но физические системы (сверхпроводящие или захваченные ионные квантовые компьютеры), которые ведут себя как кубиты, склонны быть неточными и подверженными небольшим квантовым ошибкам. Однако это исправление ошибок - постоянный непрерывный процесс и одна из активных областей исследования.

Математика равномерного наложения:

Изучая параллельно примеры 2 и 3 H вентилей, мы можем увидеть общую картину для окончательного результата. Если мы снова обратимся к воротам 2H параллельно, то на выходе будет форма 0,5 (| 00⟩ + | 01⟩ + | 10⟩ + | 11⟩), и это можно компактно записать в форме -

Здесь | x⟩ обозначает одно из состояний | 00⟩, | 01⟩, | 10⟩, | 11⟩. Если мы пишем x ∈ {0, 1} ³ ,, то x обозначает одно из состояний -

| 000⟩, | 001⟩, | 010⟩, | 011⟩, | 100⟩, | 101⟩, | 110⟩, | 111⟩. Используя эти обозначения, мы можем обобщить правило для параллельных n H вентилей:

Квантовая интерференция:

Наконец, я закончу пост небольшим обсуждением квантовой интерференции. Мы немного обсуждали это в посте о запутывании. Если мы рассмотрим квантовое состояние | ψ⟩ = α | 0⟩ + β | 1⟩ и применим вентиль H, то получим -

Мы можем думать о приведенном выше выражении как о положительной интерференции относительно базового состояния | 0⟩ (поскольку добавляются два амплитудных члена α, β) и отрицательной интерференции относительно базового состояния | 1⟩. Эта концепция используется для получения информации о функции f (x), которая зависит от оценки функции при многих значениях x. Скоро мы будем использовать все эти концепции, чтобы обсудить некоторые из наиболее важных квантовых алгоритмов!

Все приведенные выше коды и математические расчеты можно найти в моем GitHub.

Оставайтесь сильными и болейте!