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

QUBOじゃなくてHOBOだよ

Yuichiro Minato

2022/04/21 12:15

時代はHOBOですよね。さっそくやってみます。

参考:
Space-efficient binary optimization for variational quantum computing
まだ上記参考論文はきちんと読んでないですが、HOBOを量子回路で実装したら効率的という話が仕事中に出てきました。確かにそう思いましたので、実装を試してみたいと思います。
QUBOは量子最適化業界で有名ですが、HOBOもそこそこですね。High Order Binary optimizationの略で、実装してみます。簡単に言うと01の二値ではなく整数が使えます。
QAOAを使って方程式を制約問題で解いてみたいと思います。

3x_0 + 5x_1 = 13

こちらの問題の答えは自然数で考えると、x_0 = 1, x_1=2でしょうか。離散最適化を使うと、

(3x_0 + 5x_1 - 13)^2

で解けますね?

x_0をバイナリ値qを使って表現してみます。

x_0 = q_0 + 2q_1, x_1 = q_2 + 2q_3

from blueqat import vqe
from blueqat.pauli import *
from blueqat.pauli import qubo_bit as q
    
x0 = q(0)+2*q(1)
x1 = q(2)+2*q(3)

hamiltonian = (3*x0 + 5*x1 - 13)**2
step = 8

result = vqe.Vqe(vqe.QaoaAnsatz(hamiltonian, step)).run()
print(result.most_common(4))
sample = result.most_common(1)[0][0]

x0_answer = sample[0] + 2*sample[1]
x1_answer = sample[2] + 2*sample[3]

print('x0:', x0_answer, 'x1:', x1_answer)
(((1, 0, 0, 1), 0.36062771920547754), ((1, 1, 1, 0), 0.33311197114878843), ((0, 1, 0, 1), 0.1037184166163281), ((0, 1, 1, 0), 0.049769281008857))
x0: 1 x1: 2

とりあえずできました。これを使うことでより効率的な実装もできるようですのですが、実際にはバイナリ値よりは解が出にくかった気がします。

巡回セールスマン問題では量子ビット数を減らすことができるようですので次回見てみたいと思います。

© 2025, blueqat Inc. All rights reserved