Квантовый подсчёт через IPE
Постройте схему квантового подсчёта с IPE, чтобы найти число решений поискового оракула. Пространство содержит N=8 состояний, m=3 кубита. Данный Oracle определён полной последовательностью X(1),Z(0),Z(1),X(1); скрытая процедура загрузки не требуется.
A. Дополните qc диффузором, чтобы получить вентиль одной итерации Гровера Grover. Диффузор отражает относительно равномерного состояния трёх кубитов; используйте реализацию главы Гровера, на которую ссылается автор.
B. Создайте circ для квантового подсчёта: оцените собственную фазу Grover итеративным IPE, используя три итерации и три классических бита (соответствует трём счётным кубитам обычной QPE).
C. Выполните схему и найдите число решений M по оценённой фазе.
Источник предварительно требует главы «Grover’s Algorithm» и «Quantum Counting»; его определение оракула и все заготовки сохранены целиком, shots=20000.
Исходные определения и заготовки (код сохранён без исполнения):
from qiskit import *
from qiskit.tools.visualization import plot_histogram
from qiskit.quantum_info import Operator, Statevector
from qiskit.tools.monitor import job_monitor
from qiskit.ignis.mitigation.measurement import *
import numpy as np
import matplotlib.pyplot as plt
## Create an Oracle
N = 8 # the number of total items in the search space
m = int(np.log2(N)) # the number of qubits required to construct the search space with N items
myqc = QuantumCircuit(m, name='Oracle')
myqc.x(1)
myqc.z(range(2))
myqc.x(1)
Oracle = myqc.to_gate()
qc = QuantumCircuit(m)
qc.append(Oracle, range(m))
### your code goes here
####
Grover = qc.to_gate()
###### your code goes here
###################
circ.draw()
sim = Aer.get_backend('qasm_simulator')
shots = 20000
####### Your code goes hereРешения пока нет.
Сообщить об ошибке
Войти, чтобы отправить материал.