(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-19
(45)【発行日】2022-12-27
(54)【発明の名称】推移閉包情報生成装置、推移閉包情報生成方法およびプログラム
(51)【国際特許分類】
G06Q 10/04 20120101AFI20221220BHJP
【FI】
G06Q10/04
(21)【出願番号】P 2020506096
(86)(22)【出願日】2018-03-16
(86)【国際出願番号】 JP2018010604
(87)【国際公開番号】W WO2019176108
(87)【国際公開日】2019-09-19
【審査請求日】2020-08-20
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100106909
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】佐々木 耀一
【審査官】緑川 隆
(56)【参考文献】
【文献】特表2009-505227(JP,A)
【文献】特開2003-178170(JP,A)
【文献】特開平06-301497(JP,A)
【文献】特開2017-182277(JP,A)
【文献】佐々木 燿一,有向ハイパーグラフ上での到達可能性判定の高速化,一般社団法人 人工知能学会 第32回全国大会論文集DVD [DVD-ROM] 2018年度 人工知能学会全国大会(第32回),日本,2018年06月05日,p.1-4
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
有向ハイパーグラフを取得するグラフ取得部と、
前記有向ハイパーグラフのノードの1つである対象ノードの親ノードのそれぞれについて、前記対象ノード自身を含まない前記対象ノードの祖先ノードの集合から、前記親ノード自身を含む前記親ノードの祖先ノードの集合を除いた集合のべき集合と、前記親ノードの祖先ノードを出発元として前記親ノードに到達可能なノードの集合を要素とする集合との直積をとった第一集合を算出し、前記対象ノードを到達先とするハイパーエッジ毎に、そのハイパーエッジの出発元となっている全ての親ノードの前記第一集合の直積をとり、前記対象ノードを到達先とする全てのエッジについて、前記エッジのうち
単エッジについてはその
単エッジの出発元となっている親ノードの前記第一集合を対象とし、前記エッジのうちハイパーエッジについてはそのハイパーエッジについて算出した前記第一集合の直積を対象として、これら対象の和集合である第二集合を算出し、前記対象ノード自身を含まない前記対象ノードの祖先ノード集合のべき集合と、前記対象ノードを要素とする集合との直積と、前記第二集合との和集合を算出することにより、前記有向ハイパーグラフのノードのうち少なくとも1つのノードについて、そのノードへ到達可能なノード集合を示す推移閉包情報を生成する推移閉包情報生成部と、
を備える推移閉包情報生成装置。
【請求項2】
前記有向ハイパーグラフのハイパーエッジを単エッジに置き換えた有向グラフに対するトポロジカルソートにより、前記有向ハイパーグラフのノードの順番を決定する順番決定部をさらに備え、
前記推移閉包情報生成部は、前記順番で各ノードの前記推移閉包情報を生成する、
請求項1に記載の推移閉包情報生成装置。
【請求項3】
前記推移閉包情報生成部は、前記ノード集合の要素が前記推移閉包情報における到達先のノードの祖先ノードに限定された前記推移閉包情報を生成する、
請求項1または請求項2に記載の推移閉包情報生成装置。
【請求項4】
前記推移閉包情報生成部は、前記有向ハイパーグラフの全てのノードのうち1つ以上のノードの任意の組み合わせについて、その組み合わせによる前記ノード集合から前記推移閉包情報における到達先のノードへの到達可能性を示す前記推移閉包情報を生成する、
請求項1または請求項2に記載の推移閉包情報生成装置。
【請求項5】
コンピュータが、
有向ハイパーグラフを取得する工程と、
前記有向ハイパーグラフのノードの1つである対象ノードの親ノードのそれぞれについて、前記対象ノード自身を含まない前記対象ノードの祖先ノードの集合から、前記親ノード自身を含む前記親ノードの祖先ノードの集合を除いた集合のべき集合と、前記親ノードの祖先ノードを出発元として前記親ノードに到達可能なノードの集合を要素とする集合との直積をとった第一集合を算出し、前記対象ノードを到達先とするハイパーエッジ毎に、そのハイパーエッジの出発元となっている全ての親ノードの前記第一集合の直積をとり、前記対象ノードを到達先とする全てのエッジについて、前記エッジのうち
単エッジについてはその
単エッジの出発元となっている親ノードの前記第一集合を対象とし、前記エッジのうちハイパーエッジについてはそのハイパーエッジについて算出した前記第一集合の直積を対象として、これら対象の和集合である第二集合を算出し、前記対象ノード自身を含まない前記対象ノードの祖先ノード集合のべき集合と、前記対象ノードを要素とする集合との直積と、前記第二集合との和集合を算出することにより、前記有向ハイパーグラフのノードのうち少なくとも1つのノードについて、そのノードへ到達可能なノード集合を示す推移閉包情報を生成する工程と、
を含む推移閉包情報生成方法。
【請求項6】
コンピュータに、
有向ハイパーグラフを取得する工程と、
前記有向ハイパーグラフのノードの1つである対象ノードの親ノードのそれぞれについて、前記対象ノード自身を含まない前記対象ノードの祖先ノードの集合から、前記親ノード自身を含む前記親ノードの祖先ノードの集合を除いた集合のべき集合と、前記親ノードの祖先ノードを出発元として前記親ノードに到達可能なノードの集合を要素とする集合との直積をとった第一集合を算出し、前記対象ノードを到達先とするハイパーエッジ毎に、そのハイパーエッジの出発元となっている全ての親ノードの前記第一集合の直積をとり、前記対象ノードを到達先とする全てのエッジについて、前記エッジのうち
単エッジについてはその
単エッジの出発元となっている親ノードの前記第一集合を対象とし、前記エッジのうちハイパーエッジについてはそのハイパーエッジについて算出した前記第一集合の直積を対象として、これら対象の和集合である第二集合を算出し、前記対象ノード自身を含まない前記対象ノードの祖先ノード集合のべき集合と、前記対象ノードを要素とする集合との直積と、前記第二集合との和集合を算出することにより、前記有向ハイパーグラフのノードのうち少なくとも1つのノードについて、そのノードへ到達可能なノード集合を示す推移閉包情報を生成する工程と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、推移閉包情報生成装置、推移閉包情報生成方法およびプログラムに関する。
【背景技術】
【0002】
有向ハイパーグラフにおける到達可能性判定問題に関して、非特許文献1に記載の方法では、有向ハイパーグラフの全ノード集合に含まれている任意の部分集合を作成する。この部分集合は、到達可能性問題における始点ノード集合の候補に該当する。そして、この方法では、有向ハイパーグラフの全ノード集合に属している各ノードに関して、この部分集合(始点ノード集合の候補)に含まれている何れのノードからも到達可能であるか否かを表す情報を保持しておく。ここでは、この到達先のノードは、到達可能性問題における終点ノードの候補に該当する。また、始点ノード集合に属している何れのノードからも終点ノードに到達可能であるか否かを、単に、始点ノード集合から終点ノードへの到達可否と表記する。
【0003】
この方法では、具体的には、始点ノード集合の候補と終点ノードの候補との全ての組み合わせについて、始点ノード集合の候補から終点ノードの候補への到達可否を表形式で記憶しておく。そして、この方法では、始点ノード集合および終点ノードが与えられると、表の該当箇所を参照することで、始点ノード集合から終点ノードへの到達可否を判定する。
有向ハイパーグラフにおいては、たとえば、複数のノードに対応する事象が生じた場合(すなわち、複数の事象が共起した場合)に異なる事象が生じるという情報を、ハイパーエッジを用いて表すことができる。一方、有向グラフにおいては、複数の事象が共起するという情報を表すことはできない。従って、有向ハイパーグラフと、有向グラフとは、例えば、共起を表すことができるか否かという点に関して異なっている。尚、有向ハイパーグラフに関しては、
図2から
図4まで等を参照しながら後述する。
【先行技術文献】
【非特許文献】
【0004】
【文献】Giorgio Ausiello、外1名、「Directed hypergraphs: Introduction and fundamental algorithms-A survey」、Theoretical Computer Science、2017年1月、Volume 658、Part B、p.293-306
【発明の概要】
【発明が解決しようとする課題】
【0005】
有向ハイパーグラフにおける到達可能性の判定に用いるための情報を予め生成しておく場合、情報を効率よく生成できることが好ましい。
例えば、特許文献1に記載の方法では、到達可能性の判定に用いるための情報として、始点ノードの集合の候補の各々と各ノードとの全ての組み合わせについて到達可否を示す表を用意する。始点ノード集合の候補の数は、およそ2のノード数乗であり、始点ノードの集合の候補の各々と各ノードとの組み合わせの数は、およそ2のノード数乗×ノード数である。ノード数が増えると組み合わせの数が大幅に増加し、表の生成に膨大な時間を要することが考えられる。
ノード数が比較的多い場合でも、到達可能性の判定に用いるための情報を現実的な時間で得られるよう、かかる情報を効率よく生成できることが好ましい。
【0006】
本発明の目的の一例は、上述の課題を解決することのできる、推移閉包情報生成装置、推移閉包情報生成方法およびプログラムを提供することである。
【課題を解決するための手段】
【0007】
本発明の第1の態様によれば、推移閉包情報生成装置は、有向ハイパーグラフを取得するグラフ取得部と、前記有向ハイパーグラフのノードの1つである対象ノードの親ノードのそれぞれについて、前記対象ノード自身を含まない前記対象ノードの祖先ノードの集合から、前記親ノード自身を含む前記親ノードの祖先ノードの集合を除いた集合のべき集合と、前記親ノードの祖先ノードを出発元として前記親ノードに到達可能なノードの集合を要素とする集合との直積をとった第一集合を算出し、前記対象ノードを到達先とするハイパーエッジ毎に、そのハイパーエッジの出発元となっている全ての親ノードの前記第一集合の直積をとり、前記対象ノードを到達先とする全てのエッジについて、前記エッジのうち単エッジについてはその単エッジの出発元となっている親ノードの前記第一集合を対象とし、前記エッジのうちハイパーエッジについてはそのハイパーエッジについて算出した前記第一集合の直積を対象として、これら対象の和集合である第二集合を算出し、前記対象ノード自身を含まない前記対象ノードの祖先ノード集合のべき集合と、前記対象ノードを要素とする集合との直積と、前記第二集合との和集合を算出することにより、前記有向ハイパーグラフのノードのうち少なくとも1つのノードについて、そのノードへ到達可能なノード集合を示す推移閉包情報を生成する推移閉包情報生成部と、を備える。
【0008】
本発明の第2の態様によれば、推移閉包情報生成方法は、コンピュータが、有向ハイパーグラフを取得する工程と、前記有向ハイパーグラフのノードの1つである対象ノードの親ノードのそれぞれについて、前記対象ノード自身を含まない前記対象ノードの祖先ノードの集合から、前記親ノード自身を含む前記親ノードの祖先ノードの集合を除いた集合のべき集合と、前記親ノードの祖先ノードを出発元として前記親ノードに到達可能なノードの集合を要素とする集合との直積をとった第一集合を算出し、前記対象ノードを到達先とするハイパーエッジ毎に、そのハイパーエッジの出発元となっている全ての親ノードの前記第一集合の直積をとり、前記対象ノードを到達先とする全てのエッジについて、前記エッジのうち単エッジについてはその単エッジの出発元となっている親ノードの前記第一集合を対象とし、前記エッジのうちハイパーエッジについてはそのハイパーエッジについて算出した前記第一集合の直積を対象として、これら対象の和集合である第二集合を算出し、前記対象ノード自身を含まない前記対象ノードの祖先ノード集合のべき集合と、前記対象ノードを要素とする集合との直積と、前記第二集合との和集合を算出することにより、前記有向ハイパーグラフのノードのうち少なくとも1つのノードについて、そのノードへ到達可能なノード集合を示す推移閉包情報を生成する工程と、を含む。
【0009】
本発明の第3の態様によれば、プログラムは、コンピュータに、有向ハイパーグラフを取得する工程と、前記有向ハイパーグラフのノードの1つである対象ノードの親ノードのそれぞれについて、前記対象ノード自身を含まない前記対象ノードの祖先ノードの集合から、前記親ノード自身を含む前記親ノードの祖先ノードの集合を除いた集合のべき集合と、前記親ノードの祖先ノードを出発元として前記親ノードに到達可能なノードの集合を要素とする集合との直積をとった第一集合を算出し、前記対象ノードを到達先とするハイパーエッジ毎に、そのハイパーエッジの出発元となっている全ての親ノードの前記第一集合の直積をとり、前記対象ノードを到達先とする全てのエッジについて、前記エッジのうち単エッジについてはその単エッジの出発元となっている親ノードの前記第一集合を対象とし、前記エッジのうちハイパーエッジについてはそのハイパーエッジについて算出した前記第一集合の直積を対象として、これら対象の和集合である第二集合を算出し、前記対象ノード自身を含まない前記対象ノードの祖先ノード集合のべき集合と、前記対象ノードを要素とする集合との直積と、前記第二集合との和集合を算出することにより、前記有向ハイパーグラフのノードのうち少なくとも1つのノードについて、そのノードへ到達可能なノード集合を示す推移閉包情報を生成する工程と、を実行させるためのプログラムである。
【発明の効果】
【0010】
上記した推移閉包情報生成装置、推移閉包情報生成方法およびプログラムによれば、到達可能性の判定に用いるための情報を比較的効率よく生成できる。
【図面の簡単な説明】
【0011】
【
図1】実施形態に係る推移閉包情報生成装置の機能構成を示す概略ブロック図である。
【
図2】複数のノードから1つのノードへのハイパーエッジと、1つのノードから複数のノードへのハイパーエッジとを含む有向ハイパーグラフの例を示す図である。
【
図3】1つの上流側接続ノードおよび複数の下流側接続ノードに接続するハイパーエッジが置き換えられた単エッジの例を示す図である。
【
図4】1つの上流側接続ノードおよび複数の下流側接続ノードに接続するハイパーエッジから、下流側接続ノードそれぞれへの単エッジへの置き換え後の有向ハイパーグラフの例を示す図である。
【
図5】推移閉包行列のデータ構造の例を示す図である。
【
図6】論理関数の木構造表現による推移閉包情報のデータ構造の例を示す図である。
【
図9】到達先ノードに対する親ノードの構成の第1例を示す図である。
【
図10】到達先ノードに対する親ノードの構成の第2例を示す図である。
【
図11】ハイパーエッジから単エッジへの置き換え前のグラフの例を示す図である。
【
図12】ハイパーエッジから単エッジへの置き換え後のグラフの例を示す図である。
【
図13】実施形態に係る推移閉包情報生成装置が有向ハイパーグラフの各ノードについて推移閉包情報を生成する処理手順の例を示すフローチャートである。
【
図14】実施形態に係る推移閉包情報生成部が1つのノードの祖先推移閉包情報を生成する処理手順の例を示すフローチャートである。
【
図15】実施形態に係る推移閉包情報生成部が1つのノードの全推移閉包情報を生成する処理手順の例を示すフローチャートである。
【
図16】実施形態に係る推移閉包情報生成装置の構成の例を示す図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、実施形態に係る推移閉包情報生成装置の機能構成を示す概略ブロック図である。
図1に示すように、推移閉包情報生成装置100は、入出力部110と、記憶部180と、制御部190とを備える。制御部190は、順番決定部191と、推移閉包情報生成部192とを備える。
【0013】
推移閉包情報生成装置100は、有向ハイパーグラフ(Directed Hypergraph)における推移閉包情報(Transitive Closure Information)を生成する。推移閉包情報生成装置100は、例えばワークステーション(Workstation)またはパソコン(Personal Computer;PC)等のコンピュータを用いて構成される。
ここでいう推移閉包情報は、有向ハイパーグラフ上のノード集合(ノード(Node)の集合)から有向ハイパーグラフ上のノードへの到達可否を示す情報である。また、あるノードに対する推移閉包情報は、そのノードに到達可能なノード集合を示す情報である。
有向ハイパーグラフにおける到達可能性判定問題を解くために、推移閉包情報生成装置100が生成する推移閉包情報を用いることができる。
推移閉包情報生成装置100が対象とする有向ハイパーグラフおよび到達可能性問題について、
図2から
図4までを参照して説明する。
【0014】
図2は、複数のノードから1つのノードへのハイパーエッジと、1つのノードから複数のノードへのハイパーエッジとを含む有向ハイパーグラフの例を示す図である。
有向ハイパーグラフでは、複数のノード間の関係をハイパーエッジ(Hyperedge)により示すことができ、さらにそれらの関係の向きを有向エッジ(Directed Edge)により示すことができる。
【0015】
有向ハイパーグラフは、DH(V,E)の形で定義される。Vはノード集合を示し、Eはエッジの集合を示す。
S、Tをそれぞれノード集合として、エッジe∈Eは、e={S,T}のように示される。このように、有向ハイパーグラフのエッジはノード集合とノード集合の関係で示され、ノード集合Sからノード集合Tへの方向を有している。
【0016】
ノードs∈Sは、エッジの上流側に接続されるノードである。ノードs∈Sを上流側接続ノードと称する。ノードt∈Tは、エッジの下流側に接続されるノードである。ノードt∈Tを下流側接続ノードと称する。
図2に示される有向ハイパーグラフは、ノードV
1からV
11までと、ノードをつなぐ有向のエッジとで構成されている。
【0017】
有向ハイパーグラフのエッジは、単エッジ(Single Edge)と、ハイパーエッジ(Hyperedge)とに分類される。
単エッジは、1つのノードと1つのノードとの間の関係を示す。単エッジの場合、e={S,T}の表記で、S、T共に1つのノードを要素とするノード集合である。
図2では、エッジE11が単エッジの例に該当する。
【0018】
ハイパーエッジは、1つのノードと複数ノードとの間の関係、または、複数ノードと複数ノードとの間の関係を示す。1つのノードと複数ノードとの間の関係を示すハイパーエッジは、さらに、1つの上流側接続ノードおよび複数の下流側接続ノードに接続するハイパーエッジと、複数の上流側接続ノードおよび1つの下流側接続ノードに接続するハイパーエッジとに分類される。
図2では、エッジE12が、複数の上流側接続ノードおよび1つの下流側接続ノードに接続するハイパーエッジの例に該当する。エッジE13が、1つの上流側接続ノードおよび複数の下流側接続ノードに接続するハイパーエッジの例に該当する。
【0019】
推移閉包情報生成装置100が対象とする到達可能性判定問題では、始点ノード集合と終点ノードとを与えられ、始点ノード集合から終点ノードへ到達可能か否かを判定する。ここでいう始点ノード集合から終点ノードへ到達可能とは、始点ノード集合の少なくとも1つの部分集合から終点ノードへ到達可能であることである。
1つまたは複数の始点ノードが始点ノード集合として与えられるのに対し、与えられる終点ノードの数は1つである。
【0020】
推移閉包情報生成装置100が対象とする到達可能性判定問題では、複数の上流側接続ノードおよび1つの下流側接続ノードに接続するハイパーエッジは、「and」条件(共起)を示す。具体的には、全ての上流側接続ノードに到達可能な場合、かつ、この場合に限り、このハイパーエッジを通って下流側接続ノードに到達可能である。
一方、1つの上流側接続ノードおよび複数の下流側接続ノードに接続するハイパーエッジは、このハイパーエッジを通って上流側接続ノードからいずれの下流側接続ノードへも到達可能であることを示す。
また、推移閉包情報生成装置100は、非巡回(Acyclic)有向ハイパーグラフを対象とする。すなわち、推移閉包情報生成装置100は、グラフ理論における閉路(Cycle)のない有向ハイパーグラフにおける推移閉包情報を生成する。以下では、非巡回有向ハイパーグラフを単に有向ハイパーグラフと称する。
【0021】
推移閉包情報生成装置100が対象とする到達可能性判定問題は、グラフ理論における基本的かつ重要な問題の一つであり、幅広い応用が可能である。一つの例として、与えられた1つ以上の化合物を化学反応させて、1つの目的の化合物を生成可能か否かを判定すること問題が挙げられる。例えば、化学反応のデータベースを有向ハイパーグラフの形式で用意しておき、与えられた1つ以上の化合物を始点ノード集合とし、目的の化合物を終点ノードとする。これにより、目的の化合物を生成可能か否かの問題を到達可能性判定問題として解くことができる。
【0022】
推移閉包情報生成装置100が対象とする有向ハイパーグラフで、1つの上流側接続ノードおよび複数の下流側接続ノードに接続するハイパーエッジは、下流側接続ノードそれぞれへの単エッジに置き換えることができる。
図3は、1つの上流側接続ノードおよび複数の下流側接続ノードに接続するハイパーエッジが置き換えられた単エッジの例を示す図である。
図3は、
図2のエッジE13が単エッジに置き換えられた例を示している。
図2のエッジE13が、ノードV
7からノードV
9およびV
10へのハイパーエッジであるのに対し、
図3では、ノードV
7からノードV
9への単エッジと、ノードV
7からノードV
10への単エッジとが設けられている。これらの単エッジにて、エッジE13の場合と同様、ノードV
7からノードV
9およびV
10のいずれへも到達可能であることが示されている。
【0023】
このように、1つの上流側接続ノードおよび複数の下流側接続ノードに接続するハイパーエッジから、下流側接続ノードそれぞれへの単エッジへ、等価な置き換えを行うことができる。複数の上流側接続ノードおよび複数の下流側接続ノードに接続するハイパーエッジの場合は、下流側接続ノード毎に、複数の上流側接続ノードおよびその下流側接続ノードに接続するハイパーエッジに置き換えることができる。
【0024】
図4は、1つの上流側接続ノードおよび複数の下流側接続ノードに接続するハイパーエッジから、下流側接続ノードそれぞれへの単エッジへの置き換え後の有向ハイパーグラフの例を示す図である。
図4は、
図2の有向ハイパーグラフにて、エッジE13を、
図3のように単エッジに置き換えた例を示している。
置き換え後の有向ハイパーグラフでは、いずれのハイパーエッジも複数の上流側接続ノードおよび1つの下流側接続ノードに接続している。すなわち、置き換え後の有向ハイパーグラフは、複数の下流側接続ノードに接続しているハイパーエッジを含まない。
【0025】
推移閉包情報生成装置100は、このように、いずれのハイパーエッジも複数の上流側接続ノードおよび1つの下流側接続ノードに接続している有向ハイパーグラフにおける推移閉包情報を生成する。すなわち、推移閉包情報生成装置100は、ノードと1つ以上のノードから1つのノードへのエッジとで構成される有向ハイパーグラフでの推移閉包情報を生成する。
【0026】
一般的な有向ハイパーグラフは、その有向ハイパーグラフと等価な有向ハイパーグラフ、かつ、ハイパーエッジが、複数の上流側接続ノードおよび1つの下流側接続ノードに接続しているハイパーエッジに限定された有向ハイパーグラフに変換可能である。従って、推移閉包情報生成装置100は、一般的な有向ハイパーグラフにおける到達可能性問題を解くための推移閉包情報を生成することができる。ここでいう一般的な有向ハイパーグラフは、ハイパーエッジが必ずしも複数の上流側接続ノードおよび1つの下流側接続ノードに接続しているハイパーエッジに限定されない有向ハイパーグラフである。
【0027】
推移閉包情報生成装置100が、上記のエッジの置き換えを行うようにしてもよい。あるいは、推移閉包情報生成装置100が、いずれのハイパーエッジも複数の上流側接続ノードおよび1つの下流側接続ノードに接続している有向ハイパーグラフを、他の装置等から取得するようにしてもよい。
以下では、複数の上流側接続ノードおよび1つの下流側接続ノードに接続しているハイパーエッジを、単にハイパーエッジと称する。
【0028】
次に、
図5および
図6を参照して、推移閉包情報について説明する。
以下では、推移閉包情報における到達先のノードを到達先ノードと称する。到達先ノードは、推移閉包情報にて、ノード集合からそのノードへの到達可否を示されるノードである。また、推移閉包情報が示す到達の可否にて出発地点となっているノード集合を出発元ノード集合と称する。
推移閉包情報は、出発元ノード集合から到達先ノードへの到達可否を示す情報である。また、あるノードに対する推移閉包情報は、そのノードを到達先ノードとして、到達先ノードに到達可能な出発元ノード集合を示す情報である。
【0029】
推移閉包情報の表現方法の1つとして、推移閉包情報を行列の形式で示すことができる。行列の形式で示される推移閉包情報を推移閉包行列と称する。
図5は、推移閉包行列のデータ構造の例を示す図である。
図5の例で、|v|(|v|は正整数)は、有向ハイパーグラフにおけるノードの数を示す。v
1からv
|v|までは、それぞれノードを示す。
図5に示す推移閉包行列は、ノードv
1からv
|v|までと一対一に対応付けられる|v|個の列を有する。また、
図5に示す推移閉包行列は、とり得る全てのノード集合から空集合φを除いたノード集合(v
1)から(v
1,v
2,v
3,・・・,v
|v|)までと一対一に対応付けられる2
|v|-1個の行を有する。
【0030】
図5に示す推移閉包行列の各要素には、行に対応付けられたノード集合から、列に対応付けられたノードへの到達可能性を示す情報が格納される。行に対応付けられたノード集合から、列に対応付けられたノードへ到達可能であることを要素の値「1」で示し、到達不可能であることを要素の値「0」で示すようにしてもよい。
【0031】
推移閉包情報のもう1つの表現方法として、到達ノード毎の推移閉包情報を論理関数の形式で示すことができる。また、この論理関数を木構造の形式で示すことができる。さらには、この論理関数の木構造表現をグラフ的に縮約(Reduce)した形式にて示すことができる。推移閉包情報生成装置100が、これらの形式のいずれかの推移閉包情報を生成するようにしてもよい。
図6は、論理関数の木構造表現による推移閉包情報のデータ構造の例を示す図である。
図6では、推移閉包情報を二分決定木(Binary Decision Tree)の形式で表現した例が示されている。
【0032】
図6の二分決定木の中間ノードに示される「v
i」(iは、1≦i≦|v|の正整数)は、有向ハイパーグラフのノードv
iが出発元ノード集合に含まれていることを示す。「¬v
i」は、有向ハイパーグラフのノードv
iが出発元ノード集合に含まれていないことを示す。
葉(Leaf)の値「1」は、出発元ノード集合から到達先ノードへ到達可能であることを示す。葉の値「0」は、出発元ノード集合から到達先ノードへ到達不可であることを示す。
【0033】
推移閉包情報の二分決定木表現を、出発元ノード集合に従って根(Root)から葉へ辿ることで、出発元ノード集合から到達先ノードへの到達可否を「1」または「0」で示す情報を得られる。この二分決定木表現を辿る具体的方法は、以下のようになる。
根から出発して、有向ハイパーグラフのノードv1が出発元ノード集合に含まれていれば、二分決定木の「v1」のノードへ進む。有向ハイパーグラフのノードv1が出発元ノード集合に含まれていなければ、二分決定木の「¬v1」のノードへ進む。
【0034】
さらに、有向ハイパーグラフのノードv2が出発元ノード集合に含まれていれば、二分決定木の「v2」のノードへ進む。有向ハイパーグラフのノードv2が出発元ノード集合に含まれていなければ、二分決定木の「¬v2」のノードへ進む。
このように、有向ハイパーグラフのノードvi(iは、1≦i≦|v|の正整数)が出発元ノード集合に含まれていれば、二分決定木の「vi」のノードへ進む。有向ハイパーグラフのノードviが出発元ノード集合に含まれていなければ、二分決定木の「¬vi」のノードへ進む。この処理を有向ハイパーグラフのノードv|v|まで順に繰り返し、二分決定木の「v|v|」のノードまたは「¬v|v|」のノードに到達する。
【0035】
到達したノードとエッジで対応付けられている葉から、到達可否の情報を読み出す。
この場合、有向ハイパーグラフのノードが出発元ノードに含まれているか否かの判定を|v|回行うことになり、|v|のオーダーの処理(O(|v|))で、到達可否の情報を得られる。
【0036】
また、BDD(Binary Decision Diagram)およびZDD(Zero-suppressed Binary Decision Diagram)など、二分決定木をグラフ的に縮約して効率的に表記する既存技術がある。例えば、BDDでは、二分決定木における冗長なノードを削除し、等価なノードを共有とすることで、二分決定木をグラフ的に縮退する。
これらの既存技術を用いることで、推移閉包情報記憶部281が推移閉包情報を記憶するために必要な記憶容量が比較的少なくて済むことが期待される。
【0037】
また、連長圧縮法(Run Length Encoding)等の圧縮技術では、データを読み出すためにデータを解凍する必要がある。これに対し、BDDおよびZDDでは、二分決定木を縮退して得られたグラフを辿る際、データを解凍する必要はない。このように、到達可能性判定装置200では、論理関数の木構造表現をグラフ的に縮退した推移閉包情報を用いることで、処理の効率化と、記憶容量の低減との両立を図ることができる。
【0038】
推移閉包情報の二分決定木表現は、1つの到達先ノードに対する推移閉包情報を論理関数の形式で表現し、その論理関数を二分決定木の形式で表現することで得られる。
式(1)は、1つの到達先ノードに対する推移閉包情報の論理関数表現の例を示す。
【0039】
【0040】
式(1)では、1つの到達先ノードに対する推移閉包情報が積和標準形で示されている。1つの出発元ノード集合に含まれる全てのノードの論理積をとり、出発元ノード集合毎に得られた論理積の論理和をとることで、1つの到達先ノードに対する推移閉包情報の積和標準形による表現を得られる。ここで得られる積和標準形の論理関数には、否定リテラルは含まれない。
【0041】
式(1)の左辺の「a」、「c」、「ab」、「abc」は、それぞれノード集合{a}、{c}、{a,b}、{a,b,c}を示している。これらのノード集合の各々は、到達先ノードへ到達可能な出発元ノード集合を示している。
式(1)の右辺では、「a」、「c」、「a∧b」、「a∧b∧c」が、それぞれノード集合{a}、{c}、{a,b}、{a,b,c}を示している。これら「a」、「c」、「a∧b」、「a∧b∧c」が「∨」で接続されて積和標準形の論理関数を形成している。
【0042】
式(1)は、{a,b,c}の部分集合を要素とする集合を示している。言い換えれば、式(1)は、ノードa、b、cの3つのノードから任意個を選んだ組み合わせの集合を要素とする集合を示している。このように、n個(nは正整数)のアイテムから任意個を選ぶ組み合わせを要素とする集合を、組み合わせ集合と称する。組み合わせ集合は、式(1)の例のように積和標準形の論理関数で示すことができる。
【0043】
また、組み合わせ集合PとQとの和集合をP∪Qと表記する。例えば、組み合わせ集合{a,c,abc}と{b,abc}との和集合は、式(2)のように示される。
【0044】
【0045】
また、組み合わせ集合PとQとの共通集合をP∩Qと表記する。例えば、組み合わせ集合{a,ab,abc}と{b,abc}との共通集合は、式(3)のように示される。
【0046】
【0047】
また、組み合わせ集合PとQとの直積集合をP*Qと表記する。例えば、組み合わせ集合{a,b}と{λ,bc}との直積集合は、式(4)のように示される。
【0048】
【0049】
λは、直積集合の演算「*」における単位元として作用する要素である。任意の集合Setに対し、Set*{λ}=Setである。
【0050】
推移閉包情報の二分決定木表現は、例えば、有向ハイパーグラフのノードに対応する二分決定木を作っておき、得られた積和標準形の各項に基づいて葉の値を決定することで得られる。
具体的には、
図6の例のように、有向ハイパーグラフのノードv
1、v
2、v
3、・・・、v
|v|の有無に応じて分岐する二分決定木を生成する。上記の積和標準形の論理関数の各項は、二分決定木の根から葉への経路のいずれか1つに相当する。そこで、二分決定木の葉のうち、相当する項がある葉の値を「1」にし、相当する項がない葉の値を「0」にする。
【0051】
入出力部110は、他の装置と通信を行う。特に、入出力部110は、グラフ取得部の例に該当し、推移閉包情報生成装置100が推移閉包情報を生成する対象の有向ハイパーグラフを取得する。例えば、推移閉包情報生成装置100に対するクライアント装置が、推移閉包情報の生成要求に有向ハイパーグラフのデータを含めて送信し、入出力部110が、その生成要求を受信するようにしてもよい。
【0052】
但し、入出力部110が有向ハイパーグラフを取得する方法は、他の装置から通信で取得する方法に限定されない。例えば、入出力部110が、USB(Universal Serial Bus)ポートなど外部メモリの接続を受けるインタフェースを有し、外部メモリから有向ハイパーグラフを取得するようにしてもよい。あるいは、入出力部110が、例えばキーボードおよびマウス等の入力デバイスを備え、ユーザ操作にて有向ハイパーグラフの入力を受けるようにしてもよい。
【0053】
また、入出力部110は、推移閉包情報生成装置100が生成した推移閉包情報を、要求元のクライアント装置など他の装置へ送信する。あるいは、推移閉包情報生成装置100が外部メモリの接続を受けるインタフェースを有し、推移閉包情報を外部メモリへ書き込むようにしてもよい。あるいは、推移閉包情報生成装置100自らが到達可能性判定問題を解くなど、推移閉包情報生成装置100の内部で推移閉包情報を使用するようにしてもよい。この場合、入出力部110が推移閉包情報を推移閉包情報生成装置100の外部へ出力する必要はない。
【0054】
記憶部180は、各種データを記憶する。例えば、推移閉包情報生成装置100が有向ハイパーグラフのノード毎に推移閉包情報を生成し、記憶部180が、推移閉包情報をノードと対応付けて記憶するようにしてもよい。
記憶部180は、到達可能性判定装置200が備える記憶デバイスを用いて構成される。
制御部190は、推移閉包情報生成装置100の各部を制御して各種処理を行う。制御部190は、推移閉包情報生成装置100が備えるCPU(Central Processing Unit、中央処理装置)が記憶部180からプログラムを読み出して実行することで実現される。
【0055】
推移閉包情報生成部192は、推移閉包情報の生成を実行する。特に、推移閉包情報生成部192は、有向ハイパーグラフのノードのうち少なくとも1つのノードについて、そのノードへ到達可能なノード集合を示す推移閉包情報を、そのノードの親ノード(Parent Node)の推移閉包情報を用いて生成する。
あるノードの親ノードとは、そのノードに隣接する(Adjacent)祖先ノード(Ancestor Node)である。あるノードの祖先ノードとは、そのノードへの道(Path)が存在するノードである。従って、あるノードの祖先ノードは、そのノードへの道の上流側に位置する。また、1つのエッジの上流側接続ノードは、そのエッジの下流側接続ノードの親ノードに該当する。
あるノード自らも、そのノードの祖先ノードに該当するものとする。
【0056】
図7は、親ノードの例を示す図である。
図7の例で、ノードaから1つのエッジを経由してノードdに至る。従って、ノードaはノードdの親ノードに該当する。親ノードは祖先ノードの一種なので、ノードaはノードdの祖先ノードである。
また、ノードcからは、ノードaを経由してノードdに至る道がある。従って、ノードcはノードaの祖先ノードである。
図7の例で、ノードc、aのそれぞれがノードdの祖先ノードである。
【0057】
道にハイパーエッジが含まれる場合、到達可能性判定問題で到達可能と判定されるためには、そのハイパーエッジの全ての上流側接続ノードに到達可能である必要がある。これに対し、祖先の関係または親の関係に関しては、ハイパーエッジの上流側接続ノードの何れか1つへの道があればよく、全ての上流側接続ノードに到達可能である必要はない。言い換えれば、あるノードxの祖先ノードは、
図11および12を参照して後述するようにハイパーエッジを単エッジに置き換えたグラフで、ノードxを終端とする道の始点となり得る任意のノードである。
図7の例で、ノードdはノードiの親ノードである。ノードeもノードiの親ノードである。また、ノードc、a、d、eのそれぞれがノードiの祖先ノードである。
【0058】
推移閉包情報生成部192が、ノード集合の要素が推移閉包情報における到達先のノードの祖先ノードに限定された推移閉包情報を生成するようにしてもよい。ノード集合の要素が推移閉包情報における到達先のノードの祖先ノードに限定された推移閉包情報を、祖先推移閉包情報と称する。
【0059】
図8は、祖先推移閉包情報の例を示す図である。
図8では、
図7のノードdの祖先推移閉包情報の木構造表現の例を示している。
図7のグラフでノードdの先祖ノードはノードc、a、dの各々である。これに対応して、
図8の木は、ノード「c」、「¬c」、「a」、「¬a」、「d」、「¬d」の各々のを有している。ノード「c」は、出発元ノード集合にノードcが含まれることを示す。ノード「¬c」は、出発元ノード集合にノードcが含まれないことを示す。ノード「a」は、出発元ノード集合にノードaが含まれることを示す。ノード「¬a」は、出発元ノード集合にノードaが含まれないことを示す。ノード「d」は、出発元ノード集合にノードdが含まれることを示す。ノード「¬d」は、出発元ノード集合にノードdが含まれないことを示す。
【0060】
図7の例では、ノードc、a、dのうち何れか1つ以上が出発元ノード集合に含まれていることが、ノードdに到達可能であるための必要十分条件である。これに対応して、
図8の木の葉のうち、根からノード「¬c」、「¬a」、「¬d」を経由して至る葉のみ値が「0」になっており、それ以外の葉の何れも値が「1」になっている。
【0061】
また、
図7の例で、祖先ノード以外のノードであるノードeからノードxまでは、そのノードが出発元ノード集合に含まれているか否かがノードdへの到達可能性に影響しない。
このように、到達先ノードの祖先ノード以外のノードは、そのノードが出発元ノード集合に含まれているか否かが到達先ノードへの到達可能性に影響しないドントケア(Don't Care)として扱うことができる。これにより、祖先推移閉包情報を用いて、祖先ノードに限らず有向ハイパーグラフの任意のノードを要素とする出発元ノード集合から到達先ノードへの到達可能性を示すことができる。
【0062】
例えば、出発元ノート集合に対して到達先ノードの祖先ノードを抽出するフィルタリングを行うことで、到達先ノードの祖先ノードに要素が限定された出発元ノード集合を得られる。この場合、フィルタリング前の出発元ノード集合から到達先ノードへの到達可能性は、フィルタリング後の出発元ノード集合から到達先ノードへの到達可能性と同じである。従って、フィルタリング後の出発元ノード集合を祖先推移閉包情報に適用することで、フィルタリング前の出発元ノード集合から到達先ノードへの到達可能性を知ることができる。
【0063】
あるいは、推移閉包情報生成部192が、有向ハイパーグラフの全てのノードの部分集合の各々から到達先ノードへの到達可能性を示す推移閉包情報を生成するようにしてもよい。すなわち、推移閉包情報生成部192が、有向ハイパーグラフの全てのノードのうち1つ以上のノードの任意の組み合わせについて、その組み合わせによるノード集合から到達先のノードへの到達可能性を示す推移閉包情報を生成するようにしてもよい。
【0064】
有向ハイパーグラフの全てのノードのうち1つ以上のノードの任意の組み合わせについて、その組み合わせによるノード集合から到達先のノードへの到達可能性を示す推移閉包情報を、全推移閉包情報と称する。 xを有向ハイパーグラフにおける任意のノードとして、ノードxの全推移閉包情報をallcomb(x)と表記する。例えば、
図7のノードdの全推移閉包情報allcomb(d)は、式(5)のように示される。
【0065】
【0066】
また、ノードxの祖先推移閉包情報をcomb(x)と表記する。例えば、
図7のノードdの祖先推移閉包情報comb(d)は、式(6)のように示される。
【0067】
【0068】
推移閉包情報生成部192が、到達先ノードの親ノードの祖先推移閉包情報を用いて到達先ノードの祖先推移閉包情報を生成するようにしてもよい。
図9は、到達先ノードに対する親ノードの構成の第1例を示す図である。
図9の例で、ノードxは、推移閉包情報生成部192が祖先推移閉包情報を生成する対象の到達先ノードである。ノードxを下流側接続ノードとして、エッジe
1からe
mまで(mは正整数)がノードxに接続している。エッジe
j(jは、1≦j≦mの正整数)が単エッジである場合、エッジe
jの上流側接続ノードは1つであり、これを「t
j(e
j)」と表記する。エッジe
jがハイパーエッジである場合、エッジe
jの上流側接続ノードの数をn(nは、n≧2の正整数)として、上流側接続ノードを「t
1(e
j)」、・・・、「t
n(e
j)」と表記する。
【0069】
推移閉包情報生成部192は、以下のようにしてノードxの祖先推移閉包情報comb(x)を生成することができる。
ノードxの入次数0の場合、推移閉包情報生成部192は、comb(x)を式(7)のように算出する。
【0070】
【0071】
ノードの入次数とは、そのノードを下流側接続ノードとしてそのノードに接続するエッジの数である。従ってノードxの入次数0は、ノードxに到達する道が1つも存在しないことを示す。
一方、ノードxの入次数が1以上である場合、推移閉包情報生成部192は、comb(x)を式(8)のように算出する。
【0072】
【0073】
図9を参照して説明したように、mはエッジの数を示す。
Π(A)は、集合Aのべき集合を示す。
anc(x)は、祖先ノードの集合からノードxを除いた集合を示す。すなわち、anc(x)の説明においてはノードxの祖先ノードにノードx自らを含まないものとして、anc(x)はノードxの祖先ノードを示す。
式(8)におけるエッジe
jをeと表記し、エッジeの上流側接続ノードの数を|e|と表記して、「*
i=1
|e|comb’(t
i(e))」は、式(9)のように示される。
【0074】
【0075】
また、「*j=1
|e|comb’(ti(e))」をSjで表して、「∨j=1
mSj」は、式(10)のように示される。
【0076】
【0077】
comb’(ti(e))は、式(11)のように示される。
【0078】
【0079】
comb(ti(ej))は、ノードti(ej)の祖先ノードからノードti(ej)を除いたノードを出発元ノード集合の対象とした場合の、ノードti(ej)に到達可能なノード集合を示す。comb’(ti(ej))は、ノードxの祖先ノードからノードxを除いたノードを出発元ノード集合の対象とした場合の、ノードti(ej)に到達可能なノード集合を示す。推移閉包情報生成部192は、式(11)の演算にて、comb(ti(ej))に基づいてcomb’(ti(ej))を算出する。
【0080】
そして、推移閉包情報生成部192は、式(8)の「*i=1
|ej|comb’(ti(ej))」の演算にて、エッジejを経由可能なノード集合を算出する。特に、推移閉包情報生成部192は、エッジejがハイパーエッジである場合に、エッジejの全ての上流側接続ノードに到達可能なノード集合を算出する。
【0081】
そして、推移閉包情報生成部192は、式(8)の「∨j=1
m*i=1
|ej|comb’(ti(ej))」の演算にて、何れか1つ以上のエッジを経由してノードxに到達可能なノード集合を算出する。
また、推移閉包情報生成部192は、式(8)の「Π(anc(x))*{x}の演算にて、ノードxに到達可能なノード集合のうちノードx自身を含むノード集合を算出する。
【0082】
そして、推移閉包情報生成部192は、式(8)の「∨」に示されるように、何れか1つ以上のエッジを経由してノードxに到達可能なノード集合と、ノードxに到達可能なノード集合のうちノードx自身を含むノード集合とを組み合わせることで、ノードxの祖先推移閉包情報comb(x)を算出する。
なお、祖先推移閉包情報を求める演算で、1つの集合内に同じノードまたは同じノード集合が現れた場合は、同一のものなので統合する。具体的には、同じノードまたは同じノード集合のうちいずれか1つを残して他を削除する。例えば、推移閉包情報生成部192は、演算結果が{・・・,x,x,・・・}となった場合、この演算結果を{・・・,x,・・・}に更新する。
【0083】
図10に示す例を用いて、推移閉包情報生成部192が祖先推移閉包情報を生成する処理について、より具体的に説明する。
図10は、到達先ノードに対する親ノードの構成の第2例を示す図である。
図10の例で、ノードxは、推移閉包情報生成部192が祖先推移閉包情報を生成する対象の到達先ノードである。エッジE31とエッジE32とが、ノードxを下流側接続ノードとしてノードxに接続している。エッジE31は、ノードaおよびbを上流側接続ノードとするハイパーエッジである。エッジE32は、ノードcを上流側接続ノードとする単エッジである。
従って、ノードa、b、cの各々が、ノードxの親ノードである。
ノードaの入次数を0として、ノードaの祖先推移閉包情報comb(a)が式(12)のように示されるものとする。
【0084】
【0085】
ノードbの入次数を0として、ノードbの祖先推移閉包情報comb(b)が式(13)のように示されるものとする。
【0086】
【0087】
ノードcの入次数を0として、ノードcの祖先推移閉包情報comb(c)が式(14)のように示されるものとする。
【0088】
【0089】
この場合、推移閉包情報生成部192は、comb’(a)を式(15)のように算出する。
【0090】
【0091】
また、推移閉包情報生成部192は、comb’(b)を式(16)のように算出する。
【0092】
【0093】
また、推移閉包情報生成部192は、comb’(c)を式(17)のように算出する。
【0094】
【0095】
推移閉包情報生成部192は、comb’(a)、comb’(b)およびcomb’(c)を用いて、comb(x)を式(18)のように算出する。
【0096】
【0097】
あるいは、推移閉包情報生成部192が、到達先ノードの親ノードの全推移閉包情報を用いて到達先ノードの全推移閉包情報を生成するようにしてもよい。
推移閉包情報生成部192が到達先ノード(ノードx)の全推移閉包情報allcomb(x)を生成する場合、例えば以下のようにする。
ノードxの入次数0の場合、推移閉包情報生成部192は、allcomb(x)を、有向ハイパーグラフの全てのノードを要素とする集合の部分集合のうち、ノードxを含む全ての部分集合の集合とする。この場合、allcomb(x)は、式(19)のように示される。
【0098】
【0099】
Sallは、有向ハイパーグラフの全てのノードの集合である。
一方、ノードxの入次数が1以上である場合、推移閉包情報生成部192は、allcomb(x)を式(20)のように算出する。
【0100】
【0101】
式(20)で、「∨j=1
m」および「*i=1
|ej|」は、式(8)の場合と同様である。
全推移閉包情報の場合、到達先ノードが何れのノードであっても、有向ハイパーグラフの全てのノードが、出発元ノード集合の対象となっている。従って、祖先推移閉包情報の場合にcombからcomb’を算出するような、出発元ノード集合の対象の変更は生じない。そこで、推移閉包情報生成部192は、allcomb(ti(ej))をそのまま式(20)の右辺に用いて、allcomb(x)を算出する。
【0102】
推移閉包情報生成部192は、式(20)の「*i=1
|ej|allcomb(ti(ej))」の演算にて、エッジejを経由可能なノード集合を算出する。特に、推移閉包情報生成部192は、エッジejがハイパーエッジである場合に、エッジejの全ての上流側接続ノードに到達可能なノード集合を算出する。
【0103】
そして、推移閉包情報生成部192は、式(20)の「∨j=1
m*i=1
|ej|allcomb(ti(ej))」の演算にて、何れか1つ以上のエッジを経由してノードxに到達可能なノード集合を算出する。
また、推移閉包情報生成部192は、式(20)の「Π(Sall\{x})*{x}の演算にて、ノードxに到達可能なノード集合のうちノードx自身を含むノード集合を算出する。
【0104】
そして、推移閉包情報生成部192は、式(20)の「∨」に示されるように、何れかの1つ以上のエッジを経由してノードx自身を含まないノード集合と、ノードxに到達可能なノード集合のうちノードx自身を含むノード集合とを組み合わせることで、ノードxの祖先推移閉包情報comb(x)を算出する。
なお、祖先推移閉包情報の場合と同様、全推移閉包情報を求める演算で、1つの集合内に同じノードまたは同じノード集合が現れた場合は、同一のものなので統合する。具体的には、推移閉包情報生成部192は、同じノードまたは同じノード集合のうちいずれか1つを残して他を削除する。
【0105】
順番決定部191は、有向ハイパーグラフのノードの順番を決定する。推移閉包情報生成部192は、順番決定部191が決定した順番で、各ノードの祖先推移閉包情報または全推移閉包情報を生成する。
順番決定部191は、有向ハイパーグラフのノードの順番を、祖先ノードが先になる順番に決定する。これにより、推移閉包情報生成部192は、到達先ノードの全ての親ノードについて祖先推移閉包情報または全推移閉包情報が得られた状態で、到達先ノードの祖先推移閉包情報または全推移閉包情報を生成することができる。
【0106】
順番決定部191がノードの順番を決定する方法として、トポロジカルソート(Topological Sort)を用いることができる。トポロジカルソートは、単エッジの有向グラフのノードの順番を決定するための公知の方法である。
トポロジカルソートを用いるために、順番決定部191は、有向ハイパーグラフのハイパーエッジを単エッジの組み合わせに置き換える。
【0107】
図11は、ハイパーエッジから単エッジへの置き換え前のグラフの例を示す図である。
図11に示すグラフは、エッジE41などハイパーエッジを含んでいる。
図12は、ハイパーエッジから単エッジへの置き換え後のグラフの例を示す図である。
図12は、
図11に示すグラフのハイパーエッジを単エッジに置き換えた例を示している。例えば、
図11のエッジE41は、
図12ではエッジE51とE52とに置き換えられている。このように、ハイパーエッジを、その上流側接続ノードから下流側接続ノードへの、上流側接続ノードの数と同数の単エッジに置き換えることで、親の関係を保ってエッジを置き換えることができる。
【0108】
順番決定部191は、例えば、エッジの置き換え後のグラフにトポロジカルソートを適用して、ノードの順番を式(21)に示される順番に決定する。
【0109】
【0110】
このように、順番決定部191は、有向ハイパーグラフのハイパーエッジを単エッジに置き換えた有向グラフに対するトポロジカルソートにより、有向ハイパーグラフのノードの順番を決定する。推移閉包情報生成部192は、順番決定部191が決定した順番で各ノードの推移閉包情報を生成する。 推移閉包情報生成部192が式(17)に示される順番で祖先推移閉包情報または全推移閉包情報を生成することで、全ての親ノードについて祖先推移閉包情報または全推移閉包情報がある状態で、祖先推移閉包情報または全推移閉包情報を生成することができる。例えば、推移閉包情報生成部192がノードiの祖先推移閉包情報を生成する際、親ノードであるノードd、e、hの何れについても祖先推移閉包情報を生成済みである。
【0111】
但し、順番決定部191がノードの順番を決定する方法は、トポロジカルソートを用いる方法に限定されない。順番決定部191がノードの順番を決定する方法は、祖先ノードに先の順番が割り当てられる方法であればよい。
【0112】
次に、
図13から
図15までを参照して、推移閉包情報生成装置100の動作について説明する。
図13は、推移閉包情報生成装置100が有向ハイパーグラフの各ノードについて推移閉包情報を生成する処理手順の例を示すフローチャートである。
図13の処理で、入出力部110は、有向ハイパーグラフを取得する(ステップS11)。順番決定部191は、ステップS11で得られた有向ハイパーグラフのノードをソートする(ステップS12)。ここでいうソートは、ノードの順番付けを行うことである。順番決定部191が、有向ハイパーグラフのノードをトポロジカルソートするようにしてもよい。
【0113】
次に、制御部190は、有向ハイパーグラフの各ノードに対する処理を行うループL1を開始する(ステップS13)。制御部190は、ループL1で、有向ハイパーグラフの各ノードを、順番決定部191によるソートの順番で処理する。ループL1で処理対象になっているノードを対象ノードと称する。
ループL1の処理で、推移閉包情報生成部192は、対象ノードの推移閉包情報を生成する(ステップS14)。
【0114】
そして、制御部190は、ループL1の終端処理を行う(ステップS15)。具体的には、制御部190は、有向ハイパーグラフの全てのノードに対してループL1の処理を完了したか否かを判定する。未処理のノードがあると制御部190が判定した場合、処理がステップS13へ戻り、制御部190は、未処理のノードに対して引き続きループL1の処理を行う。
一方、全てのノードに対してループL1の処理を完了したと判定した場合、制御部190は、ループL1を終了する。
【0115】
制御部190がループL1を終了すると、入出力部110が、得られた推移閉包情報を出力する(ステップS16)。
ステップS16の後、制御部190は、
図13の処理を終了する。
【0116】
図14は、推移閉包情報生成部192が1つのノードの祖先推移閉包情報を生成する処理手順の例を示すフローチャートである。推移閉包情報生成部192は、
図13のステップS14で
図14の処理を行う。
図14の処理で、推移閉包情報生成部192は、到達先ノードを下流側接続ノードとして到達先ノードに接続しているエッジを検出する(ステップS21)。
図14の処理の説明、および、
図15の処理の説明では、到達先ノードを下流側接続ノードとして到達先ノードに接続しているエッジを、対象のエッジと称する。
【0117】
そして、推移閉包情報生成部192は、対象エッジの有無を判定する(ステップS22)。
対象のエッジが無いと判定した場合(ステップS22:NO)、到達先ノード(ノードx)の入次数は0であり、推移閉包情報生成部192は、式(7)を用いて祖先推移閉包情報を生成する(ステップS27)。
ステップS27の後、推移閉包情報生成部192は、
図14の処理を終了する。
【0118】
一方、ステップS22で、対象エッジが有ると判定した場合(ステップS22:YES)、推移閉包情報生成部192は、到達先ノードの親ノードの各々に対して処理を行うループL2を開始する(ステップS23)。対象エッジの上流側接続ノードの各々が、到達先ノードの親ノードの各々に該当する。
ループL2の処理で、推移閉包情報生成部192は、式(11)に基づいて「comb’(ti(ej))」の演算を行う(ステップS24)。
【0119】
そして、推移閉包情報生成部192は、ループL2の終端処理を行う(ステップS25)。具体的には、推移閉包情報生成部192は、全ての親ノードについてループL2の処理を完了したか否かを判定する。未処理の親ノードがあると推移閉包情報生成部192が判定した場合、処理がステップS23へ戻り、推移閉包情報生成部192は、未処理の親ノードについて引き続きループL2の処理を行う。
一方、全ての親ノードについてループL2の処理を完了したと判定した場合、推移閉包情報生成部192は、ループL2を終了する。
【0120】
ループL2を終了すると、推移閉包情報生成部192は、式(8)の親ノード毎に算出したcomb’(t
i(e
j))を用いてcomb(x)の演算を行う(ステップS26)。
ステップS26の後、推移閉包情報生成部192は、
図14の処理を終了する。
【0121】
図15は、推移閉包情報生成部192が1つのノードの全推移閉包情報を生成する処理手順の例を示すフローチャートである。推移閉包情報生成部192は、
図13のステップS14で、
図14の処理に代えて
図15の処理を行う。
図15のステップS31からS32までは、
図14のステップS21からS22までと同様である。
【0122】
ステップS32で対象のエッジが無いと判定した場合(ステップS32:NO)、到達先ノード(ノードx)の入次数は0であり、推移閉包情報生成部192は、式(19)を用いて全推移閉包情報allcomb(x)を算出する(ステップS34)。この場合、推移閉包情報生成部192は、全推移閉包情報allcomb(x)を、到達先ノード(ノードx)を含む全ての始点ノード集合の集合に設定する。
ステップS34の後、推移閉包情報生成部192は、
図15の処理を終了する。
【0123】
一方、ステップS32で、対象エッジが有ると判定した場合(ステップS32:YES)、推移閉包情報生成部192は、式(20)を用いて全推移閉包情報allcomb(x)を算出する(ステップS33)。
ステップS33の後、推移閉包情報生成部192は、
図15の処理を終了する。
【0124】
以上のように、入出力部110は、有向ハイパーグラフを取得する。推移閉包情報生成部192は、得られた有向ハイパーグラフのノードのうち少なくとも1つのノードについて、そのノードへ到達可能なノード集合を示す推移閉包情報を、そのノードの親ノードの推移閉包情報を用いて生成する。
推移閉包情報生成部192は、親ノードの推移閉包情報を利用することで、到達可能性の判定に用いるための推移閉包情報を比較的効率よく生成できる。特に、推移閉包情報生成部192は、親ノードの推移閉包情報を利用せず実際に有向ハイパーグラフを辿って到達先ノードに到達可能な出発元ノード集合を検出する処理を繰り返す場合よりも、推移閉包情報を効率よく生成できる。
【0125】
また、順番決定部191は、有向ハイパーグラフのハイパーエッジを単エッジに置き換えた有向グラフに対するトポロジカルソートにより、有向ハイパーグラフのノードの順番を決定する。推移閉包情報生成部192は、順番決定部191が決定した順番で各ノードの推移閉包情報を生成する。
これにより、推移閉包情報生成部192は、何れのノードの推移閉包情報を生成する場合も、そのノードに親ノードがあれば、親ノードの推移閉包情報を生成済みである。従って、推移閉包情報生成部192は、親ノードの推移閉包情報を利用可能であり、この点で、推移閉包情報を効率よく生成できる。
【0126】
また、推移閉包情報生成部192は、祖先推移閉包情報を生成する。
祖先推移閉包情報は、全推移閉包情報よりも小さいデータ容量で、全推移閉包情報と同内容の情報を示すことができる。推移閉包情報生成部192は、祖先推移閉包情報を生成することで、必要な記憶容量が比較的小さくて済む。
【0127】
また、推移閉包情報生成部192は、全推移閉包情報を生成する。
全推移閉包情報を用いて到達可能性の判定を行う場合、始点ノード集合から終点ノードの祖先ノードを抽出するフィルタリング処理が不要である。この点で、到達可能性の判定を行う際の処理を簡単化できる。
【0128】
次に、
図16を参照して本発明の実施形態の構成について説明する。
図16は、本発明の実施形態に係る推移閉包情報生成装置の構成の例を示す図である。
図16に示す推移閉包情報生成装置10は、グラフ取得部11と、推移閉包情報生成部12とを備える。
かかる構成にて、グラフ取得部11は、有向ハイパーグラフを取得する。推移閉包情報生成部12は、得られた有向ハイパーグラフのノードのうち少なくとも1つのノードの推移閉包情報を、そのノードの親ノードの推移閉包情報を用いて生成する。
これにより、推移閉包情報生成装置10は、親ノードの推移閉包情報を利用することで、推移閉包情報を比較的効率よく生成できる。特に、推移閉包情報生成装置10は、親ノードの推移閉包情報を利用せず実際に有向ハイパーグラフを辿って到達先ノードに到達可能な出発元ノード集合を検出する処理を繰り返す場合よりも、推移閉包情報を効率よく生成できる。
【0129】
なお、制御部190の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することで各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0130】
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【産業上の利用可能性】
【0131】
本発明の実施形態は、推移閉包情報生成装置、推移閉包情報生成方法および記録媒体に適用してもよい。
【符号の説明】
【0132】
1、100 推移閉包情報生成装置
11 グラフ取得部
12、192 推移閉包情報生成部
110 入出力部
180 記憶部
190 制御部
191 順番決定部