№ 2081Квантовые вычисленияУровень 4

Эволюция по двум проекторам

Постройте схемы эволюции состояния по гамильтониану. Дано $H=|0\rangle\langle0|+|+\rangle\langle+|$ и $|\psi(0)\rangle=|+\rangle$. Физическое состояние находится в q0, вспомогательный q1 изначально в 0; желаемая эволюция — $e^{-i\theta H}|+\rangle$.

1. Постройте схемы для слагаемых гамильтониана.
A. Покажите, что данный H1 из CNOT(0,1),P(π/9,1),CNOT(0,1) выполняет $e^{-i(\pi/9)|0\rangle\langle0|}$ на q0 при нулевом вспомогательном q1.
B. Дополните h2, чтобы H2 выполнял $e^{-i(\pi/9)|+\rangle\langle+|}$ на q0 при том же нулевом q1.
2. Выполните исходную программу: после каждой из семи пар H1,H2 извлекайте состояние q0 и сохраняйте в myst, затем рассмотрите траекторию на сфере Блоха. Автор описывает её как движение от + к 0 и мимо него. Готовая исходная сфера находится в разборе. Дополнительно можно использовать интерактивную kaleidoscope в подходящей среде.

Все определения и первоначальная h1 сохранены в условии. Точное равенство утверждения пункта A и точность произведения двух эволюций нужно оценивать с учётом общей фазы и некоммутирующих слагаемых; исходная формулировка сохранена в original.

Исходные определения и заготовки (код сохранён без исполнения):

from qiskit import *
from qiskit.quantum_info import Statevector, partial_trace
from qiskit.visualization import plot_state_qsphere, plot_histogram

import numpy as np
import matplotlib.pyplot as plt
import scipy.linalg as la

sim = Aer.get_backend('qasm_simulator')

h1 = QuantumCircuit(2, name = 'H1')

h1.cnot(0, 1)
h1.p(np.pi/9, 1)
h1.cnot(0, 1)

H1 = h1.to_gate()

h1.draw()

h2 = QuantumCircuit(2, name='H2')

#### Your code goes here ###







#############################

H2 = h2.to_gate()

h2.draw()

from qiskit.quantum_info import Statevector, partial_trace

def st_out(qc):
    out = Statevector.from_instruction(qc)
    out_red = partial_trace(out, [1])
    prob, st_all = la.eig(out_red.data)
    cond = (prob>0.99) & (prob<1.01)
    st = st_all[:, cond].ravel()
    
    return(st)
    
myst = []

circ = QuantumCircuit(2)
circ.h(0)
st = st_out(circ)
myst.append(Statevector(st))

for _ in range(7):
    circ.append(H1, range(2))
    circ.append(H2, range(2))
    st = st_out(circ)
    myst.append(Statevector(st))
    
circ.draw() 

from kaleidoscope import bloch_sphere
from matplotlib.colors import LinearSegmentedColormap, rgb2hex

cm = LinearSegmentedColormap.from_list('graypurple', ["#999999", "#AA00FF"])
vectors_color = [rgb2hex(cm(kk)) for kk in np.linspace(-1,1,len(myst))]
bloch_sphere(myst, vectors_color = vectors_color)
Рисунок к задаче 2081

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

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