(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-15
(45)【発行日】2024-10-23
(54)【発明の名称】関数変換装置、関数変換方法、およびプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20241016BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2023514266
(86)(22)【出願日】2021-04-15
(86)【国際出願番号】 JP2021015547
(87)【国際公開番号】W WO2022219768
(87)【国際公開日】2022-10-20
【審査請求日】2023-07-26
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100121706
【氏名又は名称】中尾 直樹
(74)【代理人】
【識別番号】100128705
【氏名又は名称】中村 幸雄
(74)【代理人】
【識別番号】100147773
【氏名又は名称】義村 宗洋
(72)【発明者】
【氏名】宮原 和大
【審査官】山本 俊介
(56)【参考文献】
【文献】国際公開第2015/190593(WO,A1)
【文献】特開2008-197851(JP,A)
【文献】特開2021-005363(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
Nが1以上の整数であり、
N個のx
1
,…,x
N
が変数であり、N個のs
1,…,s
Nが変数であり、(s
1,…,s
N)=(x
1,…,x
N)のときにP(s
1,…,s
N,x
1,…,x
N)=1であり、(s
1,…,s
N)≠(x
1,…,x
N)のときにP(s
1,…,s
N,x
1,…,x
N)=0であり、
前記変数x
1
,…,x
N
に関する任意の多変数関数f(x
1
,…,x
N
)を一部の項とし、任意の変数に関する任意の多変数関数を他の項とする入力多変数関数を入力とし、前記入力多変数関数に含まれた前記多変数関数f(x
1
,…,x
N
)のみを、少なくとも一部の組(s
1,…,s
N)についてf(s
1,…,s
N)P(s
1,…,s
N,x
1,…,x
N)を足し合わせた前記
変数x
1
,…,x
N
に関する多変数多項式g(x
1,…,x
N)
に置き換えて出力する変換部
を有する関数変換装置。
【請求項2】
請求項1の関数変換装置であって、
前記変換部は、
前記多変数関数f(x
1,…,x
N)を入力とし、前記少なくとも一部の組(s
1,…,s
N)についての多変数関数値f(s
1,…,s
N)を得る多変数関数値生成部と、
前記多変数関数値f(s
1,…,s
N)を入力とし、前記少なくとも一部の組(s
1,…,s
N)についてf(s
1,…,s
N)P(s
1,…,s
N,x
1,…,x
N)を足し合わせた前記多変数多項式g(x
1,…,x
N)を得て出力する多変数多項式生成部と、
を有する関数変換装置。
【請求項3】
請求項1または2の関数変換装置であって、
前記変換部は、
すべての組(s
1,…,s
N)についてf(s
1,…,s
N)P(s
1,…,s
N,x
1,…,x
N)を足し合わせた前記多変数多項式g(x
1,…,x
N)を得て出力する、関数変換装置。
【請求項4】
請求項1から3の何れかの関数変換装置であって、
前記変数x
1,…,x
Nのそれぞれが二値変数x
i∈{0,1}であり、前記変数s
1,…,s
Nのそれぞれが二値変数s
i∈{0,1}であり、i=1,…,Nであり、x
i
-=1-x
iであり、s
i=1のときx
i(+)s
i=x
iであり、s
i=0のときx
i(+)s
i=x
i
-であり、P(s
1,…,s
N,x
1,…,x
N)=Π
1≦i≦N(x
i(+)s
i)である、関数変換装置。
【請求項5】
関数変換装置の関数変換
方法であって、
Nが1以上の整数であり、
N個のx
1
,…,x
N
が変数であり、N個のs
1,…,s
Nが変数であり、(s
1,…,s
N)=(x
1,…,x
N)のときにP(s
1,…,s
N,x
1,…,x
N)=1であり、(s
1,…,s
N)≠(x
1,…,x
N)のときにP(s
1,…,s
N,x
1,…,x
N)=0であり、
前記関数変換装置の変換部が、
前記変数x
1
,…,x
N
に関する任意の多変数関数f(x
1
,…,x
N
)を一部の項とし、任意の変数に関する任意の多変数関数を他の項とする入力多変数関数を入力とし、前記入力多変数関数に含まれた前記多変数関数f(x
1
,…,x
N
)のみを、少なくとも一部の組(s
1,…,s
N)についてf(s
1,…,s
N)P(s
1,…,s
N,x
1,…,x
N)を足し合わせた前記
変数x
1
,…,x
N
に関する多変数多項式g(x
1,…,x
N)
に置き換えて出力する変換ステップ
を有する関数変換方法。
【請求項6】
請求項1から4の何れかの関数変換装置としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、多変数関数を多変数多項式に変換する技術に関する。
【背景技術】
【0002】
現在広く利用されているノイマン型コンピュータでは、組合せ最適化問題を効率的に解くことが難しいとされている。そこで、近年、組合せ最適化問題をノイマン型コンピュータよりも効率的に解くことが可能な計算機である、量子アニーリングマシンやイジングマシンなどの研究開発が進められている。
【0003】
これらの新たな計算機は、対象とする組合せ最適化問題の目的関数をQUBO(Quadratic Unconstrained Binary Optimization)の目的関数やそれと等価なイジングハミルトニアンとして表現した最適化関数を入力とし、高速にその問題の解を計算することができる。
【0004】
QUBOの目的関数やそれと等価なイジングハミルトニアンは0か1を取る二値変数(0-1変数)に関する多変数2次多項式であるが、0-1変数に関する任意の多変数多項式をQUBOの目的関数やそれと等価なイジングハミルトニアンに変換する手法が存在する(例えば、非特許文献1および2等参照)。
【先行技術文献】
【非特許文献】
【0005】
【文献】Nike Dattani,“Quadratization in Discrete Optimization and Quantum Mechanics”,[online],arXiv:1901.04405v2 [quant-ph] 23 Sep 2019,[2021年3月30日検索],インターネット<https://arxiv.org/pdf/1901.04405.pdf>
【文献】Endre Boros, Yves Crama, Elisabeth Rodriguez-Heck,“Quadratizations of symmetric pseudo-Boolean functions: sub-linear bounds on the number of auxiliary variables”,[online],International Symposium on Artificial Intelligence and Mathematics (ISAIM 2018),4-Jan-2018,[2021年3月30日検索],インターネット<https://orbi.uliege.be/handle/2268/220766>
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述のように、量子アニーリングマシンやイジングマシンなどを用いて組み合わせ最適化問題を解くには、その問題の目的関数をQUBOの目的関数やそれと等価なイジングハミルトニアンの形式で表現する必要があるが、この表現は自明なものではない。前述のように0-1変数に関する任意の多変数多項式をQUBOの目的関数やそれと等価なイジングハミルトニアンに変換する手法が存在する。しかしながら、組み合わせ最適化問題の目的関数を表す、0-1変数に関する任意の多変数関数を、0-1変数に関する多変数多項式に変換する手法は知られていない。特に、有理関数、指数関数、または対数関数のような加減乗算でない形式で定義された多変数関数については、多項式としての表現を直接得ることはできない。
【0007】
このような問題は、組み合わせ最適化問題を量子コンピュータで解くための最適化関数を生成する場合のみならず、任意の多変数関数を多変数多項式に変換する際に共通するものである。
【0008】
本発明はこのような点に鑑みてなされたものであり、任意の多変数関数を多変数多項式に変換する技術を提供することを目的とする。
【課題を解決するための手段】
【0009】
N個の変数x1,…,xNに関する任意の多変数関数f(x1,…,xN)を、変数x1,…,xNに関する多変数多項式g(x1,…,xN)に変換する。ここで、Nは1以上の整数とする。、変換部は、多変数関数f(x1,…,xN)を入力とし、少なくとも1つ以上の(s1,…,sN)についてf(s1,…,sN)P(s1,…,sN,x1,…,xN)を足し合わせた多変数多項式g(x1,…,xN)を得て出力する。このとき、P(s1,…,sN,x1,…,xN)は、(s1,…,sN)=(x1,…,xN)のときに1を、(s1,…,sN)≠(x1,…,xN)のときに0をとる関数であり、s1,…,sNはN個の変数である。
【発明の効果】
【0010】
以上のように、本発明では、任意の多変数関数を多変数多項式に変換することができる。
【図面の簡単な説明】
【0011】
【
図1】
図1Aは第1実施形態の関数変換装置の機能構成を例示するためのブロック図である。
図1Bは
図1Aの多変数多項式生成部の機能構成を例示するためのブロック図である。
【
図2】
図2は第1実施形態の関数変換装置の処理を例示するためのフロー図である。
【
図3】
図3は第2実施形態の関数変換装置の機能構成を例示するためのブロック図である。
【
図4】
図4は第1,2実施形態の関数変換装置のハードウェア構成を例示するためのブロック図である。
【発明を実施するための形態】
【0012】
以下、図面を参照して本発明の実施形態を説明する。
[原理]
まず、各実施形態の原理を説明する。
各実施形態では、N個の変数x1,…,xNに関する任意の多変数関数f(x1,…,xN)を、変数x1,…,xNに関する多変数多項式g(x1,…,xN)に変換する。ここでNは1以上の整数である。また、変数x1,…,xNはどのようなものであってもよいが、例えば、変数x1,…,xNのそれぞれは二値変数xi∈{b0,b1}であり、b0≠b1である。ただし、i=1,…,Nである。特に、二値変数xiが0-1変数である場合、b0=0であり、b1=1である。各変数xiについて取り得る値がiごとに個別に設定されてもよい。例えば、変数x1,…,xNのそれぞれが二値変数xi∈{b0,i,b1,i}であり、各{b0,i,b1,i}がiにより異なっていてもよい。特に、二値変数xiが0-1変数である場合、(b0,i,b1,i)=(0,1)であるか(b0,i,b1,i)=(1,0)であるかが、iにより異なっていてもよい。
【0013】
本実施形態では、N個の変数s1,…,sNを要素とするベクトル(s1,…,sN)のそれぞれについて、当該ベクトル(s1,…,sN)およびN個の変数x1,…,xNを要素とするベクトル(x1,…,xN)が(s1,…,sN)=(x1,…,xN)を満たすときにP(s1,…,sN,x1,…,xN)=1となり、(s1,…,sN)≠(x1,…,xN)を満たすときにP(s1,…,sN,x1,…,xN)=0となる多項式P(s1,…,sN,x1,…,xN)を定義し、それらを組み合わせることで上記の変換を実現する。すなわち、各ベクトル(s1,…,sN)についての多項式P(s1,…,sN,x1,…,xN)は、(s1,…,sN)=(x1,…,xN)となる変数x1,…,xNが入力された場合に1となり、それ以外の場合に0となる。この多項式P(s1,…,sN,x1,…,xN)を単位多項式と呼ぶことにする。ここで、変数s1,…,sNはどのようなものであってもよいが、例えば、変数s1,…,sNのそれぞれは二値変数si∈{b0,b1}である。特に、二値変数siが0-1変数である場合、b0=0であり、b1=1である。
【0014】
二値変数x
iおよびs
i(ただし、i=1,…,N)が0-1変数である場合の単位多項式P(s
1,…,s
N,x
1,…,x
N)を例示する。まず、が0-1変数x
iについて、変数x
iの否定形を以下のように定義する。
x
i
-=1-x
i
なお、x
i
-の右上添え字の「-」は本来「x
i」の真上に記載されるべきであるが、記載表記の制約上、「x
i」の右上に記載する場合がある。
次に、0-1変数x
iおよびs
iについて、以下の演算(+)を定義する。
【数1】
すなわち、s
i=1のときx
i(+)s
i=x
iであり、s
i=0のときx
i(+)s
i=x
i
-である。このとき、各ベクトル(s
1,…,s
N)についての単位多項式P(s
1,…,s
N,x
1,…,x
N)は以下のようになる。
P(s
1,…,s
N,x
1,…,x
N)=Π
1≦i≦N(x
i(+)s
i) (2)
=(x
1(+)s
1)…(x
N(+)s
N)
この多項式P(s
1,…,s
N,x
1,…,x
N)は、(s
1,…,s
N)=(x
1,…,x
N)のときにP(s
1,…,s
N,x
1,…,x
N)=1となり、(s
1,…,s
N)≠(x
1,…,x
N)のときにP(s
1,…,s
N,x
1,…,x
N)=0となる。
【0015】
入力となる多変数関数f(x1,…,xN)は部分関数であってもよい。すなわち、多変数関数f(x1,…,xN)の定義域dxは変数xi上のすべての組み合わせを含まなくてもよい。この場合、単位多項式P(s1,…,sN,x1,…,xN)は、少なくともベクトル(x1,…,xN)の定義域dxに属する各ベクトル(s1,…,sN)∈dxについて設定すればよい。すなわち、少なくとも一部のベクトル(s1,…,sN)(s1,…,sNの列)について単位多項式f(s1,…,sN)が設定されればよい。また定義域dxがベクトル(x1,…,xN)の全領域(全空間)uxである場合、すべてのベクトル(s1,…,sN)∈uxについて単位多項式f(s1,…,sN)が設定される。例えば、二値変数xiおよびsiが0-1変数であり、定義域dxがベクトル(x1,…,xN)の全領域である場合、定義域dxには2N通りのベクトル(x1,…,xN)が存在する。この場合には2N通りのベクトル(s1,…,sN)∈{0,1}Nについて、それぞれ単位多項式f(s1,…,sN)が設定される。
【0016】
この前提のもと、各実施形態の変換部は、変換対象の多変数関数f(x
1,…,x
N)を入力とし、少なくとも定義域d
xに属するベクトル(s
1,…,s
N)∈d
x(少なくとも一部の組(s
1,…,s
N))についてf(s
1,…,s
N)P(s
1,…,s
N,x
1,…,x
N)を足し合わせた多変数多項式g(x
1,…,x
N)を得て出力する。例えば、変換部は、以下の式(3)で得られる多変数多項式g(x
1,…,x
N)を出力する。
【数2】
この多変数多項式g(x
1,…,x
N)は、少なくとも定義域d
xに属するベクトル(x
1,…,x
N)において、g(x
1,…,x
N)=f(x
1,…,x
N)の関係を満たす。すなわち、少なくとも定義域d
xにおいて、変換対象の多変数関数f(x
1,…,x
N)と同一の値を返す多変数多項式g(x
1,…,x
N)を生成することができる。式(2)の単位多項式P(s
1,…,s
N,x
1,…,x
N)を用いる場合、式(3)は、例えば、以下の式(4)のようになる。
【数3】
ただし、s
i,x
i∈{0,1}である。
【0017】
特に定義域d
xがベクトル(x
1,…,x
N)の全領域u
xである場合、変換部は、すべてのベクトル(s
1,…,s
N)∈u
x(すべての組(s
1,…,s
N))についてf(s
1,…,s
N)P(s
1,…,s
N,x
1,…,x
N)を足し合わせた多変数多項式g(x
1,…,x
N)を得て出力する。すなわち変換部は、以下の式(5)で得られる多変数多項式g(x
1,…,x
N)を出力する。
【数4】
この多変数多項式g(x
1,…,x
N)は、すべてのベクトル(x
1,…,x
N)∈u
xにおいて、g(x
1,…,x
N)=f(x
1,…,x
N)の関係を満たす。すなわち、すべての入力に対して変換対象の多変数関数f(x
1,…,x
N)と同一の値を返す多変数多項式g(x
1,…,x
N)を生成することができる。式(2)の単位多項式P(s
1,…,s
N,x
1,…,x
N)を用いる場合、式(5)は以下の式(6)のようになる。
【数5】
【0018】
[第1実施形態]
次に、第1実施形態を説明する。以降、説明済の事項については同じ記号を用いて説明を省略する。
<構成>
図1Aに例示するように、本実施形態の関数変換装置1は、変換部10、記憶部13、および制御部14を有する。ここで、本実施形態で例示する変換部10は、多変数関数値生成部11および多変数多項式生成部12を有する。また
図1Bに例示するように、本実施形態で例示する多変数多項式生成部12は乗算部121および加算部122を有する。しかし、これらは本発明を限定するものではなく、複数の処理部の少なくとも一部の機能が融合されてもよい。また、各処理は制御部14の制御の下で実行され、各処理で得られたデータは記憶部13に格納され、必要に応じて他の処理で読み出されて利用される。
【0019】
<処理>
本実施形態の関数変換処理を例示する。
関数変換装置1の変換部10には、変換対象の多変数関数f(x1,…,xN)が入力される。多変数関数f(x1,…,xN)に限定はないが、例えば、組合せ最適化問題の目的関数またはそれと等価な多変数関数f(x1,…,xN)が入力される。また、多変数関数f(x1,…,xN)の定義域dxも変換部10に入力されてもよい。しかし、定義域dxが関数変換装置1に入力されなくてもよい。例えば、定義域dxが全領域uxの場合や定義域dxが既知の場合には、定義域dxの入力が省略可能である。
【0020】
変換部10は、少なくとも一部のベクトル(s1,…,sN)についてf(s1,…,sN)P(s1,…,sN,x1,…,xN)を足し合わせた多変数多項式g(x1,…,xN)を得て出力する。変換部10は、例えば、少なくとも定義域dxに属するベクトル(s1,…,sN)についてf(s1,…,sN)P(s1,…,sN,x1,…,xN)を足し合わせた多変数多項式g(x1,…,xN)を得て出力してもよいし、すべてのベクトル(s1,…,sN)についてf(s1,…,sN)P(s1,…,sN,x1,…,xN)を足し合わせた多変数多項式g(x1,…,xN)を得て出力してもよい。
【0021】
図2を用いて、本実施形態の関数変換処理を例示する。
変換部10の多変数関数値生成部11には、多変数関数f(x
1,…,x
N)が入力される。定義域d
xが入力される場合には、この定義域d
xも多変数関数値生成部11に入力される。多変数関数値生成部11は、少なくとも一部のベクトル(s
1,…,s
N)(組(s
1,…,s
N))についての多変数関数値f(s
1,…,s
N)を得て出力する。例えば、多変数関数値生成部11は、少なくとも定義域d
xに属するベクトル(s
1,…,s
N)について多変数関数値f(s
1,…,s
N)を得て出力してもよいし、すべてのベクトル(s
1,…,s
N)について多変数関数値f(s
1,…,s
N)を得て出力してもよい(ステップS11)。
【0022】
ステップS11で得られた多変数関数値f(s
1,…,s
N)は多変数多項式生成部12に入力される。多変数多項式生成部12は、少なくとも一部のベクトル(s
1,…,s
N)(組(s
1,…,s
N))についてf(s
1,…,s
N)P(s
1,…,s
N,x
1,…,x
N)を足し合わせた多変数多項式g(x
1,…,x
N)を得て出力する。例えば、多変数多項式生成部12は、少なくとも定義域d
xに属するベクトル(s
1,…,s
N)についてf(s
1,…,s
N)P(s
1,…,s
N,x
1,…,x
N)を足し合わせた多変数多項式g(x
1,…,x
N)を得て出力してもよいし、すべてのベクトル(s
1,…,s
N)についてf(s
1,…,s
N)P(s
1,…,s
N,x
1,…,x
N)を足し合わせた多変数多項式g(x
1,…,x
N)を得て出力してもよい。例えば、多変数多項式生成部12は、前述した式(3)-(6)の何れかに従って多変数多項式g(x
1,…,x
N)を生成して出力する。また、多変数多項式g(x
1,…,x
N)の計算過程に限定はないが、例えば、乗算部121(
図1B)がf(s
1,…,s
N)とP(s
1,…,s
N,x
1,…,x
N)とを用いてf(s
1,…,s
N)P(s
1,…,s
N,x
1,…,x
N)を得、加算部122が得られたf(s
1,…,s
N)P(s
1,…,s
N,x
1,…,x
N)を累積的に加算するか、まとめて加算して多変数多項式g(x
1,…,x
N)を得て出力する(ステップS12)。
【0023】
<具体例>
以下に、N=3であり、変数si及びxiが0-1変数である場合の具体例を示す。
入力の多変数関数:f(x1,x2,x3)
変換された多変数多項式:
g(x1,x2,x3)
=f(0,0,0)x1
-x2
-x3
-+f(0,0,1)x1
-x2
-x3+f(0,1,0)x1
-x2x3
-+f(0,1,1)x1
-x2x3+f(1,0,0)x1x2
-x3
-+f(1,0,1)x1x2
-x3+f(1,1,0)x1x2x3
-+f(1,1,1)x1x2x3
=f(0,0,0)+
(f(0,0,1)-f(0,0,0))x3+
(f(0,1,0)-f(0,0,0))x2+
(f(1,0,0)-f(0,0,0))x1+
(f(0,1,1)-f(0,1,0)-f(0,0,1)+f(0,0,0))x2x3+
(f(1,0,1)-f(1,0,0)-f(0,0,1)+f(0,0,0))x1x3+
(f(1,1,0)-f(1,0,0)-f(0,1,0)+f(0,0,0))x1x2+
(f(1,1,1)-f(1,1,0)-f(1,0,1)-f(0,1,1)+
f(1,0,0)+f(0,1,0)+f(0,0,1)-f(0,0,0))x1x2x3
【0024】
<本実施形態の特徴>
上述のように得られた多変数多項式g(x1,…,xN)は、少なくとも定義域dxに属するベクトル(x1,…,xN)において、変換対象の任意の多変数関数f(x1,…,xN)と等しくなる。定義域dxが全領域uxであれば、すべてのベクトル(x1,…,xN)においてg(x1,…,xN)=f(x1,…,xN)となる。このように、本実施形態では、任意の多変数関数f(x1,…,xN)を多変数多項式g(x1,…,xN)に変換することができる。
【0025】
[第2実施形態]
変換対象の任意の多変数関数の一部の項のみが多変数多項式に変換されてもよい。第2実施形態では、このような例を示す。
<構成>
図3に例示するように、本実施形態の関数変換装置2は、分離部21、関数変換装置1、および合成部22を有する。
【0026】
<処理>
本実施形態の関数変換処理を例示する。
関数変換装置2の分離部21には、変換対象の多変数関数f(x1,…,xN)を項に含む関数が入力される。このような関数の例は多変数関数f(x1,…,xN)と、変数x1,…,xN,wに関する多変数関数h(x1,…,xN,w)とを加算したf(x1,…,xN)+h(x1,…,xN,w)である。しかし、これは本発明を限定するものではない。分離部21は、f(x1,…,xN)+h(x1,…,xN,w)をf(x1,…,xN)と残りの項(例えば、h(x1,…,xN,w))とに分離し、f(x1,…,xN)を関数変換装置1に入力し、残りの項(例えば、h(x1,…,xN,w))を合成部22に入力する。
【0027】
関数変換装置1は、第1実施形態で説明したように、多変数関数f(x1,…,xN)を多変数多項式g(x1,…,xN)に変換して出力する。多変数多項式g(x1,…,xN)は合成部22に入力される。
【0028】
合成部22は、多変数多項式g(x1,…,xN)と前述した残りの項(例えば、h(x1,…,xN,w))とを加算して得られる関数(例えば、g(x1,…,xN)+h(x1,…,xN,w))を出力する。
【0029】
<具体例>
以下に、N=3であり、変数si及びxiが0-1変数である場合の具体例を示す。
入力の多変数関数:f(x1,x2,x3)+h(x1,x2,x3,w)
変換された多変数多項式:
g(x1,x2,x3)+h(x1,x2,x3,w)
=f(0,0,0)x1
-x2
-x3
-+f(0,0,1)x1
-x2
-x3+f(0,1,0)x1
-x2x3
-+f(0,1,1)x1
-x2x3+f(1,0,0)x1x2
-x3
-+f(1,0,1)x1x2
-x3+f(1,1,0)x1x2x3
-+f(1,1,1)x1x2x3
=f(0,0,0)+
(f(0,0,1)-f(0,0,0))x3+
(f(0,1,0)-f(0,0,0))x2+
(f(1,0,0)-f(0,0,0))x1+
(f(0,1,1)-f(0,1,0)-f(0,0,1)+f(0,0,0))x2x3+
(f(1,0,1)-f(1,0,0)-f(0,0,1)+f(0,0,0))x1x3+
(f(1,1,0)-f(1,0,0)-f(0,1,0)+f(0,0,0))x1x2+
(f(1,1,1)-f(1,1,0)-f(1,0,1)-f(0,1,1)+
f(1,0,0)+f(0,1,0)+f(0,0,1)-f(0,0,0))x1x2x3
+h(x1,x2,x3,w)
【0030】
[ハードウェア構成]
各実施形態における関数変換装置1,2は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)やRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される装置である。すなわち、各実施形態における関数変換装置1,2は、例えば、それぞれが有する各部を実装するように構成された処理回路(processing circuitry)を有する。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、単独で処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。また、1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
【0031】
図4は、各実施形態における関数変換装置1,2のハードウェア構成を例示したブロック図である。
図4に例示するように、この例の関数変換装置1,2は、CPU(Central Processing Unit)10a、入力部10b、出力部10c、RAM(Random Access Memory)10d、ROM(Read Only Memory)10e、補助記憶装置10f及びバス10gを有している。この例のCPU10aは、制御部10aa、演算部10ab及びレジスタ10acを有し、レジスタ10acに読み込まれた各種プログラムに従って様々な演算処理を実行する。また、入力部10bは、データが入力される入力端子、キーボード、マウス、タッチパネル等である。また、出力部10cは、データが出力される出力端子、ディスプレイ、所定のプログラムを読み込んだCPU10aによって制御されるLANカード等である。また、RAM10dは、SRAM (Static Random Access Memory)、DRAM (Dynamic Random Access Memory)等であり、所定のプログラムが格納されるプログラム領域10da及び各種データが格納されるデータ領域10dbを有している。また、補助記憶装置10fは、例えば、ハードディスク、MO(Magneto-Optical disc)、半導体メモリ等であり、所定のプログラムが格納されるプログラム領域10fa及び各種データが格納されるデータ領域10fbを有している。また、バス10gは、CPU10a、入力部10b、出力部10c、RAM10d、ROM10e及び補助記憶装置10fを、情報のやり取りが可能なように接続する。CPU10aは、読み込まれたOS(Operating System)プログラムに従い、補助記憶装置10fのプログラム領域10faに格納されているプログラムをRAM10dのプログラム領域10daに書き込む。同様にCPU10aは、補助記憶装置10fのデータ領域10fbに格納されている各種データを、RAM10dのデータ領域10dbに書き込む。そして、このプログラムやデータが書き込まれたRAM10d上のアドレスがCPU10aのレジスタ10acに格納される。CPU10aの制御部10aaは、レジスタ10acに格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すRAM10d上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部10abに順次実行させ、その演算結果をレジスタ10acに格納していく。このような構成により、関数変換装置1,2の機能構成が実現される。
【0032】
上述のプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
【0033】
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。上述のように、このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0034】
各実施形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【0035】
なお、本発明は上述の実施形態に限定されるものではない。例えば、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【産業上の利用可能性】
【0036】
本発明は、例えば、量子アニーリングマシンやイジングマシンなどで組合せ最適化問題を解く際に利用できる。例えば、本発明によって、組合せ最適化問題の目的関数やそれと等価な0-1変数に関する多変数関数f(x1,…,xN)を0-1変数に関する多変数多項式g(x1,…,xN)に変換できる。得られた多変数多項式g(x1,…,xN)は、非特許文献1および2等に記載された方法によって、QUBOの目的関数やそれと等価なイジングハミルトニアンに変換可能である。このように得られたQUBOの目的関数やイジングハミルトニアンを量子アニーリングマシンやイジングマシンなどに入力することで、高速に組合せ最適化問題を解くことができる。
【符号の説明】
【0037】
1,2 関数変換装置
10 変換部
11 多変数関数値生成部
12 多変数多項式生成部