複素係数を使用したハミルトニアンシミュレーション


12

変分アルゴリズムの一部として、次の形式のハミルトニアンをシミュレートする量子回路(理想的にはpyQuilを使用)を構築したいと思います。

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

最後の言葉になると、問題はpyQuilが次のエラーをスローすることです。

TypeError: PauliTerm coefficient must be real

私は文学に飛び込み始めました、そしてそれは重要な問題のようです。複素数から実数へのエンコーディングとローカルエンコーディングが議論されているユニバーサル量子ハミルトニアンに関するこの論文に出くわしました。ただし、このようなものを実際にどのように実装するかは、まだはっきりしていません。誰でもこの問題を解決するための実用的なアドバイスをくれますか?


1
そのiを置き換えると、エラーがスローされますか?Sj2(XjSjXj)2
AHusain

3
ハミルトニアンはエルミートであることを忘れないでください。これは、実際の係数についてのみ当てはまります。
DaftWullie

1
私はあなたとは異なる定義を使用しているかもしれません。しかし、ポイントは、結果としていくつかの組み合わせを見つけることができるということです。i I d 2SiId2
AHusain 2018

1
これらのどこかに別の用語、つまりエルミート共役がありますか?H = i A B i B A H=iABiBA
AHusain 2018

1
または、フォームのすべての条件がキャンセルになるようなものですか?
AHusain

回答:


10

従来のハミルトニアンはエルミートです。したがって、非エルミート項が含まれている場合は、エルミート共役も別の項として含むか、重みが0でなければなりません。この特定のケースでは、はエルミートそのものなので、係数は0でなければなりません。したがって、従来のハミルトニアンについて話している場合は、おそらく計算が間違っているでしょう。用語のエルミート共役が存在しない場合、それを追加するだけでは修正できないことに注意してください。まったく異なる結果が得られます。ZXY

一方、非エルミートのハミルトニアンを実装したい場合があります。これらは、ノイズプロセスの説明のために存在することが多いですが、それほど普及していません。「非エルミート」という用語を明示的に含める必要があります。そうしないと、エルミートではないためハミルトニアンはエルミートである必要があるため、誰もがあなたのしていることが間違っていると考えるだけです。さまざまなシミュレーターが提供する機能についてはあまり詳しくありませんが、非エルミティシティーが組み込まれているとしたら驚きます。

ただし、非決定論的な実装を犠牲にして、それをシミュレートできます。これよりも洗練された方法がありますが(この回答のリンクを参照)、特に簡単に説明します。非エルミート成分が1つしかないと仮定します。これは(のテンソル積)です。パウリス)。このパウリステンソル積を呼びます。ハミルトニアンの残りはです。進化を作成したい まず、進化をトロッタライズします 。次に、個々の用語のシミュレーションに取り組みます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.

の状態の補助量子ビットを導入し、これを制御されたゲートの制御量子ビットとして使用します。次に、基準(ここで)で補助装置を測定します。結果がである場合、ターゲットキュービットで、正規化までの操作を実装しました。したがって、を修正すると、その操作は完全に実装されたことになります。測定が失敗した場合、回復を試みるか(これは不可能かもしれません)、やり直すかどうかはあなた次第です。|ψ=α|0+β|1K{|ψ,|ψ}ψ|ψ=0|ψ|α|2I+|β|2K(1|α|2)/|α|2=tanh(δt)


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'

そして、あなたは0の8x8行列を取得します。

したがって、共役転置を追加してハミルトニアンエルミートを作成するとこの項の値は0になるため、虚数係数を設定する必要はありません


まず第一に、思慮深い返事をありがとう!ただし、共役転置を追加することの影響については疑問です。私が直面している非エルミートハミルトニアンは、に使用したいミキサー/ドライバーのハミルトニアンです(理論的な論文からの方程式に基づいて生成しました)。私が使用して知っている場合ではなく、基本的に私の結果を変更しないということ?H M + H M H MHMHM+HMHM
Mark Fingerhuth

1
これが、@ DaftWullieのコメントがそれ以上の仮定なしに誤っている理由です。
AHusain

1
@MarkFingerhuth:再生が遅れてすみません。私は日中非常に忙しく、今月は毎日真夜中近くに帰宅しています。方程式の出所となった論文を見せていただければ、結果が根本的にどのように異なるのかを考えることができます。「PyQuilは非エルミート行列をサポートしていませんが、別のプログラムがサポートしていないという意味ではありません」と答えを変えるかもしれません。
user1271772 2018

1
@MarkFingerhuth:あなたは「理論的な論文からの方程式に基づいてそれを生成しました」と言いますか?質問にリンクされている論文は82ページありますが、この「ハミルトニアン」を生成するために使用した方程式を教えていただけませんか?
user1271772

1
@MarkFingerhuth、はい、私たちはオフラインで話すことができますが、私はそこで何のポイントも得ません。ここでの私の努力に対する賛成票は1つしか得られなかったので、インセンティブは低いです。
user1271772 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.