最適化問題をハミルトニアンとして表現する一般的な方法はありますか?


9

たとえば、次の形式の最適化問題があるとします。

minxf(x)gi(x)0,i=1,...,mhj(x)=0,j=1,...,p,

ここで、f(x)は目的関数、gi(x)は不等式制約、hj(x)は等式制約です。

最近、私は断熱量子計算について読んでいました。ウィキペディアは言う:

最初に、(潜在的に複雑な)ハミルトニアンが見つかり、その基底状態が対象の問題の解法を記述します。次に、単純なハミルトニアンをもつシステムが準備され、基底状態に初期化されます。最後に、単純なハミルトニアンは、断熱的に進化して、目的の複雑なハミルトニアンになります。断熱定理により、システムは基底状態のままになるため、最後にシステムの状態は問題の解決策を記述します。断熱量子計算は、回路モデルにおける従来の量子計算と多項的に同等であることが示されています。

断熱量子計算で使用されるハミルトニアン形式で最適化問題を(たとえば、上記のように)表現する一般的な方法はありますか?


1
どれほど正式な回答が必要かはわかりませんが、通常、ソリューションから大きく離れ、ソリューションで最小になるコスト関数を定義します。次に、このコスト関数をパウリスピン言語に変換します(このステップは明確にしたいと思いますか?)。コスト関数がスピン言語になると、ハミルトニアンになります。たとえば、バイナリ文字列を検索する場合、(I-Zi)/ 2がビットiの値を返すという事実を使用できます。もしこれがあなたの望むものなら、私が時間があれば明日書こうとすることができます
bRost03

答えの例をいくつか示していただけますか?それは素晴らしいでしょう:)
brzepkowski

多くの例については、arxiv.org / abs / 1302.5843(Lucas Ising 2014)を参照してください。
Paradox

回答:


6

コメントで要求されているように、ここに作業例があります。本体は、特定の問題に対するf(x)最小化を扱います。下部には、制約の簡単な説明と、一般的なケースに関する簡単な説明があります。

これから加重最大カット問題を解決しましょう

  1. 比較的単純な例です
  2. 古典的に難しい
  3. 文献で比較的一般的な例です(例:https : //journals.aps.org/prl/abstract/10.1103/PhysRevLett.90.067903
  4. 物理的なハミルトニアン(Isingスピングラス)と明確な関係がある

問題を理解するために、我々は無向グラフで始まるn頂点{V}の各頂点、viV重量を有しwi0と接続各エッジvi及びvj重み有するwij0。次に、グラフを2つに分割します。カットは直線である必要はありませんが、自己交差してはならず、エッジを2回カットすることはできません。次に、「支払いPを計算しますP私たちのカットのために。ペイアウトは、カットしたエッジのウェイトの合計と、カットの片側の頂点のウェイトの合計です。11

ソースenter image description here

この画像では、支払いは、エッジの1+4+3+3+2=13に加えて、頂点の5+6+1=12P=25(各頂点内の数がその重みであると仮定)。最適化の問題は、特定のグラフのPを最大化することです22

これを数学的に書くために、ビット文字列の観点から考えることができます。我々は、文字列により切断を定義s{0,1}nここでsi=0vi されていない和で計数およびsi=1vi れる和で計数しました。計算を少しわかりやすくするために、グラフが完全に接続されていない場合は、グラフを完全に接続し、接続されていないペアv iv jに対してwij=0を設定します。vi,vj

たとえば、上の画像をもう一度見て、頂点内の数値を、上記で想定したような重みではなく、頂点インデックスであると解釈してみましょう。次に、描かれたカットはs=100011対応します。s1=s5=s6=1v1,v5,v6はカットの「良い」側にあり、カウントされますが、s2=s3=s4=0は「悪い」側ですカットの側面とカウントされません。

これにより、

P(s)=isiwi+i,jsi(1sj)wij

最初の項は、カットの「良い」側のすべての頂点の重みを数えるだけです。2番目の項は、エッジが接続する頂点がカットの反対側にある場合、エッジの重みをカウントします。それはときにのみ、エッジをカウントしますので、このないのダブルカウントに注意してくださいsi=1,sj=0ときといないsi=0,sj=1

したがって、ここでの最適化の問題は、P s を最大化する文字列sを見つけることです。ここでの考え方は、P s をシステムのエネルギーの尺度として、sをシステムの状態として考えることです。これは、P s をハミルトニアンに関連付けることができることを意味します。ここで、P s を最大化しようとしていることを少し微妙に説明しますが、通常はハミルトニアンの基底状態を見つけることについて話します。これは問題ではありませんが、私はそれを指摘したかった-私たちは、代わりに(あなたがする場合は抗基底状態)最高エネルギーの励起状態を見たり、使用することができます- PP(s)P(s)sP(s)P(s)P(s)エネルギー関数は通常のように基底状態で動作します。最高の励起状態で作業し、Pを最大化しましょう。

その最高のエネルギー状態が次のようになるようにハミルトニアンを作成します|s0ようP(s0)最大です。基本的に我々は有効にするP(s)に、エネルギー関数を、H、エネルギー事業者。|に注意してこれを行いますS { | 0 | 1 }我々は持っているI - ZをH^|s{|0,|1}

IZ2|s=s|s define s^i=IZi2

ここで、Ziはキュービットiに作用するパウリZです。今、私たちは、交換することにより、当社のハミルトニアンを得るのをS(とし、1 Iで)Piss^IP

H=is^iwi+i,js^i(Is^j)wi,j=iIZi2wi+i,jIZi2(IIZj2)wi,j

これは、拡大すると見て、クリーンアップすることができi,j(ZiZj)=0

H=iwi2(IZi)+i,jwij4(IZiZj)=iwi2(IZi)+i<jwij2(IZiZj)

2を掛けて一定のエネルギーシフトを削除することで、これをさらにクリーンアップできます(I項を削除します)。スケーリングおよびシフトされた固有値を持つ同じ固有状態を持つ新しいハミルトニアン(明らかに、最大エネルギーはこれらの変換の影響を受けません)

H=iwiZii<jwijZiZj

あなたが物性物理学者なら、おそらくこのハミルトニアンをイジングスピングラスとして認識するでしょう。問題にはあまり関係ありませんが、それはクールだと思います。

これで、ハミルトニアンが得られ、その(反)基底状態はビット文字列s0をエンコードし、P(s)を最大化して問題を解決します。

最後に必要なのは初期ハミルトニアンH0であり、これをゆっくりと(断熱的に)最終ハミルトニアンH変換して、完全なハミルトニアン

HT(t)=(1f(t))H0+f(t)H:f(0)=0,f(tf)=1

開始点として、f(t)tは簡単にするためによく使用されます。望ましい精度とスペクトルギャップによって決定される最小のtf3。スペクトルギャップは、(反)基底状態と次のエネルギー状態の間のすべてのtにわたる最小エネルギー差です。ギャップの分析は非常に重要であり(https://arxiv.org/abs/quant-ph/0509162を参照)、アルゴリズムの複雑さ/効率を決定します。ギャップが0のアルゴリズムは、まったく機能することが保証されていません。3t

したがって、次のようなH0が必要です。

  1. (対)基底状態を簡単に見つけて準備できます
  2. The spectral gap of H is not exponentially small in the size of the problem

For this problem, a good initial Hamiltonian is H0=iXi because it's highest energy state is easy to find, it's |+n. It's easy to prepare, just apply Hn to |0n. I don't have time to get into the analysis of the spectral gap but this Hamiltonian is unlikely to be ideal in that regard (see https://arxiv.org/abs/1701.05584).

With this choice of H0 and taking f(t)=t/tf we are done. Our Hamiltonian is

H(t)=(1f(t))iXif(t)[iwiZi+i<jwijZiZj]

Starting in state |ψ0=Hn|0n, evolving according to the above Hamiltonian for time tf (choosing a suitable tf is, again, generally highly non-trivial) then measuring in the computational basis should return (with high probability) the string s=s0 which maximizes P(s).

1 This is ambiguous since by symmetry either side will do. We can make this rigorous by, for example, making the cut directed then taking the vertices to the left of the cut when walking along the direction of the cut.

2 I had said in the comment we minimize a cost function, if you like this better just take cost = payout and minimize cost.

3 I'm sweeping some details about what "slow" means under the rug but can be related to the energy scale of the problem (i.e. multiplying H by a constant will change the speed).

Constraints

Let's say we want to modify the problem above to require that exactly 5 vertices are on the "good" side of our cut. Mathematically this is isi5=0. To enforce this, we add a penalty term into our Hamiltonian for solutions that break this constraint. So we add a term like Hc=α(is^i5I)2 choosing α big enough to ensure a state violating this constraint can't be the highest energy state.

Let's say instead we want to require that there are no more than 5 vertices on the "good" side of our cut. This, it seems, is rather hard to do. In https://arxiv.org/abs/1702.06248 they state that approximating an inequality constraint to order k requires O(N2k) k-spin couplings which would require even more overhead to break them down into 2-qubit couplings which is often necessary on a given architecture. Essentially the strategy is to approximate a step function using a kth order polynomial. This seems like a terrible way to go about it - but I can't think of better way. This is coming from Troyer in 2017 so it's relatively unlikely, though certainly possible, that a better way is currently known.

The general case

The question asks about a general method for encoding an optimization problem into a Hamiltonian. Specifically we want to minimize f(x) subject to a set of constraints. In the section above I discussed adding the constraints to the Hamiltonian. So for a completely general f(x), is there a way to encode it into a Hamiltonian? The general method for this in the literature is to assume we have access to an efficient quantum oracle that implements f(x). We can think of this as having a black box operation (i.e. quantum oracle) f^(x) such that f^(x)|x=f(x)|x. Then we may construct our Hamiltonian as

H=xf^(x)|xx|
Of course this just pushes the difficult part into finding/constructing f^(x). In fact, simple counting arguments show that almost all (in the mathematical sense) quantum oracles are exponentially inefficient to implement (see http://www.ar-tiste.com/imp-oracles/imps2.pdf). So while this is a general encoding of an optimization problem into a Hamiltonian - it's not really practical. It would seem to be the case that if you want to encode your optimization problem into a Hamiltonian in a useful way - you'll need to leverage some structure of f(x). My understanding is that the specifics of exactly how to do this and how to do this in the best manner is not fully understood and is the subject of active research.


The maxcut problem is well explained in this answer. However he optimization problem is stated in a way that it deviates a bit from the max-cut problem regarding the equality and inequality constraints .
Bram

I don't do too much with optimization in my work. Can you give a specific example that conforms to the given form? I can take a stab at coming up with a Hamiltonian for it
bRost03

I have edited the answer to include an equality constraint and discuss the difficulty of implementing an inequality constraint
bRost03

Edited further to add a blurb about the general case
bRost03

Great answer! I was especially interested in the part explaining transition between s and s^.
brzepkowski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.