common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Contact
Event
Project
Research

Terms of service (Web service)

Terms of service (Quantum and ML Cloud service)

Privacy policy


Sign in
Sign up
common.title

汎用量子コンピュータの量子断熱時間発展と組合せ最適化問題おさらい

Yuichiro Minato

2020/12/19 08:34

#量子ゲート #時間発展

NISQは飽きた(大した計算ができない)ので、汎用量子計算に移行します。ということで、おさらいをします。汎用計算でもイジングモデルを利用した組合せ最適化に取り掛かりたいと思います。

1、時間発展

基本的にNISQで組合せ最適化問題を解く時には、QAOAという変分アルゴリズムを使いますが、汎用量子コンピュータでは、変分原理に応じて最適化パラメータ化せずに、時間発展という手法でスケジュールを決めて、パラメータを決めて計算します。

2、定式化

定式化は2種類あります。ハミルトニアンと呼ばれる式を作りますが、解きたい問題のイジングハミルトニアンと探索の方法を決めるドライバーハミルトニアンがあります。文献やウェブサイトでは、解きたい問題のいじんぐハミルトニアンの作り方は最近よく出てきますが、ドライバーハミルトニアンの使い方はあまり出てこなさそうですね。

3、量子断熱時間発展

上記のハミルトニアンを決めたら、ドライバーハミルトニアンに対応する固有状態を準備します。そして、量子断熱時間発展と呼ばれる計算をします。二つのハミルトニアンをスケジュールに応じて入れ替えながら計算をします。計算をすることで状態ベクトルが変化し、最適解の状態ベクトルの要素の振幅が大きくなります。

4、参考計算確認

時間発展計算を確認してみます。

参考

https://qiita.com/gyu-don/items/c51a9e3d5d16a6d5baf6

今回はXYmixerをドライバーとして、初期状態を|01>と|10>の重ね合わせからスタートします。そして、ドライバーをXYmixerを使って適当な問題でやっていきます。

from blueqat import Circuit, pauli, vqe
from blueqat.pauli import qubo_bit as q
from math import pi
import numpy as np

def an(index):
return 0.5 * pauli.X[index] + 0.5j * pauli.Y[index]

def cr(index):
return 0.5 * pauli.X[index] - 0.5j * pauli.Y[index]

op = (cr(1) * an(0) + cr(0) * an(1)).to_expr().simplify()
print(op)
x = []
y00 = []
y01 = []
y10 = []
y11 = []
evos = [term.get_time_evolution() for term in op.terms]
for i in range(100):
c = Circuit().h[0].cx[0, 1].x[1]
for evo in evos:
evo(c, i / 100 * pi)
c.rz(i / 100 * pi)[1]
for evo in evos:
evo(c, i / 100 * pi)
c.rz(i / 100 * pi)[1]
state = c.run()
_a, _b, _c, _d = list(np.abs(state) ** 2)
x.append(i)
y00.append(_a)
y10.append(_b)
y01.append(_c)
y11.append(_d)

import matplotlib.pyplot as plt
plt.plot(x, y00, label='|00>')
plt.plot(x, y10, label='|10>')
plt.plot(x, y01, label='|01>')
plt.plot(x, y11, label='|11>')
plt.legend()
plt.show()

こうなりました。これはシミュレーションなので、最大化は特にしていませんが、10と01の振幅が変化しているのがわかります。今回は量子重ね合わせを使って初期状態が準備され、mixerとして01と10の入れ替えが行われているので、00と11は最初から解として除外されて、組合せ最適化が時間発展されています。

ハミルトニアンの作り方やドライバーの作り方、スケジュールや時間発展演算子の扱いなどいろいろなところを考慮する必要があり、QAOAよりも発展性がありそうなので楽しみです。以上です。

© 2025, blueqat Inc. All rights reserved