№ 1995Физическая реализация квантовых устройствУровень 4

Случайная квадратная схема для квантового объёма

Создайте random_square_circuit(n), которая принимает целое n и возвращает случайную QuantumCircuit ширины и глубины n, пригодную для опыта по квантовому объёму. Можно использовать приведённый в этом условии исходный код генерации случайного слоя.

Ширина — число кубитов, глубина модели — число слоёв. Каждый слой сначала случайно переставляет метки кубитов, затем применяет случайные двухкубитные унитарные операции к непересекающимся парам. При нечётном числе кубитов один в слое не действует. random_unitary(4) даёт матрицу 4×4 для двух кубитов. Исходный пример и рисунок показывают один слой на пяти кубитах.

Полная исходная программа:

qubit_list = [0,1,2,3,4]
# width == depth (we'll call it 'SIZE')
SIZE = len(qubit_list)

from qiskit.quantum_info import random_unitary
random_unitary(4)

from qiskit import QuantumCircuit

qv_layer = QuantumCircuit(SIZE)
for pair in range(SIZE//2):  # number of pairs is SIZE/2
    qubit_indices = qubit_list[pair*2:pair*2+2]
    gate = random_unitary(4)
    qv_layer.append(gate, qubit_indices)

qv_layer.draw()

from random import shuffle
shuffle(qubit_list)
qubit_list
Рисунок к задаче 1995