(57)【特許請求の範囲】
【請求項１】
回路においてグラフデータを表現および比較する方法であって、
前記回路により、一般化組み合わせハイパーマップとして前記グラフデータを表現するステップと、
前記回路により、固定点自由対合のアレイを含む複数の数字のアレイを使用して前記一般化組み合わせハイパーマップのサブマップを全単射的に表現するステップと、
前記回路により、ゲーデル数に前記複数の数字のアレイを全単射的にマッピングするステップと、
前記回路により、前記サブマップを表現する前記ゲーデル数と他のサブマップを表現するゲーデル数を比較することによって、前記一般化組み合わせハイパーマップの前記サブマップを前記別のサブマップと比較し、それにより前記グラフデータの構成および統合を効率的に実行するためにサブマップ間の同型性を判定するステップと、
を備える方法。
【請求項２】
前記回路により、他のサブマップと同型であると判定された前記一般化組み合わせハイパーマップのサブマップのトポロジを含むように構成パターンのデータベースをコンパイルし、前記一般化組み合わせハイパーマップの前記サブマップが、前記一般化組み合わせハイパーマップの前記サブマップに含まれ、前記他のサブマップが、前記他のサブマップに含まれるようにするステップと、
前記回路により、前記一般化組み合わせハイパーマップのそれぞれのサブマップが同型であると判定されたときに、前記一般化組み合わせハイパーマップの前記それぞれのサブマップの統合を実行するステップ、
をさらに含む請求項１に記載の方法。
【請求項３】
前記一般化組み合わせハイパーマップが、一般化組み合わせマップである請求項１に記載の方法。
【請求項４】
前記ゲーデル数が、自然数またはツリーベースの数の１つを使用して表現される請求項１に記載の方法。
【請求項５】
前記ツリーベースの数が、自己区切り３ビットコードを使用して表現される請求項４に記載の方法。
【請求項６】
前記一般化組み合わせハイパーマップの前記サブマップと前記他のサブマップの前記比較が、前記一般化組み合わせハイパーマップと前記他のサブマップとの間に同型性が存在するかどうかを判定する請求項１に記載の方法。
【請求項７】
前記一般化組み合わせハイパーマップと前記別のサブマップとの間に同型性が存在するかどうかの前記判定が、Ｗｅｉｓｆｅｉｌｅｒ−Ｌｅｈｍａｎテストを使用して実行される請求項６に記載の方法。
【請求項８】
ゲーデル数に前記複数の数字のアレイを全単射的にマッピングすることが、
前記回路により、前記一般化組み合わせハイパーマップの前記サブマップを項ツリーに変換するステップと、
前記回路により、前記項ツリーを使用して前記固定点自由対合を判定するステップと、
を含む請求項１に記載の方法。
【請求項９】
ゲーデル数に前記複数の数字のアレイを前記全単射的にマッピングすることが、
前記回路により、隣接する数字の対を単一の数字に構成して前記複数のアレイで隣接する数字の対を全単射的に表現する前記単一の数字を生成することによって、前記複数の数字のアレイの前記隣接する数字の対でカントール対関数を使用して、数字構成を実行するステップと、
前記回路により、前記生成された単一の数字および前記隣接する対の隣にある前記複数の数字のアレイの次の数字で前記カントール対関数を使用して、数字構成を実行して次の単一の数字を生成するステップと、
前記回路により、直前の反復に対応する生成された単一の数字および現在の反復に対応する前記複数の数字のアレイの数字の前記カントール対関数を使用することによって、現在の反復に対応する単一の数字の生成を前記複数の数字のアレイの各残りの数字に対して繰り返すステップと、
によって実行される請求項１に記載の方法。
【請求項１０】
前記グラフデータが、ニューラルネットワーク、セマンティックネットワーク、ソーシャルネットワーク、ストーリーのネットワーク、シナリオ、トラフィックパス、地理情報システムマップ、および分子構造の１つまたは複数を表現する請求項１に記載の方法。
【請求項１１】
前記一般化組み合わせハイパーマップが、ノードと、それぞれの前記ノードから延びるダーツと、前記ダーツのそれぞれの対を含むエッジと、それぞれの前記エッジを含むエッジ隣接面とを含む請求項１に記載の方法。
【請求項１２】
前記一般化組み合わせハイパーマップが、ノードを含み、それぞれのノードが、対応するデータオブジェクトへの対応するポインタを含む請求項１に記載の方法。
【請求項１３】
前記対応するデータオブジェクトが、他の一般化組み合わせハイパーマップを含む請求項１２に記載の方法。
【請求項１４】
前記回路により、エッジをダーツにカットすることによって前記一般化組み合わせハイパーマップを分解するステップと、
前記回路により、それぞれの頂点が前記一般化組み合わせハイパーマップのそれぞれのエッジに隣接する場合、前記一般化組み合わせハイパーマップのそれぞれの前記頂点を対応するエッジ媒介ノードに関連付けるステップと、
前記回路により、前記一般化組み合わせハイパーマップのサブマップのサブセットへのインジケータとして、前記対応するエッジ媒介ノードへのそれぞれのダーツを識別するステップと、
前記回路により、前記一般化組み合わせハイパーマップのそれぞれの面を対応する面媒介ノードと関連付けるステップと、
前記回路により、前記一般化組み合わせハイパーマップの前記サブマップの他のサブセットへのインジケータとして、前記対応する面媒介ノードへのそれぞれのダーツを識別するステップと、
前記回路により、構造的に統合するサブマップが、前記サブマップが構造的に統合するレベルまで同型であるように、同型サブマップを統合するために上位レベルから下位レベルへと階層的な方法で前記サブマップを反復的に符号化してトラバースするステップと、
をさらに含む請求項１に記載の方法。
【請求項１５】
前記グラフデータの前記構成および統合の前記実行が、
前記回路により、モデルマップとして前記他のサブマップを識別するステップと、
前記回路により、前記固定点自由対合を含むそれぞれの複数の数字のアレイを使用して、前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対してゲーデル数を生成するために前記一般化組み合わせハイパーマップの前記サブマップのダーツを選択することであって、各それぞれの複数の数字のアレイは、前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対応する選択するステップと、
前記回路により、前記モデルマップの項グラフの根を得るステップと、
前記回路により、前記根および前記根に隣接するノードのそれぞれのゲーデル数と前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対する前記ゲーデル数を比較して一致を判定するステップと、
前記回路により、一致が判定された場合、前記一般化組み合わせハイパーマップの前記サブマップの一部が前記別のサブマップの一部と同型であることをシグナリングするステップと、
によって実行される請求項１に記載の方法。
【請求項１６】
グラフデータを表現および比較する装置であって、
一般化組み合わせハイパーマップとして前記グラフデータを表現し、
固定点自由対合のアレイを含む複数の数字のアレイを使用して前記一般化組み合わせハイパーマップのサブマップを全単射的に表現し、
ゲーデル数に前記複数の数字のアレイを全単射的にマッピングし、
前記サブマップを表現する前記ゲーデル数と他のサブマップを表現するゲーデル数を比較することによって、前記一般化組み合わせハイパーマップの前記サブマップを前記別のサブマップと比較し、それにより前記グラフデータの構成および統合を効率的に実行するためにサブマップ間の同型性を判定するための計算効率を向上させる、
処理回路、を備える装置。
【請求項１７】
前記処理回路はさらに、
他のサブマップと同型であると判定された前記一般化組み合わせハイパーマップのサブマップのトポロジを含むように構成パターンのデータベースをコンパイルし、前記一般化組み合わせハイパーマップの前記サブマップが、前記一般化組み合わせハイパーマップの前記サブマップに含まれ、前記他のサブマップが、前記他のサブマップに含まれるようにし、
前記一般化組み合わせハイパーマップのそれぞれのサブマップが同型であると判定されたときに、前記一般化組み合わせハイパーマップの前記それぞれのサブマップの統合を実行する、
請求項１６に記載の装置。
【請求項１８】
前記一般化組み合わせハイパーマップが、一般化組み合わせマップである請求項１６に記載の装置。
【請求項１９】
前記ゲーデル数が、自然数またはツリーベースの数の１つを使用して表現される請求項１６に記載の装置。
【請求項２０】
前記ツリーベースの数が、自己区切り３ビットコードを使用して表現される請求項１９に記載の装置。
【請求項２１】
前記一般化組み合わせハイパーマップの前記サブマップと前記他のサブマップの前記比較が、前記一般化組み合わせハイパーマップと前記他のサブマップとの間に同型性が存在するかどうかを判定する請求項１６に記載の装置。
【請求項２２】
前記一般化組み合わせハイパーマップと前記別のサブマップとの間に同型性が存在するかどうかの前記判定が、Ｗｅｉｓｆｅｉｌｅｒ−Ｌｅｈｍａｎテストを使用して実行される請求項２１に記載の装置。
【請求項２３】
前記処理回路はさらに、
前記一般化組み合わせハイパーマップの前記サブマップを項ツリーに変換し、前記項ツリーを使用して前記固定点自由対合を判定することにより、ゲーデル数に前記複数の数字のアレイを全単射的にマッピングする、
請求項１６に記載の装置。
【請求項２４】
前記処理回路はさらに、
隣接する数字の対を単一の数字に構成して前記複数のアレイで隣接する数字の対を全単射的に表現する前記単一の数字を生成することによって、前記複数の数字のアレイの前記隣接する数字の対でカントール対関数を使用して、数字構成を実行し
前記生成された単一の数字および前記隣接する対の隣にある前記複数の数字のアレイの次の数字で前記カントール対関数を使用して、数字構成を実行して次の単一の数字を生成し、
直前の反復に対応する生成された単一の数字および現在の反復に対応する前記複数の数字のアレイの数字の前記カントール対関数を使用することによって、現在の反復に対応する単一の数字の生成を前記複数の数字のアレイの各残りの数字に対して繰り返すことにより、
ゲーデル数に前記複数の数字のアレイを前記全単射的にマッピングする、
請求項１６に記載の装置。
【請求項２５】
前記グラフデータが、ニューラルネットワーク、セマンティックネットワーク、ソーシャルネットワーク、ストーリーのネットワーク、シナリオ、トラフィックパス、地理情報システムマップ、および分子構造の１つまたは複数を表現する請求項１６に記載の装置。
【請求項２６】
前記一般化組み合わせハイパーマップが、ノードと、それぞれの前記ノードから延びるダーツと、前記ダーツのそれぞれの対を含むエッジと、それぞれの前記エッジを含むエッジ隣接面とを含む請求項１６に記載の装置。
【請求項２７】
前記一般化組み合わせハイパーマップが、ノードを含み、それぞれのノードが、対応するデータオブジェクトへの対応するポインタを含む請求項１６に記載の装置。
【請求項２８】
前記対応するデータオブジェクトが、他の一般化組み合わせハイパーマップを含む請求項２７に記載の装置。
【請求項２９】
前記処理回路はさらに、
エッジをダーツにカットすることによって前記一般化組み合わせハイパーマップを分解し、
それぞれの頂点が前記一般化組み合わせハイパーマップのそれぞれのエッジに隣接する場合、前記一般化組み合わせハイパーマップのそれぞれの前記頂点を対応するエッジ媒介ノードに関連付けし、
前記一般化組み合わせハイパーマップのサブマップのサブセットへのインジケータとして、前記対応するエッジ媒介ノードへのそれぞれのダーツを識別するステップと、
前記一般化組み合わせハイパーマップのそれぞれの面を対応する面媒介ノードと関連付けし、
前記一般化組み合わせハイパーマップの前記サブマップの他のサブセットへのインジケータとして、前記対応する面媒介ノードへのそれぞれのダーツを識別し、
構造的に統合するサブマップが、前記サブマップが構造的に統合するレベルまで同型であるように、同型サブマップを統合するために上位レベルから下位レベルへと階層的な方法で前記サブマップを反復的に符号化してトラバースする、
請求項１６に記載の装置。
【請求項３０】
前記処理回路はさらに、
モデルマップとして前記他のサブマップを識別し、
前記固定点自由対合を含むそれぞれの複数の数字のアレイを使用して、前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対してゲーデル数を生成するために前記一般化組み合わせハイパーマップの前記サブマップのダーツを選択することであって、各それぞれの複数の数字のアレイは、前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対応する選択し、
前記モデルマップの項グラフの根を得、
前記根および前記根に隣接するノードのそれぞれのゲーデル数と前記一般化組み合わせハイパーマップの前記サブマップのそれぞれのノードに対する前記ゲーデル数を比較して一致を判定し、
一致が判定された場合、前記一般化組み合わせハイパーマップの前記サブマップの一部が前記別のサブマップの一部と同型であることをシグナリングすることにより、
前記グラフデータの前記構成および統合を実行する、
請求項１６に記載の装置。
【請求項３１】
実行可能な命令であって、回路によって実行されると、前記回路に請求項１に記載の方法を実行させる命令を備える、非一時的なコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１４年１２月１０日に出願された米国仮出願第６２／０９０，１９０号に基づき、その優先権の利益を主張するものであり、その全内容は参照により本明細書に組み込まれる。
【０００２】
本明細書で開示される実施形態は、一般に、固有の可逆コード、および項代数を組み合わせハイパーマップ（ＣＨＹＭＡＰＳ：Combinatorial Hyper Maps）に埋め込むツリーベースのナンバリングシステムを使用してＣＨＹＭＡＰＳを符号化するための方法および装置に関し、より具体的には、装置および方法は、項代数の演算に対して可逆的で無損失（すなわち、全単射）であるナンバリングの複雑なデータ構造表現、パターン認識、サブグラフの高速統合、および算術演算を提供する。
【背景技術】
【０００３】
本明細書で提供される背景技術の説明は、本開示の文脈を一般的に提示することを目的とするものである。本発明者らの仕事は、この背景技術の項に記載されている範囲内のものであり、出願時に先行技術としての資格を有さないかもしれない説明の態様は、本開示に対して先行技術として明示的にも暗示的にも認められることはない。
【０００４】
検索エンジン、リレーショナルデータベースシステム、グラフ表現、ならびに大部分の構造データ表現および計算システムは、データが整数として記憶されるという性質を有する。これらの整数の符号化、演算、および復号化は、かなりのＣＰＵ時間を消費する。したがって、データの縮小されたサイズまたは圧縮および解凍スキームで演算することによって、計算に関連するコストを削減するためのかなりの努力がなされてきた。
【発明の概要】
【課題を解決するための手段】
【０００５】
組み合わせハイパーマップ（ＣＨＹＭＡＰＳ）、一般化組み合わせマップ（Ｇ−Ｍａｐｓ）、および／または項代数項としてデータを表現することを実装し、自然数またはツリーベースの数としてそれらを符号化するための方法および装置が提供される。方法および装置はさらに、データ表現の同型サブマップにわたって統合プロセスを実行することを含む。方法はまた、高速アルゴリズムを使用して項代数をツリーベースの数にマッピングし、可逆数値符号化および復号化を使用してＣＨＹＭＡＰＳとしてマッピング構造のグラフを表現することと、サブマップ（サブグラフ）のために最適化された形態のＣＨＹＭＡＰＳの表現を生成し、同型性および部分マッチングと一般的なマッチングプロセスをマッピング（グラフ化）することと、ＣＨＹＭＡＰＳの演算をそれぞれの数値表現の演算として実行することと、３ビットの自己区切りバイナリコードを使用して圧縮および解凍を実行することと、コードを記憶および検索することと、を含む演算を含む。
【０００６】
本開示のより完全な理解は、添付の図面と併せて検討したとき、以下の詳細な説明を参照することによって提供される。
【図面の簡単な説明】
【０００７】
【図１】一実装形態による、自然数またはツリーベースの数とすることができ、グラフまたは項代数項の同型サブマップの統合を実行することができるゲーデル数としてグラフまたは項代数項を符号化する方法のフロー図である。
【図２】一実装形態による、自然数またはツリーベースの数とすることができるゲーデル数としてグラフまたは項代数項を符号化するプロセスのフロー図である。
【図３Ａ】一実装形態による、グラフの図である。
【図３Ｂ】一実装形態による、グラフの組み合わせマップの図である。
【図３Ｃ】別の実装形態による、グラフの組み合わせマップの図である。
【図３Ｄ】一実装形態による、別のグラフの図である。
【図３Ｅ】一実装形態による、別のグラフの組み合わせマップの図である。
【図４Ａ】一実装形態による、自然数として固定点自由対合を全単射符号化する方法のフロー図である。
【図４Ｂ】一実装形態による、自然数を固定点自由対合に全単射復号化する方法のフロー図である。
【図５】一実装形態による、グラフ（入力グラフ）から項ツリー（出力サブマップ）への変換を示す図である。
【図６】一実装形態による、基本的な構成パターンのディクショナリを形成するサブマップの例を示す図である。
【図７】一実装形態による、同型サブマップ（すなわち、サブグラフ）の統合を実行するためにロケールを反復的に符号化してトラバースするデュアルステップアルゴリズムの例を示す図である。
【図８】一実装形態による、サブマップ間の同型性を評価する方法のフロー図である。
【図９】一実装形態による、サブマップ間の同型性を評価する方法のフロー図である。
【図１０】一実装形態による、組み合わせハイパーマップのダーツをラベル付けする方法のフロー図である。
【図１１】一実装形態による、自然数またはツリーベースの数として項代数項を全単射的に符号化する方法のフロー図である。
【図１２】一実装形態による、自然数として項代数項を全単射的に符号化する例を示す図である。
【図１３】一実装形態による、シンボルシーケンスを使用して組み合わせハイパーマップのダーツをラベル付けする方法のフロー図である。
【図１４】一実装形態による、項代数項および項ツリーを符号化する方法のフロー図である。
【図１５】一実装形態による、項代数項から項グラフを生成する方法のフロー図である。
【図１６】一実装形態による、項グラフ統合を実行する方法のフロー図である。
【図１７】一実装形態による、コンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【０００８】
グラフは、多くの活動分野で知識および関係の強力な表現を提供することができる。グラフデータベースは、データの表の代わりにグラフ構造を記憶する。通常、グラフデータベースは、ニューラルネットワーク、セマンティックネットワーク、ソーシャルネットワーク、関連するストーリーのネットワーク、シナリオ、ルート、パス、道路、または地理情報システム（ＧＩＳ）などの複雑なトポロジカル情報の記憶および検索を必要とするドメインに適用可能である。グラフデータベースの主な課題の１つは、構造マッチングに基づいたメンバーグラフの検索である。グラフの構造マッチングは、公知のＮＰ完全問題である。大きいグラフデータベースでは、データベースの膨大な数のグラフに対して構造マッチングを実行する必要があるため、構造マッチングは非常に困難となる。動的トポロジカルグラフデータベースからの検索は、分解空間がなく、空間が常に動的に変化するため、事前にインデックスされたプロパティベースのグラフデータベースからの検索よりはるかに困難である。
【０００９】
本明細書に記載の方法および装置は、高速ロジックに基づく推論のためにグラフ構造を一致させる機能を提供する。知識表現モデルを使用して、情報はグラフとして表現される。これらのグラフは、一般化組み合わせマップ（Ｇ−Ｍａｐｓ）に変換することができる。グラフ構造に対する一般化組み合わせマップ（Ｇ−Ｍａｐ）の表現を使用して、アルゴリズムは、Ｇ−Ｍａｐｓ内に固有のロケールとしてラティスパスのプロパティを使用して、グラフ構造のサブグラフがロケールに基づいて同型であるかどうかを判定する。ロケールが超球面の中心からの角度によってスイープされたエリアに近似する実数によって表現されると仮定すると、それはパーミュテーショナルコンプレックス（Permutohedral Complex）のその量子化された細分化から得られ、同型性テストのための候補サブグラフは、低多項式時間または最良のログ（Ｎ）時間で達成することができる。アルゴリズムは、各ロケールにＣＨＹＭＡＰ−ＮＵＭＢＥＲインデックスを使用することで、所与のグラフ構造で同型であるロケールを素早く識別することができる。
【００１０】
組み合わせマップ（ハイパーマップ）は、グラフ（ハイパーグラフ）のトポロジカル表現となり得、有限のダーツ（darts）のセットに作用する順列の対によって定義され、ダーツは頂点と入射エッジからなる結合を表現し、順列は所与の頂点（エッジ）に入射するエッジ（頂点）に順序を与える。ハイパーグラフは、一般化されたエッジ（ハイパーエッジと呼ばれる）が３つ以上のノードを接続することができるグラフである。ここでは、Ｇ−Ｍａｐｓに関して本明細書に記載の方法は、一般的であり、組み合わせハイパーマップにも適用される。同様に、他に明示的に述べられていない限り、組み合わせハイパーマップに関して本明細書に記載の方法は、一般的であり、Ｇ−Ｍａｐｓにも適用される。
【００１１】
Ｇ−Ｍａｐｓは、それぞれのＧ−Ｍａｐｓを固有に定義するために使用される数字の表現したリスト（例えば、ダーツ、順列、および対合）とすることができる。さらに、これらの数字のリストは、ゲーデルナンバリングを使用して単一の数字で表現することができ（例：カントールナンバリングを使用して単一の数字として数字の対をマップすること、これは数字のリストを単一の数字にマップするために繰り返し実行することができる）、数字のリストとそのゲーデル数との間の変換は、全単射（すなわち、可逆変換）を使用して実行される。しかし、長い数字のリストに対応するゲーデル数は非常に大きくなることがあり、従来のコンピュータハードウェアを使用してこれらの数字を記憶して表現することに課題が生じる。この課題は、非常に大きい数字をコンパクトに表現するのにより適したツリーベースの整数表現を使用することで克服される。標準的な数学的演算は、グラフおよび／またはサブグラフのゲーデル数のツリーベースの整数表現を使用して表現されたグラフおよび／またはサブグラフで実行することができる。したがって、ノードをトラバースして比較するために大量の計算を必要とするかもしれない２つのサブグラフの比較などの計算集約的機能は、対応するゲーデル数の基本的な算術演算を使用して数クロックサイクルで実行することができる。
【００１２】
したがって、本明細書に記載の方法は、知識表現（例えば、グラフ）に対応する複雑なデータオブジェクトを表現するために使用される大きい数字を扱うことができる、以前の最も速いスキームより桁違いに速い性能を達成する複雑な構造データを表現するツリーベースのナンバリングに基づいたベクトル符号化を使用する。実際には、ほとんどの場合、本明細書に記載の方法は、先行技術の方法と比較して指数関数的速度の向上を達成する。さらに、方法は、グラフに対応するゲーデル数の表現を記憶するのに必要なコンピュータストレージの大幅な削減を達成する。したがって、本明細書に記載の方法は、符号化された形態で大部分の計算を実行することにより、メインメモリ帯域幅要件を低減することによってプロセッサ性能を大幅に改善することができ、さらに、メモリのリソース消費の最適化において圧縮／解凍を利用することを可能にする。
【００１３】
本明細書に記載の方法は、例えば化学情報学の分野、特に定量的構造活性相関（ＱＳＡＲ）モデリングの分野に適用され、研究中の化学物質のグラフで計算できる多くのトポロジカルインデックスが存在する。例として、細矢インデックス、またはウィーナーインデックスが挙げられる。これらの指標は、化学構造の根底にあるグラフの接続性マトリックスおよびグラフの原子の性質（原子の電気陰性度の値など）に本質的に関係する。
【００１４】
上述のように、グラフとサブグラフ同型性は、一般的な場合ではＮＰ困難問題である。本明細書に記載の方法の新しい符号化を使用して、方法は、標準的なコンピューティングハードウェアで全般的により大きく複雑なグラフを処理するために、グラフのサブグラフの隣接する近傍を全単射整数表現に畳み込むことによって、グラフのロケールを符号化し、連続的な符号化を通じてグラフを連続的に反復する。プロセスは、直接インデックスルックアップのための順序ログ（Ｎ）の最良の場合の計算性能を有する性能において線形であり、Ｎは、ノードおよびエッジの数字に関するグラフのサイズに対応する。最悪の場合の性能は、グラフの問題空間の理論上の限界と同じである（すなわち、最悪の場合、問題はＮＰ困難になる）。本明細書に記載の方法は、標準的な統合マッチに基づいて…を生成するために単純化ステップおよび近似ステップを使用するが、高速で候補を返す。
【００１５】
本明細書に記載の方法は、整数コードとしてＧ−Ｍａｐｓ、項代数、および複雑な計算構造を表現する一連の符号化を含み、次いで、整数コードによって表現されたオブジェクトで直接実行する場合には著しく長い時間を要する計算を素早く実行するために、整数コードに計算を直接実行する。様々な整数コードが、Ｇ−Ｍａｐｓ、項代数の表現において、本明細書に記載の方法に従って整数コードに対する複雑なデータ構造および対応する演算を表現するために使用される。
【００１６】
整数コードは、パターン認識に対する複雑なデータ構造での計算のためのシステムおよび方法を提供する。例えば、任意の文字に任意の重みが割り当てられた任意のアルファベットの単語または項代数で符号化は機能する。整数コードは、部分マップをインデックスし、部分マップの構造を復元するハッシュとして使用することができる。さらに、各整数コードのセットは、損失のない方法で元のグラフを再構成するために使用することができる。したがって、整数コードの計算は、Ｇ−Ｍａｐｓの計算を表現する。
【００１７】
本明細書に記載の方法の寄与は、これらに限定されないが、１）論理プログラミングでＧ−Ｍａｐｓを実装することと、２）オープンおよびクローズド（軌道）が定義されるようにＧ−Ｍａｐｓのダーツのためのゲーデル代数を生成することと、３）グラフの最小構造単位がダーツの代数によって定義されるように、任意のネットワークまたはグラフを表現するためにＧ−Ｍａｐｓを使用すること（例えば、ダーツが、サイクルがクローズド構造を判定するように代数によってそれらの隣接するダーツに関してノードを記述すると、部分サブマップとしてのグラフのサイズ、タイプ、および形態にかかわらず、ダーツの対合をトレースバックすることによってＧ−Ｍａｐ表現からグラフを再構成することが可能になる）と、４）グラフが組み合わせマップの類似体であるダーツの代数の関数として、上述の単位／部分サブマップから任意のターゲットグラフを再構成することと、５）マッピング関数が入力を構築する際に統合メカニズムが直接作用するように、入力をそのアナログＧ−Ｍａｐに変換することによって入力グラフからクエリを生成することと、を含む。
【００１８】
したがって、本明細書に記載の方法は、本質的にＧ−Ｍａｐｓのダーツ上の対合または関数のセットであるサブマップ（すなわち、Ｇ−Ｍａｐｓ）のセット、およびダーツによって表現されるノードの周りの軌道（例えば、三角形）などの対合によって定義された最小構造の数字として概念グラフをモデリングする知識表現モデルを提供する。この知識表現モデルは、ノードがそのダーツおよび軌道に関して記述されると可能になり、相互作用マップのサイズ、タイプ、および形態にかかわらず、サブマップの接続性をトレースバックすることによってシンプレックスを再構成することが可能になる。本明細書で説明するように、サブマップ／マップのこの表現はまた、構造的制約の適用により同型パターンを見つけるために、機能的な区分的方法でサブマップ／マップの探索を非常に容易にする。グラフの最小構造単位は、ダーツの代数によって定義することができ、項ｍによって指定することができる。本明細書で説明するように、軌道および対合に関するダーツのこのｍベースの表現は、各ｍを別々にインデックスすることを可能にすると同時に、ｍが巨大なジグソーパズルでピースのように使用することができるように各ｍのすべての構造情報にアクセスすることを可能にする。したがって、概念グラフは、ノード記述の二部集合とみなすことができ、ノード記述間の関係は、グラフ全体からローカライズして切り離すことができる。したがって、各ノードは、非常に大きい複雑なジグソーパズルのピースと同様に、大きいグラフのサブ構造として定義される。
【００１９】
ここで図面を参照すると、同様の参照符号は、様々な図全体を通じて同一または対応する部分を示し、図１は、グラフまたは項代数を符号化し、サブマップを項ツリーとして比較して統合を実行する方法１００のフローチャートを示している。
【００２０】
方法１００のプロセス１１０では、グラフまたは項代数は、固定点自由対合を使用してグラフまたは項代数を表現し、次いで固定点自由対合をゲーデル数である自然数として符号化することによって、ゲーデル数として符号化される。さらに、ゲーデル数である自然数はさらに、３ビットの自己区切りバイナリコードを使用してツリーベースの数として符号化することができる。自然数のサイズに応じて、ゲーデル数をツリーベースの数として表現することは、ゲーデル数のメモリ記憶サイズを向上させることができる一方、数学的演算を実行するために自然数に変換する必要なく、ゲーデル数のツリーベースの数表現で直接実行される数学的演算を提供する。グラフまたは項代数からゲーデル数への変換のすべては、全単射であり、無損失で可逆的であることを意味する。
【００２１】
さらに、この符号化方法を固定点自由対合の使用と共に用いることにより、従来の対合とは対照的に、多くの利点が得られる。方法１００は、情報を失わずにコンパクトな全単射符号化を提供する。結果として得られた整数は、従来のデータ構造ではなく、コンピュータのメモリのビットストリングとして、より空間効率的に表現される。さらに、上述の表現は、それらがより速く記憶され、連続したビットストリングセグメントのキャッシュ動作を改善することができるために必要とするメモリが少ないので、非連続メモリエリアに散在するポインタベースのデータ構造に比べて改善された性能をもたらす。
【００２２】
方法１００のプロセス１２０では、グラフ／項代数の符号化を使用して、統合プロセスを実行するために、項ツリーとして表現されたグラフ／項代数のサブマップ間の迅速な比較を実行する。
【００２３】
方法１００のステップ１３０では、様々な数学的演算を整数コードに直接実行することができる。ゲーデル数を表現する自然数またはツリーベースの数で実行される数学的演算は、グラフ／項代数の直接的な数学的演算に相当する。
【００２４】
方法１００のステップ１４０では、整数コードは、ツリーベースの数を使用して整数コードを表現することによって圧縮される。特定の実装形態では、ツリーベースの数は、３ビットの自己区切りバイナリコードを使用してコンピュータメモリで表現することができる。任意選択で、ツリーベースの数を使用する整数コードの表現は、プロセス１１０の後であってプロセス１２０の前に実行することができる。あるいは、ツリーベースの数を使用するゲーデル数の表現は、プロセス１２０の後であってステップ１３０の前に実行することができる。
【００２５】
方法１００のステップ１５０では、プロセス１１０、プロセス１２０、ステップ１３０、およびステップ１４０の様々な結果を記憶し、後でさらなる処理および比較のために検索することができる。
【００２６】
方法１００は、有利には、項代数をツリーベースの数にマッピングし、これらの構造のグラフを固有の可逆数値符号化および復号化方法を使用してＧ−Ｍａｐｓとして表現する高速方法を提供する。さらに、方法１００は、有利には、同型性および部分マッチングをマッピング（グラフ化）するためにサブマップ（サブグラフ）に最適化された形態のＧ−Ｍａｐｓの表現を提供する。さらに、方法１００は、有利には、統合としても知られている一般的なマッチングのためのプロセスを提供する。
【００２７】
方法１００のプロセスおよびステップの詳細を、以下に説明する。
【００２８】
本明細書では、プロセス１１０の２つの実装形態について説明する。図２は、プロセス１１０の第１の実装形態であるプロセス１１０’のフロー図を示している。プロセス１１０’は、グラフをゲーデル数に可逆的に変換する。数学的論理では、ゲーデルナンバリングは、各シンボルおよびいくつかの正式な言語の整式に、そのゲーデル数と呼ばれる固有の自然数を割り当てる関数である。本明細書で使用する場合、グラフのゲーデル数は、グラフのＧ−Ｍａｐを表現するダーツ、対合、順列などのすべてを表現する単一の数字である。
【００２９】
プロセス１１０における第１のプロセス（すなわち、プロセス２１０）は、グラフで始まり、グラフのＧ−Ｍａｐ表現を生成する。例えば、図３Ｄはグラフを示し、図３Ｅは図３Ｄに示すグラフに対応するＧ−Ｍａｐを示している。グラフは、地理マップ、ソーシャルネットワーク、分子などを含む、任意のグラフデータから得ることができる。Ｇ−Ｍａｐは、そのダーツおよびそれらの関連する相対的な階層的サブマップへのグラフの分解に関して表現される。最下位レベルのマップは、ノード隣接に対応するａ０対合で構成される。次はａ１対合であり、この次の最高レベルは、エッジ隣接に対応し、次のレベルアップは、表１に要約されているように、面隣接、次にボリューム隣接などに対応する。グラフとＧ−Ｍａｐｓの関係についての詳細は、以下の通りである。
【表１】
0006704929.tif 000002
例えば、グラフは、様々な都市を結ぶ道路のマップなどのトポロジを表現することができる。都市を結ぶ道路は、２つのダーツ（ハーフエッジとも呼ばれる）として定義されるエッジによって表現することができ、各ダーツは、都市に対応するそれぞれのノード（頂点）から始まる。ダーツは、例えば、都市の名前を含む文字列へのポインタを含むことができる。例えば、分子の原子間の化学結合に対応する別のグラフは、都市を結ぶ道路のマップと同じトポロジを有することができる。しかし、分子の例では、ダーツは、都市の名前ではなく、原子のタイプに対応するオブジェクトへのポインタを含む。したがって、グラフおよびＧ−Ｍａｐは、トポロジを表現するが、あらゆる方法のオブジェクトを表現するために使用することもできる。実際には、ダーツが指すオブジェクトは、別のＧ−Ｍａｐとすることもできる。オブジェクトへのポインタに加えて、ダーツは、見分けがつかないオブジェクト（例えば、有機分子の同一であるが別個の炭素原子を指す２つのダーツ）を指すダーツを区別するための固有のラベルを含むことができる。
【００３０】
プロセス１１０のプロセス２２０では、Ｇ−Ｍａｐを使用して、Ｇ−Ｍａｐの固定点自由対合表現を生成する。以下で説明するように、整数の任意のＧ−Ｍａｐリストは、Ｇ−Ｍａｐのダーツ、順列、および対合を表現している。例えば、二次元組み合わせマップ（または２マップ）は、三つ組Ｍ＝（Ｄ、σ、α）であり、Ｄは、有限のダーツのセットであり、σ（φ）は、Ｄの順列であり、αは、固定点を持たないＤの対合である。例えば、図３Ｅに示すＧ−Ｍａｐのダーツは、セット｛１、−１、２、−２、３、−３、４、−４、５、−５、６、−６｝により与えられ、順列は、（１、−１）（２、−２）（３、−３）（４、−４）（５、−５）（６、−６）（７、−７）により与えられ、対合は、（１、２）（３、４、−１）（５、−４）（７、−２）（６、−３、−７）（−５、−６）により与えられる。
【００３１】
プロセス１１０のプロセス２３０では、数字構成を使用して、単一の数字を使用する数字の対を表現する。例えば、カントール対関数を使用して、数字の対が単一の数字を使用して可逆的に表現することができる方法を例示することができる。Ｇ−Ｍａｐを表現する数字のリストから対で数字構成を繰り返し実行すると、Ｇ−Ｍａｐ表現は、単一の自然数にまとめることができる。Ｇ−Ｍａｐのこの単一の数字表現は、Ｇ−Ｍａｐのゲーデル数である。数字の長いリストで単一の数値に対して数字対の構成を繰り返すと、ゲーデル数の自然数表現が非常に大きくなり、すなわちコンピュータで従来の数字表現を使用して記憶するには大きすぎるほど大きくなる。これが発生すると、ゲーデル数は、自然数ではなくツリーベースの数を使用して表現することができる。
【００３２】
次に、一般化組み合わせマップの命名法について説明する。組み合わせマップは、細分化されたオブジェクトを有するトポロジカル構造をモデリングする組み合わせオブジェクトである。組み合わせマップは、より高次元の方向付け可能な細分化されたオブジェクトを表現するために使用できる。組み合わせマップは、幾何学的モデリングにおいて、画像表現および処理における効率的なデータ構造として使用される。このモデルは、単純複合体および組み合わせトポロジに関連する。さらに、組み合わせマップは、メビウスの輪およびクラインの壺のような方向付け不可能なオブジェクトを表現する一般化マップであってもよい。組み合わせマップは、境界表現モデルであり、その境界によってオブジェクトを表現する。
【００３３】
いくつかのアプリケーションは、オブジェクトの細分化を表現するデータ構造が必要である。例えば、２Ｄオブジェクトは、頂点（０セル）、エッジ（１セル）、および面（２セル）に分解することができる。より一般的には、ｎ次元オブジェクトは、次元０〜ｎのセルで構成される。さらに、これらのセル間の隣接関係はまた、細分化のすべてのセルと、これらのセル間のすべての結合および隣接関係を記述することによって表現することができる。表現されたすべてのセルがシンプレックスである場合、単純複合体を使用することができる。しかし、任意のタイプのセルを表現するために、組み合わせマップまたは一般化マップなどのセルトポロジカルモデルが使用される。
【００３４】
図３Ａは、平面グラフの例を示している。図３Ｂおよび３Ｃは、頂点表記法および面表記法をそれぞれ使用する、図３Ａのグラフの組み合わせ表現の例を示している。二次元組み合わせマップ（または２マップ）は、三つ組Ｍ＝（Ｄ、σ、α）であり、Ｄは、有限のダーツのセットであり、σ（φ）は、Ｄの順列であり、αは、固定点を持たないＤの対合である。
【００３５】
２マップは、平面グラフに対応し、各エッジは、ハーフエッジと呼ばれることもある２つのダーツに細分化される）。順列σは、各ダーツに対して、正の向きで頂点を回して次のダーツを与え、他の順列αは、各ダーツに対して、同じエッジの他のダーツを与える。対合αは、検索エッジを可能にし（アルファはフランス語でアレート）、σは、検索頂点を可能にする（シグマはフランス語でソメット）。演算ψ＝σｏαは、各ダーツに対して、同じ面の次のダーツを提供するように定義することができる（ファイもまたフランス語でフェイス）。したがって、図５Ｂおよび図５Ｃに示されるように、順列がσまたはφであるかどうかに応じて、組み合わせマップを表現する２つの方法が存在する。これらの２つの表現は、頂点と面が交換されるように互いに重複する。
【００３６】
一般に、ｎ次元組み合わせマップ（またはｎマップ）は、（ｎ＋１）−タプルＭ＝（Ｄ、β１、…、βｎ）であり、Ｄは、有限のダーツのセットであり、β１は、Ｄの順列であり、β２、…、βｎは、Ｄの対合であり、βｉｏβｊは、ｉ＋２≦ｊ（ｉ、ｊ∈｛１、…、ｎ｝）の場合の対合である。ｎ次元組み合わせマップは、閉じた方向付け可能なｎ次元空間の細分化を表現する。ダーツは、１対１のマッピングを定義するためにのみ必要な抽象要素である。この定義の最後の線は、表現されたオブジェクトのトポロジカルな妥当性を保証する制約を修正し、組み合わせマップは、準多様な細分化を表現する。２次元組み合わせマップの初期定義は、ｎ＝２を固定し、σをβ１と、αをβ２と改名することによって検索することができる。
【００３７】
分子構造、都市の地理情報システム（ＧＩＳ）マップ、またはソーシャルネットワークなどのグラフデータから開始してＧ−Ｍａｐを構築することができ、各ノードは、固有の整数を使用してラベル付けされる。Ｇ−Ｍａｐは、所与の頂点の周りのエッジの向きを明示的に符号化しており、エッジは、ダーツと呼ばれる２つのハーフエッジで構成することができ、各ダーツは、取り付けられる頂点にその原点を有する。それらのダーツによって定義される２つのハーフエッジが同じエッジを判定する事実は、対合と呼ばれる順列関数に記録される。結果として、エッジの第１のダーツの後継は第２のダーツであり、第２ダーツの後継は第１のダーツである。配向したエッジは４つのダーツ：エッジを指定する２つ、およびエッジの相対的な向きまたは方向を指定する２つのダーツを有する。完全に配向したネットワークの向きは、ダーツを表現する整数の符号の方向に関する単純な規則を使用して達成することができる。ダーツがそれらのハーフエッジに同時入射していない（つまり、グラフのエッジを形成していない）にもかかわらず、ノードから始まっている場合であっても、次いでそれらはノードで１隣接と呼ばれてノードの周りで定義され、これはノード周りのダーツの配置を定義する巡回順列である。順列演算は、一般にα１対合と呼ばれ、順列によって定義されたダーツの配置は、ロケールと呼ばれる。２つのダーツが互いに対して２つの異なる場所にあり、０次元オブジェクトであるそれらのハーフエッジが隣接する場合、２つのゼロ次元の結合は、１次元の線を生成する。この対合は、一般にα０対合と呼ばれる。最も簡単な対合は、負の１（−１）倍であり、アプリケーションを２回実行すると、元の数字となる。連続するダーツのシーケンスの各軌道は、１つのノードに関連付けられ、このノードの周りを反時計回りに回転するときに遭遇するダーツのシーケンスを符号化する。面隣接およびボリュームまたはハイパーボリューム隣接順列は、一般に、当業者には一般化組み合わせマップとして定義され理解される。
【００３８】
Ｇ−Ｍａｐｓを操作するための方法の追加の詳細および実装形態が、その全体が参照により本明細書に組み込まれる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,に記載されている。
【００３９】
上記の定義に基づいて、プロセス２２０は、固定点自由対合を使用して表現することによって実現される。これは、Ｇ−Ｍａｐ  ＭがＭ＝（Ｄ、Ｓ、Ｑ、Ｅ）となるような三つ組（Ｄ、Ｓ、Ｑ）およびエッジセットＥによって表現することができる場合に実現され、Ｄは、各エッジを２つのダーツに分解することによって得られたダーツ（またはハーフエッジ）のセットに対応し、Ｓは、ＤａｒｔｓからＤａｒｔｓへの順列であり、そのサイクルは、各ノードの周りを反時計回りに回転するときに遭遇するダーツのシーケンスに対応する。ダーツからエッジへのマッピングは、サイクルが同じエッジに関連付けられた２つのダーツに対応する固定点自由対合である。使用するのは固定点自由であり、これはすべての対が別々の端を結ぶことを意味している  このようなマップによるトポロジの符号化は、１つのエッジを定義する２つのダーツ（対合のサイクル）で各枝を表現することによって実行される。分岐点の周りの枝の向きは、順列のサイクルによって明示的に符号化される。順列Ｓは、各ノードの周りのエッジの向きを明示的に符号化することに留意されたい。さらに、Ｑは、サイクルが同じエッジに関連付けられた２つのダーツに対応する固定点自由対合である。通常、埋め込みであるＥは、ダーツを有限の整数、文字またはベクトルのセットにマッピングする部分関数である。
【００４０】
このようなマップによるグラフの符号化は、１つのエッジを定義する２つのダーツ（Ｑのサイクル）で各枝を表現することによって実行される。分岐点の周りの枝の向きは、順列Ｓのサイクルによって明示的に符号化される。グラフを符号化する組み合わせマップに特徴を付けるために、ノードおよびエッジラベルのセット（ＶおよびＥ）を定義することができ、各ノードおよびエッジラベルは、マップの単一のサイクルＳおよびＱにそれぞれ関連付けられている。
【００４１】
図４Ａは、整数コードとしての固定点自由対合に対するプロセス２３０の実装形態の例を示している。図４Ｂは、整数コードから固定点自由対合に変換し直すことによってプロセス２３０を逆にするプロセス２３０（逆）の実装形態を示している。プロセス２３０は、本明細書では、ステップ４１０、４１２、４１４、４１６、および４１８の入力と出力との間の関係を明確に示すために、Ｐｒｏｌｏｇ（コンピュータプログラミング言語）の論理を使用して説明される。図４Ａおよび図４Ｂに示すように、特定のステップは、他のステップ内にネストされる。したがって、ステップは、外側のステップから始まり、内側のネストされたステップに進むことで次第に洗練される。関係定義は、Ｐｒｏｌｏｇ節の先頭（「：−」シンボルの前に位置する）として指定され、関係の結合に対する関係の洗練は、「：−」シンボルの後に提供される。複数の節（「ルール」とも呼ばれる）は、述語が適用される様々な状況を指定するために使用される。固定点自由対合は、第１が第２より厳密に小さくなるように、０から２ｎ−１までの数字のセットを２つの対でグループ化する。例は、［０−４、１−３、２−５］である。また、数字の対は、それらの第１の要素によって昇順に区分されたものとして正規表現されると仮定される。
【００４２】
ステップ４１０は、固定点自由対合から自然数コードへの全単射を説明している。ステップ４１０は、リストＩｓとして表されている固定点自由対合を固有の整数コードとして符号化する。対合Ｉｓの長さＬを判定した後、ステップ４１０は、０から２＊Ｌまでの連続する整数Ｎｓを生成し、それに対する変換は、以下の通りである。０から２＊Ｌまでの連続する数字Ｎｓが与えられ、Ｌは、対合Ｉｓの長さであり、我々はｉｎｖｏｌｕｔｉｏｎｓ＿ｃｏｄｅを呼び出して対合コードＫｓをＩｓの各対に関連付けし、次いで我々は結果として得られたリストを反転し、ｂｉｊ＿ｅｎｃｏｄｅを使用してそれに対する全単射符号化を構築する。
【００４３】
Ｐｒｏｌｏｇ述語「ｉｎｖ２ｃｏｄｅ」では、リスト「ｉｓ」として表される固定点自由対合は、変数「Ｃｏｄｅ」によって参照される固有の整数として符号化される。対合「ｉｓ」の長さＬが計算された後、述語「ｉｎｖ２ｃｏｄｅ」は、０から２＊Ｌまでの連続する整数Ｎｓを生成し、３引数述語「ｉｎｖ２ｃｏｄｅ」によって記述された変換が適用される。これらの関数は、
【数１】
0006704929.tif 000003
に示すＰｒｏｌｏｇコードで記述することによって実行することができる。
【００４４】
さらなるステップ４１０は、０から２＊Ｌまでの連続する数Ｎｓのリスト（Ｌは、対合「Ｉｓ」の長さである）が与えられた場合に、対合「Ｉｓ」の整数コードを計算する。この計算ステップ４１０を実行するために、ステップ４１２において述語「ｉｎｖｏｌｕｔｉｏｎ＿ｃｏｄｅｓ」を呼び出して対合コードＫｓを「Ｉｓ」の各対に関連付けし、次いでステップ４１０は結果として得られたリストを反転し、ステップ４１４において「ｂｉｊ＿ｅｎｃｏｄｅ」を使用することによって全単射符号化を構築する。これを達成することができるＰｒｏｌｏｇコードの例が、
【数２】
0006704929.tif 000004
に示される。
【００４５】
ステップ４１２は、ｎ個の対のセットとして０と２ｎ−１との間の数字のセットに対合を生成する。これらの数字は各々、２ダーツからなるエッジに対応する。ステップ４１２はまた、ダーツを選択するために使用されるコードＫおよびＫｓをメモリに記憶する。ステップ４１２は、Ｐｒｏｌｏｇ述語
【数３】
0006704929.tif 000005
によって実行することができる。
【００４６】
この述語「ｉｎｖｏｌｕｔｉｏｎ＿ｃｏｄｅｓ」は、Ｐｒｏｌｏｇ組み込み演算子「ｎｔｈ０」を使用して、リストＸｓのｔｔＫ番目の要素Ｙを抽出し、残りの要素Ｙｓを返す。
【００４７】
ステップ４１４は、階乗進法と同様の表記法を使用することによって実行される。１＊３＊５＊…（２ｎ−１）の固定点自由対合が存在すると仮定すると、固定点自由対合は、階乗進法の数字と（ある程度）同様の表記法を使用して符号化することができる。しかし、実際に階乗進法を使用する代わりに、全単射ベースｋの符号化を使用する同様の表記法が使用される。
【００４８】
全単射命数法は、すべての非負整数が、有限の桁の文字列を使用して正確に１つで表現することができる任意の数値システムとすることができる。全単射命数法による名前は、有限のシンボルのセットを使用して、非負整数のセットと有限の文字列のセットとの間のこの全単射（１対１対応）から導出される。
【００４９】
全単射ベースｋの命数法は、全単射の位置表記法である。全単射ベースｋの命数法は、各正の整数を符号化するために、セット｛１、２、…、ｋ｝（ｋ≧１）からの桁の文字列を使用することができ、文字列の桁の位置は、その値をｋのべき乗の倍数として定義する。この表記法は、ｋ−ａｄｉｃと呼ぶことができる。
【００５０】
ステップ４１４の全単射符号化は、対合を数える積１＊３＊５‥＊（２ｎ−１）でインクリメントを２に一致させるために、各ステップで底を２だけインクリメントすることによって保証され、この関数は、述語「ｂｉｊ＿ｅｎｃｏｄｅ＿ｓｔｅｐ」によって実行され、これは述語「ｂｉｊ＿ｅｎｃｏｄｅ＿ｓｔｅｐ」によって呼び出され、両方の述語は以下で説明される。各ステップにおいて、全単射ベースは、２だけインクリメントされ、整数コードは、以下に提供されるＰｒｏｌｏｇコードによって示されるように、ステップ４１８の述語「ｐｕｔ＿ｂｄｉｇｉｔ」の演算によって拡張される。
【数４】
0006704929.tif 000006
逆のプロセス２３０および２３０によって生成された結果の例として、以下は、整数コードおよび０から１０および８３から１００までの整数コードの対応する固定点自由対合である。これらの結果は、本明細書に記載のＰｒｏｌｏｇコードを使用して得られ、Ｐｒｏｌｏｇが正確かつ演算可能であることを実証した。Ｆｒｏｍ−Ｔｏの対は、ダーツとしてのＦｒｏｍ＜Ｔｏが対称的であるとみなされ、他の方向が陰となるようなものであることに留意されたい。
【００５１】
０＝０＋［］
１＝１＋［（０−１）］
２＝２＋［（０−１），（２−３）］
３＝３＋［（０−２），（１−３）］
４＝４＋［（０−３），（１−２）］
５＝５＋［（０−１），（２−３），（４−５）］
６＝６＋［（０−１），（２−４），（３−５）］
７＝７＋［（０−１），（２−５），（３−４）］
８＝８＋［（０−２），（１−３），（４−５）］
９＝９＋［（０−２），（１−４），（３−５）］
１０＝１０＋［（０−２），（１−５），（３−４）］
８３＝８３＋［（０−５），（１−３），（２−４），（６−７）］
８４＝８４＋［（０−５），（１−３），（２−６），（４−７）］
８５＝８５＋［（０−５），（１−３），（２−７），（４−６）］
８６＝８６＋［（０−５），（１−４），（２−３），（６−７）］
８７＝８７＋［（０−５），（１−４），（２−６），（３−７）］
８８＝８８＋［（０−５），（１−４），（２−７），（３−６）］
８９＝８９＋［（０−５），（１−６），（２−３），（４−７）］
９０＝９０＋［（０−５），（１−６），（２−４），（３−７）］
９１＝９１＋［（０−５），（１−６），（２−７），（３−４）］
９２＝９２＋［（０−５），（１−７），（２−３），（４−６）］
９３＝９３＋［（０−５），（１−７），（２−４），（３−６）］
９４＝９４＋［（０−５），（１−７），（２−６），（３−４）］
９５＝９５＋［（０−６），（１−２），（３−４），（５−７）］
９６＝９６＋［（０−６），（１−２），（３−５），（４−７）］
９７＝９７＋［（０−６），（１−２），（３−７），（４−５）］
９８＝９８＋［（０−６），（１−３），（２−４），（５−７）］
９９＝９９＋［（０−６），（１−３），（２−５），（４−７）］
１００＝１００＋［（０−６），（１−３），（２−７），（４−５）］
プロセス２３０の逆は、プロセス２３０（逆）によって実行することができ、これは以下に示すＰｒｏｌｏｇ述語を使用して実行することができる。
【００５２】
【数５】
0006704929.tif 000007
グラフまたはＧ−Ｍａｐを表現するゲーデル数となる整数コードを決定する上述の方法に加えて。カントール対はまた、数字構成の例として使用して、ダーツのリスト、順列、および対合のような数字のリストを単一のゲーデル数に統合することができる。例えば、２つの数字ｘおよびｙを単一の数字に全単射的にマッピングする対関数ｐ（ｘ、ｙ）は、
ｐ（ｘ、ｙ）＝２ｘ（２ｙ＋１）−１
によって与えられ、また
ｑ（ｘ、ｙ）＝２ｘ（２ｙ＋１）
として１つの解決法であるディオファントス方程式のより単純な全単射に還元することができる。
【００５３】
マルチセットおよびセットは、数字の対の数字構成によって、数字のリストから単一の数字へと、単一の数字に再帰的に変換することができる。さらに、対関数は全単射であるので、逆のプロセスを実行して、ペアワイズ差異を使用して数字のリストを得ることができる。数字のリストが長い場合、指数関数のタワーの結果として対関数を実行することから得られる単一の数字は、非常に大きくなる。いくつかの場合では、数字のリストから得られるゲーデル数は、従来のコンピューティングハードウェアを使用して記憶または処理するには大きすぎる。これらの場合、ゲーデル数をツリーベースの数として表現することが、有利となり得る。ツリー数は、これらのデータタイプの簡潔な表現を提供する。ツリー数としてのリスト、セットおよびマルチセットのこれらの符号化／復号化は、その表現サイズが一定の要素内に入るようにサイズ比例する。したがって、本明細書に記載の方法の符号化は、対関数の全単射性のために全単射と、ツリーベースの数の使用のためにサイズ比例の両方とすることができ、これは従来達成するのが困難な組み合わせであった。本明細書に記載の方法は、全単射およびサイズに比例するという両方の態様を達成するために、非常に豊富な組み合わせ情報を有するデータ構造を探索し、調べるために十分に位置付けられている。従来の主流の方法を使用してゲーデル数に変換される、非常に豊富な組み合わせツリー構造（すなわち、所与のサイズの非常に多くのツリーが存在する）に対応する組み合わせグラフは、長いシンボルの符号化がツリーの葉に比較的大きな数を置くことができ、伝播すると非常に迅速に増加するので、指数関数的に分裂する傾向がある。
【００５４】
ゲーデル数のサイズに比例した表現のためのツリーベースの数は、以下で詳細に説明される。また、対関数は、ゲーデル数の生成および項代数項に関するサブマップマッチングの実行に関して以下で説明される。ここで、項代数項は、「ｆ（Ｘ、ｇ（ａ、０、Ｘ）、［１，２］）」のようなネストされた関数であってもよく、関数ｆの引数は、Ｘ、ｇ（ａ、０、Ｘ）および［１，２］である。さらに、ｆの引数ｇ（ａ、０、Ｘ）の１つは、関数自体であり、引数ａ、０、およびＸを有する。この関数は、上述のＧ−Ｍａｐｓと同様に、項ツリーを使用して表現することができ、主関数が根であり、枝が引数であり、ｇ（ａ、０、Ｘ）のような関数に対応する枝は、枝の最後にあるノードからの枝を有する。したがって、上述の方法と同様の方法を、これらの項代数項に適用することができる。例えば、その全体が参照により本明細書に組み込まれる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)に記載されているように、関数「ｆ（Ｘ、ｇ（ａ、０、Ｘ）、［１、２］）」は、自然数６７８５４７９１６８９０５１３７３５１１６０７６として全単射的に符号化することができ、それにより符号化および復号化演算の演算が、それぞれ結果を生成する。
【００５５】
【数６】
0006704929.tif 000008
Ｇ−Ｍａｐをゲーデル数として符号化すると、プロセス２３０は完了し、プロセス１１０も完了する。方法１００は、プロセス１１０からプロセス１２０に進む。プロセス１２０は、同型性を判定するためにＧ−Ｍａｐの候補サブマップを比較することを含む統合プロセスを実行する。同型性問題は、Ａ＊アルゴリズムに基づいた方法、Ｇｒｅｅｄｙアルゴリズムを使用する近似方法、またはカーネル関数を使用して取りかかることができるが、本明細書に記載の方法は、
（ｉ）連続的に高い順序（ポイントツーポイント、ポイントツーエッジ、エッジツーエッジ、エッジツーフェイス、フェイスツーボリュームなど）で近隣−隣接関係に基づいたパターンのセットへの分解、
（ｉｉ）グラフを表現するグローバルマップへのローカルマップおよびそれらの構成のようなパターンに適用される新規の再帰的ツリーに基づくナンバリング、および
（ｉｉｉ）それらのパターンによってインデックスされるロケール間の準同型性に対応する候補選択の組み合わせを使用し、合計のマップである最大ロケールは、グラフ同型性であり、小さいロケールは、準同型性である。
【００５６】
したがって、方法１００は、表現力があり、効率的で正定であり、あらゆるグラフに適用可能である。方法１００のプロセス１２０は、通常のグラフウォークカーネルが同一であると考えられる下位構造を区別する。グラフのサブマップカーネルは、ノードのサブマップカーネルの合計である。したがって、完全なグラフカーネル、サブグラフカーネル、およびパスカーネルの計算は、特徴空間がサブグラフと同型のグラフで構成されている場合を除いて、困難である。したがって、パターンセットディクショナリが、プロセス１２０で使用される。従来の方法を使用すると、比較的小さいサブグラフであっても、大部分のグラフカーネルは依然としてかなりの計算量を必要とし、標準的なラップトップでは数日かかるので、方法１００は桁違いに速い。
【００５７】
プロセス１２０は、Ｇ−ＭａｐのサブＧ−Ｍａｐｓに対応するサブマップと呼ばれる項ツリーを判定し、それらのそれぞれのゲーデル数を使用してサブマップを迅速に比較することで、Ｇ−Ｍａｐを基本的な構成パターンに分解するカーネルを定義することにより実行することができる。図５は、項ツリー（すなわち、出力サブマップ）を生成するサブＧ−Ｍａｐ（すなわち、入力グラフ）からの変換の例を示している。Ｇ−Ｍａｐｓ間のカーネルは、限られたサイズの項ツリーによって表現されるサブマップへのそれらの分解に基づいており、各ツリーはサブＧ−Ｍａｐを使用して符号化される。したがって、カーネルは、各Ｇ−Ｍａｐのサブマップのバッグへの分解（すなわち、Ｇ−Ｍａｐの様々なサブＧ−Ｍａｐｓを表現する項ツリー）に基づいて、Ｇ−Ｍａｐｓ間で定義される。サブマップは、基本的な構成パターンのディクショナリを形成する。図６は、基本的な構成パターンのディクショナリの例を示している。
【００５８】
パターンは、ノードの価数がパターンの価数に対応する各ノードからの深さ優先検索ストラテジを使用して抽出される。したがって、各Ｇ−Ｍａｐは、カーネルアルゴリズムが指定される限られたサイズの項ツリー（すなわち、サブマップ）によって表現されるサブマップへの分解によって表現される。
【００５９】
Ｇ−Ｍａｐの各ｋ次元複合体は、ロケールを有する。したがって、エッジは、エッジ隣接面などのロケールを有する。または、面は、面に隣接するハイパーボリュームなどのロケールを有する。ここで説明する方法は、ロケールを反復的に符号化してトラバースするデュアルステップアルゴリズムを使用する。ロケールが構造的に統合すると、次いでグラフは一致するロケール（すなわち、サブグラフ）のレベルと同型となる。図７は、ロケールを反復的に符号化してトラバースするデュアルステップアルゴリズムの例を示している。
【００６０】
Ｇ−Ｍａｐの各ｋセルは、ロケールを有し、これは対合演算に基づいてセルの周りのダーツの配置として以前に定義されたものである。例えば、グラフのノードに対応するＧ−Ｍａｐの０セルは、隣接するノードによって形成されたすべてのエッジであるロケールとしてエッジを有することになる。これらのロケールの各々には、Ｇ−Ｍａｐのセルの各々のトポロジカルインデックスに基づいて、インデックスが割り当てられる。インデックスは、ロケールを構成するセルの各々の固有の構造およびコンテンツを保持する、Ｌｅｈｍｅｒのコードなどの符号化アルゴリズムを使用して計算することができる。Ｌｅｈｍｅｒのコードは、順列を符号化するために使用される。
【００６１】
一般的に、統合のプロセスの場合、プロセス１２０は、Ｇ−Ｍａｐｓがグラフで利用可能な最も高い共通次元で同型であるという前提で開始する。比較されたグラフのｋ次元複合体のロケールのインデックスが等しい場合、次いでロケールのサブグラフは、構造的に同等となる。プロセス１２０が次元ｋのロケールの構造的一致を発見しない場合、次いで以下同様に、次元０のロケールが考慮されるまで次元ｋ−１のすべてのロケールが考慮される。
【００６２】
次に、プロセス１２０の詳細について説明する。データ、情報または知識のいくつかの特徴または表現を通常表現する項代数項を、固有のツリー数に項代数をマッピングすることによってスケルトンを符号化する組み合わせマップに埋め込むことができる。項代数を表現するツリー数の埋め込みを達成するために、我々はノードおよびエッジラベルのセット（ＶおよびＥ）を定義し、各ノードおよびエッジラベルは、サイクルが各ノードの周りを反時計回りに回転するときに遭遇するダーツのシーケンスに対応する単一のサイクル順列、ならびに各ノードの周りのエッジの向きを明示的に符号化する順列に関連付けられ、ツリー数としても表現される数値コードを生成する。
【００６３】
以上のことから明らかなように、一般化組み合わせマップ（Ｇ−Ｍａｐ）は、ダーツと呼ばれる基本要素間の相対的な隣接関係の符号化順列の概念に基づくトポロジカルデータ構造および組み合わせデータ構造である。
【００６４】
本明細書に記載の方法は、ハーフエッジダーツと空ダーツという２種類のダーツを使用する。空ダーツを使用して部分組み合わせマップまたは部分構造を定義することができ、アルゴリズムは、サイクルをツリーに変換するために、またはその逆に、ダーツを追加してツリーをサイクルに変換するために結ばれていないオブジェクトの入射対に依存する。また、空ダーツは、本発明の本実施形態のアルゴリズムの目的のために、構造を完成するように「ブランク」を埋めることができる。ダーツの間には、次元性によって定義される隣接関係が存在し、空ダーツは定義された次元性を有さない（すなわち、ゼロではないが未定義であり、空ダーツは、必要とされるときはいつでも特別にマークされるが、これは通常非常に稀である。
【００６５】
単一のハーフエッジダーツの寸法は、ゼロである。ｋ次元セルの次元性は、ダーツがその一部となり得る次元Ｎを有するオブジェクトとは別々にかつ明確に参照することができる。したがって、ｋ＝ｄｉｍ（ｃ）は、セルｃの次元を表し、Ｎは、オブジェクトの次元を表す。また、０セルは頂点であり、１セルはエッジであり、２セルは多角形であり、３セルは多面体などである。表１は、グラフ要素とＧ−Ｍａｐ要素との間の対応関係およびその対応する対合のリストを示す。ダーツは、共に結ばれるか、または分離される場合は結ばれておらず、隣接する面の場合、「共有」エッジは、各面がそれを定義するそれ自身のダーツのセットを有するように分離される。ダーツを共に結ぶことは、順列演算によって定義され、順列演算子は、ダーツから組み合わせマップを構築する。
【００６６】
本明細書に記載のダーツは、２つの他の性質を有する。まず、ダーツは、整数を使用して固有にラベル付けされる。第二に、ダーツは、通常何らかの種類のコンテンツ（例えば、ソーシャルネットワークの人々の名前、またはタンパク質構造の原子の名前）である他のデータへのポインタである。ポインタとして、ダーツには様々な種類のデータを埋め込むことができる。単一のダートは、ノードを暗黙的に定義し、ダーツの埋め込みは、ノードに含まれるデータを定義し、他の組み合わせオブジェクトまたはマップを含むことができる。したがって、マップのトポロジカル構造は、根底にあるトポロジまたはスケルトンに幾何学的形状または形状の特徴を接続するのに役立つことができる埋め込みとは異なる。
【００６７】
１２０における統合プロセスは、クエリグラフと入力グラフとの間のサブマップ同型性を評価することを含む。図８は、サブマップ同型性評価を実行するためのプロセス８００を示している。上述の方法を使用して、Ｇ−Ｍａｐは、ゲーデル数を使用し、ツリーベースのナンバリングを使用して符号化することができる。さらに、項代数項は、我々がダーツの固定点自由対合としてオープンおよびクローズド（軌道）を指定することができるダーツを使用して、頂点またはエッジのノードに埋め込むことができる。例えば、ダーツに関して、三角形は最小のクローズド構造であり、エッジは最小のオープン構造である。ダーツが、サイクルがクローズド構造を判定するように代数によってそれらの隣接するダーツに関してノードを記述すると、部分サブマップとしてのグラフのサイズ、タイプおよび形態にかかわらず、ダーツの対合をトレースバックすることによって組み合わせマップからグラフを再構成することが可能になる。
【００６８】
所与のダーツおよびそれらの関連するサブ構造（サブマップおよびエッジ）は、厳密な順序付け（すなわち、向き）を有する。したがって、固有の配向したグラフを、順序付けられたダーツから組み立てることができ、この固有の配向したグラフは、常に意図された（サブ）グラフである。したがって、方法８００のサブマップ同型化ステップ８１０を見つけるために、クエリグラフをＧ−Ｍａｐに変換する。
【００６９】
次に、方法８００のステップ８２０は、基本サブマップ（すなわちサブツリーまたはサイクルまたはサブマップとしてサブマップを表現するサイズ「ｋ」の分解）の結合として、クエリグラフに対応するＧ−Ｍａｐから対合を抽出する。
【００７０】
方法８００のステップ８３０では、入力グラフとクエリグラフのサブマップ間の同型性は、Ｗｅｉｓｆｅｉｌｅｒ−Ｌｅｈｍａｎテストを使用して評価される。Ｗｅｉｓｆｅｉｌｅｒ−Ｌｅｈｍａｎテストが、サブマップが同型であることを示す場合、真の値が返される。それ以外の場合は、偽の値が返される。
【００７１】
比較は一度実行されるだけでなく、デュアルステップアルゴリズムを使用して複数回繰り返され、入力グラフとクエリグラフの両方の様々なサブマップを比較するロケールを反復的に符号化してトラバースする。基本的な構成パターンのデータベースは、入力グラフを基本サブマップにコンパイルすることによって定義することができる。クエリサブマップｃｎは、サブマップがクエリスキーマとなるようにダーツの変数を使用する。検索は、Ｗｅｉｓｆｅｉｌｅｒ−Ｌｅｈｍａｎテストを使用したダーツのサブ−サブマッピングに基づいて、データベースからクエリＧ−Ｍａｐｓを用いてサブマップスキーマを統合することによって進む。
【００７２】
検索を助けるために、図９に示す方法９００を使用して、検索インデックスを組み立てることができる。検索インデックスは、一致するサブマップをグラフの恒等式に符号化することに基づいて構築され、インデックスサブマップのセットは、Ｗｅｉｓｆｅｉｌｅｒ−Ｌｅｈｍａｎテストで必要とされる統合のステップなしで、さらなるクエリの処理に使用される。
【００７３】
方法９００のステップ９１０では、エッジをダーツにカットすることによって入力グラフを分解する。
【００７４】
方法９００のステップ９２０では、各頂点対エッジ隣接について、ＥＡノードとしてこれらをラベル付けし、元のグラフの新しいサブマップとしてこれらにダーツを指定する。
【００７５】
方法９００のステップ９３０では、各三角形軌道について、面対頂点としてこれらを指定して隣接して対向させ、ＦＡノードとしてこれらをラベル付けし、元のグラフの新しいサブマップとしてこれらにダーツを指定する。
【００７６】
方法９００のステップ９４０では、グラフから引き出されたマップの各ｋセルは、別のサブマップに関連して表示されるサブマップを有する。例えば、エッジは、サブマップである。さらに、一致する面は、サブマップである。さらに、面は、それらのサブマップとしてハイパーボリュームなどのサブマップを有することができる（すなわち、面は、ハイパーボリュームに隣接するエッジである）。
【００７７】
方法９００のステップ９５０では、デュアルステップアルゴリズムが適用されてサブマップを反復的に符号化してトラバースし、一致しなくなるまで進行する。
【００７８】
方法９００のステップ９１０では、サブマップが構造的に統合する場合、次いでグラフは一致するサブマップ（すなわち、サブグラフ）のレベルまで同型となる。
【００７９】
方法９００は、入力グラフのサブマップがクエリグラフと比較される検索インデックスを提供する。方法８００は、入力グラフのサブマップをクエリグラフとどのように比較するかについての命令を提供するが、どのサブマップが比較されるべきかについての命令を含まないため、方法９００を補足する。したがって、方法８００および９００は、プロセス１２０の機能を実行するために共に機能する。
【００８０】
さらに、本明細書に記載の方法は、ネットワークフローを表現するグラフと共に使用することができる。ネットワークフロー（すなわち、有向フローを含むエッジを有するグラフ）は、４つのダーツの対によって表現され、グラフは、ダーツの対によって表現される。Ｘを有限のセットとし、Ｋを１、ａ、ｂ、およびｃによって表される４つの要素のクライン群とし、ｃ＝ａｂである。Ｘ  Ｅ  Ｘの場合、セットＫｘ＝｛ｘ、ａｘ、ｂｘ、ｃｘ｝は、四セルと呼ばれる。マップの基本的な要素は、ダーツと呼ばれ、各有向エッジは、異なる側面および方向の４つのダーツで構成される。有向マップの場合、エッジを表現するダーツの対で十分である。ネットワークフローを表現する組み合わせマップＭは、Ｘが有限のダーツのセットである三つ組（Ｘ、Ｐ、Ｋ）を使用して表現することができる。したがって、単一の「エッジ」マップは、４つのダーツによって表現される。グラフの頂点は、その周りのダーツの巡回順列によって記述される。したがって、マップの巡回順列の記述は、マップのすべての頂点のダーツの配向したトラバーサルで構成されるシーケンスである。一般的には、通常、所与のマップを記述するために書き込むことができる、すべて異なる多くの巡回順列が存在する。したがって、マップは、順列からなる組み合わせ構造であり、これらの順列は、本発明で方法１０００によって符号化される。
【００８１】
方法１０００のステップ１０１０では、ダーツのすべては、ラベルとして固有の整数を使用して列挙される。
【００８２】
方法１０００のステップ１０２０では、式ａ２＝ｂ２＝ｃ２＝１およびｃ＝ａｂ＝ｂａに従って、ダーツの整数値の巡回順列の各々を符号化し、Ｈは、ｖの順列であり、それによりＰの各軌道はｉＰ０の（ｘ、Ｐｘ、．．．、Ｐｉｘ）および（ａｘ、ａＰ＿１ｘ、．．．、ａＰ＿ｉｘ）としての共役対からなり、｛Ｐ、ａ、ｂ｝によって生成された群は、ｖに対して推移的である。
【００８３】
上述のように、項代数項は、方法１００を使用して符号化することができる。したがって、グラフデータを整数コードに符号化するステップ１１０の代わりに、項代数の項（以下、項代数項）である関数を、ゲーデル数を使用して符号化する。さらに、サブマップ（すなわち、項ツリー）間の比較は、関数の引数の引数間の比較である。例えば、関数ｆ（Ｘ、ｇ（ａ、０、Ｘ）、［１、２］）は項代数項であり、ｆ（Ｘ、ｇ（ａ、０、Ｘ）、［１、２］）が項ツリーとして表現された場合、次いでｇ（ａ、０、Ｘ）は、ｆ（Ｘ、ｇ（ａ、０、Ｘ）、［１、２］）のサブマップとなる項ツリーに対応する。さらに、Ｘは、ｆ（Ｘ、ｇ（ａ、０、Ｘ）、［１、２］）の引数であり、Ｘはまた、ｆ（Ｘ、ｇ（ａ、０、Ｘ）、［１、２］）の引数の引数である。したがって、ｆ（Ｘ、ｇ（ａ、０、Ｘ）、［１、２］）の項ツリーから導出された項グラフは、周期的となる。
【００８４】
図１１は、グラフデータではなく項代数が使用される場合の方法１００のプロセス１１０に対応するプロセス１１０’’を示している。プロセス１１０のステップ１１０５は、項のツリーの正規表現を生成している。図１２は、関数（例えば、ｆ（ａ、ｇ（ｂ、Ｘ）、ｈ（Ｘ、１０）））を２つの部分に分割することができることを示している。第１の部分は、引数の構造を表現する括弧構造（すなわち、スケルトン）である。第２の部分は、コンテンツである。
【００８５】
ステップ１１１０では、コンテンツは、全単射ベースｋを使用して符号化される。図１２に示すように、文字列は、全単射ベースｋの数字として表現することができ、ｋは、アルファベットのサイズである。したがって、図１２に示すように、単語、アスキーコードとしてのそのアルファベットのリスト、および数字Ｎの間の全単射は、アスキーコードで数字構成を実行することによって（例えば、上述したカントール対関数を使用して）、使用して導出することができる。ステップ１１２０では、アスキーコードの文字列の全単射符号化が、単一の数字に統合される。
【００８６】
ステップ１１３０では、図１２の下部に示すように、括弧で表現されたＣａｔａｌａｎスケルトンを項ツリーに変換する。
【００８７】
ステップ１１４０では、Ｃａｔａｌａｏｎスケルトンの全単射符号化が実行される。例えば、この全単射符号化は、Ｃａｔａｌａｎスケルトン項のために計算された固定点自由対合とすることができる。
【００８８】
Ｃａｔａｌａｎスケルトン項ツリーの全単射符号化は、Ｃａｔａｌａｎスケルトン項ツリーを表現する単一の数字を生成して実行される。
【００８９】
ステップ１１５０では、例えば、固定点自由対合の数字対の数値構成が実行され、Ｃａｔａｌａｎスケルトンのトポロジを表現する単一の自然数を生成する。
【００９０】
ステップ１１６０では、コンテンツを表現する自然数（シンボルシーケンスとも呼ばれる）を、上述のカントール対関数などの対関数を使用して、Ｃａｔａｌｏｎスケルトンのトポロジを表現する自然数と組み合わせることによって、単一の自然数が生成される。
【００９１】
ステップ１１７０では、ステップ１１６０からの単一の自然数が、ツリーベースの数として表現される。
【００９２】
コンテンツ（コンテンツは、シンボルシーケンスとも呼ばれる）を表現することで、Ｃａｔａｌｏｎスケルトンのトポロジを表現する自然数と組み合わされる。
【００９３】
プロセス１１０’’の機能は、擬似コードを実行する演算子ｅｎｃｏｄｅＴｅｒｍによって実行することができる。
【００９４】
【数７】
0006704929.tif 000009
項代数項の間の同型性を判定するために、項代数項のトポロジを項ツリーで表現することができ、項ツリーのノードは、オブジェクトへのポインタを含むＧ−Ｍａｐｓのダーツと同様に、対応するコンテンツへのポインタを含むことができる。さらに、Ｇ−Ｍａｐｓと同様に項グラフを、項代数項の項ツリーに対して生成することができる。したがって、データは、マップに埋め込むことができ、項代数項を表現する。各ファンクタは、頂点に置き換えられ、引数は、頂点の周りでダーツに置き換えられる。ネストされた項は、いくつかのダーツが頂点を共有することを意味する。各固有の原子のセットについて、固有の整数のラベル付けが実行される。
【００９５】
項グラフは、組み合わせマップとして表現された標準項代数項ツリーから、実行時に動的にコンパイルされる組み合わせデータ構造である。項代数項ツリーは、各要素が自然数として符号化され、各自然数が項ツリーの枝を表現する固有の整数マップに変換される。整数構造である項ツリーは、項代数項とは区別されるが、同等の書き換えであり、動的に縮小され、項グラフにプリコンパイルされる。項グラフは、ダーツが始まった場所である元のシンボルの項へのダーツの埋め込みを形成する接続された数字のマップとして表現される。
【００９６】
マップをラベリングして表現するための正規プロトコルが、マップを記述するために使用することができる巡回順列の多様性を克服するために使用される。ダーツがシンボルＳ（例えば、コンテンツ）で埋め込まれる場合、同じエッジを共有する他のダーツも埋め込むことができ、Ｓを使用して記述することができる。所与のマップの幅優先トラバーサルは、訪問したダーツのシンボルを訪問順序に従って待ち行列に記憶されるシンボルシーケンスに追加する。ダーツラベルを判定する方法は、擬似コードを使用して図１３に示される。
【００９７】
この表現は、シンボルシーケンスを項として記憶することを可能にし、他のシンボルシーケンスセットと統合する項は、マップ統合と同等となる。マップの組み合わせ性質に基づいたシンボルシーケンスの数字、したがって自然数は、指数関数的に増加し、したがって単純な統合は実行不可能である。したがって、サブマップシーケンスセットのシンボルシーケンスは、有利には、項グラフとして構成することができる。
【００９８】
次に、プロパティおよび項ツリーの関係の定義が提供される。マップＭおよび対応するシーケンスセットがサブマップの結合数Ｄ（Ｍ）として表現される場合、ＴＴ（Ｍ）として表されるＭの項ツリーは結合数の有根ツリーであり、それにより、１）このツリーの各ノードは、ｓｖとして表されたシンボルシーケンス（構造は、ブラシまたはブッシュ状グラフのように見える）を表現する結合数に関連付けられ、２）ＴＴ（Ｍ）の各エッジを親から子に向けさせ、３）根からノードまでの各パス、例えばｖは、根からノードへのシンボルシーケンスの自然数符号化に関連付けられ、４）このツリーの任意のノードｖについて、ｖの子に関連する数字は互いに異なり、５）Ｄ（Ｍ）の任意の結合数ｓについて、ｓ＝ｓｖとなるようにこのツリーにノードｖが存在し、６）このツリーの任意のノードｖについて、ｓｖが規則的なシーケンスである場合、次いでｓ＝ｓｖとなるようにＤ（Ｍ）に自然数ｓが存在し、７）関連する自然数で表現される２つのシンボルシーケンスが同等である場合、２つのパスは同等であり、８）サブツリーＴｕおよびＴｖが同等となるように、ＴＴ（Ｍ）の任意の２つのノードｕおよびｖについて、ＴＴ（Ｍ）からＴｕを除去し、ｕの順列から１つのエッジをｖに追加し、９）ＴＴ（Ｍ）の任意のパスｐについて、マップＭおよび項ツリーＴＴ（Ｍ）および項グラフＴＧ（Ｍ）が与えられた場合、ｑがｐと同等になるようにＴＧ（Ｍ）にパスｑが存在し、１０）項グラフの根は、入力されるエッジのないノードであり、マップの任意のシンボルシーケンスの最初のシンボルは、「１」であり、これは項グラフの根に関連するシンボルと同じとなる。
【００９９】
項ツリーの上記の定義および記述に基づいて、項グラフ表現は、それぞれ図１４および図１５に示す方法１４００および１５００を使用して書き込むことができる。方法１４００は、項ツリーを作成し、方法１５００は、項グラフを作成する。方法１４００と１５００の両方は、擬似コードを使用して表現される。前処理では、各モデルマップに対する対応するシンボルツリーの構成が実行される。
【０１００】
ｎ個のエッジを持つマップが与えられた場合、サブマップシーケンセットにシンボルシーケンスを表現する最大でＯ（２ｎ）個の接続サブマップおよびＯ（ｎ２ｎ）個の数字が存在する。したがって、最悪の場合、シンボルグラフの記憶複雑度は、Ｏ（ｎ２（２ｎ））個の数字となる。平均的な場合では、データにパターンが存在する構造化データの場合、組み合わせ複雑度ははるかに低くなる。ツリーベースのナンバリング、およびツリーサイズまたはビットサイズでコードを選択するためのルールを使用すると、ナンバリングは簡潔になる。
【０１０１】
図１６に示す方法１６００は、項グラフ間の統合プロセスを実行する。項グラフは、マップによって表現することができる。方法１６００によって実行される項グラフサブマップ統合演算は、項グラフパターンマップＧの項サブグラフと統合する（例えば、同型である）モデルマップＭの項サブグラフが存在するかどうかを確認する。Ｇの根がＭの項グラフの第１の項と一致する場合、次いでサブ項グラフ同型性アルゴリズムは根の子の第２の項と一致し、反復的に続く。デュアルループが実施され、各反復マッチング演算が項グラフを反復的に降下させる。したがって、方法１６００は、多項式時間で機能し、その計算複雑度は、Ｏ（ｋｎ）であり、ｎは、パターンマップのダーツの数であり、ｋは、モデルマップの項グラフのノードの最大次数である。方法１６００の計算複雑度は、ｋが限定される場合は線形であり、最悪の場合ではＯ（ｍｎ）であり、ｍは、モデルマップのダーツの数である。
【０１０２】
ここで、ツリーベースのナンバリングについて説明する。ツリーベースの数は、以下のように項のセットとして誘導的に定義される。
【０１０３】
ツリー数Ｘは、Ｘ＝ｅまたはＸが述語ｖ（Ｔ、Ｔｓ）またはｗ（Ｔ、Ｔｓ）の１つである場合にのみ、ツリーベースのナンバリングデータタイプＴの要素であり、Ｔｓは、Ｔの要素の有限のシーケンス（リスト）を表す。
【０１０４】
データタイプは、以下のルールによってセットで表現される。
【０１０５】
（ａ）項ｅは、空の葉であり、ゼロに対応する。
【０１０６】
（ｂ）関数ｏ（ｘ）＝２ｘ＋１を定義する
（ｃ）関数ｉ（ｘ）＝２ｘ＋２を定義する
（ｄ）数字Ｎに評価する関数ｏおよびｉからｅへのアプリケーションの固有のシーケンスとして任意の数字を定義する。
【０１０７】
（ｅ）以下のようにｖｗツリーを定義する：
（ｉ）ｏ個のアプリケーションの数Ｔ＋１（カウントが０から始まる）をカウントする項ｖ（Ｔ、Ｔｓ）と、それに続くＴｓにおけるｉおよびｏ個のアプリケーションの同様のカウントの変更を定義する、
（ｉｉ）ｉ個のアプリケーションの数Ｔ＋１をカウントする項ｗ（Ｔ、Ｔｓ）と、それに続くＴｓにおけるｏおよびｉ個のアプリケーションの同様のカウントの変更を定義する。
【０１０８】
（ｆ）可逆述語ｓ（Ｐｒｅｄ、Ｓｕｃｃ）を介して後継および前任者を定義し、Ｓｕｃｃは、項書き換え論理を使用する以下のようなＰｒｅｄの後継である：
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).
（ｇ）恒等式は、以下の通りである：
【数８】
0006704929.tif 000010
（ｈ）ツリーから自然数への全単射：
【表２】
0006704929.tif 000011
【数９】
0006704929.tif 000012
したがって、Ｎ＝４２となる。
【０１０９】
ｏおよびｉの演算子の項の例：
０＝ｅ；１＝ｏ（ｅ）；２＝ｉ（ｅ）；３＝ｏ（ｏ（ｅ））；４＝ｉ（ｏ（ｅ））；５＝ｏ（ｉ（ｅ））
ツリーとしての例：０＝ｅ、１＝ｖ（ｅ、［］）、２＝ｗ（ｅ、［］）、３＝ｖ（ｖ（ｅ、［］）、［］）、４＝ｗ（ｅ、［ｅ］）、５＝ｖ（ｅ、［ｅ］）
したがって、Ｎ＝２０とすると、対応するツリー項は、ｗ（ｅ、［ｅ、ｅ、ｅ］）である。
【０１１０】
【数１０】
0006704929.tif 000013
であり、したがって、対応するツリー項は、ｖ（ｖ（ｖ（ｖ（ｖ（ｅ、［］）、［］）、［］）、［］）、［］）である。
【０１１１】
（ｉ）項ツリー：以下の関数Ｔ（ｘ）は、数字に関連するツリー表現を定義する。
【０１１２】
【数１１】
0006704929.tif 000014
（ｊ）ｏおよびｉの項のツリー変換：
【数１２】
0006704929.tif 000015
（ｋ）２つの数字ａおよびｂの乗算：
on(a)om(b) = o(n+m).(ab + a + b) - on(a) - om(b)
（ｌ）減算：
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
ペアノの公理が成立し、｛Ｔ、ｅ、ｓ｝がペアノ代数であるという構造的誘導によって証明することができる。したがって、これらの定義は、空のシーケンスに達するまで、カウンタ（ｉおよびｏ）に対しても再帰的に適用することができる。したがって、すべての算術演算は、ツリーベースのナンバリングで実行することができる。さらに、本明細書で説明するツリーベースのナンバリングは、大きな不平衡のバイナリツリーに拡張されたときに、２ｘ−１のような指数の塔の線形結合を逆に有利に処理することができる。
【０１１３】
ｏおよびｉのｎ反復の恒等式：
【数１３】
0006704929.tif 000016
および、
【数１４】
0006704929.tif 000017
また、ｋについて、
【数１５】
0006704929.tif 000018
本発明で先に定義したように、ｏ（ｘ）＝２ｘ＋１およびｉ（ｘ）＝２ｘ＋２であれば、ｓ（ｘ）＝ｘ＋１およびｓ’（ｘ）＝ｘ−１を設定し、我々は：
ｏｎ（ｋ）＝ｓ（ｉｎ（ｓ’（ｋ）））；ｉｎ（ｋ）＝ｓ’（ｏｎ（ｓ（ｋ）））
を設定する。
【０１１４】
以下は、ｏおよびｉの反復されたアプリケーションの後継および前任に関連する：
ｓ（ｏｎ（ｋ））＝ｉ（ｏｓ’（ｎ）（ｋ））；ｓ（ｉｎ（ｋ））＝ｏｎ（ｓ（ｋ））
ｓ’（ｏｎ（ｋ））＝ｉｎ（ｓ’（ｋ））；ｓ’（ｉｎ（ｋ））＝ｏ（ｉｓ’（ｎ）（ｋ））
本明細書に記載のツリーベースの数は、計算の取り扱いを、ネイティブプロセッサの制限されたビットサイズではなく、それらのオペランドの表現サイズによって制限されるようにする。ツリーベースの数は、まばらなまたは密集したリスト、セットおよびマルチセットを簡潔に表現するために使用される。これは、データタイプの全単射のサイズに比例するゲーデル数を提供する。
【０１１５】
ネットワークを介したデータの記憶および検索ならびに転送は、ツリーサイズまたはビットサイズのいずれかの２つのパラメータによって圧縮および選択される。ビットサイズがツリーサイズより著しく大きい場合、次いでツリーベースの数がデータ構造を符号化する数字の表現に使用されるか、または通常のビット文字列が使用される。ツリーベースの数の場合、自己区切り３ビットコードが以下のように使用される。
【表３】
0006704929.tif 000019
コードが自己区切りであるのは、常にオープン括弧およびクローズド括弧の対が存在するので括弧をカウントすることができるからである。
【０１１６】
上述したアルゴリズムおよびプロセスおよび本発明の特徴の各々は、例えば、特にプログラムされた処理回路を使用して、何らかの形態のコンピュータプロセッサまたは処理回路を使用して実装することができる。回路は、回路の処理を改善し、人間または本実施形態の特徴を欠いた汎用コンピュータによっても不可能な方法でデータを処理することを可能にする上述の機能および特徴を実装するように特に設計またはプログラムされてもよい。当業者であれば認識するように、コンピュータプロセッサは、個別論理ゲートとして、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のコンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）として実装することができる。ＦＰＧＡまたはＣＰＬＤの実装は、ＶＨＤＬ、Ｖｅｒｉｌｏｇ、または任意の他のハードウェア記述言語でコード化されてもよく、コードは、ＦＰＧＡまたはＣＰＬＤ内で電子メモリに直接、または別個の電子メモリとして記憶されてもよい。さらに、電子メモリは、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、またはＦＬＡＳＨメモリなどの不揮発性であってもよい。電子メモリはまた、静的または動的ＲＡＭなどの揮発性、およびマイクロコントローラまたはマイクロプロセッサなどのプロセッサであってもよく、電子メモリ、ならびにＦＰＧＡまたはＣＰＬＤと電子メモリとの間の相互作用を管理するために設けられてもよい。
【０１１７】
あるいは、コンピュータプロセッサは、上述の非一時的電子メモリおよび／またはハードディスクドライブ、ＣＤ、ＤＶＤ、ＦＬＡＳＨドライブもしくは任意の他の既知の記憶媒体のいずれかにのいずれかに記憶される、本明細書に記載の機能を実行するコンピュータ可読命令のセットを含むコンピュータプログラムを実行してもよい。さらに、コンピュータ可読命令は、米国インテル社（Ｉｎｔｅｌ）のＸｅｎｏｎプロセッサまたは米国ＡＭＤ社のＯｐｔｅｒｏｎプロセッサなどのプロセッサ、ならびにＭｉｃｒｏｓｏｆｔ  ＶＩＳＴＡ、ＵＮＩＸ（登録商標）、Ｓｏｌａｒｉｓ、ＬＩＮＵＸ、Ａｐｐｌｅ、ＭＡＣ−ＯＳＸおよび当業者には既知の他のオペレーティングシステムなどのオペレーティングシステムと連動して実施する、ユーティリティアプリケーション、バックグラウンドデーモン、もしくはオペレーティングシステムのコンポーネント、またはそれらの組み合わせとして提供されてもよい。
【０１１８】
さらに、本発明は、コンピュータベースのシステム１７０１を使用して実装することができる。上述の実施形態の機能の各々は、１つまたは複数の処理回路によって実装されてもよい。処理回路は、プロセッサが回路を含むので、プログラムされたプロセッサ（例えば、図１７のプロセッサ１７０３）を含む。処理回路はまた、特定用途向け集積回路（ＡＳＩＣ）のようなデバイスと、列挙された機能を実行するように配置された従来の回路コンポーネントとを含む。
【０１１９】
上述の様々な特徴は、コンピュータシステム（またはプログラマブルロジック）などのコンピューティングデバイスによって実装されてもよい。図１７は、そのようなコンピュータシステム１７０１を示している。図１７のコンピュータシステム１７０１は、特別な特定用途向けマシンであってもよい。一実施形態では、プロセッサ１７０３がベクトル縮小を計算するようにプログラムされている場合、コンピュータシステム１７０１は特別な特定用途向けマシンである。
【０１２０】
コンピュータシステム１７０１は、磁気ハードディスク１７０７およびリムーバブルメディアドライブ１７０８（例えばフロッピーディスクドライブ、読取り専用コンパクトディスクドライブ、読込み／書込みコンパクトディスクドライブ、コンパクトディスクジュークボックス、テープドライブ、およびリムーバブル光磁気ドライブ）のような情報および命令を記憶するための１つまたは複数の記憶デバイスを制御するようにバス１７０２に結合されたディスクコントローラ１７０６を含む。記憶デバイスは、適切なデバイスインターフェース（例えば、スモールコンピュータシステムインターフェース（ＳＣＳＩ）、集積デバイスエレクトロニックス（ＩＤＥ）、エンハンストＩＤＥ（Ｅ−ＩＤＥ）、ダイレクトメモリアクセス（ＤＭＡ）またはｕｌｔｒａ―ＤＭＡ）を使用してコンピュータシステム８０１に加えられ得る。
【０１２１】
コンピュータシステム１７０１はまた、専用ロジックデバイス（例えば、特定用途向け集積回路（ＡＳＩＣ））または構成可能ロジックデバイス（例えば、シンプルプログラマブルロジックデバイス（ＳＰＬＤ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）、およびフィールドプログラマブルゲートアレイ（ＦＰＧＡ））を含んでもよい。
【０１２２】
コンピュータシステム１７０１はまた、コンピュータユーザに情報を表示するために、ディスプレイ１７１０を制御するためにバス１７０２に結合されたディスプレイコントローラ１７０９を含むことができる。コンピュータシステムは、コンピュータユーザと対話し、プロセッサ１７０３に情報を提供するための、キーボード１７１１およびポインティングデバイス１７１２などの入力デバイスを含む。ポインティングデバイス１７１２は、例えば、プロセッサ１７０３への指示情報およびコマンド選択を伝達するための、およびディスプレイ１７１０上のカーソル移動を制御するためのマウス、トラックボール、タッチスクリーンセンサ用の指、またはポインティングスティックであり得る。
【０１２３】
プロセッサ１７０３は、メインメモリ１７０４などのメモリに含まれる１つまたは複数の命令の１つまたは複数のシーケンスを実施する。そのような命令は、ハードディスク１７０７またはリムーバブルメディアドライブ１７０８のような別のコンピュータ可読媒体からメインメモリ１７０４に読み込まれてもよい。マルチプロセッシング構成の１つまたは複数のプロセッサを用いて、メインメモリ１７０４に含まれる命令のシーケンスを実施することもできる。別の実施形態では、ハードワイヤード回路が、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて使用されてもよい。したがって、実施形態は、ハードウェア回路およびソフトウェアの任意の特定の組み合わせに限定されない。
【０１２４】
上述したように、コンピュータシステム１７０１は、本開示の教示のいずれかに係るプログラムされた命令を保持するために、およびデータ構造、テーブル、レコード、または本明細書に記載された他のデータを含むために、少なくとも１つのコンピュータ可読媒体またはメモリを含む。コンピュータ可読媒体の例は、コンパクトディスク、ハードディスク、フロッピーディスク、テープ、光磁気ディスク、ＰＲＯＭ（ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュＥＰＲＯＭ）、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭ、または任意の他の磁気媒体、コンパクトディスク（例えば、ＣＤ−ＲＯＭ）、または任意の他の光学媒体、パンチカード、紙テープ、または孔のパターンを有する他の物理的媒体である。
【０１２５】
コンピュータ可読媒体のいずれか１つに、またはその組み合わせに記憶されて、本開示は、コンピュータシステム１７０１を制御するため、本発明を実装するための１つまたは複数のデバイスを駆動するため、およびコンピュータシステム１７０１が人間のユーザと対話することを可能にするためのソフトウェアを含む。そのようなソフトウェアは、これらに限定されないが、デバイスドライバ、オペレーティングシステム、およびアプリケーションソフトウェアを含んでもよい。そのようなコンピュータ可読媒体はさらに、本発明の任意の部分を実装する際に実行される処理の全てまたは一部（処理が分散される場合）を実行するための本開示のコンピュータプログラム製品を含む。
【０１２６】
本実施形態のコンピュータコードデバイスは、これらに限定されないが、スクリプト、解釈可能なプログラム、ダイナミックリンクライブラリ（ＤＬＬ）、Ｊａｖａ（登録商標）クラス、および完全な実行可能プログラムを含む、任意の解釈可能なまたは実施可能なコードメカニズムであり得る。さらに、本実施形態の処理の部分は、より十分な性能、信頼性、および／またはコストのために分配されてもよい。
【０１２７】
本明細書で使用する「コンピュータ可読媒体」という用語は、プロセッサ１７０３に実施のための命令を提供するのに関係する任意の非一時的媒体を指す。コンピュータ可読媒体は、これらに限定されないが、不揮発性媒体または揮発性媒体を含む多くの形態をとることができる。不揮発性媒体は、例えば、ハードディスク１７０７またはリムーバブルメディアドライブ１７０８のような光学、磁気ディスク、および光磁気ディスクを含む。揮発性媒体は、メインメモリ１７０４のような動的メモリを含む。逆に、伝送媒体は、バス１７０２を構成するワイヤを含む同軸ケーブル、銅線およびファイバ光学を含む。伝送媒体はまた、電波および赤外線データ通信中に生成されるような音響または光波の形態をとってもよい。
【０１２８】
コンピュータ可読媒体の様々な形態は、実施に対してプロセッサ１７０３への１つまたは複数の命令の１つまたは複数のシーケンスを実行することに含まれることがある。例えば、命令は、最初にリモートコンピュータの磁気ディスクに搬送されてもよい。リモートコンピュータは、モデムを使用して電話回線を介して、本開示の全てまたは一部を実装するための命令を動的メモリに遠隔でロードし、命令を送信することができる。コンピュータシステム１７０１へのモデムローカルは、電話回線上のデータを受信し、データをバス１７０２上に置くことができる。バス１７０２は、メインメモリ１７０４にデータを搬送し、そこからプロセッサ１７０３が命令を取り出して実施する。メインメモリ１７０４によって受信された命令は、任意選択で、プロセッサ１７０３による実施の前または後のいずれかに、記憶デバイス１７０７または１７０８に記憶することができる。
【０１２９】
コンピュータシステム１７０１はまた、バス１７０２に結合された通信インターフェース１７１３を含む。通信インターフェース１７１３は、例えば、ローカルエリアネットワーク（ＬＡＮ）１７１５、またはインターネットなどの別の通信ネットワーク１７１６に接続されるネットワークリンク１７１４に結合する双方向データ通信を提供する。例えば、通信インターフェース１７１３は、任意のパケットスイッチされたＬＡＮに取り付けられるネットワークインターフェースカードであってもよい。別の例として、通信インターフェース１７１３は、統合サービスデジタルネットワーク（ＩＳＤＮ）カードであってもよい。無線リンクもまた、実装することができる。いかなるこのような実装形態においても、通信インターフェース１７１３は、様々なタイプの情報を表現するデジタルデータストリームを搬送する電気、電磁気または光学信号を送受信する。
【０１３０】
ネットワークリンク１７１４は、通常、他のデータデバイスに１つまたは複数のネットワークを介してデータ通信を提供する。例えば、ネットワークリンク１７１４は、ローカルネットワーク１７１５（例えば、ＬＡＮ）を介して）、または通信ネットワーク１７１６を介して通信サービスを提供するサービスプロバイダによって操作された機器を介して、別のコンピュータに接続を提供してもよい。ローカルネットワーク１７１４および通信ネットワーク１７１６は、例えば、デジタルデータストリームを搬送する電気、電磁気、または光学信号、および関連する物理層（例えば、ＣＡＴ５ケーブル、同軸ケーブル、光学ファイバなど）を使用する。様々なネットワークを介した信号およびネットワークリンク１７１４上にありコンピュータシステム１７０１との間でデジタルデータをやりとする通信インターフェース１７１３を介した信号は、ベースバンド信号、または搬送波ベース信号で実装されてもよい。
【０１３１】
ベースバンド信号は、デジタルデータビットの流れを表す非変調電気パルスとしてデジタルデータを伝え、ここで、用語「ビット」は、シンボルを意味するように広義に解釈されるべきであり、各シンボルは、少なくとも１つまたは複数の情報ビットを伝える。デジタルデータはまた、導電性媒体によって伝播されるか、伝播媒体によって電磁波として送信される振幅、位相および／または周波数偏移符号化信号などで搬送波を変調するために使用されてもよい。したがって、デジタルデータは、「配線」通信チャネルによって非変調ベースバンドデータとして送信されもよく、かつ／または搬送波を変調することによって、ベースバンドと異なる所定の周波数帯の範囲内で送信されてもよい。コンピュータシステム１７０１は、ネットワーク（単数または複数）１７１５および１７１６、ネットワークリンク１７１４および通信インターフェース１７１３を通して、プログラムコードを含むデータを送受信することができる。さらに、ネットワークリンク１７１４は、ＬＡＮ１７１５によって、携帯情報端末（ＰＤＡ）、ラップトップコンピュータ、または携帯電話などのモバイルデバイス１７１７に接続を提供してもよい。
【０１３２】
本実施形態は、これらに限定されないが、データのパターンを検索および識別することを含む多くの用途を有する。
【０１３３】
特定の実装形態について説明してきたが、これらの実装形態は単なる例として提示したものであり、本開示の教示を限定することは意図していない。実際には、本明細書に記載の新規の方法、装置およびシステムは、様々な他の形態で具体化されてもよい。さらに、本開示の趣旨から逸脱することなく、本明細書に記載の方法、装置およびシステムの形態の様々な省略、置き換えおよび変更を行うことができる。
【図１】
0006704929.tif 000020
【図２】
0006704929.tif 000021
【図３Ａ】
0006704929.tif 000022
【図３Ｂ】
0006704929.tif 000023
【図３Ｃ】
0006704929.tif 000024
【図３Ｄ】
0006704929.tif 000025
【図３Ｅ】
0006704929.tif 000026
【図４Ａ】
0006704929.tif 000027
【図４Ｂ】
0006704929.tif 000028
【図５】
0006704929.tif 000029
【図６】
0006704929.tif 000030
【図７】
0006704929.tif 000031
【図８】
0006704929.tif 000032
【図９】
0006704929.tif 000033
【図１０】
0006704929.tif 000034
【図１１】
0006704929.tif 000035
【図１２】
0006704929.tif 000036
【図１３】
0006704929.tif 000037
【図１４】
0006704929.tif 000038
【図１５】
0006704929.tif 000039
【図１６】
0006704929.tif 000040
【図１７】
0006704929.tif 000041