Как добавить вспомогательный кубит для операции разложения (MultiControlledX) в Pennylane?Python

Программы на Python
Anonymous
Как добавить вспомогательный кубит для операции разложения (MultiControlledX) в Pennylane?

Сообщение Anonymous »

Я пытаюсь создать квантовую схему для однородного квантового состояния. Ниже приведен код, создающий схему, которая хорошо работает на устройстве default.qubit. Однако когда я пытаюсь запустить этот код на реальном оборудовании (IBM-Kyoto), я получаю следующее сообщение об ошибке:
ValueError: Для декомпозиции операции требуется хотя бы один рабочий провод: MultiControlledX
Вывод обрезается. Просматривайте как прокручиваемый элемент или открывайте в текстовом редакторе. Настройте параметры вывода ячейки...
Из сообщения об ошибке я понимаю, что мне нужно добавить вспомогательный кубит для разложения вентиля CCCNOT на вентили CNOT. Как я могу изменить свой код, чтобы включить для этой цели вспомогательные кубиты?
Код Quantum Circuit для его запуска на оборудовании IBM
Я добавил дополнительный провод (кубит) к схеме. Однако когда я построил схему, дополнительный провод не появился. Поэтому я добавляю ворота идентификации к этому проводу и снова рисую график. В сюжете появился дополнительный провод. Однако это не решило проблему. Код схемы с дополнительным проводом и примененной идентификационной матрицей.
Код схемы:
def uqs_ibm(nq: int,shots: int):
dev = qml.device('qiskit.ibmq', Wires=nq+2,shots=shots, backend='ibm_kyoto', ibmqx_token="XXX")
@qml.qnode(dev)
def circuit():
qml.RY(theta_1 * 2, wires=0)

for i in range(1, nq): # Start from 1 since control is 0
qml.ctrl(qml.Hadamard(i), (0))

qml.ctrl(qml.RY, control=(0), control_values=(1))(theta_1, wires=1)

for i in range(2, nq):
qml.ctrl(qml.Hadamard(i), control=(0, 1), control_values=(0, 1))

qml.ctrl(qml.RY, control=(0, 1), control_values=(0, 0))(theta_2, wires=2)

qml.ctrl(qml.Hadamard, control=(0, 1, 2), control_values=(0, 0, 1), work_wires=5)(wires=3)
qml.ctrl(qml.Hadamard, control=(0, 1, 2), control_values=(0, 0, 1), work_wires=6)(wires=4)

return qml.probs(wires=range(nq)) # Return probabilities for all qubits

return circuit


Подробнее здесь: https://stackoverflow.com/questions/786 ... edx-in-pen

Вернуться в «Python»