(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023160581
(43)【公開日】2023-11-02
(54)【発明の名称】組合せ遷移求解方法、組合せ遷移求解装置及びプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20231026BHJP
G06N 7/00 20230101ALI20231026BHJP
【FI】
G06N99/00 180
G06N7/00
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022071026
(22)【出願日】2022-04-22
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】504173471
【氏名又は名称】国立大学法人北海道大学
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】安田 宜仁
(72)【発明者】
【氏名】西野 正彬
(72)【発明者】
【氏名】堀山 貴史
(57)【要約】 (修正有)
【課題】組合せ遷移問題の解を効率的に求める。
【解決手段】方法は、組合せ遷移問題の制約条件を満たす組合せD
iと1ステップの遷移で許容可能な組合せの変化数を表す遷移可能条件から一度に遷移可能な2つの組合せの組D
t1を作成し、組合せ遷移問題の初期状態を表す組合せD
srcとD
t1から初期状態を表す組合せと初期状態から一度に遷移可能な状態を表す組合せとの組D
src1を作成し、組合せ遷移問題の最終状態を表す組合せD
dstと初期状態から最終状態までの遷移回数を表す目標ステップ数とD
t1から制約条件を満たす組合せと該組合せによって表される状態から最終状態に一度に遷移可能な状態を表す組合せとの組D
dst1を作成し、D
t1とD
src1とD
dst1と、目標ステップ数から連言標準形CNF
sと連言標準形CNF
0と連言標準形CNF
S_tとを連言で接続した連言標準形CNF
Tを作成し、SATソルバにより解を求める。
【選択図】
図3
【特許請求の範囲】
【請求項1】
組合せ遷移問題の解を求める組合せ遷移求解方法であって、
前記組合せ遷移問題の制約条件を満たす組合せのすべてをコンパクトに表現したデータDiと、1ステップの遷移で許容可能な組合せの変化数を表す遷移可能条件とを入力として、前記制約条件を満たす組合せの組であって、かつ、一度に遷移可能な2つの組合せの組をコンパクトに表現したデータDt1を作成する1ステップ遷移表現手順と、
前記組合せ遷移問題の初期状態を表す組合せをコンパクトに表現したデータDsrcと、前記データDt1とを入力として、前記制約条件を満たす組合せの組であって、かつ、前記初期状態を表す組合せと前記初期状態から一度に遷移可能な状態を表す組合せとの組をコンパクトに表現したデータDsrc1を作成する初期遷移法列挙手順と、
前記組合せ遷移問題の最終状態を表す組合せをコンパクトに表現したデータDdstと、前記初期状態から前記最終状態までの遷移回数を表す目標ステップ数と、前記データDt1とを入力として、前記制約条件を満たす組合せの組であって、かつ、前記制約条件を満たす組合せと該組合せによって表される状態から前記最終状態に一度に遷移可能な状態を表す組合せとの組をコンパクトに表現したデータDdst1を作成する最終遷移法列挙手順と、
前記データDt1と、前記データDsrc1と、前記データDdst1と、前記目標ステップ数とを入力として、前記データDt1に対応する連言標準形CNFsと、前記データDsrc1に対応する連言標準形CNF0と、前記データDdst1に対応する連言標準形CNFS_tとを連言で接続した連言標準形CNFTを作成するCNF生成手順と、
前記連言標準形CNFTを入力として、SATソルバにより前記解を求める求解手順と、
をコンピュータが実行する組合せ遷移求解方法。
【請求項2】
前記データDi、前記データDt1、前記データDsrc、前記データDsrc1、前記データDdst、前記データDdst1はいずれも、BDD又はZDDである、請求項1に記載の組合せ遷移求解方法。
【請求項3】
前記初期状態から前記最終状態までに許容される遷移回数を表す許容最大ステップ数が与えられた場合、前記遷移求解方法は、前記目標ステップ数を1から前記許容最大ステップ数まで増加させながら、前記1ステップ遷移表現手順と前記初期遷移法列挙手順と前記最終遷移法列挙手順と前記CNF生成手順と前記求解手順とを繰り返す、請求項1又は2に記載の組合せ遷移求解方法。
【請求項4】
組合せ遷移問題の解を求める組合せ遷移求解装置であって、
前記組合せ遷移問題の制約条件を満たす組合せのすべてをコンパクトに表現したデータDiと、1ステップの遷移で許容可能な組合せの変化数を表す遷移可能条件とを入力として、前記制約条件を満たす組合せの組であって、かつ、一度に遷移可能な2つの組合せの組をコンパクトに表現したデータDt1を作成するように構成されている1ステップ遷移表現部と、
前記組合せ遷移問題の初期状態を表す組合せをコンパクトに表現したデータDsrcと、前記データDt1とを入力として、前記制約条件を満たす組合せの組であって、かつ、前記初期状態を表す組合せと前記初期状態から一度に遷移可能な状態を表す組合せとの組をコンパクトに表現したデータDsrc1を作成するように構成されている初期遷移法列挙部と、
前記組合せ遷移問題の最終状態を表す組合せをコンパクトに表現したデータDdstと、前記初期状態から前記最終状態までの遷移回数を表す目標ステップ数と、前記データDt1とを入力として、前記制約条件を満たす組合せの組であって、かつ、前記制約条件を満たす組合せと該組合せによって表される状態から前記最終状態に一度に遷移可能な状態を表す組合せとの組をコンパクトに表現したデータDdst1を作成するように構成されている最終遷移法列挙部と、
前記データDt1と、前記データDsrc1と、前記データDdst1と、前記目標ステップ数とを入力として、前記データDt1に対応する連言標準形CNFsと、前記データDsrc1に対応する連言標準形CNF0と、前記データDdst1に対応する連言標準形CNFS_tとを連言で接続した連言標準形CNFTを作成するように構成されているCNF生成部と、
前記連言標準形CNFTを入力として、SATソルバにより前記解を求めるように構成されている求解部と、
を有する組合せ遷移求解装置。
【請求項5】
組合せ遷移問題の解を求める組合せ遷移求解方法であって、
前記組合せ遷移問題の制約条件を満たす組合せのすべてをコンパクトに表現したデータDiと、1ステップの遷移で許容可能な組合せの変化数を表す遷移可能条件とを入力として、前記制約条件を満たす組合せの組であって、かつ、一度に遷移可能な2つの組合せの組をコンパクトに表現したデータDt1を作成する1ステップ遷移表現手順と、
前記組合せ遷移問題の初期状態を表す組合せをコンパクトに表現したデータDsrcと、前記データDt1とを入力として、前記制約条件を満たす組合せの組であって、かつ、前記初期状態を表す組合せと前記初期状態から一度に遷移可能な状態を表す組合せとの組をコンパクトに表現したデータDsrc1を作成する初期遷移法列挙手順と、
前記組合せ遷移問題の最終状態を表す組合せをコンパクトに表現したデータDdstと、前記初期状態から前記最終状態までの遷移回数を表す目標ステップ数と、前記データDt1とを入力として、前記制約条件を満たす組合せの組であって、かつ、前記制約条件を満たす組合せと該組合せによって表される状態から前記最終状態に一度に遷移可能な状態を表す組合せとの組をコンパクトに表現したデータDdst1を作成する最終遷移法列挙手順と、
前記データDt1と、前記データDsrc1と、前記データDdst1と、前記目標ステップ数とを入力として、前記データDt1に対応する連言標準形CNFsと、前記データDsrc1に対応する連言標準形CNF0と、前記データDdst1に対応する連言標準形CNFS_tとを連言で接続した連言標準形CNFTを作成するCNF生成手順と、
前記連言標準形CNFTを入力として、SATソルバにより前記解を求める求解手順と、
が含まれる組合せ遷移求解方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、組合せ遷移求解方法、組合せ遷移求解装置及びプログラムに関する。
【背景技術】
【0002】
ネットワークや論理関数等の離散的な構造を持つ対象に対して、或る制約条件の下でその制約条件を満たしながら対象の状態を少しずつ変化させ、最終的に所望の状態に辿り着けるか否かを判定するアルゴリズムは「組合せ遷移」と呼ばれる。組合せ遷移は様々な分野に応用され得るが、特に工学的な分野で需要が大きい。例えば、電力配電網に障害が生じた場合に、「特定の電線に過剰な電力が流れない」、「電力配電網にループが生じない」等といった制約条件を満たしながら、電力配電網中の切替器を少しずつ変化させて障害を回避するような状態へ変更する、といった問題は「組合せ遷移」の問題とみなすことができる。
【0003】
すなわち、対象が満たすべき制約条件(上記の例でいえば、「任意の電線の電流量が所定の範囲内である」、「電力配電網内にループが存在しない」等)を満たしつつ、その対象に対して一度に限られた数の変化を加えながら(上記の例でいえば、所定の数の範囲内の切替器による切り替えを行いながら)、開始状態から終了状態へ遷移できるか否かを判定し、遷移できるとすればどのような手順があり得るのか、どのような手順が最短かを与える問題は「組合せ遷移」の問題とみなすことができる。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】「超高速グラフ列挙アルゴリズム」,ERATO湊離散構造処理系プロジェクト(著),湊真一(編),森北出版
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来、上記のような「組合せ遷移」の問題を効率的に求解する手法は存在しない。
【0006】
本開示は、上記の点に鑑みてなされたもので、組合せ遷移問題の解を効率的に求める技術を提供する。
【課題を解決するための手段】
【0007】
本開示の一態様による組合せ遷移求解方法は、組合せ遷移問題の解を求める組合せ遷移求解方法であって、前記組合せ遷移問題の制約条件を満たす組合せのすべてをコンパクトに表現したデータDiと、1ステップの遷移で許容可能な組合せの変化数を表す遷移可能条件とを入力として、前記制約条件を満たす組合せの組であって、かつ、一度に遷移可能な2つの組合せの組をコンパクトに表現したデータDt1を作成する1ステップ遷移表現手順と、前記組合せ遷移問題の初期状態を表す組合せをコンパクトに表現したデータDsrcと、前記データDt1とを入力として、前記制約条件を満たす組合せの組であって、かつ、前記初期状態を表す組合せと前記初期状態から一度に遷移可能な状態を表す組合せとの組をコンパクトに表現したデータDsrc1を作成する初期遷移法列挙手順と、前記組合せ遷移問題の最終状態を表す組合せをコンパクトに表現したデータDdstと、前記初期状態から前記最終状態までの遷移回数を表す目標ステップ数と、前記データDt1とを入力として、前記制約条件を満たす組合せの組であって、かつ、前記制約条件を満たす組合せと該組合せによって表される状態から前記最終状態に一度に遷移可能な状態を表す組合せとの組をコンパクトに表現したデータDdst1を作成する最終遷移法列挙手順と、前記データDt1と、前記データDsrc1と、前記データDdst1と、前記目標ステップ数とを入力として、前記データDt1に対応する連言標準形CNFsと、前記データDsrc1に対応する連言標準形CNF0と、前記データDdst1に対応する連言標準形CNFS_tとを連言で接続した連言標準形CNFTを作成するCNF生成手順と、前記連言標準形CNFTを入力として、SATソルバにより前記解を求める求解手順と、をコンピュータが実行する。
【発明の効果】
【0008】
組合せ遷移問題の解を効率的に求める技術が提供される。
【図面の簡単な説明】
【0009】
【
図2】一実施例における組合せ遷移求解装置のハードウェア構成を示す図である。
【
図3】一実施例における組合せ遷移求解装置の機能構成を示す図である。
【
図4】一実施例における組合せ遷移求解処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本発明の一実施形態について説明する。
【0011】
<組合せ遷移問題>
所定の対象が満たすべき制約条件の下で、その対象に対して一度に限られた数の変化を加えながら、開始状態(初期状態)から終了状態(最終状態)へ遷移できるか否かを判定し、遷移できるとすればその遷移の系列を求める問題を組合せ遷移問題という。なお、対象の具体例としては電力配電網等が挙げられるが、これに限られず、ネットワークや論理関数等の離散的な構造を持つものであれば任意のものが対象となり得る。
【0012】
従来、組合せ遷移問題の解(つまり、最終状態へ遷移できるか否かと遷移できるとすればその遷移の系列)は、例えば、経験則に基づいて手作業で探索したり、計算機によってひとつひとつの状態変化を確認し、網羅的に探索したりする方法により求められていた。しかしながら、手作業で探索する場合には取り扱える問題の性質や範囲が限定されてしまうという課題があり、網羅的に探索する場合には取り扱う問題(網や論理関数等)が大きくなると探索時間も指数的に大きくなり現実的ではないという課題がある。
【0013】
一方で、組合せ集合をコンパクトに表現可能なデータ構造としてゼロサプレス型二分決定木(ZDD:Zero- suppresssed Binary Decision Diagram、例えば非特許文献1参照)が知られている。対象の状態は組合せで表すことができるため、ZDDによりすべての遷移をコンパクトに表現することも考えられる。しかしながら、この場合であってもすべての遷移を表現するZDDは膨大な大きさになってしまうことが多く、実存する計算機の記憶領域(メモリ)では取り扱うことが困難であるという課題がある。
【0014】
そこで、以下では、一度に遷移可能な状態の集合をZDDにより表現することにより、繰り返しの計算を必要とせずにまとめて状態遷移を表現するアプローチをとる。また、すべての遷移を単一のZDDで表現するのではなく、一度に遷移可能な状態の集合を表現したZDDと、探索に基づく手法(SAT(boolean satisfiability testing)ソルバ)とを組み合わせることにより、実存する計算機の記憶領域(メモリ)で取り扱うことを可能にする。以下の実施形態では、これを実現するために、後述する各部(1ステップ遷移表現部201、初期遷移法列挙部202、最終遷移法列挙部203、ZDD-CNF変換部204、CNF生成部205及び求解部206)を有する組合せ遷移求解装置10について説明する。
【0015】
本実施形態に係る組合せ遷移求解装置10には、入力データとして、対象の制約条件を満たす状態を表す組合せのすべてと、当該対象の初期状態及び最終状態と、一度の遷移で許容可能な変化の数を表す遷移可能条件と、許容最大ステップ数とが与えられる。そして、本実施形態に係る組合せ遷移求解装置10は、その許容最大ステップ数以内に初期状態から最終状態まで遷移可能か否かを判定し、その判定結果と遷移可能であればその遷移の系列とを出力データとして出力する。なお、以下では、簡単のため、「状態を表す組合せ」における「状態を表す」との語を省略し、単に「組合せ」を書くことがある。
【0016】
ここで、本実施形態に係る組合せ遷移求解装置10では、上述したZDDと呼ばれるデータ構造を用いる。ZDDとは、組合せ集合(組合せを表す集合を要素とする集合(集合族))をコンパクトに表現することができるデータ構造であり、有向非巡回グラフの形で表される。なお、以下、組合せを表す集合の要素のことは「アイテム」と呼ぶことにする。
【0017】
ZDDでは、2つの終端節点を除くすべての節点(以下、内部節点と呼ぶ)が0-枝及び1-枝の2つの枝を持つ。0-枝又は1-枝が指す先の節点のことは子節点とも呼ばれ、逆に自身を指す0-枝又は1-枝の元に存在する節点のことは親節点とも呼ばれる。2つの終端節点は、それぞれ0-終端節点及び1-終端節点と呼ばれる。また、自身を指す0-枝及び1-枝が存在しない内部節点(言い換えれば、親節点が存在しない内部節点)は根節点と呼ばれる。なお、節点は「ノード」と呼ばれてもよい。
【0018】
組合せ集合を構成する組合せに含まれる各アイテムには番号(整数)が対応付けられており、各内部変数は、いずれかのアイテムに対応付けられている番号(以下、アイテム変数番号という。)を持つ。アイテム変数番号は「ラベル」とも呼ばれ、アイテム変数番号が同じ内部変数によって層が構成される。以下では、子節点が持つアイテム変数番号は親節点が持つアイテム変数番号よりも必ず大きいものとし、子節点は親節点が持つアイテム変数番号+1のアイテム変数番号を持つものとする。また、根節点はアイテム変数番号として1を持つものとする。例えば、アイテム数をcとすればアイテム変数番号は1~cのいずれかを取り、根節点以外の或る内部節点のアイテム変数番号がxであればその親節点のアイテム変数番号はx-1を持つ。なお、終端節点は、1~c以外の番号(例えば、c+1等)をアイテム変数番号として持つものとする。
【0019】
ZDDでは根節点から1-終端節点までの経路が組合せの存在を表現している。このとき、その経路中で1-枝を通る場合はその1-枝の元に存在する節点が持つアイテム変数番号のアイテムが当該組合せに含まれることを意味し、0-枝を通る場合はその0-枝の元に存在する節点が持つアイテム変数番号のアイテムは当該組合せに含まれないことを意味する。
【0020】
一例として、アイテムをa、b、c、組合せ集合を{{a,b},{b,c}}として、この組合せ集合を表現するZDDを
図1に示す。
図1に示す例では、内部節点を丸、終端節点を四角、丸内の値はそれに対応するアイテム、四角内の値はそれに対応する終端節点をそれぞれ表している。また、
図1に示す例では、破線矢印が0-枝、実線矢印が1-枝をそれぞれ表している。
図1に示すZDDでは、根節点から1-終端節点までの2つの経路がそれぞれ組合せ{a,b}及び{b,c}を表現している。
【0021】
なお、以下では、本実施形態に係る組合せ遷移求解装置10がZDDを用いる場合について説明するが、2つの組合せ集合間の共通集合を得る演算が可能であり、かつ、論理式に変換可能なデータ構造であればZDD以外のデータ構造が用いられてもよい。具体的には、例えば、ZDDの代わりに、BDD(Binary Decision Diagram)が用いられてもよい。
【0022】
[実施例]
以下、本実施形態の具体的な実施例について説明する。本実施例では、「許容最大ステップ数」の代わりに「目標ステップ数」が入力データとして組合せ遷移求解装置10に与えられるものとし、「目標ステップ数ちょうどで初期状態から最終状態に遷移可能か否か」を判定し、その判定結果と遷移可能であればその遷移系列とを出力データとして出力する場合について説明する。なお、「許容最大ステップ数以内で初期状態から最終状態に遷移可能か否か」を判定する場合は、目標ステップ数を1から順に許容最大ステップ数まで増やしながら本実施例を適用することで、その判定が可能である。
【0023】
そのため、本実施例では、以下の(1)~(4)が入力データとして組合せ遷移求解装置10に与えられる。
【0024】
(1)制約条件を満たす状態を表す組合せのすべて
これはZDDとして与えられるものとする。すなわち、制約条件を満たす組合せのすべてを要素に持つ組合せ集合を表現するZDDが与えられるものとする。以下では、このZDDを「ZDDi」と書く。
【0025】
例えば、電力配電網を対象として、切替器の数をN、n番目の切替器のON/OFFを表す変数をxn(例えば、n番目の切替器がOFFであればxn=0、ONであればxn=1を取る。)とする。この場合、N個の切替器のON/OFFの組合せ(2N個の組合せ)のうち制約条件を満たす組合せのすべてで構成される組合せ集合を表現するZDDがZDDiである。言い換えれば、制約条件を満たし、かつ、ONとする切替器の選択を表す組合せのすべてで構成される組合せ集合を表現するZDDがZDDiである。この例の場合、制約条件としては、例えば、「特定の電線に所定の閾値を超える電力が流れない」、「電力配電網にループが生じない」、「変電所と書く需要が接続されている」等といったものが挙げられる。なお、一般に、電力配電網には多数の切替器(開閉器、スイッチ)が存在し、それらの開閉状態(ON/OFF)を決定することで、電力の供給経路が決定される。
【0026】
本実施例では、上記のようにZDDiの背後には電力配電網の切替器といった具体的対象が存在するものとしたが、このような具体的対象が存在する必要は必ずしもなく、任意のZDDをZDDiとすることが可能である。
【0027】
(2)一度の遷移(つまり、1ステップの遷移)で許容可能な変化の数を表す遷移可能条件
本実施例では、或る状態を表す組合せと、別の或る状態を表す組合せとの異なり数(つまり、アイテムの選択をバイナリベクトルで表現した場合のハミング距離)が所定の閾値th以下である場合は当該或る状態から当該別の或る状態に遷移可能であるものとする。そこで、遷移可能条件は、1以上の整数を取る閾値thで与えられるものとする。
【0028】
例えば、N個の切替器の中からONとする切替器の選択を表す組合せはN次元のバイナリベクトル(x1,・・・,xN)で表現できる。このため、或る状態を表す組合せに対応するN次元のバイナリベクトルを(x1,・・・,xN)、別の或る状態を表す組合せに対応するN次元のバイナリベクトルを(x'1,・・・,x'N)とすれば、xn≠x'nである個数がハミング距離となる。そして、このハミング距離がth以下である場合は当該或る状態から当該別の或る状態に遷移可能であり、そうでない場合は遷移不可能である。
【0029】
(3)初期状態及び最終状態
初期状態及び最終状態はそれぞれ1つの組合せで表される。このため、初期状態は、ZDDiと同じアイテム変数番号を持ち、かつ、当該初期状態を表す組合せのみが含まれる組合せ集合を表現するZDDで与えられるものとする。同様に、最終状態も、ZDDiと同じアイテム変数番号を持ち、かつ、当該最終状態を表す組合せのみが含まれる組合せ集合を表現するZDDで与えられるものとする。以下、初期状態に対応するZDDを「ZDDsrc」、最終状態に対応するZDDを「ZDDdst」と書く。
【0030】
例えば、電力配電網を対象とした場合、ZDDsrcは初期状態におけるN個の切替器のON/OFF、ZDDdstは最終状態におけるN個の切替器のON/OFFをそれぞれ表している。
【0031】
(4)目標ステップ数
1以上の整数で与えられるものとする。
【0032】
なお、目標ステップ数=1が与えられた場合、初期状態と終了状態をそれぞれ表す組合せのハミング距離がth以下であるか否かを判定することと同義となる。このため、この場合は、この判定を行った上で、その判定結果と、ハミング距離がth以下であるときは初期状態及び終了状態で構成される遷移系列とを出力データとする。以下では、目標ステップ数は2以上の整数であるものとする。
【0033】
<組合せ遷移求解装置10のハードウェア構成例>
本実施例における組合せ遷移求解装置10のハードウェア構成を
図2に示す。
図2に示すように、本実施例における組合せ遷移求解装置10は、入力装置101と、表示装置102と、外部I/F103と、通信I/F104と、RAM(Random Access Memory)105と、ROM(Read Only Memory)106と、補助記憶装置107と、プロセッサ108とを有する。これらの各ハードウェアは、それぞれがバス109を介して通信可能に接続されている。
【0034】
入力装置101は、例えば、キーボード、マウス、タッチパネル、物理ボタン等である。表示装置102は、例えば、ディスプレイ、表示パネル等である。なお、組合せ遷移求解装置10は、例えば、入力装置101及び表示装置102の少なくとも一方を有していなくてもよい。
【0035】
外部I/F103は、記録媒体103a等の外部装置とのインタフェースである。組合せ遷移求解装置10は、外部I/F103を介して、記録媒体103aの読み取りや書き込み等を行うことができる。記録媒体103aとしては、例えば、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
【0036】
通信I/F104は、組合せ遷移求解装置10を通信ネットワークに接続するためのインタフェースである。RAM105は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。ROM106は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。補助記憶装置107は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等のストレージ装置(記憶装置)である。プロセッサ108は、例えば、CPU(Central Processing Unit)等の演算装置である。
【0037】
本実施例における組合せ遷移求解装置10は、
図2に示すハードウェア構成を有することにより、後述する組合せ遷移求解処理を実現することができる。なお、
図2に示すハードウェア構成は一例であって、組合せ遷移求解装置10のハードウェア構成はこれに限られるものではない。例えば、組合せ遷移求解装置10は、複数の補助記憶装置107や複数のプロセッサ108を有していてもよいし、図示したハードウェア以外の様々なハードウェアを有していてもよい。
【0038】
<組合せ遷移求解装置10の機能構成例>
本実施例における組合せ遷移求解装置10の機能構成例を
図3に示す。
図3に示すように、本実施例における組合せ遷移求解装置10は、1ステップ遷移表現部201と、初期遷移法列挙部202と、最終遷移法列挙部203と、ZDD-CNF変換部204と、CNF生成部205と、求解部206とを有する。これら各部は、例えば、組合せ遷移求解装置10にインストールされた1以上のプログラムが、プロセッサ108に実行させる処理に実現される。
【0039】
1ステップ遷移表現部201は、「制約状態を満たす組合せのすべて」と「一度に遷移可能(つまり、1ステップで遷移可能)な2つの状態の組」とを表現するZDDを作成する。以下、一度に遷移可能な2つの状態のうち、遷移前の状態を「前状態」、遷移後の状態を「後状態」ともいう。
【0040】
すなわち、1ステップ遷移表現部201は、ZDDiとthとを入力として、制約条件を満たす組合せの組であって、かつ、一度に遷移可能な前状態を表す組合せと後状態を表す組合せとの組のすべてで構成されるデータを表現するZDD(後述するZDDt1)を作成する。1ステップ遷移表現部201は、このようなZDDを以下の手順1-1~手順1-4により作成することができる。
【0041】
手順1-1:ZDDiのアイテム変数番号を2倍したZDD(以下、このZDDを「ZDDe」と書く。)を作成する。同様に、ZDDiのアイテム変数番号2倍-1したZDD(以下、このZDDを「ZDDo」と書く。)を作成する。
【0042】
手順1-2:ZDDeが表現する組合せ集合とZDDoが表現する組合せ集合の直積集合を求め、この直積集合を表現するZDDをZDDjとする。なお、このZDDjはZDDeとZDDoの直積集合演算により作成することができる。ZDD同士の直積集合演算は、ZDDが標準演算として備える既知の機能である。
【0043】
手順1-3:「総アイテム数が2×N個で、奇数番目のアイテムと偶数番目のアイテムの枝の選択が高々th回だけしか異ならない」ということを表現したZDDhを作成する。これは容易に構築可能であるが、例えば、各層に高々th個の「これまでに間違えた回数(=これまでに選択が異なった回数)」に対応する節点を設け、そこから奇数番目のアイテムと偶数番目のアイテムとで枝の選択が同じ場合には同じ回数を表現する次の層の節点に接続する一方で、異なる場合には+1回を表現する次の層の節点が存在すればその節点、自節点が既にth回を表現しており+1回を表現する次の節点が無い場合は0-終端節点に接続する、といったトップダウン型の構築により作成することができる。
【0044】
手順1-4:ZDDjとZDDhの共通集合を表現するZDDを求め、これをZDDt1とする。なお、このZDDt1とはZDDjとZDDhの共通集合演算により作成することができる。ZDD同士の共通集合演算は、ZDDが標準演算として備える既知の機能である。
【0045】
初期遷移法列挙部202は、ZDDsrcとZDDt1とを入力として、制約条件を満たす組合せの組であって、かつ、初期状態を表す組合せと当該初期状態から一度に遷移可能な後状態を表す組合せとの組のすべてで構成されるデータを表現するZDD(後述するZDDsrc1)を作成する。初期遷移法列挙部202は、このようなZDDを以下の手順2-1~手順2-2により作成することができる。
【0046】
手順2-1:ZDDsrcのアイテム変数番号を2倍-1したZDDs2を作成する。
【0047】
手順2-2:ZDDs2と、1ステップ遷移表現部201で作成したZDDt1との共通集合を求め、これをZDDsrc1とする。
【0048】
最終遷移法列挙部203は、目標ステップ数(2以上の整数)とZDDdstとZDDt1とを入力として、制約条件を満たす組合せの組であって、かつ、任意の状態を表す組合せと当該状態から最終状態に一度に遷移可能な後状態を表す組合せとの組のすべてで構成されるデータを表現するZDD(後述するZDDdst1)を作成する。最終遷移法列挙部203は、このようなZDDを以下の手順3-1~手順3-wにより作成することができる。
【0049】
手順3-1:目標ステップ数が奇数である場合はZDDdstのアイテム変数番号を2倍-1したZDDを作成し、目標ステップ数が偶数である場合はZDDdstのアイテム変数番号を2倍したZDDを作成する。このZDDをZDDd2とする。
【0050】
手順3-2:ZDDd2と、1ステップ遷移表現部201で作成したZDDt1との共通集合を求め、これをZDDdst1とする。
【0051】
ZDD-CNF変換部204は、ZDDと2つの起点番号offsete及びoffsetoとを入力として、その入力に対応する連言標準形(CNF:Conjunctive normal form)形式の論理式を生成する。以下、この論理式をCNF論理式と呼ぶ。
【0052】
ZDD-CNF変換部204では、ZDDに対して2種類の論理変数群を割り当てる。1つはZDDの内部節点に対応する変数群であり、もう1つはZDDのアイテム変数番号に対応する変数群である。以下、i番目の内部節点に対応するCNF論理変数をN(i)とする。また、i番目の内部節点に対応するアイテム変数番号をlv(i)とし、アイテム変数番号lv(i)に対応するCNF論理変数をL(lv(i))とする。
【0053】
各CNF論理変数N(i)及びL(lv(i))は、lv(i)が偶数の場合はoffseteを初期値として順に一意に割り当て、lv(i)が奇数の場合はoffsetoを初期値として順に一意に割り当てる。また、以下では、i番目の内部節点の0-枝及び1-枝の先にある節点はそれぞれil及びih番目と表現する。
【0054】
このとき、ZDD-CNF変換部204は、以下の手順4-1~手順4-6によりCNF論理式を生成する。なお、¬は否定、∨は選言をそれぞれ表す。
【0055】
手順4-1:以下の部分的なCNF論理式を生成する。
【0056】
(¬N(i)∨L(lv(i))∨N(il))
(¬N(i)∨¬L(lv(i))∨N(ih))
手順4-2:lv(i)+1=lv(il)でない場合、lv(i)+1<t<lv(il)を満たすすべてのtに関して、以下の部分的なCNF論理式を生成する。
【0057】
(¬N(i)∨L(lv(i))∨¬L(t))
手順4-3:lv(i)+1=lv(ih)でない場合、lv(i)+1<t<lv(ih)を満たすすべてのtに関して、以下の部分的なCNF論理式を生成する。
【0058】
(¬N(i)∨¬L(lv(i))∨¬L(t))
手順4-4:以下の部分的なCNF論理式を生成する。
【0059】
(N(i)∨L(lv(i))∨¬L(lv(il))∨L(lv(i)+1)∨・・・∨L(lv(il)-1))
ここで、L(lv(i)+1)∨・・・∨L(lv(il)-1)の部分は、lv(i)+1<t<lv(il)を満たすすべてのtに関する繰り返しであり、lv(i)+1=lv(il)である場合は空である。
【0060】
手順4-5:以下の部分的なCNF論理式を生成する。
【0061】
(N(i)∨L(lv(i))∨¬L(lv(ih))∨L(lv(i)+1)∨・・・∨L(lv(ih)-1))
ここで、L(lv(i)+1)∨・・・∨L(lv(ih)-1))の部分は、lv(i)+1<t<lv(ih)を満たすすべてのtに関する繰り返しであり、lv(i)+1=lv(ih)である場合は空である。
【0062】
手順4-6:上記の手順4-1~手順4-5で生成した部分的なCNF論理式を連言∧で接続したCNF論理式を生成する。このCNF論理式がZDD-CNF変換部204の出力である。
【0063】
CNF生成部205は、目標ステップ数(以下、Stと書く。)とZDDt1とZDDsrc1とZDDdst1とを入力として、ZDD-CNF変換部204によりCNF論理式CNF0、CNFs及びCNFS_tを生成し、これらのCNF論理式を連言∧で接続したCNF論理式を作成する。CNF生成部205は、このようなCNF論理式を以下の手順5-1~手順5-4により作成することができる。以下では、Fを十分大きな定数とする。
【0064】
手順5-1:ZDDsrc1とoffsete=0及びoffseto=FとをZDD-CNF変換部204に入力し、CNF論理式を生成する。このCNF論理式をCNF0とする。
【0065】
手順5-2:2≦s≦Stを満たすすべての整数sに関して以下を繰り返す。
【0066】
ZDDt1とoffsete=(s-1)×F及びoffseto=s×FとをZDD-CNF変換部204に入力し、CNF論理式を生成する。このCNF論理式をCNFsとする。
【0067】
手順5-3:ZDDdst1とoffsete=(St-1)×F及びoffseto=St×FとをZDD-CNF変換部204に入力し、CNF論理式を生成する。このCNF論理式をCNFS_tとする。
【0068】
手順5-4:上記の手順5-1~手順5-3で生成したCNF論理式CNF0、CNFs及びCNFS_tを連言∧で接続したCNF論理式を作成する。以下、このCNF論理式をCNFTと書く。CNFTがCNF生成部205の出力である。
【0069】
求解部206は、CNF論理式CNFTを充足するような論理変数の割り当てが存在するか否かを判定し、その判定結果に応じて、遷移不可能であることを示す情報、又は、遷移可能であることを示す情報と遷移系列、を出力データとして出力する。CNF論理式CNFTを充足するような論理変数の割り当てが存在するか否かを判定は、従来技術であるSATソルバにCNFTを与えることが可能である。
【0070】
SATソルバによって充足不能であると判定された場合、例えば、充足不能である旨を表す情報がSATソルバから出力される。したがって、この場合、求解部206は、遷移不可能であることを示す情報を出力データとして出力する。
【0071】
一方で、SATソルバによって充足可能であると判定された場合、例えば、論理変数の割当結果がSATソルバから出力される。したがって、この場合、求解部206は、1が割り当てられた論理変数のうち、アイテム変数番号に対応する論理変数を取り出した上で、これら取り出した論理変数に対して、その論理変数に割り当てられた番号を定数Fで除した商からそれに対応するステップ数を得る。これにより、遷移系列が得られるため、求解部206は、遷移可能であることを示す情報と、当該遷移系列とを出力データとして出力する。
【0072】
<組合せ遷移求解処理の流れ>
以下、本実施例における組合せ遷移求解処理の流れについて、
図4を参照しながら説明する。なお、組合せ遷移求解装置10には、ZDD
iとZDD
srcとZDD
dstと閾値thと目標ステップ数S
t(ただし、2以上の整数)とが入力データとして与えられたものとする。
【0073】
1ステップ遷移表現部201は、ZDDiとthとを入力として、上記の手順1-1~手順1-4によりZDDt1を作成する(ステップS101)。
【0074】
次に、初期遷移法列挙部202は、ZDDsrcとZDDt1とを入力として、上記の手順2-1~手順2-2によりZDDsrc1を作成する(ステップS102)。
【0075】
次に、最終遷移法列挙部203は、目標ステップ数StとZDDdstとZDDt1とを入力として、上記の手順3-1~手順3-2によりZDDdst1を作成する(ステップS103)。
【0076】
次に、CNF生成部205は、目標ステップ数StとZDDt1とZDDsrc1とZDDdst1とを入力として、上記の手順5-1~手順5-4によりCNFTを作成する(ステップS104)。
【0077】
そして、求解部206は、CNFTを入力として、遷移可能であるか否かの判定結果を表す情報と遷移可能であると判定された場合は遷移系列とを出力データとして出力する(ステップS105)。
【0078】
[まとめ]
以上のように、本実施形態に係る組合せ遷移求解装置10は、制約条件を満たす状態の組のうち、一度に遷移可能な状態の組をコンパクトに表現した上で、効率的な探索が可能であると知られている既存技術であるSATソルバと組み合わせている。これにより、実存する計算機の記憶領域(メモリ)で取り扱うことが可能となり、かつ、効率的な求解が可能となる。
【0079】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
【符号の説明】
【0080】
10 組合せ遷移求解装置
101 入力装置
102 表示装置
103 外部I/F
103a 記録媒体
104 通信I/F
105 RAM
106 ROM
107 補助記憶装置
108 プロセッサ
109 バス
201 1ステップ遷移表現部
202 初期遷移法列挙部
203 最終遷移法列挙部
204 ZDD-CNF変換部
205 CNF生成部
206 求解部