ユーティリティスケールQAOA
Olivia LanesによるユーティリティスケールQAOAに関する動画をご覧ください。またはYouTubeで別ウィンドウで開くこともできます。
レッスンの概要
このコースのここまでの内容で、量子コンピューターでユーティリティスケールの問題を解くために必要なフレームワークとツールの確固たる基礎をお伝えできたと思います。いよいよ、これらのツールを実際に動かしてみましょう。
このレッスンでは、グラフをどのように最適に2つに分割するかを問うグラフ理論の有名な問題、Max-Cut問題のユーティリティスケールの例に取り組みます。まずは5ノードのシンプルなグラフから始め、量子コンピューターがこの問題の解決にどのように役立つかの直感を養い、その後ユーティリティスケール版の問題に応用します。
このレッスンは、この問題へのアプローチの大まかな概要となります。コードのウォークスルーではありません。ただし、このレッスンに対応するチュートリアルがあり、量子コンピューター上でMax-Cut問題を実際に解けるコードが含まれています。
問題
まず確認しておくと、すべての計算問題が量子コンピューティングに適しているわけではありません。「簡単な問題」は、古典コンピュ ーターがすでに十分に解けるため、この技術から恩恵を受けることはありません。
私たちが最も期待を寄せて探求している3つのユースケースは次の通りです。
- 自然のシミュレーション
- 複雑な構造を持つデータの処理
- 最適化
今日は3番目のユースケースである最適化に焦点を当てます。最適化問題では、一般的にある関数の最大値または最小値を探します。古典的な手法でこれらの極値を見つける難しさは、問題のサイズが大きくなるにつれて指数関数的に増大します。
今日取り上げる最適化問題はMax-Cutと呼ばれるもので、量子近似最適化アルゴリズム(QAOA)を使って解きます。
Max-Cutとは?
グラフとは、頂点(またはノード)の集まりであり、その一部がエッジで接続されています。この問題では、エッジを「切断」することでグラフのノードを2つのサブセットに分割するよう求められます。このようにカットされるエッジの数を最大化する分割を見つけることが目的です。これが「Max-Cut」という名前の由来です。

たとえば、上の図は5ノードのグラフと、右側にMax-Cut解を示しています。5本のエッジを切断しており、このグラフで達成できる最良の結果です。
5ノードのグラフは非常に小さいため、頭の 中や紙に何度かカットを試みることでMax-Cutを求めることはそれほど難しくありません。しかし、頂点の数が増えるにつれて問題はどんどん難しくなります。考えうるカットの数がノード数に対して指数関数的に増大するためです。ある時点からは、既知の古典アルゴリズムではスーパーコンピューターでさえ解くのが困難になります。
より大きく複雑なグラフに対してMax-Cut問題を解く方法が求められています。この問題は金融における不正検出、グラフクラスタリング、ネットワーク設計、ソーシャルメディア分析など多くの実用的な応用があります。Max-Cutは、より大きな問題の特定のアプローチにおけるサブ問題としてよく登場します。そのため、私たちが単純に思う以上に一般的な問題なのです。
解法
これから、量子コンピューター上でMax-Cut問題を解くためのアプローチを5ノードのシンプルなグラフで説明していきます。Pythonノートブックのチュートリアルを参照しながら進めることができます。そのシンプルな例の後、チュートリアルではユーティリティスケールの例も扱います。
最初のステップは、ノード数とノード同士を接続するエッジを定義してグラフを作成することです。チュートリアルで示されているように、rustworkxというパッケージをインポートすることで実現できます。結果として、次のようなグラフが得られます。
Qiskitパターンズフレームワークを使って、このグラフのMax-Cut解を量子コンピューターで求めます。
マッピング
問題を量子コンピューターにマッピングする必要があります。そのためにまず、グラフのカット数の最大化は数学的に次のように表せることに注目します。
ここでとはグラフのノードを表し、とは各ノードがどちらの分割側にあるかによって0または1の値をとります(一方のグループを「0」、もう一方を「1」とラベル付けします)。とが同じ側にある場合、和の中の式はゼロになります。反対側にある場合(つまりカットがある場合)、式は1になります。よって、カット数を最大化することが和を最大化することになります。
各値に−1を掛けることで最小化問題に変換することもできます。
これでマッピングの準備ができました。グラフから量子回路にどう変換するかを考えると少し戸惑うかもしれませんが、一歩ずつ進めていきましょう。
Max-CutをQAOAを使って解こうとしていることを思い出してください。QAOAの方法論では、最終的にハイブリッドアルゴリズムのコスト関数を表す演算子(つまりハミルトニアン)と、問題の候補解を表すパラメータ化回路(アンザッツ)が必要です。
QUBO
これらの候補解からサンプリングし、コスト関数で評価することができます。そのために、組み合わせ最適化問題を符号化するのに役立つ二値二次計画法(QUBO)表記を含む一連の数学的変換を活用します。QUBOでは次を求めます。
ここでは実数の行列であり、はグラフのノード数(ここでは5)に対応します。
QAOAを適用するには、問題をハミルトニアン、つまりシステムの全エネルギーを表す関数または行列として定式化する必要があります。具体的には、基底状態が関数の最小値に対応するコスト関数ハミルトニアンを作成します。よって最適化問題を解くために、量子コンピューター上での基底状態を準備しようとします。この状態からサンプリングすることで、の解を高い確率で得られます。