Как инициализировать кубиты в IBM Quantum Composer

Шаг 1 Вот код Qiskit. Я инициализировал четыре кубита.

qr1 = QuantumRegister(4)
mea = ClassicalRegister(2) 
circuit = QuantumCircuit(qr1,mea) 
initial=[[1,0],[0,1]]

circuit.initialize(initial[1], 0)
circuit.initialize(initial[1], 1)

#  Uc 
circuit.x(qr1[1])
circuit.ccx(qr1[0],qr1[1],qr1[2])
circuit.x(qr1[0])
circuit.x(qr1[1])
circuit.ccx(qr1[0],qr1[1],qr1[3])
circuit.x(qr1[0])

Его схема:

Шаг 2 IBM Qunatum Composer: Здесь нет такого инструмента для инициализации кубиса. Пожалуйста, помогите мне, как инициализировать здесь?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
143
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Язык OpenQASM является стандартом для схем обмена среди нескольких инструментов квантовых вычислений. Вы можете использовать для переноса схемы Qiskit в IBM Quantum Composer.

print(circuit.qasm())
OPENQASM 2.0;
include "qelib1.inc";
gate multiplex1_reverse_dg q0 { ry(pi) q0; }
...

Вы можете взять вывод и вставить его в поле OpenQASM 2.0 в IBM Quantum Composer.

Примечание. На данный момент в Qiskit есть проблема, заключающаяся в том, что QASM-экспортирует схему с инструкциями по инициализации как «гейты». Для вашего конкретного случая вам нужно сначала сделать decompose:

print(circuit.decompose().qasm())

Подробное объяснение initialize: Инициализация Qiskit — это сброс с последующей подготовкой состояния. Возьмем следующий пример:

circuit = QuantumCircuit(1) 
circuit.initialize([0,1], 0)
print(circuit.decompose().qasm())
OPENQASM 2.0;
include "qelib1.inc";
gate multiplex1_reverse_dg q0 { ry(pi) q0; }   #3
gate disentangler_dg q0 { multiplex1_reverse_dg q0; }
gate state_preparation(param0,param1) q0 { disentangler_dg q0; }
qreg q[1];
reset q[0];                  #1
state_preparation(0,1) q[0]; #2

В #1, reset, а затем state_preparation в #2. После некоторого вложенного вызова вызывается стандартный ry в #3. В этом случае circuit.initialize([0,1], 0) эквивалентно reset q0[0]; ry(pi) q0[0].

Но почему в IBM Composer нет символа инициализации

Engr. Khuram Shahzad 05.11.2022 20:00

Потому что разные инструменты поддерживают разные наборы инструкций. И Qiskit, и IBM Quantum composer поддерживают расширенный набор инструкций OpenQASM 2.0. Оба могут переписать свои операции с точки зрения OpenQASM 2.0 и использовать это для общения друг с другом. Взаимодействие между инструментами затруднено.

luciano 05.11.2022 22:45

Но я немного сбит с толку тем, что это одно и то же, то есть инициализация в Qiskit или в QASM. Можете ли вы немного объяснить это. ?

Engr. Khuram Shahzad 07.11.2022 07:57

Qiskit initialize — это reset с последующей подготовкой состояния (см. qiskit.org/documentation/stubs/…). Это инструкция, состоящая из этих двух операций, как подпрограмма, вызывающая другие подпрограммы в обычном процедурном программировании. Я добавил объяснение OpenQASM2, чтобы проиллюстрировать это. Вы можете реализовать свой собственный initialize для этого случая в IBM Quantum Experience с помощью reset q0[0]; x q0[0].

luciano 07.11.2022 10:52

Другие вопросы по теме