(57)【要約】      （修正有）【課題】グラフ圧縮に関する。計算時間及び記憶要件を低減するために大きなクリークを発見して除去することによってグラフを符号化する方法を提供する。【解決手段】グラフ内の最大クリークを特定する（最大クリークは、グラフ内の頂点の完全に接続された最大残存サブセット又は最大残存クリークへの近似である）。特定されたクリークを発見されたクリークのセットに追加する。グラフから特定されたクリークを除去する。特定された最大クリークのサイズが、停止基準未満である、又はグラフ内に頂点が残存していない、の判定に応答して、発見されたクリークのセット及びクリークに属している頂点のセット内のクリークを順序付ける。発見されたクリークの順序付けられたセット及び順序付けられた頂点のセットに基づいてグラフの圧縮表現を生成する。【選択図】図５
2017224287.tif 000002
【特許請求の範囲】
【請求項１】
グラフの表現を圧縮するコンピュータ実装方法であって、
頂点及びエッジを含むグラフを表すデータ構造を持続性記憶媒体に記憶することと、
前記グラフ内の最大クリークを特定することであって、前記最大クリークが前記グラフ内の頂点の完全に接続された最大残存サブセット又は最大残存クリークへの近似であることと、
前記特定されたクリークを発見されたクリークのセットに追加することと、
前記グラフから前記特定されたクリークを除去することと、
前記特定された最大クリークのサイズが停止基準未満であること又は前記グラフ内に頂点が残存していないことの判定に応答して、
前記発見されたクリークのセット内のクリークを順序付けることと、
前記発見されたクリークのセット内のクリークに属している頂点のセットを順序付けることと、
前記発見されたクリークの順序付けられたセット及び前記順序付けられた頂点のセットに基づいて前記グラフの圧縮表現を生成することと、
前記持続性記憶媒体に前記グラフの圧縮表現を記憶することと
を備える、方法。
【請求項２】
前記グラフの前記圧縮表現を生成することが、前記グラフにおいて、クリーク擬似頂点によって前記発見されたクリークのセット内の各クリークを置き換えることをさらに備える、請求項１に記載の方法。
【請求項３】
前記発見されたクリークのセット内のクリークに属している前記頂点のセットが、
第１の各クリークに属している頂点の第１のサブセットが連続的に順序付けられ、
第２の各クリークに属している頂点の第２のサブセットが、前記第２の各クリークが前記順序付けられたクリークのセット内の前記第１の各クリークの後に順序付けられる場合、前記頂点の第１のサブセットの後に順序付けられるように順序付けられ、
前記グラフの前記圧縮表現を生成することが、前記順序付けられたクリークのセット内の各クリークについて、前記各クリークに属している頂点の各サブセット内の第１の順序付けられた頂点に関連付けられた順序付けインデックスを符号化することを備える、
請求項１に記載の方法。
【請求項４】
前記最大クリークを特定することが、
ｋ−コア縮退値に基づいて前記グラフ内の頂点を順序付けることと、
前記順序付けに基づいて、第１の各頂点を選択することと、
前記第１の頂点に接続された隣接頂点を選択することと、
前記第１の頂点及び隣接頂点を候補最大クリークに追加することとを備える、
請求項１に記載の方法。
【請求項５】
コンピュータによって実行されたときに前記コンピュータにグラフの表現を圧縮する方法を実行させる命令を記憶する持続性コンピュータ可読記憶媒体において、前記方法が、
頂点及びエッジを含むグラフを表すデータ構造を持続性記憶媒体に記憶することと、
前記グラフ内の最大クリークを特定することであって、前記最大クリークが前記グラフ内の頂点の完全に接続された最大残存サブセット又は最大残存クリークへの近似であることと、
前記特定されたクリークを発見されたクリークのセットに追加することと、
前記グラフから前記特定されたクリークを除去することと、
前記特定された最大クリークのサイズが停止基準未満であること又は前記グラフ内に頂点が残存していないことの判定に応答して、
前記発見されたクリークのセット内のクリークを順序付けることと、
前記発見されたクリークのセット内のクリークに属している頂点のセットを順序付けることと、
前記発見されたクリークの順序付けられたセット及び前記順序付けられた頂点のセットに基づいて前記グラフの圧縮表現を生成することと、
前記持続性記憶媒体に前記グラフの圧縮表現を記憶することと
を備える、持続性コンピュータ可読記憶媒体。
【請求項６】
前記グラフの前記圧縮表現を生成することが、前記グラフにおいて、クリーク擬似頂点によって前記発見されたクリークのセット内の各クリークを置き換えることをさらに備える、請求項５に記載の持続性コンピュータ可読記憶媒体。
【請求項７】
前記発見されたクリークのセット内のクリークに属している前記頂点のセットが、
第１の各クリークに属している頂点の第１のサブセットが連続的に順序付けられ、
第２の各クリークに属している頂点の第２のサブセットが、前記第２の各クリークが前記順序付けられたクリークのセット内の前記第１の各クリークの後に順序付けられる場合、前記頂点の第１のサブセットの後に順序付けられるように順序付けられ、
前記グラフの前記圧縮表現を生成することが、前記順序付けられたクリークのセット内の各クリークについて、前記各クリークに属している頂点の各サブセット内の第１の順序付けられた頂点に関連付けられた順序付けインデックスを符号化することを備える、
請求項５に記載の持続性コンピュータ可読記憶媒体。
【請求項８】
前記最大クリークを特定することが、
ｋ−コア縮退値に基づいて前記グラフ内の頂点を順序付けることと、
前記順序付けに基づいて、第１の各頂点を選択することと、
前記第１の頂点に接続された隣接頂点を選択することと、
前記第１の頂点及び隣接頂点を候補最大クリークに追加することと
を備える、請求項５に記載の持続性コンピュータ可読記憶媒体。
【請求項９】
グラフの表現を圧縮するコンピュータシステムであって、
複数のプロセッサのセットと、
前記プロセッサのセットに接続され、前記プロセッサのセットによって実行されたときに前記前記プロセッサのセットにグラフの表現を圧縮する方法を実行させる命令を記憶する持続性コンピュータ可読記憶媒体とを備え、前記方法が、
頂点及びエッジを含むグラフを表すデータ構造を持続性記憶媒体に記憶することと、
前記グラフ内の最大クリークを特定することであって、前記最大クリークが前記グラフ内の頂点の完全に接続された最大残存サブセット又は最大残存クリークへの近似であることと、
前記特定されたクリークを発見されたクリークのセットに追加することと、
前記グラフから前記特定されたクリークを除去することと、
前記特定された最大クリークのサイズが停止基準未満であること又は前記グラフ内に頂点が残存していないことの判定に応答して、
前記発見されたクリークのセット内のクリークを順序付けることと、
前記発見されたクリークのセット内のクリークに属している頂点のセットを順序付けることと、
前記発見されたクリークの順序付けられたセット及び前記順序付けられた頂点のセットに基づいて前記グラフの圧縮表現を生成することと、
前記持続性記憶媒体に前記グラフの圧縮表現を記憶することと
を備える、コンピュータシステム。
【請求項１０】
前記グラフの前記圧縮表現を生成することが、前記グラフにおいて、クリーク擬似頂点によって前記発見されたクリークのセット内の各クリークを置き換えることをさらに備える、請求項９に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はグラフ圧縮に関する。より具体的には、本開示は、計算時間及び記憶要件を低減するために大きなクリークを発見して除去することによってグラフを符号化する方法及びシステムに関する。
【背景技術】
【０００２】
グラフは、ノードとしても知られる頂点のセットを接続するリンク又は接続部としても知られるエッジの表現である。グラフは、ソーシャルネットワーク又は消費者製品関係、生物学及びコンピュータサイエンスなどの大規模データセットの分析を含む、多くの用途にとって重要である。関係の予測及び推薦のためを含む多くのグラフ計算方法が存在している。
【０００３】
グラフの重要性のために、ディスク又はメモリなどのコンピュータ化記憶装置においてグラフを表現して記憶する多数の方法が存在する。グラフの表現を圧縮するための多数の方法も存在する。例えば、エッジベースの圧縮疎列（ＥＣＳＣ）フォーマットは、グラフのエッジを記憶する行列の圧縮表現を利用する。ＥＣＳＣフォーマットは、圧縮列記憶（ＣＣＳ）としても知られる疎行列を記憶するための圧縮疎列（ＣＳＣ）フォーマットに基づいている。これらのフォーマットは、ゼロを記憶するのを回避しながら非ゼロ要素を符号化することによって行列の希薄さを利用する。
【０００４】
そのようなグラフを圧縮する技術は、ますます重要になってきているが、グラフの圧縮は、基本的に困難なままであり、未解決の問題である。例えば、ＧＰＵなどの並列コンピューティングアーキテクチャは、メモリが限られており、それゆえに、通常は大きなグラフを扱うことができない。さらに、ＧＰＵアルゴリズムは、この制限を念頭に置いて設計されなければならず、多くの場合、追加のメモリを使用するのを回避するためにかなり多くの計算を実行する必要がある。
【０００５】
グラフ内のクリークを特定するための多数の方法も開発されている。クリークとは、グラフの完全に接続されたサブグラフ又は頂点のサブセットである。クリーク発見方法は、グリーディアルゴリズム、分岐限定アルゴリズム及び動的プログラミングを含む。一般に、クリーク発見は、近似するのが困難な難問であることが知られており、したがって、かなりの計算時間を要することがある。
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明の１つの実施形態は、グラフの圧縮表現を生成するシステム及び方法を提供する。動作中において、システムは、グラフの頂点及びエッジを示すデータ構造を記憶する。システムは、グラフ内の最大クリークを特定することができる。最大クリークは、グラフ内の頂点の完全に接続された最大残存サブセット又は最大残存クリークへの近似である（大きな残存クリーク又はクリークに近い頂点の大きなセットなど）。そして、システムは、特定されたクリークを発見されたクリークのセットに追加することができる。システムは、グラフから特定されたクリークを除去することができる。特定された最大クリークのサイズが停止基準未満であること又はグラフ内に頂点が残存していないことの判定に応答して、システムは、発見されたクリークのセット及びクリークに属している頂点のセット内のクリークを順序付けることができ、発見されたクリークの順序付けられたセット及び順序付けられた頂点のセットに基づいてグラフの圧縮表現を生成することができ、グラフの圧縮表現を記憶することができる。
【０００７】
この実施形態の変形例において、システムは、グラフにおいて、クリーク擬似頂点によって発見されたクリークのセット内の各クリークを置き換えることができる。
【０００８】
この実施形態の変形例において、第１の各クリークに属している頂点の第１のサブセットは、連続的に順序付けられることができ、第２の各クリークに属している頂点の第２のサブセットは、第２の各クリークが順序付けられたクリークのセット内の第１の各クリークの後に順序付けられる場合、頂点の第１のサブセットの後に順序付けられることができる。そして、システムは、順序付けられたクリークのセット内の各クリークについて、各クリークに属している頂点の各サブセット内の第１の順序付けられた頂点に関連付けられた順序付けインデックスを符号化することができる。
【０００９】
この実施形態の変形例において、システムは、ｋ−コア縮退値に基づいてグラフ内の頂点を順序付けることができる。そして、システムは、順序付けに基づいて、第１の各頂点を選択することができる。システムは、第１の頂点に接続された隣接頂点を選択することができる。システムは、第１の頂点及び隣接頂点を候補最大クリークに追加することができる。
【００１０】
この実施形態の変形例において、システムは、グラフトラバーサル又はソーシャルネットワーク計算の第１の部分を実行することができ、グラフトラバーサル又はソーシャルネットワーク計算は、第１の頂点及び第２の頂点が接続されるかどうかを確認する必要がある。そして、システムは、第１の頂点及び第２の頂点が接続されるかどうかを検査することができ、第１の頂点についての順序付けインデックス及び第２の頂点についての順序付けインデックスが各クリークに属している頂点の同じサブセット内に含まれるかどうかを判定することをさらに備える。そして、システムは、第１の頂点及び第２の頂点が接続されるかどうかの検査結果に基づいて、グラフトラバーサル又はソーシャルネットワーク計算の第２の部分を実行することができる。そして、システムは、グラフトラバーサル又はソーシャルネットワーク計算に基づいて、ユーザについての推薦を生成することができる。
【００１１】
この実施形態の変形例において、システムは、同じ独立したセットに属している２つの各頂点が共通の隣接者を有しないように、独立した頂点のセットを生成することができる。そして、システムは、第１の独立したセットが次数関数を最大化するように、独立した頂点のセットを順序付けることができる。そして、システムは、第１の独立したセットからの各頂点を各プロセッサに割り当てることができる。そして、各プロセッサは、各頂点に接続された隣接頂点を選択することができる。そして、各プロセッサは、第１の頂点及び隣接頂点を候補最大クリークに追加することができる。
【図面の簡単な説明】
【００１２】
【図１Ａ】図１Ａは、クリークを含むグラフの例を示している。
【図１Ｂ】図１Ｂは、図１Ａのグラフにおける２つのクリークの特定を表している。
【図２】図２は、いくつかの実施形態にかかるグラフ圧縮方法を利用するグラフ計算システムの例示的なアーキテクチャを示すブロック図を表している。
【図３】図３は、本発明のいくつかの実施形態にかかる、図１Ｂにおいて特定された２つのクリークの符号化を示している。
【図４】図４は、本発明の実施形態にかかる図１Ａのグラフにおける頂点及びクリークの例示的な符号化を表している。
【図５】図５は、本発明の実施形態にかかるグラフを圧縮する方法を示すブロック図を表している。
【図６】図６は、本発明の実施形態にかかる実際のデータセットにおけるクリーク特定を示している。
【図７】図７は、クリークを発見してグラフを圧縮するための図５に示される方法に対する並列効率及び精度の例示的な変更を示している。
【図８】図８は、本発明の実施形態にかかる例示的なグラフ圧縮装置を示すブロック図を表している。
【図９】図９は、本発明の実施形態にかかるグラフ圧縮用の例示的なコンピュータシステムを示すブロック図を表している。
【発明を実施するための形態】
【００１３】
図面において、同様の参照符号は同じ図要素を指している。
【００１４】
以下の説明は、当業者が実施形態を作製して使用するのを可能とするように提示され、特定の用途及びその要件の文脈において提供される。開示された実施形態に対する様々な変更は、当業者にとって容易に明らかであり、本願明細書において定義される一般的な原理は、本開示の精神及び範囲から逸脱することなく他の実施形態及び用途に適用されることができる。それゆえに、本発明は、示された実施形態に限定されるものではなく、本願明細書において開示される原理及び特徴と一致する最も広い範囲が与えられるべきである。
【００１５】
概要
本発明の実施形態は、グラフを符号化するためにその後に使用される大きなクリークを特定することによって高速並列グラフ圧縮を実行するという問題を解決する。システムはまた、正確で高速でヒューリスティックなクリーク発見方法を提供することができる。これらの方法は、１億ノードもの多数の実世界グラフにわたってグラフサイズにおいてほぼ線形にランタイムでスケーリングすることが本発明者らによって観察されている。動作中において、システムは、グラフの頂点及びエッジを示すデータを取得する。システムは、グラフ内の最大クリークを特定するためにクリーク発見方法を実行する。そして、システムは、グラフからクリークを除去し、発見されたクリークのセットにクリークを追加し、発見されたクリークのセットに基づいてグラフの圧縮表現を生成する。
【００１６】
システムは、コンピューティング技術と、グラフを含む任意の計算を実行するコンピュータの能力とを向上させる。本願明細書において開示されるシステム及び方法は、事実上全てのグラフ計算において使用されるグラフプリミティブ演算の計算速度を大幅に向上させることができ、それにより、一般にグラフ計算を改善することができる。同様に、システムは、グラフをコンパクトに表現することができるため、キャッシュを改善することができ、グラフ計算の全体的な性能を大幅に向上させることができる。さらに、例えばＣＰＵからＧＰＵへの入力／出力コストを削減することができる。そのようなグラフ圧縮技術の多くの用途及び利点がある。例えば、システムは、かなり大きなグラフ計算を記憶して処理するためのＧＰＵなどの並列コンピューティングアーキテクチャの能力を向上させることができ、又は、グラフデータの視覚化を改善することができる。
【００１７】
図１Ａは、クリークを含むグラフの例を示している。示されるように、グラフ１００は、ノードとも称される１０２などの頂点と、リンク又は接続部とも称される１０４などのエッジとを含むことができる。図１Ｂは、グラフ１００における２つのクリークの特定を表している。クリークは、完全に接続されたグラフ内の頂点のサブセットとして定義される。すなわち、クリーク内の各頂点は、グラフ１００内の２つのクリーク１０６及び１０８について、図１Ｂに示されるように、クリーク内の全ての他の頂点に対するエッジを有する。本発明の実施形態は、実世界のグラフが大抵の場合に大きなサイズの多くのクリークを形成するという観察に基づいて、ＧｒａｐｈＺＩＰと称されるグラフ圧縮及び符号化フレームワークを提供する。システムは、永続的に記憶され且つメモリ内の双方のグラフ符号化を提供し、グラフを表現して記憶するのに必要な空間、グラフを使用するためのＩ／Ｏトラフィック、及びグラフを含むアルゴリズムの実行に必要な計算量を削減する。
【００１８】
システムアーキテクチャ
図２は、実施形態にかかるグラフ圧縮方法を利用するグラフ計算システム２００の例示的なアーキテクチャを示すブロック図を表している。グラフ計算システム２００は、複数のプロセッサを使用して、グラフの頂点を分割して符号化されたグラフ上で圧縮又は他の計算を実行することができる。グラフ計算システム２００は、推薦を生成するなどの様々な用途を容易とするためにグラフプリミティブ演算を実行することができる。標準システムにおいて、システム２００は、グラフの全ての頂点及びエッジを記憶する。しかしながら、本願明細書において開示された方法を使用して、システム２００は、グラフの圧縮表現を利用し、それにより、記憶及び性能を改善する。
【００１９】
グラフ計算システム２００は、サーバ２０６に結合された記憶装置２０４にインストールされたグラフ管理モジュール２０２を含むことができる。本発明の様々な実装形態は、任意数のサーバ及び記憶装置を含むことができることに留意されたい。様々な実装において、グラフ管理モジュール２０２は、本願明細書に記載された技術を実行するためにグラフ符号化モジュール又はグラフ計算システム２００の他の要素を含むことができる。システム２００は、頂点及びエッジ又はグラフ符号化を記述するデータを受信し、そのようなデータを記憶装置２０４に記憶することができる。システム２００は、グラフ管理モジュール２０２についてのコード、頂点、エッジ及びグラフ符号化についてのデータ２０８を記憶装置２０４から読み出すことができる。システム２００は、頂点、サブグラフ又は計算を動的に分割し、割り当てられた頂点、サブグラフ又は計算において動作するプロセッサ２１０Ａ−２１０Ｈなどのプロセッサにそれらを割り当てることができる。
【００２０】
記憶及び計算省力特徴
図３は、本発明のいくつかの実施形態にかかる図１Ｂにおいて特定された２つのクリークの符号化を示している。本発明の実施形態において、システムは、グラフからクリークを除去することによってメモリ又は永久記憶装置のいずれかにグラフを記憶するのに必要な空間量を大幅に削減する。例えば、システムは、各クリークＣに属している全ての頂点が連続的に順序付けられるように頂点を並べ替えることによってグラフを表すことができる。さらに、いくつかの実施形態において、システムは、例えば、グラフ内の頂点の順序付けの終了時に順序付けられることができるクリークを表す擬似頂点のセットとしてクリークを別個に記憶することができる。これは、図３に概略的に示されており、クリーク擬似頂点３０２及び３０４は、それぞれ、図１Ｂからのクリーク１０６及び１０８を表している。
【００２１】
そして、実際の頂点は、各クリークＣ１及びＣ２に属している実際の頂点の各サブセットがクリークＣ１及びＣ２を表す擬似頂点の順序に一致するように順序付けられることができる。例えば、Ｃ１及びＣ２が擬似頂点の順序における最初の２つのクリークである場合、順序における第１の頂点は、（ｖｋ＋１，・・・，ｖｋ＋ｍ）∈Ｃ２が後に続く（ｖ１，・・・，ｖｋ）∈Ｃ１である。ここで、ｋ＝｜Ｃ１｜であり且つｍ＝｜Ｃ２｜である。これは図３に示され、頂点（ｖ１，・・・，ｖ５）は、クリーク１０６を表す擬似頂点３０２に関連付けられており、頂点（ｖ６，・・・，ｖ９）は、クリーク１０８を表す擬似頂点３０４に関連付けられている。これらの実施形態において、定義によってクリークが完全に接続されるように知られていることから、クリーク内のエッジを表す必要はもはやない。
【００２２】
これらの実施形態において、クリーク内の個々の頂点を表すことも不要である。代わりに、システムは、例えば１からｋまでの全てのインデックスがクリークＣ１に関連付けられているなど、クリークに関連付けられた頂点インデックスの範囲を単に表すことができる。これは、グラフ１００並びにクリーク１０６及び１０８の符号化を表す表１によって示されている。実際のグラフは、多くの大きなクリークを有する傾向があることから、そのような表現は、表からわかるように、かなりの記憶装置及びメモリを節約する。
【００２３】
同様に、グラフ上で実行される事実上全ての計算は、グラフプリミティブとして知られる基本的な演算を利用する。本システム及び方法は、そのようなグラフプリミティブの計算上の複雑さを大幅に低減することができ、したがって、それらを高速化することができる。そのようにすることにより、システムは、全体的なグラフ計算を大幅に高速化することができる。
【００２４】
【表１】
2017224287.tif 000003
【００２５】
例えば、頂点が所定のクリークＣに属しているかどうかを検査することは、クリーク全体にわたるバイナリ探索を行うことにより、クリークのサイズが時間の対数、すなわちＯ（ｌｏｇ｜Ｃ｜）をとることができる。本発明の実施形態において、同じ探索は、開示された方法にかかる圧縮符号化における頂点のインデックスがクリークＣに関連付けられた範囲内であるかどうかを単に検査することによって一定時間、すなわちＯ（１）をとることができる。例えば、頂点ｖ３がクリーク１０６に属しているかどうかを検査するために、それは、表１における圧縮表現の第１の行を検査するために十分であろう。表１が示すように、１は、グラフ１００内の第１のクリーク１０６に属している第１の頂点インデックスであり、６は、グラフ１００内の第２のクリーク１０８の第１のインデックスであり、そのため、１から５までの範囲のインデックスを有する全ての頂点は、クリーク１０６に属している。したがって、インデックス３を有する頂点ｖ３は、クリーク１０６に属している。
【００２６】
同様に、システムは、グラフ及びそのクリークをよりコンパクト且つ効率的に表現することができるため、一般にキャッシュ及び性能を向上させることができる。例えば、２つの頂点が接続されているかどうかを検査することなどのグラフプリミティブは、頻繁に実行される必要がある。したがって、本発明の実施形態にかかる圧縮されたクリーク又は同様の情報の符号化は、キャッシュメモリに記憶されることができる。特に、表１の右側列に示されるものなどのクリークの非常に効率的な表現がキャッシュされることができる。キャッシュ性能を向上させることにより、システムは、グラフ計算の全体的な性能を大幅に改善することができる。さらに、例えばＣＰＵからＧＰＵへの入力／出力コストもまた低減されることができる。
【００２７】
そのようなグラフ圧縮技術の多くの用途及び利点がある。例えば、ＧＰＵなどの並列コンピューティングアーキテクチャは、メモリが限られており、したがって、本願明細書において開示された方法によって著しく大きなグラフを処理することができる。非常に重要なことに、本方法は、大きなデータに対して効率的であり、共有及び分散メモリアーキテクチャの双方について容易に並列化される。グラフ圧縮方法は、数十億以上エッジを有する巨大データに対して非常にスケーラブルであり、ＣＰＵ、ＧＰＵ及び分散アーキテクチャにおける実装に容易に対応することができる。
【００２８】
本方法はまた、推薦システム、リンク予測、相関分析、グラフ／データクラスタリング及びロール発見などの用途にも有益であり得る。本方法はまた、上述した時間及び空間の改善を超えて様々な用途を有する。例えば、大きなクリークは、他の重要な構造的特性を明らかにするために組み合わせることができるため、グラフデータをより良好に視覚化するために本方法を使用することができる。
【００２９】
一般化されたＥＣＳＣ表現
本発明の実施形態において、システムは、一般化エッジベース圧縮疎列（ＥＣＳＣ）符号化を利用することができる。符号化は、従来のＥＣＳＣ符号化とは異なり、元のグラフ内のクリークを表す擬似頂点を含むことから一般化される。
【００３０】
行列としての従来のグラフ符号化は、頂点インデックスによってインデックス付けされ、１という要素は、行番号及び列番号によってインデックス付けされた頂点間のエッジを示し、ゼロはそのようなエッジを表さない。この行列符号化において、対角線はゼロであり、行列はもちろん対称である。従来のＥＣＳＣ符号化は、このグラフ行列に圧縮疎列（ＣＳＣ）行列符号化を適用する。ＣＳＣは、行インデックス配列内のそのような各要素についての行インデックスを符号化することによって非ゼロ行列要素の位置を符号化し、新たな列を開始する行インデックス配列内の各要素のインデックスを保持する列ポインタ配列を符号化する。
【００３１】
ＥＣＳＣ符号化は、上述したように符号化された隣接者の配列を含む。それはまた、エッジＩＤ配列、（隣接者配列からの）非固有エッジインデックス配列を含む。隣接者配列における重複エッジは、エッジマップ配列へのポインタとして機能する固有エッジＩＤが割り当てられる。これは、２つの重要な特徴を提供する。まず、エッジＩＤは、ＣＳＣからエッジマップ配列内のそれらの固有位置に重複エッジをマッピングする射影関数であることに留意されたい。さらに、エッジＩＤはまた、特定のエッジの頂点が連続的に記憶されてＯ（１）の時間にアクセスされることができるエッジマップ配列を指す。この機能は、ＣＳＣを使用する際の柔軟性を提供するとともに、Ｏ（１）における固有エッジ及びそれらの頂点へのランダムアクセスも提供する。エッジ−ＣＳＣは、Ｏ（｜Ｅ｜）時間をとって構築するために効率的であることに留意されたい。ここで、｜Ｅ｜は、エッジの数（ディスク又はＣＳＣからの読み取り時）である。
【００３２】
本発明の実施形態において、システムは、一般化されたＥＣＳＣ符号化を利用することができる。一般化されたＥＣＳＣにおいて、クリーク擬似頂点又はクリーク頂点と称される新たな頂点種類が導入されることがある。直感的に、クリーク頂点は、グラフＧ内のクリークＣを表す。システムは、クリーク及び頂点の順序を使用することができ、クリーク頂点（クリーク擬似頂点）の最小インデックス（又はＩＤ）は、ｖｎ＋１から開始する。ここで、ｖｎは任意の実際の頂点の最大ＩＤである。すなわち、グラフ内の頂点のセットは、Ｖ＝｛ｖ１，・・・ｖｎ，ｖｎ＋１，・・・｝である。ここで、ｖ１からｖｎは、実際の頂点であり、ｖｎ＋１及び順序における全ての後続頂点は、クリーク頂点である。このように、アルゴリズムがインデックスｎを把握している限り、それは、頂点がクリーク頂点であるか否かを迅速に判定することができる。後者の場合、後続イテレータは、クリークの定義を調べ、その後、正しい後続生成のためにそのクリーク内の全てのノードにわたって反復する。通常の頂点の隣接者がクリーク頂点である場合、イテレータは、クリーク頂点の隣接者を検索しなければならない。
【００３３】
上述した一般化されたＥＣＳＣ符号化は、特殊なケースとして元のＥＣＳＣ表現、すなわち、グラフ内にクリーク（それゆえに擬似頂点）が存在しない場合を含む。しかしながら、１つ以上のクリークが存在する場合、提案されたクリーク圧縮技術は、グラフを記憶するために必要な空間を削減することが保証される。
【００３４】
図４は、本発明の実施形態にかかる、一般化されたＥＣＳＣ表現によるグラフ１００内の頂点及びクリークの例示的な符号化４００を表している。図４は、図３に示される直観的符号化をより詳細に示している。図４の第１の行における頂点リスト４０２によって示されるように、システムは、グラフ１００内の９つの頂点を表すために９つの実際の頂点（ｖ１，・・・ｖ９）による符号化を使用することができる。さらに、頂点リスト４０２は、それぞれクリーク１０６及び１０８を表す２つのクリーク擬似頂点ｖ１０及びｖ１１を含む。
【００３５】
図４の次行は、リスト４０２における各頂点について、ポインタターゲットの配列４０６内の隣接頂点のインデックスを示すポインタ配列４０４を表している。したがって、例示的な符号化は、グラフ１００を符号化するために使用される９つの実際の頂点及び２つの擬似頂点について、合計１１個のポインタを記憶しなければならない。
【００３６】
最後に、図４の最後の行は、本発明の実施形態における符号化によってリスト４０２内の頂点に関連付けられた実際の頂点又は擬似頂点を表すポインタターゲット４０６の配列を示している。図４からわかるように、実際の頂点（ｖ１，・・・ｖ４）は、クリーク１０６を表すクリーク擬似頂点ｖ１０による符号化によって関連付けられる。実際の頂点ｖ５は、クリーク１０８に属している実際の頂点ｖ６と関連付けられ、同様に、頂点ｖ６は、頂点ｖ５と関連付けられる。実際の頂点（ｖ７，ｖ８，ｖ９）は、クリーク１０８を表すクリーク擬似頂点ｖ１１による符号化によって関連付けられる。最後に、クリーク擬似頂点ｖ１０及びｖ１１は、各クリーク１０６及び１０８に含まれる最初に順序付けられた実際の頂点であるｖ１及びｖ６と関連付けられる。ポインタターゲット配列４０６における最後のエントリは、クリーク１０８に含まれるものの後の最初に順序付けられた頂点であるｖ１０であることに留意されたい。
【００３７】
グラフ圧縮方法
図５は、本発明の実施形態にかかるグラフを圧縮する方法を示すフローチャート５００を表している。動作中において、システムは、グラフの頂点及びエッジを示すグラフデータ及び停止基準を取得する（動作５０２）。そして、システムは、最大クリークを発見するためにクリーク発見方法を実行する（動作５０４）。最大クリークは、グラフ内の最大残存クリーク又は最大残存クリークに対する近似値として定義される。最大残存クリークに対する近似は、大きな残存クリークとすることができ、又は、クリークに近い頂点の大きなセット（すなわち、完全に接続される必要がある僅かな割合のエッジを欠いている密に接続された頂点のセット）とすることができる。
【００３８】
いくつかの実施形態において、クリーク発見方法は、正確であり、所定のグラフ内に正確な最大クリークを配置することができる。いくつかの実施形態において、クリーク発見方法は、近似又はヒューリスティックとすることができる。入力としてのグラフを考えると、クリーク発見方法は、正確で近似的な又はヒューリスティックな最大クリークを出力として返すことができる。正確なクリーク発見方法を提供する実施形態において、システムは、グラフの無損失圧縮を提供することができるが、これは、一般に、より高い計算コストを有する。ヒューリスティックなクリーク発見方法を提供する実施形態において、システムは、一般により低い計算コストを有する若干の損失を有する圧縮を提供することができる。正確なクリーク発見を提供する実施形態において、システムはまた、例えば、システムがより大きなクリークを発見して除去することができるため、より良好な圧縮比を提供することもできる。
【００３９】
次に、システムは、発見された最大クリークを発見されたクリークのセットに追加することができる（動作５０６）。発見されたクリークのセットは、これまでにシステムによって発見されたクリークについてのラベルを符号化することができる。システムはまた、発見されたクリークに属している頂点を追跡することもできる。いくつかの実施形態において、システムは、グラフの頂点を並べ替えることができる。例えば、システムは、発見されたクリークの順序に一致するように発見されたクリークに属している頂点を並べ替えることができる。
【００４０】
いくつかの実施形態において、システムは、次に、グラフから発見された最大クリークを除去することができる（動作５０８）。システムは、全ての頂点がグラフから除去されたかどうか、又は、発見された最大クリークが停止基準δよりも小さいかどうかを検査することができる（動作５１０）。そうである場合、システムは、符号化スキームによって使用するために発見されたクリークのセット及び発見されたクリークに属している頂点を返すことができる（動作５１２）。頂点がグラフ内に残存しており、発見された最大クリークが少なくとも停止基準と同じサイズである場合、システムは、動作５０４に戻ることができる。すなわち、システムは、その後の最大クリーク（グラフから以前に発見されたクリークを除去した後の正確な又は近似した最大残存クリーク）を発見するためにクリーク発見方法を実行することができる。
【００４１】
停止基準δは、クリークが大幅な圧縮を提供するのに十分なサイズであるかどうかを判定するために発見されたクリークのサイズと比較される数である。一般に、クリークが大きいほど、本発明の実施形態にしたがってクリークを除去することによって及び／又はクリークを符号化することによってより多くの圧縮が提供される。サイズ｜Ｃ｜＞２のクリークは、空間及び入力／出力コストを削減することができ且つグラフ計算の性能を向上させることができるため有益であり、それゆえに、システムは、クリークがサイズ｜Ｃ｜＝３以上であるのを必要とすることがある。同等に、システムは、少なくとも３まで停止基準δを設定することができる。停止基準δはまた、圧縮方法５００のグラフの圧縮と計算コストとの間のバランスを提供することができる。一般に、グラフ内の最大クリークは、最大圧縮を提供する。それゆえに、δを小さく設定することは、方法５００の追加の計算コストにおいて追加の圧縮を提供する。
【００４２】
図６は、本発明の実施形態にかかる実際のデータセットにおけるクリーク特定を示している。この図は、本発明者らによる実際のグラフデータについて実行されたいくつかのヒューリスティック且つ正確なクリーク発見方法についての方法４００の発見されたクリークのサイズ対反復数を表している。実験において、本発明者らはまた、グラフの半分以上において正確な方法と同じ最大クリークサイズを見出すためにヒューリスティックなクリーク発見方法を観察した。さらに、本発明者らは、正確な圧縮よりも２−３倍高速な良好な圧縮を提供するためにヒューリスティックな方法を観察した。本発明者らは、システムが疎グラフ並びに密グラフの双方を圧縮するのに有効であることを観察した。
【００４３】
２つのクリークが著しく重複している場合、圧縮された符号化において双方を使用する利点はほとんどないことに留意されたい。しかしながら、数個のみの頂点と重複するクリークを可能とすることにより、これらのクリークを発見して著しい重複がないのを保証するために追加の計算コストを犠牲にして空間のさらなる削減を可能とすることができる。したがって、方法５００のステップ５０８におけるように発見されたクリークを全体的に除去する代わりに、いくつかの実施形態において、システムは、クリークが許容量以上に重複するかどうかを判定するために重複閾値割合θを使用することができる。いくつかの実施形態において、システムは、重複するクリークが許容されるかどうかを判定するためにθに対してスコアリング関数を比較することができる。例えば、｜Ｃ１∩Ｃ２｜／｜Ｃ１∪Ｃ２｜などのスコアリング関数がθに対して比較されることができる。
【００４４】
クリークを発見する方法
ステップ５０４において実行されるクリーク発見方法は、正確であるか、近似であるか又はヒューリスティックとすることができる。いくつかの実施形態において、本方法は、グラフ若しくはサブグラフと関連付けられたｋ−コア数又は縮退に基づいて又はｋ−カラーリングに基づいて頂点を順序付けることができる。いくつかの実施形態において、システムは、グリーディカラーリング又は隣接又は距離−２カラーリングから独立したセットを取得することができる。いくつかの実施形態において、正確なクリーク発見方法は、ヒューリスティック方法に由来することができる最大クリークについての初期の推測を使用する分岐限定方法である。
【００４５】
いくつかの実施形態において、ヒューリスティックなクリーク発見方法は、グラフ内の頂点についてのｋ−コア数を取得し且つｋ−コア数を減少させるためにグラフ頂点を介してステッピングすることによって進行する。各頂点が十分に大きなコア数を有する場合、システムは、各頂点を含む候補クリークを形成することができる。システムは、各頂点の隣接者を調べ且つ十分に大きなコア数を有するそれらの隣接者を特定することによって候補クリークを探索することができる。いくつかの実施形態において、システムは、コア数がこれまで発見された最大クリークの又は他の候補クリークのサイズを超えているかどうかを判定することにより、頂点又はその隣接者が十分に大きなｋ−コア数を有するかどうかを判定することができる。
【００４６】
システムは、十分に大きなコア数を有する隣接者を介して進むことができ、各隣接者が候補クリーク内の全ての頂点に接続されている場合、候補クリークに対して各隣接者を追加することができる（すなわち、候補クリークが、隣接者の追加によってクリークを残す）。隣接者を介して進んだ後、システムは、候補クリークを発見されたクリークのセットに追加することができる。システムはまた、そのサイズがこれまでに発見された最大クリークを超えている場合、候補クリークを最大クリークとして指定することもできる。
【００４７】
いくつかの実施形態において、正確なクリーク発見方法は、グラフ内の頂点についてのｋ−コア数を計算することによって進行する。そして、システムは、グラフ内の近似最大クリークを特定するために上述したヒューリスティックなクリーク発見方法を使用することができる。そして、システムは、近似最大クリークのサイズよりも小さいコア数を有する頂点をグラフから除去することができる。そして、システムは、グラフ内に残存している最小の縮小次数を有する頂点を特定することができる。縮小された頂点の次数は、任意の他の頂点が除去された後の頂点の次数を指す。システムは、特定された頂点に基づいて分岐方法を実行することができ、候補最大クリークの成長をもたらすことができる。そして、システムは、特定された頂点をグラフから除去するか又はそれらを枝刈りしたものとしてマーキングすることができ、グラフから頂点を定期的に明示的に除去することができる。最後に、システムは、残存頂点を介して停止することができ、特定、分岐及び除去ステップを繰り返すことができる。いくつかの実施形態において、システムは、グラフが空になるまでこれらのステップを繰り返すことができる。最後に、システムは、グラフ内の最大クリークとして候補最大クリークを特定することができる。
【００４８】
特定された頂点に対する分岐方法は、頂点の縮小した隣接グラフ（すなわち、まだグラフから枝刈りされていない頂点及び全てのその隣接者に対応するサブグラフ）を特定することによって進めることができる。特定された縮小した隣接グラフのサイズが候補最大クリークよりも大きい場合、分岐は、この縮小した隣接グラフ内の最大コア数を求めることによって進めることができる。そして、分岐方法は、縮小した隣接グラフから候補最大クリークのサイズよりも小さいコア数を有する任意の頂点を除去することができる。そして、分岐方法は、縮小した隣接サブグラフのカラーリングについての多数の色を取得することができる。いくつかの実施形態において、このカラーリングは、グリーディ又はヒューリスティックなカラーリングとすることができる。
【００４９】
色数が候補最大クリークのサイズよりも大きい場合、分岐方法は、頂点を介して進むことができ、縮小した隣接サブグラフから各頂点を除去することができ、候補クリークにそれを追加することができる。この候補クリークが最大でない場合、分岐方法は、さらに分岐することができる。この候補クリークが最大であり且つ以前に特定された最大クリークよりも大きい場合、分岐方法は、新たな最大クリークとして候補クリークを特定することができる。
【００５０】
クリーク発見及びグラフ圧縮の並列化
いくつかの実施形態において、ステップ５０４において使用されるクリーク発見方法は、並列に実行されることができる。クリーク発見方法が直列に実行される場合、発見されたクリークは、後続のクリークを探索する前に除去されることができ、そのため、重複するクリークの危険性はない（すなわち、頂点を共有する）。しかしながら、並列において、システムは、異なるプロセッサによって発見されたクリークが重複しない（すなわち、頂点を共有しない）ことを確実にするために追加の方法を使用することができる。目的は、任意の各頂点について、各頂点を探索することによって発見された最大クリークが後続の頂点の探索から発見されたクリークと非重複であるように頂点の順序付けを取得することである。これは、２つの頂点が並列に探索された場合、双方のプロセッサが固有である非重複クリークを発見することを保証する。
【００５１】
いくつかの実施形態において、システムは、独立したセット又はカラークラス｛Ｓ１，・・・，Ｓｋ｝を発見するためにグリーディカラーリングなどのｋ−カラーリングを実行することができる。同じカラークラスにおける２つの頂点は、接続されることができないため、同じカラークラスＳｉにおける頂点を中心とする異なるクリークは、非重複であるべきである。これは、同じカラークラス内のクリークが並列に発見されるのを可能とする。
【００５２】
いくつかの実施形態において、システムは、最大クリークが典型的にはこれらの頂点から生じるため、最大のｋ−コアにおける頂点の最大数を含む独立したセットを選択する。そして、システムは、選択された独立したセット内の各頂点についての最大クリークを発見し、クリークのセットに追加することができる。
【００５３】
しかしながら、発見後、クリークは、グラフから最初に「暗黙的に」除去されることができるか又は単に枝刈りとしてマーキングされた後に「明示的に」除去されることができることに留意されたい。したがって、固有の非重複クリークの強力な保証を提供するために、いくつかの実施形態において、システムは、プロセッサに頂点を割り当てるために距離−２カラーリングとも称される隣接カラーリングを使用することができる。隣接カラーリングにおいて、任意の２つの隣接頂点には、異なる色が割り当てられ、その隣接者にもまた、互いに異なる色が割り当てられる。したがって、同じカラークラスにおける２つの頂点は非隣接であり、それらの隣接者もまた、非重複且つ非隣接である。独立したセットは、それらの隣接が重複しないことを意味する隣接−独立セットと称される。
【００５４】
図７は、クリークを発見してグラフを圧縮する方法５００に対する例示的な並列変更例７００を示している。本方法の多くの変形例が可能であり、多くのステップが必要とされず、用途領域、制約及びデータに依存することができることに留意されたい。
【００５５】
動作中において、システムはグラフＧ、停止基準δを受信する（動作７０２）。無向グラフを考えると、システムは、各カラークラスが非隣接である頂点を含むように、ｋ−カラーリング又は隣接カラーリングを取得することができる（動作７０４）。そして、システムは、第１の順序付けられたカラークラスがいくつかの関数（最大次数、三角形の数、ｋ−コアの和など）を最大化するように、カラークラスを順序付けることができる（動作７０６）。そして、システムは、そのカラークラスから選択されることになる次の頂点がいくつかの関数（最大次数など）を最大化するように、独立した各カラークラス内の頂点を順序付けることができる。そして、システムは、順次独立した各セットにわたってサイクルすることができ、そのセットから順次次の頂点を選択することができる（動作７０８）。そして、システムは、選択された頂点の隣接を取得することができる。そして、システムは、高速ヒューリスティックなクリークファインダーへの入力として隣接を使用することができ、最大クリークを取得することができる（動作７１０）。そして、システムは、探索から取得されたクリークを除去することができる（すなわち、クリークの頂点は、全ての独立したセットから除去されることができる）。この除去は、枝刈りされた頂点の配列におけるクリークの頂点をマーキングすることによって簡単に行うことができ（動作７１２）、Ｏ（１）時間で検査されることができる。そして、システムは、順次次のカラークラスから頂点を選択することによって上記ステップを繰り返すことができる。システムは、頂点が各カラークラスから選択されるまで、これを繰り返すことができる（動作７１４）。その後、単一のプロセッサは、枝刈りされた配列を使用してグラフを縮小することができ、この更新されたグラフをプロセッサに対して送信することができる（動作７１６）。各クリークが発見された後、それは、発見されたクリークのセットに追加されることができる（又は単一のプロセッサによって記憶媒体に書き込むことができる）。このプロセスは、停止基準δよりも大きいクリークがこれ以上存在しない場合に停止する。終了すると、発見されたクリークのセットは、メモリ内のグラフを効率的に表すために又は記憶装置にグラフを記憶するために使用されることができる。
【００５６】
例示的な装置
図８は、いくつかの実施形態にかかる、グラフ圧縮を容易とする例示的な装置８００を示すブロック図を表している。装置８００は、有線又は無線通信チャネルを介して互いに通信することができる複数のモジュールを備えることができる。装置８００は、１つ以上の集積回路を使用して実現されることができ、図８に示されるものよりも少ない又は多いモジュールを含むことができる。さらに、装置８００は、コンピュータシステムに内蔵されることができ、又は、他のコンピュータシステム及び／又は装置と通信することができる別個の装置として実現されることができる。具体的には、装置８００は、クリーク発見モジュール８０２と、クリーク及び頂点順序付けモジュール８０４と、グラフ符号化モジュール８０６と、グラフプリミティブコンピューティングモジュール８０８と、グラフカラーリングモジュール８１０とを備えることができる。装置８００はまた、図８には示されていない追加のモジュールを含むことができることに留意されたい。
【００５７】
いくつかの実施形態において、クリーク発見モジュール８０２は、大きなクリークを発見することができる。クリーク及び頂点順序付けモジュール８０４は、クリークを順序付けることができ、及び／又は、クリーク順序付けに一致するように頂点を順序付けることができる。グラフ符号化モジュール８０６は、グラフ、圧縮グラフ又はクリークの表現を符号化することができる。グラフプリミティブコンピューティングモジュール８０８は、グラフの圧縮表現にしたがって、頂点がクリークに属しているかどうかを検査することなど、グラフプリミティブを計算することができる。グラフカラーリングモジュール８１０は、グラフ又はサブグラフのｋ−カラーリング、グリーディカラーリング及び／又は隣接カラーリングを取得することができる。図２に示されたグラフ管理モジュール２０２は、図８に示された様々なモジュールの任意の及び全ての機能を提供してもよいことに留意されたい。
【００５８】
例示的なシステム
図９は、いくつかの実施形態にかかる例示的なグラフ圧縮コンピュータシステム９０２を示している。いくつかの実施形態において、コンピュータシステム９０２は、サーバとすることができる。いくつかの実施形態において、システム９０２は、プロセッサ９０４と、メモリ９０６と、記憶装置９０８とを含む。いくつかの実施形態において、９０４は、プロセッサのセットを含むことができる。記憶装置９０８は、本発明の実施形態にかかるグラフ圧縮を利用することができるアプリケーション９３４及び９３６などの多数のアプリケーションと、オペレーティングシステム９１６とを記憶することができる。記憶装置９０８はまた、クリーク発見モジュール９２０と、クリーク及び頂点順序付けモジュール９２２と、グラフ符号化モジュール９２４と、グラフプリミティブコンピューティングモジュール９２６と、グラフカラーリングモジュール９２８とを含むＧｒａｐｈＺＩＰグラフ圧縮システム９１８を記憶する。システム９０２は、グラフ圧縮システム９１８に対してアクセス可能なメモリ部に頂点及びエッジデータを生成してコピーすることができる。動作中において、ＧｒａｐｈＺＩＰグラフ圧縮システム９１８などの１つ以上のアプリケーションは、記憶装置９０８からメモリ９０６にロードされ、その後、プロセッサセット９０４によって実行される。プログラムの実行中において、プロセッサセット９０４は、上述した機能を実行する。システム９０２は、任意のディスプレイ９１０、キーボード９１２及びポインティングデバイス９１４に結合されることができる。
【００５９】
いくつかの実施形態において、クリーク発見モジュール９２０は、大きなクリークを発見することができる。クリーク及び頂点順序付けモジュール９２２は、クリークを順序付けることができる、及び／又は、クリークの順序付けと一致するように頂点を順序付けることができる。グラフ符号化モジュール９２４は、グラフ、圧縮グラフ又はクリークの表現を符号化することができる。グラフプリミティブコンピューティングモジュール９２６は、グラフの圧縮表現にしたがって、頂点がクリークに属しているかどうかを検査することなどグラフプリミティブを計算することができる。グラフカラーリングモジュール９２８は、グラフ又はサブグラフのｋ−カラーリング、グリーディカラーリング及び／又は隣接カラーリングを取得することができる。図２に示されたグラフ管理モジュール２０２は、図９に示された様々なモジュールの任意の及び全ての機能を提供してもよいことに留意されたい。
【００６０】
この詳細な説明に記載されたデータ構造及びコードは、典型的には、コンピュータシステムによって使用するためのコード及び／又はデータを記憶することができる任意の装置又は媒体とすることができるコンピュータ可読記憶媒体上に記憶される。コンピュータ可読記憶媒体は、限定されるものではないが、揮発性メモリ、不揮発性メモリ、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（ディジタル多用途ディスク又はディジタルビデオディスク）などの磁気及び光記憶装置、又は、現在知られているか又は今後開発されるコンピュータ可読媒体を記憶することができる他の媒体を含む。
【００６１】
詳細な説明のセクションに記載された方法及びプロセスは、上述したようにコンピュータ可読記憶媒体に記憶することができるコード及び／又はデータとして具現化されることができる。コンピュータシステムがコンピュータ可読記憶媒体に記憶されたコード及び／又はデータを読み取って実行すると、コンピュータシステムは、コンピュータ可読記憶媒体内に記憶されたデータ構造及びコードとして具現化される方法及びプロセスを行う。
【００６２】
さらにまた、本願明細書に記載される方法及びプロセスは、ハードウェアモジュール又は装置に含まれることができる。これらのモジュール又は装置は、限定されるものではないが、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定の時間に特定のソフトウェアモジュール又はコードの一部を実行する専用又は共有プロセッサ、及び／又は、現在知られているか又は後に開発される他のプログラマブル論理デバイスを含むことができる。ハードウェアモジュール又は装置が起動される場合、それらは、それらの内部に含まれる方法及びプロセスを実行する。
【図１Ａ】
2017224287.tif 000004
【図１Ｂ】
2017224287.tif 000005
【図２】
2017224287.tif 000006
【図３】
2017224287.tif 000007
【図４】
2017224287.tif 000008
【図５】
2017224287.tif 000009
【図６】
2017224287.tif 000010
【図７】
2017224287.tif 000011
【図８】
2017224287.tif 000012
【図９】
2017224287.tif 000013