Гамильтоново моделирование с комплексными коэффициентами

12

Как часть вариационного алгоритма, я хотел бы построить квантовую схему (в идеале с pyQuil ), которая имитирует гамильтониан вида:

H=0.3Z3Z4+0.12Z1Z3+[...]+11.03Z310.92Z4+0.12iZ1Y5X4

Когда дело доходит до последнего термина, проблема в том, что pyQuil выдает следующую ошибку:

TypeError: PauliTerm coefficient must be real

Я начал погружаться в литературу, и это кажется нетривиальной проблемой. Я наткнулся на эту статью об универсальных квантовых гамильтонианах, где обсуждаются кодировки от комплексного к реальному, а также локальные кодировки. Тем не менее, мне до сих пор не ясно, как можно было бы реализовать нечто подобное. Кто-нибудь может дать мне несколько практических советов, как решить эту проблему?

Марк Фингхут
источник
1
ли ошибка, когда вы заменяете это i на ? Sj2(XjSjXj)2
Хусаин
3
Помните, что гамильтониан должен быть эрмитовым. Это только правда, что коэффициенты реальны.
DaftWullie
1
Я мог бы использовать другое определение для чем вы. Но дело в том, что вы можете найти некоторую комбинацию, которая приводит к . SiId2
Хусейн
1
У вас нет другого термина где-то в этих , это эрмитова сопряженная? H=iABiBA
А.Хусаин
1
Или все условия формы таковы, что они отменяются?
AHusain

Ответы:

10

Обычный гамильтониан - эрмитов. Следовательно, если он содержит неэрмитский термин, он должен также содержать свою эрмитову конъюгату в качестве другого термина или иметь вес 0. В данном конкретном случае, поскольку является эрмитовым, коэффициент должен быть равен 0. Итак, если вы говорите об обычных гамильтонианах, вы, вероятно, допустили ошибку в своих вычислениях. Обратите внимание, что если эрмитова сопряжённого термина нет, вы не можете просто исправить вещи, добавив его; это даст вам совершенно другой результат.ZXY

С другой стороны, вы можете захотеть реализовать неэрмитов гамильтониан. Эти вещи существуют, часто для описания шумовых процессов, но не так широко распространены. Вы должны явно включить «неэрмитову» терминологию, иначе все просто подумают, что вы делаете неправильно, потому что это не эрмитово, а гамильтониан должен быть эрмитовым. Я не слишком знаком с возможностями, которые предоставляют различные симуляторы, но я был бы удивлен, если бы в них была встроена не-эрмитность.

Однако вы можете смоделировать это за счет недетерминированной реализации. Существуют более сложные методы, чем этот (см. Ссылки в этом ответе ), но позвольте мне описать один особенно простой: я собираюсь предположить, что есть только один неэрмитов компонент, который (тензорное произведение Paulis). Я буду называть это тензорное произведение Паулиса . Остальная часть гамильтониана . Вы хотите создать эволюцию Мы начинаем с рывка эволюции, где . Сейчас мы работаем над моделированием индивидуального терминаi×KH

eiHt+Kt
eiHt+Kt=i=1NeiHδt+Kδt
Nδt=teiHδt+KδteiHδteKδt (что становится более точным при больших ). Вы уже знаете, как обращаться с эрмитовой частью, поэтому сосредоточьтесь наN
eKδt=cosh(δt)I+sinh(δt)K.

Введет Ancilla кубит в состоянии , и мы используем это в качестве контрольного кубита в контролируемом ворота. Затем мы измеряем вспомогательное средство в базисе (где ). Если результат равен , то на целевых кубитах мы реализовали операцию , вплоть до нормализации. Итак, если вы исправите , вы прекрасно реализовали эту операцию. Если измерение не пройдено, то вам решать, хотите ли вы попытаться восстановить (это может быть невозможно) или начать заново.|ψ=α|0+β|1K{|ψ,|ψ}ψ|ψ=0|ψ|α|2I+|β|2K(1|α|2)/|α|2=tanh(δt)

DaftWullie
источник
3

Этот простой код MATLAB / Octave показывает, что не является эрмитовым:i0.12Z1Y2X3

z=[1 0 ; 0 -1];
x=[0 1;  1  0];
y=[0 -1i; 1i 0];

z1 = kron(z,eye(4));
y2 = kron(kron(eye(2),y),eye(2));
x3 = kron(eye(4),x);

H=0.12*1i*z1*y2*x3

Выход H:

    0     0    0 0.12    0    0     0     0
    0     0 0.12    0    0    0     0     0
    0 -0.12    0    0    0    0     0     0
-0.12     0    0    0    0    0     0     0
    0     0    0    0    0    0     0 -0.12
    0     0    0    0    0    0 -0.12     0
    0     0    0    0    0 0.12     0     0
    0     0    0    0 0.12    0     0     0

Поскольку это реальная матрица, эрмитово означает симметричный, но это не симметрично и, следовательно, не эрмитово. Верхний правый треугольник не равен нижнему правому треугольнику.

Однако верхний правый треугольник является негативом нижнего правого треугольника, поэтому он является антиэрмитовым.

Таким образом, предложение AHussain о добавлении сопряженного транспонирования приводит к 0. Просто запустите эту команду:

H + H'

и вы получите матрицу 8x8 0.

Поэтому, когда вы создаете свой гамильтонов эрмит, добавляя сопряженную транспонирование, вы получаете 0 для этого члена, и, следовательно, вам не нужно иметь мнимые коэффициенты .

user1271772
источник
Прежде всего, спасибо за вдумчивый ответ! Однако мне интересно узнать о последствиях добавления сопряженной транспонирования. Негермитовой гамильтониан, с которым я сталкиваюсь, - это гамильтониан микшера / драйвера, который я хотел бы использовать для QAOA (я сгенерировал его на основе уравнений из теоретической статьи). Если я знаю, что использую а не , не изменит ли это мои результаты? H M + H M H MHMHM+HMHM
Марк Фингхут
1
Вот почему комментарий @ DaftWullie ошибочен без дополнительных предположений.
Хусейн
1
@MarkFingerhuth: извините за задержку воспроизведения. Я был очень занят в течение нескольких дней и каждый месяц возвращался домой около полуночи. Если вы можете показать мне документ, откуда взялись уравнения, я могу подумать о том, как ваши результаты будут принципиально другими. Я могу изменить свой ответ так: «PyQuil не поддерживает неэрмитовы матрицы, но это не означает, что другая программа не может».
user1271772
1
@MarkFingerhuth: вы говорите: «Я создал его на основе уравнений из теоретической статьи», какие уравнения из какой теоретической статьи? Статья, связанная с вопросом, имеет длину 82 страницы. Не могли бы вы показать мне, какие уравнения вы использовали для создания этого "гамильтониана"?
user1271772
1
@MarkFingerhuth, да, мы можем говорить в автономном режиме, но я не получу за это никаких баллов. Я получил только 1 голос за свои усилия здесь, поэтому стимул низкий.
user1271772