特許第6704929号(P6704929)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ キンダイ、インコーポレイテッドの特許一覧

特許6704929組み合わせハイパーマップベースのデータ表現および演算のための装置および方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6704929
(24)【登録日】2020年5月15日
(45)【発行日】2020年6月3日
(54)【発明の名称】組み合わせハイパーマップベースのデータ表現および演算のための装置および方法
(51)【国際特許分類】
   G06F 16/28 20190101AFI20200525BHJP
【FI】
   G06F16/28
【請求項の数】31
【全頁数】39
(21)【出願番号】特願2017-550087(P2017-550087)
(86)(22)【出願日】2015年12月10日
(65)【公表番号】特表2018-506810(P2018-506810A)
(43)【公表日】2018年3月8日
(86)【国際出願番号】US2015065043
(87)【国際公開番号】WO2016094687
(87)【国際公開日】20160616
【審査請求日】2018年12月10日
(31)【優先権主張番号】62/090,190
(32)【優先日】2014年12月10日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】517204427
【氏名又は名称】キンダイ、インコーポレイテッド
【氏名又は名称原語表記】KYNDI, INC.
(74)【代理人】
【識別番号】100091982
【弁理士】
【氏名又は名称】永井 浩之
(74)【代理人】
【識別番号】100091487
【弁理士】
【氏名又は名称】中村 行孝
(74)【代理人】
【識別番号】100082991
【弁理士】
【氏名又は名称】佐藤 泰和
(74)【代理人】
【識別番号】100105153
【弁理士】
【氏名又は名称】朝倉 悟
(74)【代理人】
【識別番号】100202429
【弁理士】
【氏名又は名称】石原 信人
(72)【発明者】
【氏名】アルン、マジュムダール
【審査官】 鹿野 博嗣
(56)【参考文献】
【文献】 特表2003−533752(JP,A)
【文献】 国際公開第2006/029962(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/28
(57)【特許請求の範囲】
【請求項1】
回路においてグラフデータを表現および比較する方法であって、
前記回路により、一般化組み合わせハイパーマップとして前記グラフデータを表現するステップと、
前記回路により、固定点自由対合のアレイを含む複数の数字のアレイを使用して前記一般化組み合わせハイパーマップのサブマップを全単射的に表現するステップと、
前記回路により、ゲーデル数に前記複数の数字のアレイを全単射的にマッピングするステップと、
前記回路により、前記サブマップを表現する前記ゲーデル数と他のサブマップを表現するゲーデル数を比較することによって、前記一般化組み合わせハイパーマップの前記サブマップを前記別のサブマップと比較し、それにより前記グラフデータの構成および統合を効率的に実行するためにサブマップ間の同型性を判定するステップと、
を備える方法。
【請求項2】
前記回路により、他のサブマップと同型であると判定された前記一般化組み合わせハイパーマップのサブマップのトポロジを含むように構成パターンのデータベースをコンパイルし、前記一般化組み合わせハイパーマップの前記サブマップが、前記一般化組み合わせハイパーマップの前記サブマップに含まれ、前記他のサブマップが、前記他のサブマップに含まれるようにするステップと、
前記回路により、前記一般化組み合わせハイパーマップのそれぞれのサブマップが同型であると判定されたときに、前記一般化組み合わせハイパーマップの前記それぞれのサブマップの統合を実行するステップ、
をさらに含む請求項1に記載の方法。
【請求項3】
前記一般化組み合わせハイパーマップが、一般化組み合わせマップである請求項1に記載の方法。
【請求項4】
前記ゲーデル数が、自然数またはツリーベースの数の1つを使用して表現される請求項1に記載の方法。
【請求項5】
前記ツリーベースの数が、自己区切り3ビットコードを使用して表現される請求項4に記載の方法。
【請求項6】
前記一般化組み合わせハイパーマップの前記サブマップと前記他のサブマップの前記比較が、前記一般化組み合わせハイパーマップと前記他のサブマップとの間に同型性が存在するかどうかを判定する請求項1に記載の方法。
【請求項7】
前記一般化組み合わせハイパーマップと前記別のサブマップとの間に同型性が存在するかどうかの前記判定が、Weisfeiler−Lehmanテストを使用して実行される請求項6に記載の方法。
【請求項8】
ゲーデル数に前記複数の数字のアレイを全単射的にマッピングすることが、
前記回路により、前記一般化組み合わせハイパーマップの前記サブマップを項ツリーに変換するステップと、
前記回路により、前記項ツリーを使用して前記固定点自由対合を判定するステップと、
を含む請求項1に記載の方法。
【請求項9】
ゲーデル数に前記複数の数字のアレイを前記全単射的にマッピングすることが、
前記回路により、隣接する数字の対を単一の数字に構成して前記複数のアレイで隣接する数字の対を全単射的に表現する前記単一の数字を生成することによって、前記複数の数字のアレイの前記隣接する数字の対でカントール対関数を使用して、数字構成を実行するステップと、
前記回路により、前記生成された単一の数字および前記隣接する対の隣にある前記複数の数字のアレイの次の数字で前記カントール対関数を使用して、数字構成を実行して次の単一の数字を生成するステップと、
前記回路により、直前の反復に対応する生成された単一の数字および現在の反復に対応する前記複数の数字のアレイの数字の前記カントール対関数を使用することによって、現在の反復に対応する単一の数字の生成を前記複数の数字のアレイの各残りの数字に対して繰り返すステップと、
によって実行される請求項1に記載の方法。
【請求項10】
前記グラフデータが、ニューラルネットワーク、セマンティックネットワーク、ソーシャルネットワーク、ストーリーのネットワーク、シナリオ、トラフィックパス、地理情報システムマップ、および分子構造の1つまたは複数を表現する請求項1に記載の方法。
【請求項11】
前記一般化組み合わせハイパーマップが、ノードと、それぞれの前記ノードから延びるダーツと、前記ダーツのそれぞれの対を含むエッジと、それぞれの前記エッジを含むエッジ隣接面とを含む請求項1に記載の方法。
【請求項12】
前記一般化組み合わせハイパーマップが、ノードを含み、それぞれのノードが、対応するデータオブジェクトへの対応するポインタを含む請求項1に記載の方法。
【請求項13】
前記対応するデータオブジェクトが、他の一般化組み合わせハイパーマップを含む請求項12に記載の方法。
【請求項14】
前記回路により、エッジをダーツにカットすることによって前記一般化組み合わせハイパーマップを分解するステップと、
前記回路により、それぞれの頂点が前記一般化組み合わせハイパーマップのそれぞれのエッジに隣接する場合、前記一般化組み合わせハイパーマップのそれぞれの前記頂点を対応するエッジ媒介ノードに関連付けるステップと、
前記回路により、前記一般化組み合わせハイパーマップのサブマップのサブセットへのインジケータとして、前記対応するエッジ媒介ノードへのそれぞれのダーツを識別するステップと、
前記回路により、前記一般化組み合わせハイパーマップのそれぞれの面を対応する面媒介ノードと関連付けるステップと、
前記回路により、前記一般化組み合わせハイパーマップの前記サブマップの他のサブセットへのインジケータとして、前記対応する面媒介ノードへのそれぞれのダーツを識別するステップと、
前記回路により、構造的に統合するサブマップが、前記サブマップが構造的に統合するレベルまで同型であるように、同型サブマップを統合するために上位レベルから下位レベルへと階層的な方法で前記サブマップを反復的に符号化してトラバースするステップと、
をさらに含む請求項1に記載の方法。
【請求項15】
前記グラフデータの前記構成および統合の前記実行が、
前記回路により、モデルマップとして前記他のサブマップを識別するステップと、
前記回路により、前記固定点自由対合を含むそれぞれの複数の数字のアレイを使用して、前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対してゲーデル数を生成するために前記一般化組み合わせハイパーマップの前記サブマップのダーツを選択することであって、各それぞれの複数の数字のアレイは、前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対応する選択するステップと、
前記回路により、前記モデルマップの項グラフの根を得るステップと、
前記回路により、前記根および前記根に隣接するノードのそれぞれのゲーデル数と前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対する前記ゲーデル数を比較して一致を判定するステップと、
前記回路により、一致が判定された場合、前記一般化組み合わせハイパーマップの前記サブマップの一部が前記別のサブマップの一部と同型であることをシグナリングするステップと、
によって実行される請求項1に記載の方法。
【請求項16】
グラフデータを表現および比較する装置であって、
一般化組み合わせハイパーマップとして前記グラフデータを表現し、
固定点自由対合のアレイを含む複数の数字のアレイを使用して前記一般化組み合わせハイパーマップのサブマップを全単射的に表現し、
ゲーデル数に前記複数の数字のアレイを全単射的にマッピングし、
前記サブマップを表現する前記ゲーデル数と他のサブマップを表現するゲーデル数を比較することによって、前記一般化組み合わせハイパーマップの前記サブマップを前記別のサブマップと比較し、それにより前記グラフデータの構成および統合を効率的に実行するためにサブマップ間の同型性を判定するための計算効率を向上させる、
処理回路、を備える装置。
【請求項17】
前記処理回路はさらに、
他のサブマップと同型であると判定された前記一般化組み合わせハイパーマップのサブマップのトポロジを含むように構成パターンのデータベースをコンパイルし、前記一般化組み合わせハイパーマップの前記サブマップが、前記一般化組み合わせハイパーマップの前記サブマップに含まれ、前記他のサブマップが、前記他のサブマップに含まれるようにし、
前記一般化組み合わせハイパーマップのそれぞれのサブマップが同型であると判定されたときに、前記一般化組み合わせハイパーマップの前記それぞれのサブマップの統合を実行する、
請求項16に記載の装置。
【請求項18】
前記一般化組み合わせハイパーマップが、一般化組み合わせマップである請求項16に記載の装置。
【請求項19】
前記ゲーデル数が、自然数またはツリーベースの数の1つを使用して表現される請求項16に記載の装置。
【請求項20】
前記ツリーベースの数が、自己区切り3ビットコードを使用して表現される請求項19に記載の装置。
【請求項21】
前記一般化組み合わせハイパーマップの前記サブマップと前記他のサブマップの前記比較が、前記一般化組み合わせハイパーマップと前記他のサブマップとの間に同型性が存在するかどうかを判定する請求項16に記載の装置。
【請求項22】
前記一般化組み合わせハイパーマップと前記別のサブマップとの間に同型性が存在するかどうかの前記判定が、Weisfeiler−Lehmanテストを使用して実行される請求項21に記載の装置。
【請求項23】
前記処理回路はさらに、
前記一般化組み合わせハイパーマップの前記サブマップを項ツリーに変換し、前記項ツリーを使用して前記固定点自由対合を判定することにより、ゲーデル数に前記複数の数字のアレイを全単射的にマッピングする、
請求項16に記載の装置。
【請求項24】
前記処理回路はさらに、
隣接する数字の対を単一の数字に構成して前記複数のアレイで隣接する数字の対を全単射的に表現する前記単一の数字を生成することによって、前記複数の数字のアレイの前記隣接する数字の対でカントール対関数を使用して、数字構成を実行し
前記生成された単一の数字および前記隣接する対の隣にある前記複数の数字のアレイの次の数字で前記カントール対関数を使用して、数字構成を実行して次の単一の数字を生成し、
直前の反復に対応する生成された単一の数字および現在の反復に対応する前記複数の数字のアレイの数字の前記カントール対関数を使用することによって、現在の反復に対応する単一の数字の生成を前記複数の数字のアレイの各残りの数字に対して繰り返すことにより、
ゲーデル数に前記複数の数字のアレイを前記全単射的にマッピングする、
請求項16に記載の装置。
【請求項25】
前記グラフデータが、ニューラルネットワーク、セマンティックネットワーク、ソーシャルネットワーク、ストーリーのネットワーク、シナリオ、トラフィックパス、地理情報システムマップ、および分子構造の1つまたは複数を表現する請求項16に記載の装置。
【請求項26】
前記一般化組み合わせハイパーマップが、ノードと、それぞれの前記ノードから延びるダーツと、前記ダーツのそれぞれの対を含むエッジと、それぞれの前記エッジを含むエッジ隣接面とを含む請求項16に記載の装置。
【請求項27】
前記一般化組み合わせハイパーマップが、ノードを含み、それぞれのノードが、対応するデータオブジェクトへの対応するポインタを含む請求項16に記載の装置。
【請求項28】
前記対応するデータオブジェクトが、他の一般化組み合わせハイパーマップを含む請求項27に記載の装置。
【請求項29】
前記処理回路はさらに、
エッジをダーツにカットすることによって前記一般化組み合わせハイパーマップを分解し、
それぞれの頂点が前記一般化組み合わせハイパーマップのそれぞれのエッジに隣接する場合、前記一般化組み合わせハイパーマップのそれぞれの前記頂点を対応するエッジ媒介ノードに関連付けし、
前記一般化組み合わせハイパーマップのサブマップのサブセットへのインジケータとして、前記対応するエッジ媒介ノードへのそれぞれのダーツを識別するステップと、
前記一般化組み合わせハイパーマップのそれぞれの面を対応する面媒介ノードと関連付けし、
前記一般化組み合わせハイパーマップの前記サブマップの他のサブセットへのインジケータとして、前記対応する面媒介ノードへのそれぞれのダーツを識別し、
構造的に統合するサブマップが、前記サブマップが構造的に統合するレベルまで同型であるように、同型サブマップを統合するために上位レベルから下位レベルへと階層的な方法で前記サブマップを反復的に符号化してトラバースする、
請求項16に記載の装置。
【請求項30】
前記処理回路はさらに、
モデルマップとして前記他のサブマップを識別し、
前記固定点自由対合を含むそれぞれの複数の数字のアレイを使用して、前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対してゲーデル数を生成するために前記一般化組み合わせハイパーマップの前記サブマップのダーツを選択することであって、各それぞれの複数の数字のアレイは、前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対応する選択し、
前記モデルマップの項グラフの根を得、
前記根および前記根に隣接するノードのそれぞれのゲーデル数と前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対する前記ゲーデル数を比較して一致を判定し、
一致が判定された場合、前記一般化組み合わせハイパーマップの前記サブマップの一部が前記別のサブマップの一部と同型であることをシグナリングすることにより、
前記グラフデータの前記構成および統合を実行する、
請求項16に記載の装置。
【請求項31】
実行可能な命令であって、回路によって実行されると、前記回路に請求項1に記載の方法を実行させる命令を備える、非一時的なコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2014年12月10日に出願された米国仮出願第62/090,190号に基づき、その優先権の利益を主張するものであり、その全内容は参照により本明細書に組み込まれる。
【0002】
本明細書で開示される実施形態は、一般に、固有の可逆コード、および項代数を組み合わせハイパーマップ(CHYMAPS:Combinatorial Hyper Maps)に埋め込むツリーベースのナンバリングシステムを使用してCHYMAPSを符号化するための方法および装置に関し、より具体的には、装置および方法は、項代数の演算に対して可逆的で無損失(すなわち、全単射)であるナンバリングの複雑なデータ構造表現、パターン認識、サブグラフの高速統合、および算術演算を提供する。
【背景技術】
【0003】
本明細書で提供される背景技術の説明は、本開示の文脈を一般的に提示することを目的とするものである。本発明者らの仕事は、この背景技術の項に記載されている範囲内のものであり、出願時に先行技術としての資格を有さないかもしれない説明の態様は、本開示に対して先行技術として明示的にも暗示的にも認められることはない。
【0004】
検索エンジン、リレーショナルデータベースシステム、グラフ表現、ならびに大部分の構造データ表現および計算システムは、データが整数として記憶されるという性質を有する。これらの整数の符号化、演算、および復号化は、かなりのCPU時間を消費する。したがって、データの縮小されたサイズまたは圧縮および解凍スキームで演算することによって、計算に関連するコストを削減するためのかなりの努力がなされてきた。
【発明の概要】
【課題を解決するための手段】
【0005】
組み合わせハイパーマップ(CHYMAPS)、一般化組み合わせマップ(G−Maps)、および/または項代数項としてデータを表現することを実装し、自然数またはツリーベースの数としてそれらを符号化するための方法および装置が提供される。方法および装置はさらに、データ表現の同型サブマップにわたって統合プロセスを実行することを含む。方法はまた、高速アルゴリズムを使用して項代数をツリーベースの数にマッピングし、可逆数値符号化および復号化を使用してCHYMAPSとしてマッピング構造のグラフを表現することと、サブマップ(サブグラフ)のために最適化された形態のCHYMAPSの表現を生成し、同型性および部分マッチングと一般的なマッチングプロセスをマッピング(グラフ化)することと、CHYMAPSの演算をそれぞれの数値表現の演算として実行することと、3ビットの自己区切りバイナリコードを使用して圧縮および解凍を実行することと、コードを記憶および検索することと、を含む演算を含む。
【0006】
本開示のより完全な理解は、添付の図面と併せて検討したとき、以下の詳細な説明を参照することによって提供される。
【図面の簡単な説明】
【0007】
図1】一実装形態による、自然数またはツリーベースの数とすることができ、グラフまたは項代数項の同型サブマップの統合を実行することができるゲーデル数としてグラフまたは項代数項を符号化する方法のフロー図である。
図2】一実装形態による、自然数またはツリーベースの数とすることができるゲーデル数としてグラフまたは項代数項を符号化するプロセスのフロー図である。
図3A】一実装形態による、グラフの図である。
図3B】一実装形態による、グラフの組み合わせマップの図である。
図3C】別の実装形態による、グラフの組み合わせマップの図である。
図3D】一実装形態による、別のグラフの図である。
図3E】一実装形態による、別のグラフの組み合わせマップの図である。
図4A】一実装形態による、自然数として固定点自由対合を全単射符号化する方法のフロー図である。
図4B】一実装形態による、自然数を固定点自由対合に全単射復号化する方法のフロー図である。
図5】一実装形態による、グラフ(入力グラフ)から項ツリー(出力サブマップ)への変換を示す図である。
図6】一実装形態による、基本的な構成パターンのディクショナリを形成するサブマップの例を示す図である。
図7】一実装形態による、同型サブマップ(すなわち、サブグラフ)の統合を実行するためにロケールを反復的に符号化してトラバースするデュアルステップアルゴリズムの例を示す図である。
図8】一実装形態による、サブマップ間の同型性を評価する方法のフロー図である。
図9】一実装形態による、サブマップ間の同型性を評価する方法のフロー図である。
図10】一実装形態による、組み合わせハイパーマップのダーツをラベル付けする方法のフロー図である。
図11】一実装形態による、自然数またはツリーベースの数として項代数項を全単射的に符号化する方法のフロー図である。
図12】一実装形態による、自然数として項代数項を全単射的に符号化する例を示す図である。
図13】一実装形態による、シンボルシーケンスを使用して組み合わせハイパーマップのダーツをラベル付けする方法のフロー図である。
図14】一実装形態による、項代数項および項ツリーを符号化する方法のフロー図である。
図15】一実装形態による、項代数項から項グラフを生成する方法のフロー図である。
図16】一実装形態による、項グラフ統合を実行する方法のフロー図である。
図17】一実装形態による、コンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【0008】
グラフは、多くの活動分野で知識および関係の強力な表現を提供することができる。グラフデータベースは、データの表の代わりにグラフ構造を記憶する。通常、グラフデータベースは、ニューラルネットワーク、セマンティックネットワーク、ソーシャルネットワーク、関連するストーリーのネットワーク、シナリオ、ルート、パス、道路、または地理情報システム(GIS)などの複雑なトポロジカル情報の記憶および検索を必要とするドメインに適用可能である。グラフデータベースの主な課題の1つは、構造マッチングに基づいたメンバーグラフの検索である。グラフの構造マッチングは、公知のNP完全問題である。大きいグラフデータベースでは、データベースの膨大な数のグラフに対して構造マッチングを実行する必要があるため、構造マッチングは非常に困難となる。動的トポロジカルグラフデータベースからの検索は、分解空間がなく、空間が常に動的に変化するため、事前にインデックスされたプロパティベースのグラフデータベースからの検索よりはるかに困難である。
【0009】
本明細書に記載の方法および装置は、高速ロジックに基づく推論のためにグラフ構造を一致させる機能を提供する。知識表現モデルを使用して、情報はグラフとして表現される。これらのグラフは、一般化組み合わせマップ(G−Maps)に変換することができる。グラフ構造に対する一般化組み合わせマップ(G−Map)の表現を使用して、アルゴリズムは、G−Maps内に固有のロケールとしてラティスパスのプロパティを使用して、グラフ構造のサブグラフがロケールに基づいて同型であるかどうかを判定する。ロケールが超球面の中心からの角度によってスイープされたエリアに近似する実数によって表現されると仮定すると、それはパーミュテーショナルコンプレックス(Permutohedral Complex)のその量子化された細分化から得られ、同型性テストのための候補サブグラフは、低多項式時間または最良のログ(N)時間で達成することができる。アルゴリズムは、各ロケールにCHYMAP−NUMBERインデックスを使用することで、所与のグラフ構造で同型であるロケールを素早く識別することができる。
【0010】
組み合わせマップ(ハイパーマップ)は、グラフ(ハイパーグラフ)のトポロジカル表現となり得、有限のダーツ(darts)のセットに作用する順列の対によって定義され、ダーツは頂点と入射エッジからなる結合を表現し、順列は所与の頂点(エッジ)に入射するエッジ(頂点)に順序を与える。ハイパーグラフは、一般化されたエッジ(ハイパーエッジと呼ばれる)が3つ以上のノードを接続することができるグラフである。ここでは、G−Mapsに関して本明細書に記載の方法は、一般的であり、組み合わせハイパーマップにも適用される。同様に、他に明示的に述べられていない限り、組み合わせハイパーマップに関して本明細書に記載の方法は、一般的であり、G−Mapsにも適用される。
【0011】
G−Mapsは、それぞれのG−Mapsを固有に定義するために使用される数字の表現したリスト(例えば、ダーツ、順列、および対合)とすることができる。さらに、これらの数字のリストは、ゲーデルナンバリングを使用して単一の数字で表現することができ(例:カントールナンバリングを使用して単一の数字として数字の対をマップすること、これは数字のリストを単一の数字にマップするために繰り返し実行することができる)、数字のリストとそのゲーデル数との間の変換は、全単射(すなわち、可逆変換)を使用して実行される。しかし、長い数字のリストに対応するゲーデル数は非常に大きくなることがあり、従来のコンピュータハードウェアを使用してこれらの数字を記憶して表現することに課題が生じる。この課題は、非常に大きい数字をコンパクトに表現するのにより適したツリーベースの整数表現を使用することで克服される。標準的な数学的演算は、グラフおよび/またはサブグラフのゲーデル数のツリーベースの整数表現を使用して表現されたグラフおよび/またはサブグラフで実行することができる。したがって、ノードをトラバースして比較するために大量の計算を必要とするかもしれない2つのサブグラフの比較などの計算集約的機能は、対応するゲーデル数の基本的な算術演算を使用して数クロックサイクルで実行することができる。
【0012】
したがって、本明細書に記載の方法は、知識表現(例えば、グラフ)に対応する複雑なデータオブジェクトを表現するために使用される大きい数字を扱うことができる、以前の最も速いスキームより桁違いに速い性能を達成する複雑な構造データを表現するツリーベースのナンバリングに基づいたベクトル符号化を使用する。実際には、ほとんどの場合、本明細書に記載の方法は、先行技術の方法と比較して指数関数的速度の向上を達成する。さらに、方法は、グラフに対応するゲーデル数の表現を記憶するのに必要なコンピュータストレージの大幅な削減を達成する。したがって、本明細書に記載の方法は、符号化された形態で大部分の計算を実行することにより、メインメモリ帯域幅要件を低減することによってプロセッサ性能を大幅に改善することができ、さらに、メモリのリソース消費の最適化において圧縮/解凍を利用することを可能にする。
【0013】
本明細書に記載の方法は、例えば化学情報学の分野、特に定量的構造活性相関(QSAR)モデリングの分野に適用され、研究中の化学物質のグラフで計算できる多くのトポロジカルインデックスが存在する。例として、細矢インデックス、またはウィーナーインデックスが挙げられる。これらの指標は、化学構造の根底にあるグラフの接続性マトリックスおよびグラフの原子の性質(原子の電気陰性度の値など)に本質的に関係する。
【0014】
上述のように、グラフとサブグラフ同型性は、一般的な場合ではNP困難問題である。本明細書に記載の方法の新しい符号化を使用して、方法は、標準的なコンピューティングハードウェアで全般的により大きく複雑なグラフを処理するために、グラフのサブグラフの隣接する近傍を全単射整数表現に畳み込むことによって、グラフのロケールを符号化し、連続的な符号化を通じてグラフを連続的に反復する。プロセスは、直接インデックスルックアップのための順序ログ(N)の最良の場合の計算性能を有する性能において線形であり、Nは、ノードおよびエッジの数字に関するグラフのサイズに対応する。最悪の場合の性能は、グラフの問題空間の理論上の限界と同じである(すなわち、最悪の場合、問題はNP困難になる)。本明細書に記載の方法は、標準的な統合マッチに基づいて…を生成するために単純化ステップおよび近似ステップを使用するが、高速で候補を返す。
【0015】
本明細書に記載の方法は、整数コードとしてG−Maps、項代数、および複雑な計算構造を表現する一連の符号化を含み、次いで、整数コードによって表現されたオブジェクトで直接実行する場合には著しく長い時間を要する計算を素早く実行するために、整数コードに計算を直接実行する。様々な整数コードが、G−Maps、項代数の表現において、本明細書に記載の方法に従って整数コードに対する複雑なデータ構造および対応する演算を表現するために使用される。
【0016】
整数コードは、パターン認識に対する複雑なデータ構造での計算のためのシステムおよび方法を提供する。例えば、任意の文字に任意の重みが割り当てられた任意のアルファベットの単語または項代数で符号化は機能する。整数コードは、部分マップをインデックスし、部分マップの構造を復元するハッシュとして使用することができる。さらに、各整数コードのセットは、損失のない方法で元のグラフを再構成するために使用することができる。したがって、整数コードの計算は、G−Mapsの計算を表現する。
【0017】
本明細書に記載の方法の寄与は、これらに限定されないが、1)論理プログラミングでG−Mapsを実装することと、2)オープンおよびクローズド(軌道)が定義されるようにG−Mapsのダーツのためのゲーデル代数を生成することと、3)グラフの最小構造単位がダーツの代数によって定義されるように、任意のネットワークまたはグラフを表現するためにG−Mapsを使用すること(例えば、ダーツが、サイクルがクローズド構造を判定するように代数によってそれらの隣接するダーツに関してノードを記述すると、部分サブマップとしてのグラフのサイズ、タイプ、および形態にかかわらず、ダーツの対合をトレースバックすることによってG−Map表現からグラフを再構成することが可能になる)と、4)グラフが組み合わせマップの類似体であるダーツの代数の関数として、上述の単位/部分サブマップから任意のターゲットグラフを再構成することと、5)マッピング関数が入力を構築する際に統合メカニズムが直接作用するように、入力をそのアナログG−Mapに変換することによって入力グラフからクエリを生成することと、を含む。
【0018】
したがって、本明細書に記載の方法は、本質的にG−Mapsのダーツ上の対合または関数のセットであるサブマップ(すなわち、G−Maps)のセット、およびダーツによって表現されるノードの周りの軌道(例えば、三角形)などの対合によって定義された最小構造の数字として概念グラフをモデリングする知識表現モデルを提供する。この知識表現モデルは、ノードがそのダーツおよび軌道に関して記述されると可能になり、相互作用マップのサイズ、タイプ、および形態にかかわらず、サブマップの接続性をトレースバックすることによってシンプレックスを再構成することが可能になる。本明細書で説明するように、サブマップ/マップのこの表現はまた、構造的制約の適用により同型パターンを見つけるために、機能的な区分的方法でサブマップ/マップの探索を非常に容易にする。グラフの最小構造単位は、ダーツの代数によって定義することができ、項mによって指定することができる。本明細書で説明するように、軌道および対合に関するダーツのこのmベースの表現は、各mを別々にインデックスすることを可能にすると同時に、mが巨大なジグソーパズルでピースのように使用することができるように各mのすべての構造情報にアクセスすることを可能にする。したがって、概念グラフは、ノード記述の二部集合とみなすことができ、ノード記述間の関係は、グラフ全体からローカライズして切り離すことができる。したがって、各ノードは、非常に大きい複雑なジグソーパズルのピースと同様に、大きいグラフのサブ構造として定義される。
【0019】
ここで図面を参照すると、同様の参照符号は、様々な図全体を通じて同一または対応する部分を示し、図1は、グラフまたは項代数を符号化し、サブマップを項ツリーとして比較して統合を実行する方法100のフローチャートを示している。
【0020】
方法100のプロセス110では、グラフまたは項代数は、固定点自由対合を使用してグラフまたは項代数を表現し、次いで固定点自由対合をゲーデル数である自然数として符号化することによって、ゲーデル数として符号化される。さらに、ゲーデル数である自然数はさらに、3ビットの自己区切りバイナリコードを使用してツリーベースの数として符号化することができる。自然数のサイズに応じて、ゲーデル数をツリーベースの数として表現することは、ゲーデル数のメモリ記憶サイズを向上させることができる一方、数学的演算を実行するために自然数に変換する必要なく、ゲーデル数のツリーベースの数表現で直接実行される数学的演算を提供する。グラフまたは項代数からゲーデル数への変換のすべては、全単射であり、無損失で可逆的であることを意味する。
【0021】
さらに、この符号化方法を固定点自由対合の使用と共に用いることにより、従来の対合とは対照的に、多くの利点が得られる。方法100は、情報を失わずにコンパクトな全単射符号化を提供する。結果として得られた整数は、従来のデータ構造ではなく、コンピュータのメモリのビットストリングとして、より空間効率的に表現される。さらに、上述の表現は、それらがより速く記憶され、連続したビットストリングセグメントのキャッシュ動作を改善することができるために必要とするメモリが少ないので、非連続メモリエリアに散在するポインタベースのデータ構造に比べて改善された性能をもたらす。
【0022】
方法100のプロセス120では、グラフ/項代数の符号化を使用して、統合プロセスを実行するために、項ツリーとして表現されたグラフ/項代数のサブマップ間の迅速な比較を実行する。
【0023】
方法100のステップ130では、様々な数学的演算を整数コードに直接実行することができる。ゲーデル数を表現する自然数またはツリーベースの数で実行される数学的演算は、グラフ/項代数の直接的な数学的演算に相当する。
【0024】
方法100のステップ140では、整数コードは、ツリーベースの数を使用して整数コードを表現することによって圧縮される。特定の実装形態では、ツリーベースの数は、3ビットの自己区切りバイナリコードを使用してコンピュータメモリで表現することができる。任意選択で、ツリーベースの数を使用する整数コードの表現は、プロセス110の後であってプロセス120の前に実行することができる。あるいは、ツリーベースの数を使用するゲーデル数の表現は、プロセス120の後であってステップ130の前に実行することができる。
【0025】
方法100のステップ150では、プロセス110、プロセス120、ステップ130、およびステップ140の様々な結果を記憶し、後でさらなる処理および比較のために検索することができる。
【0026】
方法100は、有利には、項代数をツリーベースの数にマッピングし、これらの構造のグラフを固有の可逆数値符号化および復号化方法を使用してG−Mapsとして表現する高速方法を提供する。さらに、方法100は、有利には、同型性および部分マッチングをマッピング(グラフ化)するためにサブマップ(サブグラフ)に最適化された形態のG−Mapsの表現を提供する。さらに、方法100は、有利には、統合としても知られている一般的なマッチングのためのプロセスを提供する。
【0027】
方法100のプロセスおよびステップの詳細を、以下に説明する。
【0028】
本明細書では、プロセス110の2つの実装形態について説明する。図2は、プロセス110の第1の実装形態であるプロセス110’のフロー図を示している。プロセス110’は、グラフをゲーデル数に可逆的に変換する。数学的論理では、ゲーデルナンバリングは、各シンボルおよびいくつかの正式な言語の整式に、そのゲーデル数と呼ばれる固有の自然数を割り当てる関数である。本明細書で使用する場合、グラフのゲーデル数は、グラフのG−Mapを表現するダーツ、対合、順列などのすべてを表現する単一の数字である。
【0029】
プロセス110における第1のプロセス(すなわち、プロセス210)は、グラフで始まり、グラフのG−Map表現を生成する。例えば、図3Dはグラフを示し、図3E図3Dに示すグラフに対応するG−Mapを示している。グラフは、地理マップ、ソーシャルネットワーク、分子などを含む、任意のグラフデータから得ることができる。G−Mapは、そのダーツおよびそれらの関連する相対的な階層的サブマップへのグラフの分解に関して表現される。最下位レベルのマップは、ノード隣接に対応するa0対合で構成される。次はa1対合であり、この次の最高レベルは、エッジ隣接に対応し、次のレベルアップは、表1に要約されているように、面隣接、次にボリューム隣接などに対応する。グラフとG−Mapsの関係についての詳細は、以下の通りである。
【表1】
例えば、グラフは、様々な都市を結ぶ道路のマップなどのトポロジを表現することができる。都市を結ぶ道路は、2つのダーツ(ハーフエッジとも呼ばれる)として定義されるエッジによって表現することができ、各ダーツは、都市に対応するそれぞれのノード(頂点)から始まる。ダーツは、例えば、都市の名前を含む文字列へのポインタを含むことができる。例えば、分子の原子間の化学結合に対応する別のグラフは、都市を結ぶ道路のマップと同じトポロジを有することができる。しかし、分子の例では、ダーツは、都市の名前ではなく、原子のタイプに対応するオブジェクトへのポインタを含む。したがって、グラフおよびG−Mapは、トポロジを表現するが、あらゆる方法のオブジェクトを表現するために使用することもできる。実際には、ダーツが指すオブジェクトは、別のG−Mapとすることもできる。オブジェクトへのポインタに加えて、ダーツは、見分けがつかないオブジェクト(例えば、有機分子の同一であるが別個の炭素原子を指す2つのダーツ)を指すダーツを区別するための固有のラベルを含むことができる。
【0030】
プロセス110のプロセス220では、G−Mapを使用して、G−Mapの固定点自由対合表現を生成する。以下で説明するように、整数の任意のG−Mapリストは、G−Mapのダーツ、順列、および対合を表現している。例えば、二次元組み合わせマップ(または2マップ)は、三つ組M=(D、σ、α)であり、Dは、有限のダーツのセットであり、σ(φ)は、Dの順列であり、αは、固定点を持たないDの対合である。例えば、図3Eに示すG−Mapのダーツは、セット{1、−1、2、−2、3、−3、4、−4、5、−5、6、−6}により与えられ、順列は、(1、−1)(2、−2)(3、−3)(4、−4)(5、−5)(6、−6)(7、−7)により与えられ、対合は、(1、2)(3、4、−1)(5、−4)(7、−2)(6、−3、−7)(−5、−6)により与えられる。
【0031】
プロセス110のプロセス230では、数字構成を使用して、単一の数字を使用する数字の対を表現する。例えば、カントール対関数を使用して、数字の対が単一の数字を使用して可逆的に表現することができる方法を例示することができる。G−Mapを表現する数字のリストから対で数字構成を繰り返し実行すると、G−Map表現は、単一の自然数にまとめることができる。G−Mapのこの単一の数字表現は、G−Mapのゲーデル数である。数字の長いリストで単一の数値に対して数字対の構成を繰り返すと、ゲーデル数の自然数表現が非常に大きくなり、すなわちコンピュータで従来の数字表現を使用して記憶するには大きすぎるほど大きくなる。これが発生すると、ゲーデル数は、自然数ではなくツリーベースの数を使用して表現することができる。
【0032】
次に、一般化組み合わせマップの命名法について説明する。組み合わせマップは、細分化されたオブジェクトを有するトポロジカル構造をモデリングする組み合わせオブジェクトである。組み合わせマップは、より高次元の方向付け可能な細分化されたオブジェクトを表現するために使用できる。組み合わせマップは、幾何学的モデリングにおいて、画像表現および処理における効率的なデータ構造として使用される。このモデルは、単純複合体および組み合わせトポロジに関連する。さらに、組み合わせマップは、メビウスの輪およびクラインの壺のような方向付け不可能なオブジェクトを表現する一般化マップであってもよい。組み合わせマップは、境界表現モデルであり、その境界によってオブジェクトを表現する。
【0033】
いくつかのアプリケーションは、オブジェクトの細分化を表現するデータ構造が必要である。例えば、2Dオブジェクトは、頂点(0セル)、エッジ(1セル)、および面(2セル)に分解することができる。より一般的には、n次元オブジェクトは、次元0〜nのセルで構成される。さらに、これらのセル間の隣接関係はまた、細分化のすべてのセルと、これらのセル間のすべての結合および隣接関係を記述することによって表現することができる。表現されたすべてのセルがシンプレックスである場合、単純複合体を使用することができる。しかし、任意のタイプのセルを表現するために、組み合わせマップまたは一般化マップなどのセルトポロジカルモデルが使用される。
【0034】
図3Aは、平面グラフの例を示している。図3Bおよび3Cは、頂点表記法および面表記法をそれぞれ使用する、図3Aのグラフの組み合わせ表現の例を示している。二次元組み合わせマップ(または2マップ)は、三つ組M=(D、σ、α)であり、Dは、有限のダーツのセットであり、σ(φ)は、Dの順列であり、αは、固定点を持たないDの対合である。
【0035】
2マップは、平面グラフに対応し、各エッジは、ハーフエッジと呼ばれることもある2つのダーツに細分化される)。順列σは、各ダーツに対して、正の向きで頂点を回して次のダーツを与え、他の順列αは、各ダーツに対して、同じエッジの他のダーツを与える。対合αは、検索エッジを可能にし(アルファはフランス語でアレート)、σは、検索頂点を可能にする(シグマはフランス語でソメット)。演算ψ=σoαは、各ダーツに対して、同じ面の次のダーツを提供するように定義することができる(ファイもまたフランス語でフェイス)。したがって、図5Bおよび図5Cに示されるように、順列がσまたはφであるかどうかに応じて、組み合わせマップを表現する2つの方法が存在する。これらの2つの表現は、頂点と面が交換されるように互いに重複する。
【0036】
一般に、n次元組み合わせマップ(またはnマップ)は、(n+1)−タプルM=(D、β、…、β)であり、Dは、有限のダーツのセットであり、β1は、Dの順列であり、β、…、βは、Dの対合であり、βoβは、i+2≦j(i、j∈{1、…、n})の場合の対合である。n次元組み合わせマップは、閉じた方向付け可能なn次元空間の細分化を表現する。ダーツは、1対1のマッピングを定義するためにのみ必要な抽象要素である。この定義の最後の線は、表現されたオブジェクトのトポロジカルな妥当性を保証する制約を修正し、組み合わせマップは、準多様な細分化を表現する。2次元組み合わせマップの初期定義は、n=2を固定し、σをβと、αをβと改名することによって検索することができる。
【0037】
分子構造、都市の地理情報システム(GIS)マップ、またはソーシャルネットワークなどのグラフデータから開始してG−Mapを構築することができ、各ノードは、固有の整数を使用してラベル付けされる。G−Mapは、所与の頂点の周りのエッジの向きを明示的に符号化しており、エッジは、ダーツと呼ばれる2つのハーフエッジで構成することができ、各ダーツは、取り付けられる頂点にその原点を有する。それらのダーツによって定義される2つのハーフエッジが同じエッジを判定する事実は、対合と呼ばれる順列関数に記録される。結果として、エッジの第1のダーツの後継は第2のダーツであり、第2ダーツの後継は第1のダーツである。配向したエッジは4つのダーツ:エッジを指定する2つ、およびエッジの相対的な向きまたは方向を指定する2つのダーツを有する。完全に配向したネットワークの向きは、ダーツを表現する整数の符号の方向に関する単純な規則を使用して達成することができる。ダーツがそれらのハーフエッジに同時入射していない(つまり、グラフのエッジを形成していない)にもかかわらず、ノードから始まっている場合であっても、次いでそれらはノードで1隣接と呼ばれてノードの周りで定義され、これはノード周りのダーツの配置を定義する巡回順列である。順列演算は、一般にα1対合と呼ばれ、順列によって定義されたダーツの配置は、ロケールと呼ばれる。2つのダーツが互いに対して2つの異なる場所にあり、0次元オブジェクトであるそれらのハーフエッジが隣接する場合、2つのゼロ次元の結合は、1次元の線を生成する。この対合は、一般にα0対合と呼ばれる。最も簡単な対合は、負の1(−1)倍であり、アプリケーションを2回実行すると、元の数字となる。連続するダーツのシーケンスの各軌道は、1つのノードに関連付けられ、このノードの周りを反時計回りに回転するときに遭遇するダーツのシーケンスを符号化する。面隣接およびボリュームまたはハイパーボリューム隣接順列は、一般に、当業者には一般化組み合わせマップとして定義され理解される。
【0038】
G−Mapsを操作するための方法の追加の詳細および実装形態が、その全体が参照により本明細書に組み込まれるLiu, Y.P., Enumerative Theory of Maps. Kluwer, Boston (1999)に記載され、その全体が参照により本明細書に組み込まれるKropatsch, W.G., December 1995. Building Irregular Pyramids by Dual Graph Contraction. IEE-Proc. Vision, Image and Signal Processing Vol. 142 (No. 6), pp. 366-374,に記載されている。
【0039】
上記の定義に基づいて、プロセス220は、固定点自由対合を使用して表現することによって実現される。これは、G−Map MがM=(D、S、Q、E)となるような三つ組(D、S、Q)およびエッジセットEによって表現することができる場合に実現され、Dは、各エッジを2つのダーツに分解することによって得られたダーツ(またはハーフエッジ)のセットに対応し、Sは、DartsからDartsへの順列であり、そのサイクルは、各ノードの周りを反時計回りに回転するときに遭遇するダーツのシーケンスに対応する。ダーツからエッジへのマッピングは、サイクルが同じエッジに関連付けられた2つのダーツに対応する固定点自由対合である。使用するのは固定点自由であり、これはすべての対が別々の端を結ぶことを意味している このようなマップによるトポロジの符号化は、1つのエッジを定義する2つのダーツ(対合のサイクル)で各枝を表現することによって実行される。分岐点の周りの枝の向きは、順列のサイクルによって明示的に符号化される。順列Sは、各ノードの周りのエッジの向きを明示的に符号化することに留意されたい。さらに、Qは、サイクルが同じエッジに関連付けられた2つのダーツに対応する固定点自由対合である。通常、埋め込みであるEは、ダーツを有限の整数、文字またはベクトルのセットにマッピングする部分関数である。
【0040】
このようなマップによるグラフの符号化は、1つのエッジを定義する2つのダーツ(Qのサイクル)で各枝を表現することによって実行される。分岐点の周りの枝の向きは、順列Sのサイクルによって明示的に符号化される。グラフを符号化する組み合わせマップに特徴を付けるために、ノードおよびエッジラベルのセット(VおよびE)を定義することができ、各ノードおよびエッジラベルは、マップの単一のサイクルSおよびQにそれぞれ関連付けられている。
【0041】
図4Aは、整数コードとしての固定点自由対合に対するプロセス230の実装形態の例を示している。図4Bは、整数コードから固定点自由対合に変換し直すことによってプロセス230を逆にするプロセス230(逆)の実装形態を示している。プロセス230は、本明細書では、ステップ410、412、414、416、および418の入力と出力との間の関係を明確に示すために、Prolog(コンピュータプログラミング言語)の論理を使用して説明される。図4Aおよび図4Bに示すように、特定のステップは、他のステップ内にネストされる。したがって、ステップは、外側のステップから始まり、内側のネストされたステップに進むことで次第に洗練される。関係定義は、Prolog節の先頭(「:−」シンボルの前に位置する)として指定され、関係の結合に対する関係の洗練は、「:−」シンボルの後に提供される。複数の節(「ルール」とも呼ばれる)は、述語が適用される様々な状況を指定するために使用される。固定点自由対合は、第1が第2より厳密に小さくなるように、0から2n−1までの数字のセットを2つの対でグループ化する。例は、[0−4、1−3、2−5]である。また、数字の対は、それらの第1の要素によって昇順に区分されたものとして正規表現されると仮定される。
【0042】
ステップ410は、固定点自由対合から自然数コードへの全単射を説明している。ステップ410は、リストIsとして表されている固定点自由対合を固有の整数コードとして符号化する。対合Isの長さLを判定した後、ステップ410は、0から2*Lまでの連続する整数Nsを生成し、それに対する変換は、以下の通りである。0から2*Lまでの連続する数字Nsが与えられ、Lは、対合Isの長さであり、我々はinvolutions_codeを呼び出して対合コードKsをIsの各対に関連付けし、次いで我々は結果として得られたリストを反転し、bij_encodeを使用してそれに対する全単射符号化を構築する。
【0043】
Prolog述語「inv2code」では、リスト「is」として表される固定点自由対合は、変数「Code」によって参照される固有の整数として符号化される。対合「is」の長さLが計算された後、述語「inv2code」は、0から2*Lまでの連続する整数Nsを生成し、3引数述語「inv2code」によって記述された変換が適用される。これらの関数は、
【数1】
に示すPrologコードで記述することによって実行することができる。
【0044】
さらなるステップ410は、0から2*Lまでの連続する数Nsのリスト(Lは、対合「Is」の長さである)が与えられた場合に、対合「Is」の整数コードを計算する。この計算ステップ410を実行するために、ステップ412において述語「involution_codes」を呼び出して対合コードKsを「Is」の各対に関連付けし、次いでステップ410は結果として得られたリストを反転し、ステップ414において「bij_encode」を使用することによって全単射符号化を構築する。これを達成することができるPrologコードの例が、
【数2】
に示される。
【0045】
ステップ412は、n個の対のセットとして0と2n−1との間の数字のセットに対合を生成する。これらの数字は各々、2ダーツからなるエッジに対応する。ステップ412はまた、ダーツを選択するために使用されるコードKおよびKsをメモリに記憶する。ステップ412は、Prolog述語
【数3】
によって実行することができる。
【0046】
この述語「involution_codes」は、Prolog組み込み演算子「nth0」を使用して、リストXsのttK番目の要素Yを抽出し、残りの要素Ysを返す。
【0047】
ステップ414は、階乗進法と同様の表記法を使用することによって実行される。1*3*5*…(2n−1)の固定点自由対合が存在すると仮定すると、固定点自由対合は、階乗進法の数字と(ある程度)同様の表記法を使用して符号化することができる。しかし、実際に階乗進法を使用する代わりに、全単射ベースkの符号化を使用する同様の表記法が使用される。
【0048】
全単射命数法は、すべての非負整数が、有限の桁の文字列を使用して正確に1つで表現することができる任意の数値システムとすることができる。全単射命数法による名前は、有限のシンボルのセットを使用して、非負整数のセットと有限の文字列のセットとの間のこの全単射(1対1対応)から導出される。
【0049】
全単射ベースkの命数法は、全単射の位置表記法である。全単射ベースkの命数法は、各正の整数を符号化するために、セット{1、2、…、k}(k≧1)からの桁の文字列を使用することができ、文字列の桁の位置は、その値をkのべき乗の倍数として定義する。この表記法は、k−adicと呼ぶことができる。
【0050】
ステップ414の全単射符号化は、対合を数える積1*3*5‥*(2n−1)でインクリメントを2に一致させるために、各ステップで底を2だけインクリメントすることによって保証され、この関数は、述語「bij_encode_step」によって実行され、これは述語「bij_encode_step」によって呼び出され、両方の述語は以下で説明される。各ステップにおいて、全単射ベースは、2だけインクリメントされ、整数コードは、以下に提供されるPrologコードによって示されるように、ステップ418の述語「put_bdigit」の演算によって拡張される。
【数4】
逆のプロセス230および230によって生成された結果の例として、以下は、整数コードおよび0から10および83から100までの整数コードの対応する固定点自由対合である。これらの結果は、本明細書に記載のPrologコードを使用して得られ、Prologが正確かつ演算可能であることを実証した。From−Toの対は、ダーツとしてのFrom<Toが対称的であるとみなされ、他の方向が陰となるようなものであることに留意されたい。
【0051】
0=0+[]
1=1+[(0−1)]
2=2+[(0−1),(2−3)]
3=3+[(0−2),(1−3)]
4=4+[(0−3),(1−2)]
5=5+[(0−1),(2−3),(4−5)]
6=6+[(0−1),(2−4),(3−5)]
7=7+[(0−1),(2−5),(3−4)]
8=8+[(0−2),(1−3),(4−5)]
9=9+[(0−2),(1−4),(3−5)]
10=10+[(0−2),(1−5),(3−4)]
83=83+[(0−5),(1−3),(2−4),(6−7)]
84=84+[(0−5),(1−3),(2−6),(4−7)]
85=85+[(0−5),(1−3),(2−7),(4−6)]
86=86+[(0−5),(1−4),(2−3),(6−7)]
87=87+[(0−5),(1−4),(2−6),(3−7)]
88=88+[(0−5),(1−4),(2−7),(3−6)]
89=89+[(0−5),(1−6),(2−3),(4−7)]
90=90+[(0−5),(1−6),(2−4),(3−7)]
91=91+[(0−5),(1−6),(2−7),(3−4)]
92=92+[(0−5),(1−7),(2−3),(4−6)]
93=93+[(0−5),(1−7),(2−4),(3−6)]
94=94+[(0−5),(1−7),(2−6),(3−4)]
95=95+[(0−6),(1−2),(3−4),(5−7)]
96=96+[(0−6),(1−2),(3−5),(4−7)]
97=97+[(0−6),(1−2),(3−7),(4−5)]
98=98+[(0−6),(1−3),(2−4),(5−7)]
99=99+[(0−6),(1−3),(2−5),(4−7)]
100=100+[(0−6),(1−3),(2−7),(4−5)]
プロセス230の逆は、プロセス230(逆)によって実行することができ、これは以下に示すProlog述語を使用して実行することができる。
【0052】
【数5】
グラフまたはG−Mapを表現するゲーデル数となる整数コードを決定する上述の方法に加えて。カントール対はまた、数字構成の例として使用して、ダーツのリスト、順列、および対合のような数字のリストを単一のゲーデル数に統合することができる。例えば、2つの数字xおよびyを単一の数字に全単射的にマッピングする対関数p(x、y)は、
p(x、y)=2(2y+1)−1
によって与えられ、また
q(x、y)=2(2y+1)
として1つの解決法であるディオファントス方程式のより単純な全単射に還元することができる。
【0053】
マルチセットおよびセットは、数字の対の数字構成によって、数字のリストから単一の数字へと、単一の数字に再帰的に変換することができる。さらに、対関数は全単射であるので、逆のプロセスを実行して、ペアワイズ差異を使用して数字のリストを得ることができる。数字のリストが長い場合、指数関数のタワーの結果として対関数を実行することから得られる単一の数字は、非常に大きくなる。いくつかの場合では、数字のリストから得られるゲーデル数は、従来のコンピューティングハードウェアを使用して記憶または処理するには大きすぎる。これらの場合、ゲーデル数をツリーベースの数として表現することが、有利となり得る。ツリー数は、これらのデータタイプの簡潔な表現を提供する。ツリー数としてのリスト、セットおよびマルチセットのこれらの符号化/復号化は、その表現サイズが一定の要素内に入るようにサイズ比例する。したがって、本明細書に記載の方法の符号化は、対関数の全単射性のために全単射と、ツリーベースの数の使用のためにサイズ比例の両方とすることができ、これは従来達成するのが困難な組み合わせであった。本明細書に記載の方法は、全単射およびサイズに比例するという両方の態様を達成するために、非常に豊富な組み合わせ情報を有するデータ構造を探索し、調べるために十分に位置付けられている。従来の主流の方法を使用してゲーデル数に変換される、非常に豊富な組み合わせツリー構造(すなわち、所与のサイズの非常に多くのツリーが存在する)に対応する組み合わせグラフは、長いシンボルの符号化がツリーの葉に比較的大きな数を置くことができ、伝播すると非常に迅速に増加するので、指数関数的に分裂する傾向がある。
【0054】
ゲーデル数のサイズに比例した表現のためのツリーベースの数は、以下で詳細に説明される。また、対関数は、ゲーデル数の生成および項代数項に関するサブマップマッチングの実行に関して以下で説明される。ここで、項代数項は、「f(X、g(a、0、X)、[1,2])」のようなネストされた関数であってもよく、関数fの引数は、X、g(a、0、X)および[1,2]である。さらに、fの引数g(a、0、X)の1つは、関数自体であり、引数a、0、およびXを有する。この関数は、上述のG−Mapsと同様に、項ツリーを使用して表現することができ、主関数が根であり、枝が引数であり、g(a、0、X)のような関数に対応する枝は、枝の最後にあるノードからの枝を有する。したがって、上述の方法と同様の方法を、これらの項代数項に適用することができる。例えば、その全体が参照により本明細書に組み込まれるP. Tarau, “Compact Serialization of Prolog Terms (with Catalan Skeletons, Cantor Tupling and Godel Numberings) ,” Theory and Practice of Logic Programming, vol. 13, no. 4-5, pp. 847-861, (2013)に記載されているように、関数「f(X、g(a、0、X)、[1、2])」は、自然数678547916890513735116076として全単射的に符号化することができ、それにより符号化および復号化演算の演算が、それぞれ結果を生成する。
【0055】
【数6】
G−Mapをゲーデル数として符号化すると、プロセス230は完了し、プロセス110も完了する。方法100は、プロセス110からプロセス120に進む。プロセス120は、同型性を判定するためにG−Mapの候補サブマップを比較することを含む統合プロセスを実行する。同型性問題は、A*アルゴリズムに基づいた方法、Greedyアルゴリズムを使用する近似方法、またはカーネル関数を使用して取りかかることができるが、本明細書に記載の方法は、
(i)連続的に高い順序(ポイントツーポイント、ポイントツーエッジ、エッジツーエッジ、エッジツーフェイス、フェイスツーボリュームなど)で近隣−隣接関係に基づいたパターンのセットへの分解、
(ii)グラフを表現するグローバルマップへのローカルマップおよびそれらの構成のようなパターンに適用される新規の再帰的ツリーに基づくナンバリング、および
(iii)それらのパターンによってインデックスされるロケール間の準同型性に対応する候補選択の組み合わせを使用し、合計のマップである最大ロケールは、グラフ同型性であり、小さいロケールは、準同型性である。
【0056】
したがって、方法100は、表現力があり、効率的で正定であり、あらゆるグラフに適用可能である。方法100のプロセス120は、通常のグラフウォークカーネルが同一であると考えられる下位構造を区別する。グラフのサブマップカーネルは、ノードのサブマップカーネルの合計である。したがって、完全なグラフカーネル、サブグラフカーネル、およびパスカーネルの計算は、特徴空間がサブグラフと同型のグラフで構成されている場合を除いて、困難である。したがって、パターンセットディクショナリが、プロセス120で使用される。従来の方法を使用すると、比較的小さいサブグラフであっても、大部分のグラフカーネルは依然としてかなりの計算量を必要とし、標準的なラップトップでは数日かかるので、方法100は桁違いに速い。
【0057】
プロセス120は、G−MapのサブG−Mapsに対応するサブマップと呼ばれる項ツリーを判定し、それらのそれぞれのゲーデル数を使用してサブマップを迅速に比較することで、G−Mapを基本的な構成パターンに分解するカーネルを定義することにより実行することができる。図5は、項ツリー(すなわち、出力サブマップ)を生成するサブG−Map(すなわち、入力グラフ)からの変換の例を示している。G−Maps間のカーネルは、限られたサイズの項ツリーによって表現されるサブマップへのそれらの分解に基づいており、各ツリーはサブG−Mapを使用して符号化される。したがって、カーネルは、各G−Mapのサブマップのバッグへの分解(すなわち、G−Mapの様々なサブG−Mapsを表現する項ツリー)に基づいて、G−Maps間で定義される。サブマップは、基本的な構成パターンのディクショナリを形成する。図6は、基本的な構成パターンのディクショナリの例を示している。
【0058】
パターンは、ノードの価数がパターンの価数に対応する各ノードからの深さ優先検索ストラテジを使用して抽出される。したがって、各G−Mapは、カーネルアルゴリズムが指定される限られたサイズの項ツリー(すなわち、サブマップ)によって表現されるサブマップへの分解によって表現される。
【0059】
G−Mapの各k次元複合体は、ロケールを有する。したがって、エッジは、エッジ隣接面などのロケールを有する。または、面は、面に隣接するハイパーボリュームなどのロケールを有する。ここで説明する方法は、ロケールを反復的に符号化してトラバースするデュアルステップアルゴリズムを使用する。ロケールが構造的に統合すると、次いでグラフは一致するロケール(すなわち、サブグラフ)のレベルと同型となる。図7は、ロケールを反復的に符号化してトラバースするデュアルステップアルゴリズムの例を示している。
【0060】
G−Mapの各kセルは、ロケールを有し、これは対合演算に基づいてセルの周りのダーツの配置として以前に定義されたものである。例えば、グラフのノードに対応するG−Mapの0セルは、隣接するノードによって形成されたすべてのエッジであるロケールとしてエッジを有することになる。これらのロケールの各々には、G−Mapのセルの各々のトポロジカルインデックスに基づいて、インデックスが割り当てられる。インデックスは、ロケールを構成するセルの各々の固有の構造およびコンテンツを保持する、Lehmerのコードなどの符号化アルゴリズムを使用して計算することができる。Lehmerのコードは、順列を符号化するために使用される。
【0061】
一般的に、統合のプロセスの場合、プロセス120は、G−Mapsがグラフで利用可能な最も高い共通次元で同型であるという前提で開始する。比較されたグラフのk次元複合体のロケールのインデックスが等しい場合、次いでロケールのサブグラフは、構造的に同等となる。プロセス120が次元kのロケールの構造的一致を発見しない場合、次いで以下同様に、次元0のロケールが考慮されるまで次元k−1のすべてのロケールが考慮される。
【0062】
次に、プロセス120の詳細について説明する。データ、情報または知識のいくつかの特徴または表現を通常表現する項代数項を、固有のツリー数に項代数をマッピングすることによってスケルトンを符号化する組み合わせマップに埋め込むことができる。項代数を表現するツリー数の埋め込みを達成するために、我々はノードおよびエッジラベルのセット(VおよびE)を定義し、各ノードおよびエッジラベルは、サイクルが各ノードの周りを反時計回りに回転するときに遭遇するダーツのシーケンスに対応する単一のサイクル順列、ならびに各ノードの周りのエッジの向きを明示的に符号化する順列に関連付けられ、ツリー数としても表現される数値コードを生成する。
【0063】
以上のことから明らかなように、一般化組み合わせマップ(G−Map)は、ダーツと呼ばれる基本要素間の相対的な隣接関係の符号化順列の概念に基づくトポロジカルデータ構造および組み合わせデータ構造である。
【0064】
本明細書に記載の方法は、ハーフエッジダーツと空ダーツという2種類のダーツを使用する。空ダーツを使用して部分組み合わせマップまたは部分構造を定義することができ、アルゴリズムは、サイクルをツリーに変換するために、またはその逆に、ダーツを追加してツリーをサイクルに変換するために結ばれていないオブジェクトの入射対に依存する。また、空ダーツは、本発明の本実施形態のアルゴリズムの目的のために、構造を完成するように「ブランク」を埋めることができる。ダーツの間には、次元性によって定義される隣接関係が存在し、空ダーツは定義された次元性を有さない(すなわち、ゼロではないが未定義であり、空ダーツは、必要とされるときはいつでも特別にマークされるが、これは通常非常に稀である。
【0065】
単一のハーフエッジダーツの寸法は、ゼロである。k次元セルの次元性は、ダーツがその一部となり得る次元Nを有するオブジェクトとは別々にかつ明確に参照することができる。したがって、k=dim(c)は、セルcの次元を表し、Nは、オブジェクトの次元を表す。また、0セルは頂点であり、1セルはエッジであり、2セルは多角形であり、3セルは多面体などである。表1は、グラフ要素とG−Map要素との間の対応関係およびその対応する対合のリストを示す。ダーツは、共に結ばれるか、または分離される場合は結ばれておらず、隣接する面の場合、「共有」エッジは、各面がそれを定義するそれ自身のダーツのセットを有するように分離される。ダーツを共に結ぶことは、順列演算によって定義され、順列演算子は、ダーツから組み合わせマップを構築する。
【0066】
本明細書に記載のダーツは、2つの他の性質を有する。まず、ダーツは、整数を使用して固有にラベル付けされる。第二に、ダーツは、通常何らかの種類のコンテンツ(例えば、ソーシャルネットワークの人々の名前、またはタンパク質構造の原子の名前)である他のデータへのポインタである。ポインタとして、ダーツには様々な種類のデータを埋め込むことができる。単一のダートは、ノードを暗黙的に定義し、ダーツの埋め込みは、ノードに含まれるデータを定義し、他の組み合わせオブジェクトまたはマップを含むことができる。したがって、マップのトポロジカル構造は、根底にあるトポロジまたはスケルトンに幾何学的形状または形状の特徴を接続するのに役立つことができる埋め込みとは異なる。
【0067】
120における統合プロセスは、クエリグラフと入力グラフとの間のサブマップ同型性を評価することを含む。図8は、サブマップ同型性評価を実行するためのプロセス800を示している。上述の方法を使用して、G−Mapは、ゲーデル数を使用し、ツリーベースのナンバリングを使用して符号化することができる。さらに、項代数項は、我々がダーツの固定点自由対合としてオープンおよびクローズド(軌道)を指定することができるダーツを使用して、頂点またはエッジのノードに埋め込むことができる。例えば、ダーツに関して、三角形は最小のクローズド構造であり、エッジは最小のオープン構造である。ダーツが、サイクルがクローズド構造を判定するように代数によってそれらの隣接するダーツに関してノードを記述すると、部分サブマップとしてのグラフのサイズ、タイプおよび形態にかかわらず、ダーツの対合をトレースバックすることによって組み合わせマップからグラフを再構成することが可能になる。
【0068】
所与のダーツおよびそれらの関連するサブ構造(サブマップおよびエッジ)は、厳密な順序付け(すなわち、向き)を有する。したがって、固有の配向したグラフを、順序付けられたダーツから組み立てることができ、この固有の配向したグラフは、常に意図された(サブ)グラフである。したがって、方法800のサブマップ同型化ステップ810を見つけるために、クエリグラフをG−Mapに変換する。
【0069】
次に、方法800のステップ820は、基本サブマップ(すなわちサブツリーまたはサイクルまたはサブマップとしてサブマップを表現するサイズ「k」の分解)の結合として、クエリグラフに対応するG−Mapから対合を抽出する。
【0070】
方法800のステップ830では、入力グラフとクエリグラフのサブマップ間の同型性は、Weisfeiler−Lehmanテストを使用して評価される。Weisfeiler−Lehmanテストが、サブマップが同型であることを示す場合、真の値が返される。それ以外の場合は、偽の値が返される。
【0071】
比較は一度実行されるだけでなく、デュアルステップアルゴリズムを使用して複数回繰り返され、入力グラフとクエリグラフの両方の様々なサブマップを比較するロケールを反復的に符号化してトラバースする。基本的な構成パターンのデータベースは、入力グラフを基本サブマップにコンパイルすることによって定義することができる。クエリサブマップcnは、サブマップがクエリスキーマとなるようにダーツの変数を使用する。検索は、Weisfeiler−Lehmanテストを使用したダーツのサブ−サブマッピングに基づいて、データベースからクエリG−Mapsを用いてサブマップスキーマを統合することによって進む。
【0072】
検索を助けるために、図9に示す方法900を使用して、検索インデックスを組み立てることができる。検索インデックスは、一致するサブマップをグラフの恒等式に符号化することに基づいて構築され、インデックスサブマップのセットは、Weisfeiler−Lehmanテストで必要とされる統合のステップなしで、さらなるクエリの処理に使用される。
【0073】
方法900のステップ910では、エッジをダーツにカットすることによって入力グラフを分解する。
【0074】
方法900のステップ920では、各頂点対エッジ隣接について、EAノードとしてこれらをラベル付けし、元のグラフの新しいサブマップとしてこれらにダーツを指定する。
【0075】
方法900のステップ930では、各三角形軌道について、面対頂点としてこれらを指定して隣接して対向させ、FAノードとしてこれらをラベル付けし、元のグラフの新しいサブマップとしてこれらにダーツを指定する。
【0076】
方法900のステップ940では、グラフから引き出されたマップの各kセルは、別のサブマップに関連して表示されるサブマップを有する。例えば、エッジは、サブマップである。さらに、一致する面は、サブマップである。さらに、面は、それらのサブマップとしてハイパーボリュームなどのサブマップを有することができる(すなわち、面は、ハイパーボリュームに隣接するエッジである)。
【0077】
方法900のステップ950では、デュアルステップアルゴリズムが適用されてサブマップを反復的に符号化してトラバースし、一致しなくなるまで進行する。
【0078】
方法900のステップ910では、サブマップが構造的に統合する場合、次いでグラフは一致するサブマップ(すなわち、サブグラフ)のレベルまで同型となる。
【0079】
方法900は、入力グラフのサブマップがクエリグラフと比較される検索インデックスを提供する。方法800は、入力グラフのサブマップをクエリグラフとどのように比較するかについての命令を提供するが、どのサブマップが比較されるべきかについての命令を含まないため、方法900を補足する。したがって、方法800および900は、プロセス120の機能を実行するために共に機能する。
【0080】
さらに、本明細書に記載の方法は、ネットワークフローを表現するグラフと共に使用することができる。ネットワークフロー(すなわち、有向フローを含むエッジを有するグラフ)は、4つのダーツの対によって表現され、グラフは、ダーツの対によって表現される。Xを有限のセットとし、Kを1、a、b、およびcによって表される4つの要素のクライン群とし、c=abである。X E Xの場合、セットKx={x、ax、bx、cx}は、四セルと呼ばれる。マップの基本的な要素は、ダーツと呼ばれ、各有向エッジは、異なる側面および方向の4つのダーツで構成される。有向マップの場合、エッジを表現するダーツの対で十分である。ネットワークフローを表現する組み合わせマップMは、Xが有限のダーツのセットである三つ組(X、P、K)を使用して表現することができる。したがって、単一の「エッジ」マップは、4つのダーツによって表現される。グラフの頂点は、その周りのダーツの巡回順列によって記述される。したがって、マップの巡回順列の記述は、マップのすべての頂点のダーツの配向したトラバーサルで構成されるシーケンスである。一般的には、通常、所与のマップを記述するために書き込むことができる、すべて異なる多くの巡回順列が存在する。したがって、マップは、順列からなる組み合わせ構造であり、これらの順列は、本発明で方法1000によって符号化される。
【0081】
方法1000のステップ1010では、ダーツのすべては、ラベルとして固有の整数を使用して列挙される。
【0082】
方法1000のステップ1020では、式a=b=c=1およびc=ab=baに従って、ダーツの整数値の巡回順列の各々を符号化し、Hは、vの順列であり、それによりPの各軌道はiP0の(x、Px、...、Pix)および(ax、aP_1x、...、aP_ix)としての共役対からなり、{P、a、b}によって生成された群は、vに対して推移的である。
【0083】
上述のように、項代数項は、方法100を使用して符号化することができる。したがって、グラフデータを整数コードに符号化するステップ110の代わりに、項代数の項(以下、項代数項)である関数を、ゲーデル数を使用して符号化する。さらに、サブマップ(すなわち、項ツリー)間の比較は、関数の引数の引数間の比較である。例えば、関数f(X、g(a、0、X)、[1、2])は項代数項であり、f(X、g(a、0、X)、[1、2])が項ツリーとして表現された場合、次いでg(a、0、X)は、f(X、g(a、0、X)、[1、2])のサブマップとなる項ツリーに対応する。さらに、Xは、f(X、g(a、0、X)、[1、2])の引数であり、Xはまた、f(X、g(a、0、X)、[1、2])の引数の引数である。したがって、f(X、g(a、0、X)、[1、2])の項ツリーから導出された項グラフは、周期的となる。
【0084】
図11は、グラフデータではなく項代数が使用される場合の方法100のプロセス110に対応するプロセス110’’を示している。プロセス110のステップ1105は、項のツリーの正規表現を生成している。図12は、関数(例えば、f(a、g(b、X)、h(X、10)))を2つの部分に分割することができることを示している。第1の部分は、引数の構造を表現する括弧構造(すなわち、スケルトン)である。第2の部分は、コンテンツである。
【0085】
ステップ1110では、コンテンツは、全単射ベースkを使用して符号化される。図12に示すように、文字列は、全単射ベースkの数字として表現することができ、kは、アルファベットのサイズである。したがって、図12に示すように、単語、アスキーコードとしてのそのアルファベットのリスト、および数字Nの間の全単射は、アスキーコードで数字構成を実行することによって(例えば、上述したカントール対関数を使用して)、使用して導出することができる。ステップ1120では、アスキーコードの文字列の全単射符号化が、単一の数字に統合される。
【0086】
ステップ1130では、図12の下部に示すように、括弧で表現されたCatalanスケルトンを項ツリーに変換する。
【0087】
ステップ1140では、Catalaonスケルトンの全単射符号化が実行される。例えば、この全単射符号化は、Catalanスケルトン項のために計算された固定点自由対合とすることができる。
【0088】
Catalanスケルトン項ツリーの全単射符号化は、Catalanスケルトン項ツリーを表現する単一の数字を生成して実行される。
【0089】
ステップ1150では、例えば、固定点自由対合の数字対の数値構成が実行され、Catalanスケルトンのトポロジを表現する単一の自然数を生成する。
【0090】
ステップ1160では、コンテンツを表現する自然数(シンボルシーケンスとも呼ばれる)を、上述のカントール対関数などの対関数を使用して、Catalonスケルトンのトポロジを表現する自然数と組み合わせることによって、単一の自然数が生成される。
【0091】
ステップ1170では、ステップ1160からの単一の自然数が、ツリーベースの数として表現される。
【0092】
コンテンツ(コンテンツは、シンボルシーケンスとも呼ばれる)を表現することで、Catalonスケルトンのトポロジを表現する自然数と組み合わされる。
【0093】
プロセス110’’の機能は、擬似コードを実行する演算子encodeTermによって実行することができる。
【0094】
【数7】
項代数項の間の同型性を判定するために、項代数項のトポロジを項ツリーで表現することができ、項ツリーのノードは、オブジェクトへのポインタを含むG−Mapsのダーツと同様に、対応するコンテンツへのポインタを含むことができる。さらに、G−Mapsと同様に項グラフを、項代数項の項ツリーに対して生成することができる。したがって、データは、マップに埋め込むことができ、項代数項を表現する。各ファンクタは、頂点に置き換えられ、引数は、頂点の周りでダーツに置き換えられる。ネストされた項は、いくつかのダーツが頂点を共有することを意味する。各固有の原子のセットについて、固有の整数のラベル付けが実行される。
【0095】
項グラフは、組み合わせマップとして表現された標準項代数項ツリーから、実行時に動的にコンパイルされる組み合わせデータ構造である。項代数項ツリーは、各要素が自然数として符号化され、各自然数が項ツリーの枝を表現する固有の整数マップに変換される。整数構造である項ツリーは、項代数項とは区別されるが、同等の書き換えであり、動的に縮小され、項グラフにプリコンパイルされる。項グラフは、ダーツが始まった場所である元のシンボルの項へのダーツの埋め込みを形成する接続された数字のマップとして表現される。
【0096】
マップをラベリングして表現するための正規プロトコルが、マップを記述するために使用することができる巡回順列の多様性を克服するために使用される。ダーツがシンボルS(例えば、コンテンツ)で埋め込まれる場合、同じエッジを共有する他のダーツも埋め込むことができ、Sを使用して記述することができる。所与のマップの幅優先トラバーサルは、訪問したダーツのシンボルを訪問順序に従って待ち行列に記憶されるシンボルシーケンスに追加する。ダーツラベルを判定する方法は、擬似コードを使用して図13に示される。
【0097】
この表現は、シンボルシーケンスを項として記憶することを可能にし、他のシンボルシーケンスセットと統合する項は、マップ統合と同等となる。マップの組み合わせ性質に基づいたシンボルシーケンスの数字、したがって自然数は、指数関数的に増加し、したがって単純な統合は実行不可能である。したがって、サブマップシーケンスセットのシンボルシーケンスは、有利には、項グラフとして構成することができる。
【0098】
次に、プロパティおよび項ツリーの関係の定義が提供される。マップMおよび対応するシーケンスセットがサブマップの結合数D(M)として表現される場合、TT(M)として表されるMの項ツリーは結合数の有根ツリーであり、それにより、1)このツリーの各ノードは、svとして表されたシンボルシーケンス(構造は、ブラシまたはブッシュ状グラフのように見える)を表現する結合数に関連付けられ、2)TT(M)の各エッジを親から子に向けさせ、3)根からノードまでの各パス、例えばvは、根からノードへのシンボルシーケンスの自然数符号化に関連付けられ、4)このツリーの任意のノードvについて、vの子に関連する数字は互いに異なり、5)D(M)の任意の結合数sについて、s=svとなるようにこのツリーにノードvが存在し、6)このツリーの任意のノードvについて、svが規則的なシーケンスである場合、次いでs=svとなるようにD(M)に自然数sが存在し、7)関連する自然数で表現される2つのシンボルシーケンスが同等である場合、2つのパスは同等であり、8)サブツリーTuおよびTvが同等となるように、TT(M)の任意の2つのノードuおよびvについて、TT(M)からTuを除去し、uの順列から1つのエッジをvに追加し、9)TT(M)の任意のパスpについて、マップMおよび項ツリーTT(M)および項グラフTG(M)が与えられた場合、qがpと同等になるようにTG(M)にパスqが存在し、10)項グラフの根は、入力されるエッジのないノードであり、マップの任意のシンボルシーケンスの最初のシンボルは、「1」であり、これは項グラフの根に関連するシンボルと同じとなる。
【0099】
項ツリーの上記の定義および記述に基づいて、項グラフ表現は、それぞれ図14および図15に示す方法1400および1500を使用して書き込むことができる。方法1400は、項ツリーを作成し、方法1500は、項グラフを作成する。方法1400と1500の両方は、擬似コードを使用して表現される。前処理では、各モデルマップに対する対応するシンボルツリーの構成が実行される。
【0100】
n個のエッジを持つマップが与えられた場合、サブマップシーケンセットにシンボルシーケンスを表現する最大でO(2)個の接続サブマップおよびO(n2)個の数字が存在する。したがって、最悪の場合、シンボルグラフの記憶複雑度は、O(n2(2n))個の数字となる。平均的な場合では、データにパターンが存在する構造化データの場合、組み合わせ複雑度ははるかに低くなる。ツリーベースのナンバリング、およびツリーサイズまたはビットサイズでコードを選択するためのルールを使用すると、ナンバリングは簡潔になる。
【0101】
図16に示す方法1600は、項グラフ間の統合プロセスを実行する。項グラフは、マップによって表現することができる。方法1600によって実行される項グラフサブマップ統合演算は、項グラフパターンマップGの項サブグラフと統合する(例えば、同型である)モデルマップMの項サブグラフが存在するかどうかを確認する。Gの根がMの項グラフの第1の項と一致する場合、次いでサブ項グラフ同型性アルゴリズムは根の子の第2の項と一致し、反復的に続く。デュアルループが実施され、各反復マッチング演算が項グラフを反復的に降下させる。したがって、方法1600は、多項式時間で機能し、その計算複雑度は、O(kn)であり、nは、パターンマップのダーツの数であり、kは、モデルマップの項グラフのノードの最大次数である。方法1600の計算複雑度は、kが限定される場合は線形であり、最悪の場合ではO(mn)であり、mは、モデルマップのダーツの数である。
【0102】
ここで、ツリーベースのナンバリングについて説明する。ツリーベースの数は、以下のように項のセットとして誘導的に定義される。
【0103】
ツリー数Xは、X=eまたはXが述語v(T、Ts)またはw(T、Ts)の1つである場合にのみ、ツリーベースのナンバリングデータタイプTの要素であり、Tsは、Tの要素の有限のシーケンス(リスト)を表す。
【0104】
データタイプは、以下のルールによってセットで表現される。
【0105】
(a)項eは、空の葉であり、ゼロに対応する。
【0106】
(b)関数o(x)=2x+1を定義する
(c)関数i(x)=2x+2を定義する
(d)数字Nに評価する関数oおよびiからeへのアプリケーションの固有のシーケンスとして任意の数字を定義する。
【0107】
(e)以下のようにvwツリーを定義する:
(i)o個のアプリケーションの数T+1(カウントが0から始まる)をカウントする項v(T、Ts)と、それに続くTsにおけるiおよびo個のアプリケーションの同様のカウントの変更を定義する、
(ii)i個のアプリケーションの数T+1をカウントする項w(T、Ts)と、それに続くTsにおけるoおよびi個のアプリケーションの同様のカウントの変更を定義する。
【0108】
(f)可逆述語s(Pred、Succ)を介して後継および前任者を定義し、Succは、項書き換え論理を使用する以下のようなPredの後継である:
s(e,v(e,[])).
s(v(e,[]),w(e,[])).
s(v(e,[X|Xs]),w(SX,Xs))→s(X,SX).
s(v(T,Xs),w(e,[P|Xs])) →s(P,T).
s(w(T,[]),v(ST,[])) →s(T,ST).
s(w(Z,[e]),v(Z,[e])).
s(w(Z,[e,Y|Ys]),v(Z,[SY|Ys])) →s(Y,SY).
s(w(Z,[X|Xs]),v(Z, [e,SX|Xs])) →s(SX,X).
(g)恒等式は、以下の通りである:
【数8】
(h)ツリーから自然数への全単射:
【表2】
【数9】
したがって、N=42となる。
【0109】
oおよびiの演算子の項の例:
0=e;1=o(e);2=i(e);3=o(o(e));4=i(o(e));5=o(i(e))
ツリーとしての例:0=e、1=v(e、[])、2=w(e、[])、3=v(v(e、[])、[])、4=w(e、[e])、5=v(e、[e])
したがって、N=20とすると、対応するツリー項は、w(e、[e、e、e])である。
【0110】
【数10】
であり、したがって、対応するツリー項は、v(v(v(v(v(e、[])、[])、[])、[])、[])である。
【0111】
(i)項ツリー:以下の関数T(x)は、数字に関連するツリー表現を定義する。
【0112】
【数11】
(j)oおよびiの項のツリー変換:
【数12】
(k)2つの数字aおよびbの乗算:
on(a)om(b) = o(n+m).(ab + a + b) - on(a) - om(b)
(l)減算:
x > y ならば ok(x) - ok(y) = ok.(x - y - 1) + 1
x > y + 1 ならば ok(x) - ik(y) = ok.(x - y - 2) + 2
x ≧ y ならば ik(x) - ok(y) = ok.(x - y)
x > y ならば ik(x) - ik(y) = ok.(x - y - 1) + 1
ペアノの公理が成立し、{T、e、s}がペアノ代数であるという構造的誘導によって証明することができる。したがって、これらの定義は、空のシーケンスに達するまで、カウンタ(iおよびo)に対しても再帰的に適用することができる。したがって、すべての算術演算は、ツリーベースのナンバリングで実行することができる。さらに、本明細書で説明するツリーベースのナンバリングは、大きな不平衡のバイナリツリーに拡張されたときに、2−1のような指数の塔の線形結合を逆に有利に処理することができる。
【0113】
oおよびiのn反復の恒等式:
【数13】
および、
【数14】
また、kについて、
【数15】
本発明で先に定義したように、o(x)=2x+1およびi(x)=2x+2であれば、s(x)=x+1およびs’(x)=x−1を設定し、我々は:
(k)=s(i(s’(k)));i(k)=s’(o(s(k)))
を設定する。
【0114】
以下は、oおよびiの反復されたアプリケーションの後継および前任に関連する:
s(o(k))=i(os’(n)(k));s(i(k))=o(s(k))
s’(o(k))=i(s’(k));s’(i(k))=o(is’(n)(k))
本明細書に記載のツリーベースの数は、計算の取り扱いを、ネイティブプロセッサの制限されたビットサイズではなく、それらのオペランドの表現サイズによって制限されるようにする。ツリーベースの数は、まばらなまたは密集したリスト、セットおよびマルチセットを簡潔に表現するために使用される。これは、データタイプの全単射のサイズに比例するゲーデル数を提供する。
【0115】
ネットワークを介したデータの記憶および検索ならびに転送は、ツリーサイズまたはビットサイズのいずれかの2つのパラメータによって圧縮および選択される。ビットサイズがツリーサイズより著しく大きい場合、次いでツリーベースの数がデータ構造を符号化する数字の表現に使用されるか、または通常のビット文字列が使用される。ツリーベースの数の場合、自己区切り3ビットコードが以下のように使用される。
【表3】
コードが自己区切りであるのは、常にオープン括弧およびクローズド括弧の対が存在するので括弧をカウントすることができるからである。
【0116】
上述したアルゴリズムおよびプロセスおよび本発明の特徴の各々は、例えば、特にプログラムされた処理回路を使用して、何らかの形態のコンピュータプロセッサまたは処理回路を使用して実装することができる。回路は、回路の処理を改善し、人間または本実施形態の特徴を欠いた汎用コンピュータによっても不可能な方法でデータを処理することを可能にする上述の機能および特徴を実装するように特に設計またはプログラムされてもよい。当業者であれば認識するように、コンピュータプロセッサは、個別論理ゲートとして、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のコンプレックスプログラマブルロジックデバイス(CPLD)として実装することができる。FPGAまたはCPLDの実装は、VHDL、Verilog、または任意の他のハードウェア記述言語でコード化されてもよく、コードは、FPGAまたはCPLD内で電子メモリに直接、または別個の電子メモリとして記憶されてもよい。さらに、電子メモリは、ROM、EPROM、EEPROM、またはFLASHメモリなどの不揮発性であってもよい。電子メモリはまた、静的または動的RAMなどの揮発性、およびマイクロコントローラまたはマイクロプロセッサなどのプロセッサであってもよく、電子メモリ、ならびにFPGAまたはCPLDと電子メモリとの間の相互作用を管理するために設けられてもよい。
【0117】
あるいは、コンピュータプロセッサは、上述の非一時的電子メモリおよび/またはハードディスクドライブ、CD、DVD、FLASHドライブもしくは任意の他の既知の記憶媒体のいずれかにのいずれかに記憶される、本明細書に記載の機能を実行するコンピュータ可読命令のセットを含むコンピュータプログラムを実行してもよい。さらに、コンピュータ可読命令は、米国インテル社(Intel)のXenonプロセッサまたは米国AMD社のOpteronプロセッサなどのプロセッサ、ならびにMicrosoft VISTA、UNIX(登録商標)、Solaris、LINUX、Apple、MAC−OSXおよび当業者には既知の他のオペレーティングシステムなどのオペレーティングシステムと連動して実施する、ユーティリティアプリケーション、バックグラウンドデーモン、もしくはオペレーティングシステムのコンポーネント、またはそれらの組み合わせとして提供されてもよい。
【0118】
さらに、本発明は、コンピュータベースのシステム1701を使用して実装することができる。上述の実施形態の機能の各々は、1つまたは複数の処理回路によって実装されてもよい。処理回路は、プロセッサが回路を含むので、プログラムされたプロセッサ(例えば、図17のプロセッサ1703)を含む。処理回路はまた、特定用途向け集積回路(ASIC)のようなデバイスと、列挙された機能を実行するように配置された従来の回路コンポーネントとを含む。
【0119】
上述の様々な特徴は、コンピュータシステム(またはプログラマブルロジック)などのコンピューティングデバイスによって実装されてもよい。図17は、そのようなコンピュータシステム1701を示している。図17のコンピュータシステム1701は、特別な特定用途向けマシンであってもよい。一実施形態では、プロセッサ1703がベクトル縮小を計算するようにプログラムされている場合、コンピュータシステム1701は特別な特定用途向けマシンである。
【0120】
コンピュータシステム1701は、磁気ハードディスク1707およびリムーバブルメディアドライブ1708(例えばフロッピーディスクドライブ、読取り専用コンパクトディスクドライブ、読込み/書込みコンパクトディスクドライブ、コンパクトディスクジュークボックス、テープドライブ、およびリムーバブル光磁気ドライブ)のような情報および命令を記憶するための1つまたは複数の記憶デバイスを制御するようにバス1702に結合されたディスクコントローラ1706を含む。記憶デバイスは、適切なデバイスインターフェース(例えば、スモールコンピュータシステムインターフェース(SCSI)、集積デバイスエレクトロニックス(IDE)、エンハンストIDE(E−IDE)、ダイレクトメモリアクセス(DMA)またはultra―DMA)を使用してコンピュータシステム801に加えられ得る。
【0121】
コンピュータシステム1701はまた、専用ロジックデバイス(例えば、特定用途向け集積回路(ASIC))または構成可能ロジックデバイス(例えば、シンプルプログラマブルロジックデバイス(SPLD)、コンプレックスプログラマブルロジックデバイス(CPLD)、およびフィールドプログラマブルゲートアレイ(FPGA))を含んでもよい。
【0122】
コンピュータシステム1701はまた、コンピュータユーザに情報を表示するために、ディスプレイ1710を制御するためにバス1702に結合されたディスプレイコントローラ1709を含むことができる。コンピュータシステムは、コンピュータユーザと対話し、プロセッサ1703に情報を提供するための、キーボード1711およびポインティングデバイス1712などの入力デバイスを含む。ポインティングデバイス1712は、例えば、プロセッサ1703への指示情報およびコマンド選択を伝達するための、およびディスプレイ1710上のカーソル移動を制御するためのマウス、トラックボール、タッチスクリーンセンサ用の指、またはポインティングスティックであり得る。
【0123】
プロセッサ1703は、メインメモリ1704などのメモリに含まれる1つまたは複数の命令の1つまたは複数のシーケンスを実施する。そのような命令は、ハードディスク1707またはリムーバブルメディアドライブ1708のような別のコンピュータ可読媒体からメインメモリ1704に読み込まれてもよい。マルチプロセッシング構成の1つまたは複数のプロセッサを用いて、メインメモリ1704に含まれる命令のシーケンスを実施することもできる。別の実施形態では、ハードワイヤード回路が、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて使用されてもよい。したがって、実施形態は、ハードウェア回路およびソフトウェアの任意の特定の組み合わせに限定されない。
【0124】
上述したように、コンピュータシステム1701は、本開示の教示のいずれかに係るプログラムされた命令を保持するために、およびデータ構造、テーブル、レコード、または本明細書に記載された他のデータを含むために、少なくとも1つのコンピュータ可読媒体またはメモリを含む。コンピュータ可読媒体の例は、コンパクトディスク、ハードディスク、フロッピーディスク、テープ、光磁気ディスク、PROM(EPROM、EEPROM、フラッシュEPROM)、DRAM、SRAM、SDRAM、または任意の他の磁気媒体、コンパクトディスク(例えば、CD−ROM)、または任意の他の光学媒体、パンチカード、紙テープ、または孔のパターンを有する他の物理的媒体である。
【0125】
コンピュータ可読媒体のいずれか1つに、またはその組み合わせに記憶されて、本開示は、コンピュータシステム1701を制御するため、本発明を実装するための1つまたは複数のデバイスを駆動するため、およびコンピュータシステム1701が人間のユーザと対話することを可能にするためのソフトウェアを含む。そのようなソフトウェアは、これらに限定されないが、デバイスドライバ、オペレーティングシステム、およびアプリケーションソフトウェアを含んでもよい。そのようなコンピュータ可読媒体はさらに、本発明の任意の部分を実装する際に実行される処理の全てまたは一部(処理が分散される場合)を実行するための本開示のコンピュータプログラム製品を含む。
【0126】
本実施形態のコンピュータコードデバイスは、これらに限定されないが、スクリプト、解釈可能なプログラム、ダイナミックリンクライブラリ(DLL)、Java(登録商標)クラス、および完全な実行可能プログラムを含む、任意の解釈可能なまたは実施可能なコードメカニズムであり得る。さらに、本実施形態の処理の部分は、より十分な性能、信頼性、および/またはコストのために分配されてもよい。
【0127】
本明細書で使用する「コンピュータ可読媒体」という用語は、プロセッサ1703に実施のための命令を提供するのに関係する任意の非一時的媒体を指す。コンピュータ可読媒体は、これらに限定されないが、不揮発性媒体または揮発性媒体を含む多くの形態をとることができる。不揮発性媒体は、例えば、ハードディスク1707またはリムーバブルメディアドライブ1708のような光学、磁気ディスク、および光磁気ディスクを含む。揮発性媒体は、メインメモリ1704のような動的メモリを含む。逆に、伝送媒体は、バス1702を構成するワイヤを含む同軸ケーブル、銅線およびファイバ光学を含む。伝送媒体はまた、電波および赤外線データ通信中に生成されるような音響または光波の形態をとってもよい。
【0128】
コンピュータ可読媒体の様々な形態は、実施に対してプロセッサ1703への1つまたは複数の命令の1つまたは複数のシーケンスを実行することに含まれることがある。例えば、命令は、最初にリモートコンピュータの磁気ディスクに搬送されてもよい。リモートコンピュータは、モデムを使用して電話回線を介して、本開示の全てまたは一部を実装するための命令を動的メモリに遠隔でロードし、命令を送信することができる。コンピュータシステム1701へのモデムローカルは、電話回線上のデータを受信し、データをバス1702上に置くことができる。バス1702は、メインメモリ1704にデータを搬送し、そこからプロセッサ1703が命令を取り出して実施する。メインメモリ1704によって受信された命令は、任意選択で、プロセッサ1703による実施の前または後のいずれかに、記憶デバイス1707または1708に記憶することができる。
【0129】
コンピュータシステム1701はまた、バス1702に結合された通信インターフェース1713を含む。通信インターフェース1713は、例えば、ローカルエリアネットワーク(LAN)1715、またはインターネットなどの別の通信ネットワーク1716に接続されるネットワークリンク1714に結合する双方向データ通信を提供する。例えば、通信インターフェース1713は、任意のパケットスイッチされたLANに取り付けられるネットワークインターフェースカードであってもよい。別の例として、通信インターフェース1713は、統合サービスデジタルネットワーク(ISDN)カードであってもよい。無線リンクもまた、実装することができる。いかなるこのような実装形態においても、通信インターフェース1713は、様々なタイプの情報を表現するデジタルデータストリームを搬送する電気、電磁気または光学信号を送受信する。
【0130】
ネットワークリンク1714は、通常、他のデータデバイスに1つまたは複数のネットワークを介してデータ通信を提供する。例えば、ネットワークリンク1714は、ローカルネットワーク1715(例えば、LAN)を介して)、または通信ネットワーク1716を介して通信サービスを提供するサービスプロバイダによって操作された機器を介して、別のコンピュータに接続を提供してもよい。ローカルネットワーク1714および通信ネットワーク1716は、例えば、デジタルデータストリームを搬送する電気、電磁気、または光学信号、および関連する物理層(例えば、CAT5ケーブル、同軸ケーブル、光学ファイバなど)を使用する。様々なネットワークを介した信号およびネットワークリンク1714上にありコンピュータシステム1701との間でデジタルデータをやりとする通信インターフェース1713を介した信号は、ベースバンド信号、または搬送波ベース信号で実装されてもよい。
【0131】
ベースバンド信号は、デジタルデータビットの流れを表す非変調電気パルスとしてデジタルデータを伝え、ここで、用語「ビット」は、シンボルを意味するように広義に解釈されるべきであり、各シンボルは、少なくとも1つまたは複数の情報ビットを伝える。デジタルデータはまた、導電性媒体によって伝播されるか、伝播媒体によって電磁波として送信される振幅、位相および/または周波数偏移符号化信号などで搬送波を変調するために使用されてもよい。したがって、デジタルデータは、「配線」通信チャネルによって非変調ベースバンドデータとして送信されもよく、かつ/または搬送波を変調することによって、ベースバンドと異なる所定の周波数帯の範囲内で送信されてもよい。コンピュータシステム1701は、ネットワーク(単数または複数)1715および1716、ネットワークリンク1714および通信インターフェース1713を通して、プログラムコードを含むデータを送受信することができる。さらに、ネットワークリンク1714は、LAN1715によって、携帯情報端末(PDA)、ラップトップコンピュータ、または携帯電話などのモバイルデバイス1717に接続を提供してもよい。
【0132】
本実施形態は、これらに限定されないが、データのパターンを検索および識別することを含む多くの用途を有する。
【0133】
特定の実装形態について説明してきたが、これらの実装形態は単なる例として提示したものであり、本開示の教示を限定することは意図していない。実際には、本明細書に記載の新規の方法、装置およびシステムは、様々な他の形態で具体化されてもよい。さらに、本開示の趣旨から逸脱することなく、本明細書に記載の方法、装置およびシステムの形態の様々な省略、置き換えおよび変更を行うことができる。
図1
図2
図3A
図3B
図3C
図3D
図3E
図4A
図4B
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17