コメントで要求されているように、ここに作業例があります。本体は、特定の問題に対するf(x)最小化を扱います。下部には、制約の簡単な説明と、一般的なケースに関する簡単な説明があります。
これから加重最大カット問題を解決しましょう
- 比較的単純な例です
- 古典的に難しい
- 文献で比較的一般的な例です(例:https : //journals.aps.org/prl/abstract/10.1103/PhysRevLett.90.067903)
- 物理的なハミルトニアン(Isingスピングラス)と明確な関係がある
問題を理解するために、我々は無向グラフで始まるn頂点{V}の各頂点、vi∈V重量を有しwi≥0と接続各エッジvi及びvj重み有するwij≥0。次に、グラフを2つに分割します。カットは直線である必要はありませんが、自己交差してはならず、エッジを2回カットすることはできません。次に、「支払い」Pを計算しますP私たちのカットのために。ペイアウトは、カットしたエッジのウェイトの合計と、カットの片側の頂点のウェイトの合計です。11
ソース
この画像では、支払いは、エッジの1+4+3+3+2=13に加えて、頂点の5+6+1=12→P=25(各頂点内の数がその重みであると仮定)。最適化の問題は、特定のグラフのPを最大化することです。22
これを数学的に書くために、ビット文字列の観点から考えることができます。我々は、文字列により切断を定義s∈{0,1}nここでsi=0→vi されていない和で計数およびsi=1→vi れる和で計数しました。計算を少しわかりやすくするために、グラフが完全に接続されていない場合は、グラフを完全に接続し、接続されていないペアv i、v jに対してwij=0を設定します。vi,vj
たとえば、上の画像をもう一度見て、頂点内の数値を、上記で想定したような重みではなく、頂点インデックスであると解釈してみましょう。次に、描かれたカットはs=100011対応します。s1=s5=s6=1→v1,v5,v6はカットの「良い」側にあり、カウントされますが、s2=s3=s4=0は「悪い」側ですカットの側面とカウントされません。
これにより、P(s)=∑isiwi+∑i,jsi(1−sj)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⟩}I−Z2|s⟩=s|s⟩→ define s^i=I−Zi2
ここで、Ziはキュービットiに作用するパウリZです。今、私たちは、交換することにより、当社のハミルトニアンを得るのをとS(とし、1 Iで)Piss^IP
H=∑is^iwi+∑i,js^i(I−s^j)wi,j=∑iI−Zi2wi+∑i,jI−Zi2(I−I−Zj2)wi,j
これは、拡大すると見て、クリーンアップすることができ∑i,j(Zi−Zj)=0→
H=∑iwi2(I−Zi)+∑i,jwij4(I−ZiZj)=∑iwi2(I−Zi)+∑i<jwij2(I−ZiZj)
2を掛けて一定のエネルギーシフトを削除することで、これをさらにクリーンアップできます(I項を削除します)。スケーリングおよびシフトされた固有値を持つ同じ固有状態を持つ新しいハミルトニアン(明らかに、最大エネルギーはこれらの変換の影響を受けません)
H=−∑iwiZi−∑i<jwijZiZj
あなたが物性物理学者なら、おそらくこのハミルトニアンをイジングスピングラスとして認識するでしょう。問題にはあまり関係ありませんが、それはクールだと思います。
これで、ハミルトニアンが得られ、その(反)基底状態はビット文字列s0をエンコードし、P(s)を最大化して問題を解決します。
最後に必要なのは初期ハミルトニアンH0であり、これをゆっくりと(断熱的に)最終ハミルトニアンH変換して、完全なハミルトニアンHT(t)=(1−f(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が必要です。
- (対)基底状態を簡単に見つけて準備できます
- 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 H⊗n to |0⟩⊗n. 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)=(1−f(t))∑iXi−f(t)[∑iwiZi+∑i<jwijZiZj]
Starting in state |ψ0⟩=H⊗n|0⟩⊗n, 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 ∑isi−5=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^i−5I)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)|x⟩⟨x|
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.