№ 1990Квантовые вычисленияУровень 3*

Создать собственную квантовую головоломку

Создайте собственную квантовую головоломку по формату автора. Задайте начальное состояние, цель, разрешённые операции и их количества, видимые элементы и подписи кубитов; объясните игроку требуемый результат. Автор также показывает, как изобразить целевые элементы и сохранить созданный notebook, чтобы им можно было поделиться.

Параметры run_game:

• initialize — список операций над исходным 00; пустой список сохраняет его. В исходном описании перечислены x,y,z,h,ry(pi/4) для кубитов 0/1 и cz,cx с указанием только цели.
• success_condition — словарь требуемых средних: ZI/XI относятся к левому кубиту, IZ/IX — к правому, ZX и другие пары — к корреляциям. Для круглого рисунка 1 означает чёрный, −1 белый,0 серый; перечисляются только проверяемые элементы.
• allowed_gates — словарь разрешённых операций для 0,1 и both. Для cz/unbloch, которым выбор кубита не нужен, используется both. Положительное число — обязательное точное количество,0 — любое количество.
• vi=[hidden,qubit,corr] задаёт скрытые кубиты, показ обоих выходов каждого кубита и показ корреляций.
• qubit_names задаёт подписи двух кубитов.
• mode=None — стандартное изображение, mode='y' добавляет строки Y, mode='line' включает линии.

Объект puzzle хранит головоломку; puzzle.get_circuit() возвращает составленную игроком схему. В исходном примере initialize=X(0),CNOT(0,1) готовит 11, цель IZ=1 означает 0 при Z-измерении правого кубита, разрешены H на обоих кубитах и ровно один CZ. Его изображение цели сохранено как пример, а не выдано за созданную вами задачу.

Полные исходные вызовы:

print('Set up started...')
from qiskit_textbook.games import hello_quantum
print('Set up complete!')

initialize = [['x', '0'],['cx', '1']]
success_condition = {'IZ': 1.0}
allowed_gates = {'0': {'h':0}, '1': {'h':0}, 'both': {'cz': 1}}
vi = [[], True, True]
qubit_names = {'0':'qubit 0', '1':'qubit 1'}
mode = None
puzzle = hello_quantum.run_game(initialize, success_condition, allowed_gates, vi, qubit_names, mode=mode)

message = '\nRules:\n    Use exactly one cz gate.'
grid = hello_quantum.pauli_grid(mode=mode)
grid.update_grid(rho=success_condition, hidden=vi[0], qubit=vi[1], corr=vi[2], message=message)
Рисунок к задаче 1990

Решения пока нет.

Сообщить об ошибке

Войти, чтобы отправить материал.