IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2024-67646探索プログラム、探索システム、及び探索方法
<>
  • 特開-探索プログラム、探索システム、及び探索方法 図1
  • 特開-探索プログラム、探索システム、及び探索方法 図2
  • 特開-探索プログラム、探索システム、及び探索方法 図3
  • 特開-探索プログラム、探索システム、及び探索方法 図4
  • 特開-探索プログラム、探索システム、及び探索方法 図5
  • 特開-探索プログラム、探索システム、及び探索方法 図6
  • 特開-探索プログラム、探索システム、及び探索方法 図7
  • 特開-探索プログラム、探索システム、及び探索方法 図8
  • 特開-探索プログラム、探索システム、及び探索方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024067646
(43)【公開日】2024-05-17
(54)【発明の名称】探索プログラム、探索システム、及び探索方法
(51)【国際特許分類】
   G06N 99/00 20190101AFI20240510BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022177880
(22)【出願日】2022-11-07
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】グエン ホアン ゴック アイン
(57)【要約】
【課題】複数の制約条件を含む制約情報を充足する解を探索する解探索を高速化する。
【解決手段】コンピュータは、複数の制約条件を含む制約情報を充足する解の候補となる解候補を生成する。コンピュータは、複数の制約条件のうち解候補が充足する制約条件の個数に基づいて、解候補に含まれる複数の変数値各々が変更される確率を制御する制御パラメータを決定する。コンピュータは、制御パラメータに基づいて、解候補に含まれる複数の変数値各々を変更するか否かを決定する。コンピュータは、解候補に含まれる複数の変数値各々を変更するか否かに基づいて、解に含まれる複数の変数値の組み合わせを探索する。
【選択図】図2
【特許請求の範囲】
【請求項1】
複数の制約条件を含む制約情報を充足する解の候補となる解候補を生成し、
前記複数の制約条件のうち前記解候補が充足する制約条件の個数に基づいて、前記解候補に含まれる複数の変数値各々が変更される確率を制御する制御パラメータを決定し、
前記制御パラメータに基づいて、前記複数の変数値各々を変更するか否かを決定し、
前記複数の変数値各々を変更するか否かに基づいて、前記解に含まれる複数の変数値の組み合わせを探索する、
処理をコンピュータに実行させるための探索プログラム。
【請求項2】
前記制御パラメータを決定する処理は、
前記複数の制約条件の個数に対する前記解候補が充足する制約条件の個数の比率を求める処理と、
前記比率が所定値よりも大きい場合、前記制御パラメータの値を前記確率が減少するような値に変更する処理と、
を含むことを特徴とする請求項1記載の探索プログラム。
【請求項3】
前記制御パラメータを決定する処理は、前記複数の制約条件の個数に対する、前記解候補よりも前に生成された別の解候補が充足する制約条件の個数の比率に基づいて、前記所定値を決定する処理をさらに含むことを特徴とする請求項2記載の探索プログラム。
【請求項4】
制約情報に含まれる複数の制約条件のうち、前記制約情報を充足する解の候補となる解候補が充足する制約条件の個数に基づいて、前記解候補に含まれる複数の変数値各々が変更される確率を制御する制御パラメータを決定する決定部と、
前記制御パラメータに基づいて、前記複数の変数値各々を変更するか否かを決定し、前記複数の変数値各々を変更するか否かに基づいて、前記解に含まれる複数の変数値の組み合わせを探索する探索部と、
を備えることを特徴とする探索システム。
【請求項5】
複数の制約条件を含む制約情報を充足する解の候補となる解候補を生成し、
前記複数の制約条件のうち前記解候補が充足する制約条件の個数に基づいて、前記解候補に含まれる複数の変数値各々が変更される確率を制御する制御パラメータを決定し、
前記制御パラメータに基づいて、前記複数の変数値各々を変更するか否かを決定し、
前記複数の変数値各々を変更するか否かに基づいて、前記解に含まれる複数の変数値の組み合わせを探索する、
処理をコンピュータが実行することを特徴とする探索方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、探索技術に関する。
【背景技術】
【0002】
様々な情報処理システムの挙動を決定する際に、組み合わせ最適化問題の解が求められることがある。組み合わせ最適化問題は、しばしば、充足可能性(Satisfiability,SAT)問題として定式化される。
【0003】
充足可能性問題は、複数の節の論理積である命題論理式に含まれる複数の変数各々の変数値を真又は偽に設定することで、命題論理式が真となる変数値の組み合わせを解として求める問題である。
【0004】
充足可能性問題に関して、最適解を高速かつ効率的に探索する解探索システムが知られている(例えば、特許文献1を参照)。AmoebaSATアルゴリズムを活用したFPGA(Field-Programmable Gate Array)ベースのSATソルバも知られている(例えば、非特許文献1を参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】国際公開第2022/097460号
【非特許文献】
【0006】
【非特許文献1】A. H. N. Nguyen et al., “FPGA-Based Hardware/Software Co-Design of a Bio-Inspired SAT Solver”, in IEEE Access, vol. 8, pages 49053-49065, 2020.
【発明の概要】
【発明が解決しようとする課題】
【0007】
非特許文献1に記載されたAmoebaSATアルゴリズムは、ハードウェア実装に対する高い並列性と高い実現可能性を有する。しかしながら、AmoebaSATアルゴリズムを活用したSATソルバにより、充足可能性問題における解探索を行う場合、解が得られるまでに長い時間がかかることがある。
【0008】
なお、かかる問題は、AmoebaSATアルゴリズムを活用したSATソルバに限らず、複数の制約条件を含む制約情報を充足する解を探索する様々な解探索において生ずるものである。
【0009】
1つの側面において、本発明は、複数の制約条件を含む制約情報を充足する解を探索する解探索を高速化することを目的とする。
【課題を解決するための手段】
【0010】
1つの案では、探索プログラムは、以下の処理をコンピュータに実行させる。
【0011】
コンピュータは、複数の制約条件を含む制約情報を充足する解の候補となる解候補を生成する。コンピュータは、複数の制約条件のうち解候補が充足する制約条件の個数に基づいて、解候補に含まれる複数の変数値各々が変更される確率を制御する制御パラメータを決定する。
【0012】
コンピュータは、制御パラメータに基づいて、解候補に含まれる複数の変数値各々を変更するか否かを決定する。コンピュータは、解候補に含まれる複数の変数値各々を変更するか否かに基づいて、解に含まれる複数の変数値の組み合わせを探索する。
【発明の効果】
【0013】
1つの側面によれば、複数の制約条件を含む制約情報を充足する解を探索する解探索を高速化することができる。
【図面の簡単な説明】
【0014】
図1】実施形態の探索システムの機能的構成図である。
図2】第1の解探索処理のフローチャートである。
図3】探索システムの第1の具体例を示す機能的構成図である。
図4】第2の解探索処理のフローチャートである。
図5】第3の解探索処理のフローチャートである。
図6】探索システムの第2の具体例を示すハードウェア構成図である。
図7】解探索処理におけるフリップ回数の変化を示す図である。
図8】解探索処理における反復回数を示す図である。
図9】情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【0015】
以下、図面を参照しながら、実施形態を詳細に説明する。
【0016】
一例として、充足可能性問題は、次式のような命題論理式F1により定式化される。
【0017】
F1=(x1∨¬x2∨x3)∧(¬x1∨x4)∧
・・・∧(xi∨xj∨xk) (1)
【0018】
x1~x4、xi、xj、及びxkは、2値変数であり、変数値は真又は偽の何れかである。∧は論理積を表し、∨は論理和を表し、¬は否定を表す。x1∨¬x2∨x3、¬x1∨x4、及びxi∨xj∨xkは、節であり、F1は、複数の節の論理積である。
【0019】
F1が真となるすべての変数xiの変数値の組み合わせが存在するとき、F1が充足される。この場合、F1は充足可能である。
【0020】
SATソルバは、F1を充足する解の候補となる解候補を生成して、生成された解候補がF1を充足するか否かをチェックする処理を繰り返すことで、解探索を行う。
【0021】
解探索の各反復ステップにおいて、SATソルバは、各変数の変数値を確率的に反転させることで解候補を生成する。変数値を反転させる処理は、変数値を真から偽に変更する処理、又は変数値を偽から真に変更する処理を表す。変数値を反転させる処理は、フリップと呼ばれることもある。SATソルバは、生成された解候補に含まれる変数値の組み合わせを用いて、各節の論理値が真又は偽の何れであるかをチェックすることで、F1の充足可能性をチェックする。
【0022】
例えば、上述したAmoebaSATアルゴリズムを活用したSATソルバは、各反復ステップにおいて、できるだけ多くの変数値をフリップしようと試みる。解探索の初期においては、命題論理式に含まれる多くの節が偽になるため、多くのフリップが発生する。一方、解探索の後期においては、偽になる節が少なくなるため、フリップも減少する。
【0023】
しかしながら、このSATソルバによる解探索では、繰り返し行われる冗長なフリップに起因して、解が得られるまでに長い時間がかかることがある。
【0024】
図1は、実施形態の探索システムの機能的構成例を示している。図1の探索システム101は、決定部111及び探索部112を含む。
【0025】
図2は、図1の探索システム101が行う第1の解探索処理の例を示すフローチャートである。まず、探索部112は、複数の制約条件を含む制約情報を充足する解の候補となる解候補を生成する(ステップ201)。次に、決定部111は、複数の制約条件のうち解候補が充足する制約条件の個数に基づいて、解候補に含まれる複数の変数値各々が変更される確率を制御する制御パラメータを決定する(ステップ202)。
【0026】
次に、探索部112は、制御パラメータに基づいて、解候補に含まれる複数の変数値各々を変更するか否かを決定する(ステップ203)。そして、探索部112は、解候補に含まれる複数の変数値各々を変更するか否かに基づいて、解に含まれる複数の変数値の組み合わせを探索する(ステップ204)。
【0027】
図1の探索システム101によれば、複数の制約条件を含む制約情報を充足する解を探索する解探索を高速化することができる。
【0028】
図3は、図1の探索システム101の第1の具体例を示す機能的構成図である。図3の探索システム301は、決定部311、探索部312、出力部313、及び記憶部314を含む。決定部311及び探索部312は、図1の決定部111及び探索部112にそれぞれ対応する。
【0029】
探索システム301は、非特許文献1に記載されたAmoebaSATアルゴリズムを改良したアルゴリズムを用いて、充足可能性問題における解探索を行う。
【0030】
充足可能性問題は、例えば、組み合わせ最適化問題を定式化することで生成される。組み合わせ最適化問題は、様々な技術分野における情報処理システムの挙動を決定するために設定される。組み合わせ最適化問題が設定される技術分野としては、ロボット制御、自律運転、第5世代移動通信システムにおける経路選択等が挙げられる。
【0031】
充足可能性問題における命題論理式Fは、M個(Mは2以上の整数)の節Ck(k=1~M)の論理積として定式化される。各節は、N個(Nは2以上の整数)の変数xi(i=1~N)のうち一部又は全部を用いて記述される論理式に対応する。
【0032】
節Ckは、制約条件に対応し、命題論理式Fは、複数の制約条件を含む制約情報に対応する。Ckが真となる変数xiの変数値の組み合わせが存在するとき、Ckが充足される。Fが真となるすべての変数xiの変数値の組み合わせが存在するとき、Fが充足される。Fが真となる変数値の組み合わせは、制約情報を充足する解に対応する。
【0033】
AmoebaSATアルゴリズムでは、各変数xiの変数値がユニット(i,0)及びユニット(i,1)によって決定される。各ユニット(i,v)(v=0,1)は、xi=vであるか否かを決定する。論理値“1”は真を表し、論理値“0”は偽を表す。論理値“1”は、第1論理値の一例であり、論理値“0”は、第2論理値の一例である。
【0034】
各ユニット(i,v)は、中間変数として、X(i,v)、Y(i,v)、L(i,v)、及びZ(i,v)を有する。X(i,v)は、アメーバの仮足の長さに対応するユニット長を表し、-1、0、又は1の何れかの値を有する。Y(i,v)は、資源供給を表し、0又は1の何れかの値を有する。L(i,v)は、光刺激のような好ましくない刺激を表し、0又は1の何れかの値を有する。Z(i,v)は、0よりも大きく、かつ、1よりも小さい乱数を表し、反復ステップ毎に変動する。
【0035】
すべてのユニット(i,v)は、解が得られるまで、X(i,v)、Y(i,v)、L(i,v)、及びZ(i,v)を並列に更新する。以下では、反復ステップtにおける変数xiを、xi(t)と記載し、反復ステップtにおける中間変数を、X(i,v,t)、Y(i,v,t)、L(i,v,t)、及びZ(i,v,t)と記載することがある。反復ステップtにおいて生成される解候補は、x1(t)~xN(t)それぞれの変数値を含む。
【0036】
記憶部314は、制約情報321、変数情報322、及び中間変数情報323を記憶する。制約情報321は、命題論理式Fを表し、変数情報322は、xi(t)を表し、中間変数情報323は、X(i,v,t)、Y(i,v,t)、L(i,v,t)、及びZ(i,v,t)を表す。
【0037】
xiの更新処理において、X(i,0,t)=1、かつ、X(i,1,t)≦0である場合、探索部312は、xi(t)の変数値を0に決定する。X(i,1,t)=1、かつ、X(i,0,t)≦0である場合、探索部312は、xi(t)の変数値を1に決定する。X(i,0,t)及びX(i,1,t)がそれ以外の組み合わせである場合、探索部312は、xi(t)の変数値をxi(t-1)と同じ値に決定する。
【0038】
X(i,v)の更新処理において、Y(i,v,t)=1、かつ、X(i,v,t-1)<1である場合、探索部312は、X(i,v,t)の値をX(i,v,t-1)+1に決定する。Y(i,v,t)=0、かつ、X(i,v,t-1)>-1である場合、探索部312は、X(i,v,t)の値をX(i,v,t-1)-1に決定する。Y(i,v,t)及びX(i,v,t-1)がそれ以外の組み合わせである場合、探索部312は、X(i,v,t)の値をX(i,v,t-1)と同じ値に決定する。
【0039】
Y(i,v)の更新処理において、L(i,v,t-1)=1である場合、探索部312は、Y(i,v,t)の値を0に決定する。L(i,v,t-1)=0である場合、探索部312は、乱数を発生させることでZ(i,v,t)の値を生成し、関数sgn(z)を用いて、Y(i,v,t)の値をsgn(1-ε-Z(i,v,t))に決定する。εは、探索パラメータである。z>0である場合、sgn(z)=1であり、z≦0である場合、sgn(z)=0である。
【0040】
L(i,v)の更新処理において、探索部312は、xi(t-1)の変数値と予め決められたルールBとを用いて、非特許文献1に記載されたアルゴリズムにより、L(i,v,t)の値を決定する。xi(t-1)の変数値がルールBに合致しない場合、探索部312は、L(i,v,t)の値を1に決定する。それ以外の場合、探索部312は、L(i,v,t)の値を0に決定する。
【0041】
このようなxiの更新処理によれば、反復ステップt-1と反復ステップtの間でX(i,v)が変化した場合、xiのフリップが発生する。
【0042】
一例として、反復ステップt-1において、X(i,0,t-1)=1、かつ、X(i,1,t-1)≦0であり、反復ステップtにおいて、X(i,1,t)=1、かつ、X(i,0,t)≦0である場合を想定する。この場合、xi(t-1)=0、かつ、xi(t)=1となるため、xiの変数値が0から1に変更される。
【0043】
別の例として、反復ステップt-1において、X(i,1,t-1)=1、かつ、X(i,0,t-1)≦0であり、反復ステップtにおいて、X(i,0,t)=1、かつ、X(i,1,t)≦0である場合を想定する。この場合、xi(t-1)=1、かつ、xi(t)=0となるため、xiの変数値が1から0に変更される。
【0044】
したがって、xi(t-1)=vである場合、X(i,v,t-1)>0である。この状態でY(i,v,t)=0となれば、X(i,v,t-1)-1がX(i,v,t)に設定されるため、X(i,v,t)≦0となる。X(i,v,t)≦0である場合、xi(t)の変数値がxi(t-1)とは異なる値である1-vに設定されて、フリップが発生する可能性がある。
【0045】
反復ステップt-2における解候補が局所最適解に近い場合、その解候補はルールBに合致することが多いため、L(i,v,t-1)=0となる。この場合、Y(i,v,t)=sgn(1-ε-Z(i,v,t))となる。
【0046】
εが大きな値である場合、1-ε<Z(i,v,t)となる確率が大きくなる。したがって、Y(i,v,t)=0となる確率が大きくなり、フリップが発生する確率が大きくなる。
【0047】
一方、εが小さな値である場合、1-ε≧Z(i,v,t)となる確率が大きくなる。したがって、Y(i,v,t)=1となる確率が大きくなり、フリップが発生する確率が小さくなる。
【0048】
このような理由から、局所最適解の近傍から抜け出すためには、より大きなεを用いることが望ましく、局所最適解の近傍で解探索を継続するためには、より小さなεを用いることが望ましい。しかしながら、非特許文献1のAmoebaSATアルゴリズムでは、εとして固定値が用いられている。短時間で解を求めるためには、各反復ステップtにおいて用いられるεの値を動的に制御することが有効である。
【0049】
そこで、決定部311は、節Ckの個数Mと、x1(t)~xN(t)それぞれの変数値を含む解候補が充足する節の個数mとを用いて、次式により、比率r(t)を計算する。
【0050】
r(t)=m/M (1)
【0051】
そして、決定部311は、r(t)に基づいて、次の反復ステップt+1で用いられるεの値を決定する。εは、解候補に含まれる複数の変数値各々が変更される確率を制御する制御パラメータに対応する。
【0052】
決定部311は、例えば、r(t)が所定値よりも大きい場合、εの値をより小さな値に変更し、r(t)が所定値以下である場合、εの値を変更しない。εの値をより小さな値に変更することで、フリップの発生を抑えて、所定値よりも大きなr(t)を有する良好な解候補の近傍で解探索を継続することができる。また、εの値を変更しないことで、フリップの発生を促進して、所定値以下のr(t)を有する好ましくない解候補の近傍から抜け出すことが可能になる。
【0053】
探索部312は、x1(t)~xN(t)を含む解候補が生成される度に、その解候補が命題論理式Fを充足するか否かをチェックし、Fを充足する解候補を、解324として記憶部314に格納する。出力部313は、解324を出力する。
【0054】
図3の探索システム301によれば、充足可能性問題において、多くの節を充足する良好な解候補が得られた時点で、εの値がより小さな値に変更されるため、無用なフリップの発生が抑止される。これにより、冗長なフリップが削減されるため、解探索を高速化することができる。
【0055】
図4は、図3の探索システム301が行う第2の解探索処理の例を示すフローチャートである。解探索処理の開始時において、εには所定値が設定されている。まず、探索部312は、反復ステップを示す制御変数tに0を設定する(ステップ401)。そして、探索部312は、i=1~Nについて、中間変数情報323が表すX(i,v,0)、Y(i,v,0)、L(i,v,1)、及びZ(i,v,0)に、初期値を設定する(ステップ402)。
【0056】
X(i,v,0)、Y(i,v,0)、及びL(i,v,1)の初期値としては、例えば、0が用いられる。Z(i,v,0)の初期値としては、0よりも大きく、かつ、1よりも小さい乱数が用いられる。
【0057】
次に、探索部312は、tを1だけインクリメントする(ステップ403)。そして、探索部312は、上述した中間変数の更新処理により、i=1~Nについて、X(i,v,t)、Y(i,v,t)、L(i,v,t+1)、及びZ(i,v,t)を求め、得られた値を中間変数情報323に記録する(ステップ404)。
【0058】
次に、探索部312は、上述したxiの更新処理により、i=1~Nについて、xi(t)を求め、得られた変数値を変数情報322に記録する(ステップ405)。そして、探索部312は、x1(t)~xN(t)を含む解候補が、制約情報321が表す命題論理式Fを充足するか否かをチェックする(ステップ406)。
【0059】
解候補がFを充足しない場合(ステップ406,NO)、決定部311は、式(1)により比率r(t)を計算し(ステップ407)、r(t)を所定値Rと比較する(ステップ408)。決定部311は、例えば、次式によりRを計算する。
【0060】
R=r(t-1)+α (2)
【0061】
r(t-1)は、反復ステップt-1における解候補を用いて、式(1)により計算される比率を表し、αは、微小な正の定数を表す。αは、例えば、0.05~0.2の範囲の定数であってもよい。反復ステップt-1における解候補は、反復ステップtにおける解候補よりも前に生成された別の解候補の一例である。
【0062】
r(t)を式(2)のRと比較することで、反復ステップtにおける解候補が反復ステップt-1における解候補よりも解324に近づいたか否かを推定することができる。
【0063】
r(t)がR以下である場合(ステップ408,NO)、探索システム301は、ステップ403以降の処理を繰り返す。
【0064】
r(t)がRよりも大きい場合(ステップ408,YES)、決定部311は、εをΔεだけデクリメントする(ステップ409)。Δεは、微小な正の定数を表す。Δεは、例えば、0.005~0.02の範囲の定数であってもよい。そして、探索システム301は、ステップ403以降の処理を繰り返す。
【0065】
解候補がFを充足する場合(ステップ406,YES)、探索部312は、x1(t)~xN(t)を、解324として記憶部314に格納し、出力部313は、解324を出力する(ステップ410)。
【0066】
ところで、図4の解探索処理において、連続する2つの反復ステップの間でr(t)が著しく変化することはないため、必ずしも各反復ステップtにおいてr(t)のチェックを行う必要はない。したがって、r(t)のチェック回数を削減することで、解探索処理をさらに効率化することが可能である。
【0067】
図5は、図3の探索システム301が行う第3の解探索処理の例を示すフローチャートである。図5の解探索処理では、所定の期間Tの間に1回のみr(t)のチェックが行われる。Tは、例えば、50~200の範囲の整数であってもよい。
【0068】
記憶部314は、εの候補として、K個(Kは2以上の整数)のεp(p=0~K-1)を記憶している。εp(p=1~K-1)は、ε(p-1)よりも小さな値である。したがって、ε0~ε(K-1)の間には、次式のような関係が存在する。
【0069】
ε0>ε1>・・・>ε(K-1) (3)
【0070】
決定部311は、期間T毎にr(t)のチェックを行い、チェック結果に基づいて、ε0~ε(K-1)のうち何れかのεpを、εの値に決定する。
【0071】
まず、探索部312は、反復ステップを示す制御変数t及び制御変数t0に0を設定し、εを指定する制御変数pに0を設定する(ステップ501)。ステップ502~ステップ506及び512の処理は、図4のステップ402~ステップ406及び410の処理と同様である。ステップ504において、探索部312は、εpをεの値として用いて、Y(i,v,t)を求める。
【0072】
解候補がFを充足しない場合(ステップ506,NO)、決定部311は、tをt0+Tと比較する(ステップ507)。tがt0+Tよりも小さい場合(ステップ507,NO)、探索システム301は、ステップ503以降の処理を繰り返す。
【0073】
tがt0+Tに達した場合(ステップ507,YES)、決定部311は、式(1)により比率r(t)を計算し(ステップ508)、r(t)を所定値Qと比較する(ステップ509)。決定部311は、例えば、次式によりQを計算する。
【0074】
Q=r(t0)+α (4)
【0075】
r(t0)は、反復ステップt0における解候補を用いて、式(1)により計算される比率を表す。αは、式(2)と同様の定数である。反復ステップt0における解候補は、反復ステップtにおける解候補よりも前に生成された別の解候補の一例である。
【0076】
r(t)を式(4)のQと比較することで、反復ステップtにおける解候補が反復ステップt0における解候補よりも解324に近づいたか否かを推定することができる。
【0077】
r(t)がQ以下である場合(ステップ509,NO)、決定部311は、t0にtを設定する(ステップ511)。そして、探索システム301は、ステップ503以降の処理を繰り返す。
【0078】
r(t)がQよりも大きい場合(ステップ509,YES)、決定部311は、pを1だけインクリメントする(ステップ510)。これにより、εの値がより小さな値に変更される。そして、探索システム301は、ステップ511以降の処理を繰り返す。
【0079】
図5の解探索処理によれば、r(t)のチェック回数及びεの更新回数が削減されるため、解探索処理がさらに効率化される。
【0080】
図6は、図1の探索システム101の第2の具体例を示すハードウェア構成図である。図6の探索システム601は、記憶部611、第1判定部612、第2判定部613、計算部614-0-1~計算部614-0-N、計算部614-1-1~計算部614-1-N、及び更新部615を含む。これらの構成要素は、ハードウェア回路である。
【0081】
探索システム601は、半導体装置として実装することができる。探索システム601は、LSI(Large Scale Integration)、FPGA(Field-Programmable Gate Array)、又はASIC(Application Specific Integrated Circuit)であってもよい。
【0082】
記憶部611及び第1判定部612は、図1の決定部111に対応する。第2判定部613、計算部614-0-1~計算部614-0-N、計算部614-1-1~計算部614-1-N、及び更新部615は、図1の探索部112に対応する。
【0083】
探索システム601は、例えば、図5と同様の解探索処理を行う。各計算部614-v-i(v=0,1)(i=1~N)は、Z(i,v,t)を生成する乱数発生回路を含む。記憶部611は、εの候補として、K個のεp(p=0~K-1)を記憶している。記憶部611は、第1判定部612から出力される制御変数pにより指定されるεpを選択して、各計算部614-v-iへ出力する。
【0084】
記憶部611は、LUT(Look Up Table)であってもよい。LUTを用いることで、εの値を変更する処理の負荷を軽減することができる。
【0085】
まず、各計算部614-v-iは、反復ステップを示す制御変数t及び制御変数t0に0を設定し、第1判定部612は、制御変数pに0を設定して記憶部611へ出力する(ステップ501)。記憶部611は、第1判定部612から出力されるpに対応するεpを、各計算部614-v-iへ出力する。
【0086】
次に、各計算部614-v-iは、X(i,v,0)、Y(i,v,0)、L(i,v,1)、及びZ(i,v,0)に初期値を設定する(ステップ502)。そして、各計算部614-v-iは、X(i,v,0)、Y(i,v,0)、L(i,v,1)、及びZ(i,v,0)を更新部615へ出力する。
【0087】
次に、各計算部614-v-iは、tを1だけインクリメントする(ステップ503)。そして、各計算部614-v-iは、X(i,v,t)、Y(i,v,t)、L(i,v,t+1)、及びZ(i,v,t)を求め、得られた値を更新部615へ出力する(ステップ504)。各計算部614-v-iは、記憶部611から出力される最新のεpをεの値として用いて、Y(i,v,t)を求める。
【0088】
次に、更新部615は、i=1~Nについて、xi(t)を求め、得られた変数値を第2判定部613へ出力する(ステップ505)。そして、第2判定部613は、x1(t)~xN(t)を含む解候補が、命題論理式Fを充足するか否かをチェックする(ステップ506)。
【0089】
解候補がFを充足しない場合(ステップ506,NO)、第2判定部613は、tのチェックを第1判定部612へ要求し、第1判定部612は、tをt0+Tと比較する(ステップ507)。tがt0+Tよりも小さい場合(ステップ507,NO)、探索システム601は、ステップ503以降の処理を繰り返す。
【0090】
tがt0+Tに達した場合(ステップ507,YES)、第1判定部612は、式(1)により比率r(t)を計算し(ステップ508)、r(t)を所定値Qと比較する(ステップ509)。
【0091】
r(t)がQ以下である場合(ステップ509,NO)、第1判定部612は、t0にtを設定する(ステップ511)。そして、探索システム601は、ステップ503以降の処理を繰り返す。
【0092】
r(t)がQよりも大きい場合(ステップ509,YES)、第1判定部612は、pを1だけインクリメントして記憶部611へ出力する(ステップ510)。記憶部611は、第1判定部612から出力されるpに対応するεpを、各計算部614-v-iへ出力する。そして、探索システム601は、ステップ511以降の処理を繰り返す。
【0093】
解候補がFを充足する場合(ステップ506,YES)、第2判定部613は、x1(t)~xN(t)を解として出力する(ステップ512)。
【0094】
図6の探索システム601によれば、期間Tの間に1回のみr(t)のチェックが行われるため、低周波数で動作する非同期回路により、εの値の動的制御を実現することができる。したがって、探索システム601の消費電力の増加が抑制される。
【0095】
図7は、解探索処理におけるフリップ回数の変化の例を示している。図7の解探索処理では、SATLIBのuf225-028.cnfが充足可能性問題として用いられている。
【0096】
図7(a)は、非特許文献1のAmoebaSATアルゴリズムによる解探索処理におけるフリップ回数の変化の例を示している。横軸は反復ステップtを表し、縦軸は、各反復ステップtにおいて発生したフリップの回数を表す。図7(a)の解探索処理では、εとして固定値が用いられており、t=約16500のときに解が見つかっている。
【0097】
図7(b)は、実施形態の解探索処理におけるフリップ回数の変化の例を示している。図7(b)の解探索処理の初期(t=1~1000)においては、εとして初期値に近い値が用いられ、より多くのフリップが発生している。一方、解探索処理の後期(t≧5000)においては、より小さな値がεとして用いられ、無用なフリップの発生が抑止されている。そして、t=約7200のときに解が見つかっている。したがって、εの値を動的に制御することで、図7(a)の解探索処理よりも短時間で解が得られることが分かる。
【0098】
図8は、解探索処理における反復回数の例を示している。SATLIBは、解探索処理において用いられたSATLIBの充足可能性問題を表す。Nは、変数xiの個数を表す。
【0099】
IAは、非特許文献1のAmoebaSATアルゴリズムによる解探索処理において、解が見つかったときの反復回数を表す。IBは、実施形態の解探索処理において、解が見つかったときの反復回数を表す。IA及びIBは、100回の解探索処理における反復回数の平均値である。削減率は、IAに対する、IAとIBの差分の比率を表す。
【0100】
何れの充足可能性問題に対しても、IBがIAよりも20%以上削減されている。したがって、εの値を動的に制御することで、探索時間を短縮できることが分かる。
【0101】
図1の探索システム101、図3の探索システム301、及び図6の探索システム601の構成は一例に過ぎず、探索システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。探索システム101、探索システム301、及び探索システム601は、充足可能性問題における解探索を行う代わりに、複数の制約条件を含む制約情報を充足する解を探索する別の解探索を行ってもよい。
【0102】
図2図4、及び図5のフローチャートは一例に過ぎず、探索システムの構成又は条件に応じて、一部の処理を省略又は変更してもよい。
【0103】
図7に示したフリップ回数の変化と図8に示した反復回数は一例に過ぎず、フリップ回数及び反復回数は、充足可能性問題に応じて変化する。
【0104】
式(1)~式(4)は一例に過ぎず、探索システム301及び探索システム601は、別の数式に基づいて解探索処理を行ってもよい。
【0105】
図9は、図1の探索システム101及び図3の探索システム301として用いられる情報処理装置(コンピュータ)のハードウェア構成例を示している。図9の情報処理装置は、CPU(Central Processing Unit)901、メモリ902、入力装置903、出力装置904、補助記憶装置905、媒体駆動装置906、及びネットワーク接続装置907を含む。これらの構成要素はハードウェアであり、バス908により互いに接続されている。
【0106】
メモリ902は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)等の半導体メモリであり、処理に用いられるプログラム及びデータを記憶する。メモリ902は、図3の記憶部314として動作してもよい。
【0107】
CPU901(プロセッサ)は、例えば、メモリ902を利用してプログラムを実行することにより、図1の決定部111及び探索部112として動作する。CPU901は、メモリ902を利用してプログラムを実行することにより、図3の決定部311及び探索部312としても動作する。
【0108】
入力装置903は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示又は情報の入力に用いられる。出力装置904は、例えば、表示装置、プリンタ等であり、ユーザ又はオペレータへの問い合わせ又は指示、及び処理結果の出力に用いられる。処理結果は、解324であってもよい。出力装置904は、図3の出力部313として動作してもよい。
【0109】
補助記憶装置905は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置905は、ハードディスクドライブ又はSSD(Solid State Drive)であってもよい。情報処理装置は、補助記憶装置905にプログラム及びデータを格納しておき、それらをメモリ902にロードして使用することができる。補助記憶装置905は、図3の記憶部314として動作してもよい。
【0110】
媒体駆動装置906は、可搬型記録媒体909を駆動し、その記録内容にアクセスする。可搬型記録媒体909は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体909は、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等であってもよい。ユーザ又はオペレータは、可搬型記録媒体909にプログラム及びデータを格納しておき、それらをメモリ902にロードして使用することができる。
【0111】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ902、補助記憶装置905、又は可搬型記録媒体909のような、物理的な(非一時的な)記録媒体である。
【0112】
ネットワーク接続装置907は、WAN(Wide Area Network)、LAN(Local Area Network)等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェース回路である。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置907を介して受信し、それらをメモリ902にロードして使用することができる。ネットワーク接続装置907は、図3の出力部313として動作してもよい。
【0113】
なお、情報処理装置が図9のすべての構成要素を含む必要はなく、情報処理装置の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、ユーザ又はオペレータとのインタフェースが不要な場合は、入力装置903及び出力装置904を省略することができる。可搬型記録媒体909又は通信ネットワークを使用しない場合は、媒体駆動装置906又はネットワーク接続装置907を省略することができる。
【0114】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0115】
図1乃至図9を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の制約条件を含む制約情報を充足する解の候補となる解候補を生成し、
前記複数の制約条件のうち前記解候補が充足する制約条件の個数に基づいて、前記解候補に含まれる複数の変数値各々が変更される確率を制御する制御パラメータを決定し、
前記制御パラメータに基づいて、前記複数の変数値各々を変更するか否かを決定し、
前記複数の変数値各々を変更するか否かに基づいて、前記解に含まれる複数の変数値の組み合わせを探索する、
処理をコンピュータに実行させるための探索プログラム。
(付記2)
前記制御パラメータを決定する処理は、
前記複数の制約条件の個数に対する前記解候補が充足する制約条件の個数の比率を求める処理と、
前記比率が所定値よりも大きい場合、前記制御パラメータの値を前記確率が減少するような値に変更する処理と、
を含むことを特徴とする付記1記載の探索プログラム。
(付記3)
前記制御パラメータを決定する処理は、前記複数の制約条件の個数に対する、前記解候補よりも前に生成された別の解候補が充足する制約条件の個数の比率に基づいて、前記所定値を決定する処理をさらに含むことを特徴とする付記2記載の探索プログラム。
(付記4)
前記解候補に含まれる複数の変数値各々は、第1論理値又は第2論理値の何れかであり、前記複数の変数値各々が変更される確率は、前記第1論理値が前記第2論理値に変更される確率又は前記第2論理値が前記第1論理値に変更される確率であることを特徴とする付記1乃至3の何れか1項に記載の探索プログラム。
(付記5)
制約情報に含まれる複数の制約条件のうち、前記制約情報を充足する解の候補となる解候補が充足する制約条件の個数に基づいて、前記解候補に含まれる複数の変数値各々が変更される確率を制御する制御パラメータを決定する決定部と、
前記制御パラメータに基づいて、前記複数の変数値各々を変更するか否かを決定し、前記複数の変数値各々を変更するか否かに基づいて、前記解に含まれる複数の変数値の組み合わせを探索する探索部と、
を備えることを特徴とする探索システム。
(付記6)
前記決定部は、前記複数の制約条件の個数に対する前記解候補が充足する制約条件の個数の比率を求め、前記比率が所定値よりも大きい場合、前記制御パラメータの値を前記確率が減少するような値に変更することを特徴とする付記5記載の探索システム。
(付記7)
前記決定部は、前記複数の制約条件の個数に対する、前記解候補よりも前に生成された別の解候補が充足する制約条件の個数の比率に基づいて、前記所定値を決定することを特徴とする付記6記載の探索システム。
(付記8)
前記解候補に含まれる複数の変数値各々は、第1論理値又は第2論理値の何れかであり、前記複数の変数値各々が変更される確率は、前記第1論理値が前記第2論理値に変更される確率又は前記第2論理値が前記第1論理値に変更される確率であることを特徴とする付記5乃至7の何れか1項に記載の探索システム。
(付記9)
複数の制約条件を含む制約情報を充足する解の候補となる解候補を生成し、
前記複数の制約条件のうち前記解候補が充足する制約条件の個数に基づいて、前記解候補に含まれる複数の変数値各々が変更される確率を制御する制御パラメータを決定し、
前記制御パラメータに基づいて、前記複数の変数値各々を変更するか否かを決定し、
前記複数の変数値各々を変更するか否かに基づいて、前記解に含まれる複数の変数値の組み合わせを探索する、
処理をコンピュータが実行することを特徴とする探索方法。
(付記10)
前記制御パラメータを決定する処理は、
前記複数の制約条件の個数に対する前記解候補が充足する制約条件の個数の比率を求める処理と、
前記比率が所定値よりも大きい場合、前記制御パラメータの値を前記確率が減少するような値に変更する処理と、
を含むことを特徴とする付記9記載の探索方法。
(付記11)
前記制御パラメータを決定する処理は、前記複数の制約条件の個数に対する、前記解候補よりも前に生成された別の解候補が充足する制約条件の個数の比率に基づいて、前記所定値を決定する処理をさらに含むことを特徴とする付記10記載の探索方法。
(付記12)
前記解候補に含まれる複数の変数値各々は、第1論理値又は第2論理値の何れかであり、前記複数の変数値各々が変更される確率は、前記第1論理値が前記第2論理値に変更される確率又は前記第2論理値が前記第1論理値に変更される確率であることを特徴とする付記9乃至11の何れか1項に記載の探索方法。
【符号の説明】
【0116】
101、301、601 探索システム
111、311 決定部
112、312 探索部
313 出力部
314、611 記憶部
321 制約情報
322 変数情報
323 中間変数情報
324 解
601 探索システム
612 第1判定部
613 第2判定部
614-0-1~614-0-N、614-1-1~614-1-N 計算部
615 更新部
901 CPU
902 メモリ
903 入力装置
904 出力装置
905 補助記憶装置
906 媒体駆動装置
907 ネットワーク接続装置
908 バス
909 可搬型記録媒体
図1
図2
図3
図4
図5
図6
図7
図8
図9