(57)【特許請求の範囲】
【請求項１】
データフロープログラミングをサポートするよう構成されたコンピューティング装置であって、
１以上のコンピューティングプロセッサと、
前記１以上のコンピューティングプロセッサ上で動作して、プログラムに関連付けられたデータフローグラフを複数のサブグラフに分割するスペクトルグラフパーティショナと、
を備え、
前記スペクトルグラフパーティショナは、
前記データフローグラフを記述するラプラシアン行列の複数の固有ベクトルであって、前記データフローグラフを前記複数のサブグラフに分割するための複数の固有ベクトルを生成するベクトル推定部と、
クラスタ決定部であって、
前記複数の固有ベクトルに基づいて複数次元空間を定義し、
前記データフローグラフのノードをクラスタリングして、前記複数次元空間において前記複数のサブグラフを形成する
クラスタ決定部と、
を含み、
前記複数のサブグラフは、前記プログラムの解析又はデバッグにおいて使用され、前記プログラムは、タスクを実行するように前記コンピューティング装置又は別のコンピューティング装置をプログラムするために使用される、コンピューティング装置。
【請求項２】
前記ベクトル推定部は、
【数１】
0006382284.tif 000016
によって表される関数を最小化することによって、ベクトルｖとして前記固有ベクトルを生成し、ｎは、前記データフローグラフにおける頂点の数であり、ｃは、定数である、請求項１に記載のコンピューティング装置。
【請求項３】
前記関数を最小化することは、前記関数ｆに対して最急降下法を実行することを含む、請求項２に記載のコンピューティング装置。
【請求項４】
前記定数ｃの値は、前記データフローグラフの次数の逆数に少なくとも部分的に基づく、請求項２に記載のコンピューティング装置。
【請求項５】
前記固有ベクトルを生成することは、前記関数ｆを最小化する前に、前記ベクトルｖの１つの座標を０に設定することを含む、請求項２に記載のコンピューティング装置。
【請求項６】
前記固有ベクトルを生成することは、前記関数ｆを最小化した後、０に設定された前記座標を、前記座標の近傍座標の平均値に設定することを含む、請求項５に記載のコンピューティング装置。
【請求項７】
前記クラスタ決定部は、ｋ平均クラスタリングプロセスを実行することによって、前記データフローグラフの前記ノードをクラスタリングして、前記複数のサブグラフを形成する、請求項１乃至６いずれか一項に記載のコンピューティング装置。
【請求項８】
前記スペクトルグラフパーティショナは、
前記データフローグラフのノードのクラスタリングが与えられると、該ノードの該クラスタリングについての１以上の品質メトリクスを決定する品質メトリクス決定部
をさらに含む、請求項１乃至６いずれか一項に記載のコンピューティング装置。
【請求項９】
前記品質メトリクス決定部は、前記ノードの前記クラスタリングについてのモジュール性メトリクス又はクラスタパス長メトリクスを決定する、請求項８に記載のコンピューティング装置。
【請求項１０】
前記スペクトルグラフパーティショナは、
前記１以上の品質メトリクスに少なくとも部分的に基づいて、固有ベクトルの生成と、前記データフローグラフのノードのクラスタリングと、を繰り返させる精緻化制御部
をさらに含む、請求項８に記載のコンピューティング装置。
【請求項１１】
前記精緻化制御部は、さらなる固有ベクトルが生成されるように、前記データフローグラフの前記ノードを、増加した数のクラスタにクラスタリングさせる、請求項１０に記載のコンピューティング装置。
【請求項１２】
前記スペクトルグラフパーティショナを使用するか又は前記コンピューティング装置の１以上の他のグラフパーティショナを使用するかを選択するパーティショナセレクタ
をさらに備える、請求項１乃至６いずれか一項に記載のコンピューティング装置。
【請求項１３】
前記パーティショナセレクタは、前記スペクトルグラフパーティショナによって生成された１以上のクラスタリングについて決定された１以上の品質メトリクス又は前記データフローグラフのサイズに少なくとも部分的に基づいて選択する、請求項１２に記載のコンピューティング装置。
【請求項１４】
前記パーティショナセレクタは、前記スペクトルグラフパーティショナとエッジ中心性パーティショナとの間で選択する、請求項１２に記載のコンピューティング装置。
【請求項１５】
データフロープログラミングをサポートするための方法であって、
コンピューティングシステムによって、プログラムに関連付けられたデータフローグラフを受信するステップと、
前記コンピューティングシステムによって、前記データフローグラフを記述するラプラシアン行列の複数の固有ベクトルであって、前記データフローグラフを複数のサブグラフに分割するための複数の固有ベクトルを生成するステップと、
前記コンピューティングシステムによって、前記複数の固有ベクトルに基づいて複数次元空間を定義するステップと、
前記コンピューティングシステムによって、前記データフローグラフのノードをクラスタリングして、前記複数次元空間において前記複数のサブグラフを形成するステップと、
を含み、
前記複数のサブグラフは、前記プログラムの解析又はデバッグにおいて使用され、
前記プログラムは、タスクを実行するように前記コンピューティングシステム又は別のコンピューティングシステムをプログラムするために使用される、方法。
【請求項１６】
前記固有ベクトルは、
【数２】
0006382284.tif 000017
によって表される関数を最小化することによって、ベクトルｖとして生成され、ｎは、前記データフローグラフにおける頂点の数であり、ｃは、定数である、請求項１５に記載の方法。
【請求項１７】
前記データフローグラフのノードをクラスタリングして、前記複数次元空間において前記複数のサブグラフを形成するステップは、ｋ平均クラスタリングプロセスを実行するステップを含む、請求項１５又は１６に記載の方法。
【請求項１８】
前記データフローグラフのノードのクラスタリングが与えられると、前記コンピューティングシステムによって、該ノードの該クラスタリングについての１以上の品質メトリクスを決定するステップ
をさらに含む、請求項１５又は１６に記載の方法。
【請求項１９】
前記コンピューティングシステムによって、前記１以上の品質メトリクスに少なくとも部分的に基づいて、固有ベクトルの生成と、前記データフローグラフのノードのクラスタリングと、を繰り返すステップ
をさらに含む、請求項１８に記載の方法。
【請求項２０】
コンピューティングシステムに請求項１５乃至１９いずれか一項に記載の方法を実行させるコンピュータプログラム。
【請求項２１】
請求項２０に記載のコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項２２】
データフロープログラミングをサポートするためのコンピューティング装置であって、
プログラムに関連付けられたデータフローグラフを受信する手段と、
前記データフローグラフを記述するラプラシアン行列の複数の固有ベクトルであって、前記データフローグラフを複数のサブグラフに分割するための複数の固有ベクトルを生成する手段と、
前記複数の固有ベクトルに基づいて複数次元空間を定義する手段と、
前記データフローグラフのノードをクラスタリングして、前記複数次元空間において前記複数のサブグラフを形成する手段と、
を備え、
前記複数のサブグラフは、前記プログラムの解析又はデバッグにおいて使用され、
前記プログラムは、タスクを実行するように前記コンピューティング装置又は別のコンピューティング装置をプログラムするために使用される、コンピューティング装置。
【請求項２３】
前記固有ベクトルは、
【数３】
0006382284.tif 000018
によって表される関数を最小化することによって、ベクトルｖとして生成され、ｎは、前記データフローグラフにおける頂点の数であり、ｃは、定数である、請求項２２に記載のコンピューティング装置。
【請求項２４】
前記データフローグラフのノードをクラスタリングして、前記複数次元空間において前記複数のサブグラフを形成する手段は、ｋ平均クラスタリングプロセスを実行する手段を含む、請求項２２又は２３に記載のコンピューティング装置。
【請求項２５】
前記データフローグラフのノードのクラスタリングが与えられると、該ノードの該クラスタリングについての１以上の品質メトリクスを決定する手段と、
前記１以上の品質メトリクスに少なくとも部分的に基づいて、固有ベクトルの生成と、前記データフローグラフのノードのクラスタリングと、を繰り返させる手段と、
をさらに備える、請求項２２又は２３に記載のコンピューティング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理の分野に関し、詳細には、コンピューティング装置をプログラムするためのプログラムに関連付けられた大規模データフローグラフの自動分割を含む、コンピューティング装置のデータフロープログラミングに関連付けられた装置、方法、及び記憶媒体に関する。
【背景技術】
【０００２】
本明細書で提供される背景技術は、本開示のコンテキストを一般的に提示することを目的とする。本明細書中に別途示されていない限り、このセクションに記載される情報は、本出願における請求項に対する先行技術ではなく、このセクションに含まれることにより先行技術であると認められるものではない。
【０００３】
データフロープログラミングのパラダイムにおいて、自動処理が、データフローグラフの形で記述され得る。データフロープログラムの性能解析を行うために、関連付けられたデータフローグラフは、個々に解析することができるより小さい独立したサブグラフに分割され得る。このような分割は、グラフの異なるパーティションが異なる性能特性を有する可能性があり、したがって、異なる性能ソリューションから恩恵を受ける可能性があるため、望ましいであろう。しかしながら、最適なグラフ分割を決定することは、通常、特にグラフサイズが増加するにつれて、効率的な計算をできなくする複雑なプロセスである。多くの典型的なグラフ分割プロセスは、大きなグラフサイズにうまく適合しない。
【図面の簡単な説明】
【０００４】
実施形態は、添付図面及び以下の詳細な説明によって容易に理解されるであろう。本説明を円滑にするために、同様の参照番号は、同様の構成要素を示す。実施形態は、限定ではなく例として、添付図面に示される。
【図１】さまざまな実施形態に従った、スペクトルグラフパーティショナを含むグラフ分割システムの例示的なコンポーネント及び情報フローを示す図。
【図２】さまざまな実施形態に従った、グラフを分割するグラフ分割システムの例示的なプロセスを示す図。
【図３】さまざまな実施形態に従った、グラフのスペクトル分割を実行するスペクトルグラフパーティショナの例示的なプロセスを示す図。
【図４】さまざまな実施形態に従った、グラフについての固有ベクトルを推定する例示的なプロセスを示す図。
【図５】さまざまな実施形態に従った、本開示のさまざまな態様を実施するのに適した例示的なコンピューティング環境を示す図。
【図６】さまざまな実施形態に従った、装置が本開示のさまざまな態様を実施することを可能にするよう構成された命令を有する例示的な記憶媒体を示す図。
【発明を実施するための形態】
【０００５】
以下の詳細な説明において、本明細書の一部を形成する添付図面を参照する。添付図面において、同様の参照番号は、全体を通して同様の部分を示し、実施することができる例示的な実施形態が示される。他の実施形態を使用することができ、構造的な変更又は論理的な変更を、本開示の範囲から逸脱することなく行うことができることを理解されたい。したがって、以下の詳細な説明は、限定的に解釈されるべきではなく、実施形態の範囲は、請求項及びその均等の構成によって定められる。
【０００６】
特許請求される主題を理解する上で最も役に立つ形で、さまざまな動作が、複数の別個のアクション又は動作として順番に説明され得る。しかしながら、説明の順番は、これらの動作が必ず順番に依存することを意味すると解釈されるべきではない。詳細には、これらの動作は、提示される順番で実行されないことがある。説明する動作は、説明する実施形態とは異なる順番で実行されることがある。さまざまなさらなる動作が実行されることもあるし、且つ／あるいは、説明する動作が、さらなる実施形態では省略されることもある。
【０００７】
本開示のために、「Ａ及び／又はＢ」という語句は、（Ａ）、（Ｂ）又は（Ａ及びＢ）を意味する。本開示のために、「Ａ、Ｂ、及び／又はＣ」という語句は、（Ａ）、（Ｂ）、（Ｃ）、（Ａ及びＢ）、（Ａ及びＣ）、（Ｂ及びＣ）、又は（Ａ、Ｂ、及びＣ）を意味する。
【０００８】
本説明では、「一実施形態において」又は「実施形態において」という語句が使用され得る。これらの語句の各々は、同じ実施形態又は異なる実施形態のうちの１以上を指すことがある。さらに、本開示の実施形態に対して使用される、「備える」、「含む」、「有する」等といった用語は、同義語である。
【０００９】
本明細書で使用される場合、「ロジック」及び「モジュール」という用語は、１以上のソフトウェアプログラム又はファームウェアプログラムを実行する特定用途向け集積回路（ＡＳＩＣ）、電子回路、プロセッサ（共用、専用、又はグループ）及び／若しくはメモリ（共用、専用、又はグループ）、組合せロジック回路、並びに／又は、説明する機能を提供する他の適切なコンポーネントを指すこともあるし、これらの一部であることもあるし、又は、これらを含むこともある。本明細書で説明するように、「ロジック」及び「モジュール」という用語は、以下で説明するように、システムオンチップを指すこともあるし、システムオンチップの一部であることもあるし、又は、システムオンチップを含むこともある。
【００１０】
さまざまな実施形態において、グラフ分割システム（「ＧＰＳ」）のスペクトルグラフパーティショナ（「ＳＰ」）は、コンピューティング装置を複数のサブグラフにプログラムするためのプログラムに関連付けられたデータフローグラフの推定に基づく分割を実行するよう構成され得る。サブグラフを使用して、プログラムの解析又はデバッグを実行することができる。プログラムの解析又はデバッグの実行後、このプログラムを使用して、タスクを実行するようにコンピューティング装置をプログラムすることができる。ＳＰを動作させるためのコンピューティング装置及びプログラムされるコンピューティング装置は、同じコンピューティング装置であってもよいし異なるコンピューティング装置であってもよい。このような１以上のコンピューティング装置は、コンピューティングタブレット、ラップトップ、デスクトップ、又はサーバを含む、当分野で既知の任意のコンピューティング装置であってよいが、これらに限定されるものではない。タスクは、システムサービスタスクからアプリケーションタスクまで、当分野で既知の任意のタスクであってよい。
【００１１】
ＳＰは、データフローグラフ（以下、単に「グラフ」とする）を複数のノードクラスタに分割して、対応するサブグラフを形成するために使用する１以上のベクトルを推定するよう構成され得る。ＳＰは、グラフを表現するラプラシアン行列の推定固有ベクトルを生成するよう構成され得る。ＳＰは、
【数１】
0006382284.tif 000002
によって表される関数を最小化するによって、ベクトルｖとして推定固有ベクトルを生成するよう構成され得る。さまざまな実施形態において、ＳＰは、関数ｆの最小化の間、ベクトルｖのランダム座標を０に設定するよう構成され得る。固有ベクトルの推定後、０に設定された座標は、近傍座標の平均値に再設定され得る。
【００１２】
さまざまな実施形態において、ＳＰは、グラフのノードを複数のクラスタにクラスタリングする際に、したがって、グラフを複数のサブグラフに分割する際に使用するための複数の推定固有ベクトルを生成するよう構成され得る。ＳＰは、推定固有ベクトルによって記述される複数次元空間におけるｋ平均クラスタリングを使用してクラスタリングを実行するよう構成され得る。さまざまな実施形態において、ＳＰはまた、さらなるクラスタリングが実行される場合がある、より高次元の空間を記述するために推定固有ベクトルの生成を繰り返すことによってクラスタリングを精緻化するよう構成され得る。ＳＰはまた、クラスタについての品質メトリクスを決定し、品質メトリクスに基づいてクラスタリングの精緻化を停止するよう構成され得る。さまざまな実施形態において、ＧＰＳはまた、ＳＰによって生成されたパーティションを使用するか又は分割のために１以上の他のパーティショナを使用するかを選択するよう構成され得る。例えば、ＧＰＳは、ＳＰの代わりにグラフの１以上のパーティションをレポートするためにエッジ中心性パーティショナ（edge-centrality  partitioner）を使用することができる。ＧＰＳは、例えば、ＳＰによって生成された１以上のクラスタリングについてＳＰによって決定された品質メトリクス又はグラフサイズ等のさまざまなファクタに基づいて、ＳＰと他のパーティショナとの間で選択することができる。
【００１３】
図１を参照すると、さまざまな実施形態に従った、ＳＰ１５０を含むＧＰＳ１００のコンポーネント及び情報フローが示されている。特定のコンポーネントが図示されているが、さまざまな実施形態において、ＧＰＳ１００及び／又はＳＰ１５０は、他のコンポーネントを含むこともあるし、且つ／あるいは、図１に示される１以上のコンポーネントを省略することもあることに留意されたい。さまざまな実施形態において、図示されるコンポーネントは、ハードウェア及び／又はソフトウェアにより実装され得、以下で説明するように、さまざまなフォームファクタのコンピューティングデバイス上で動作するよう構成され得る。
【００１４】
さまざまな実施形態において、ＧＰＳ１００は、図示される例示的なグラフ１０５等の、コンピューティング装置をプログラムするためのプログラムに関連付けられたグラフを受信し、解析し、サブグラフ１９５及び１９６として図１に示される複数のサブグラフに分割し、プログラムの解析及び／又はデバッグを容易にすることができる。グラフ１０５が、２つのサブグラフに分割されるものとして図示されているが、これは、例示のためであり、さまざまな実施形態において、パーティションは、さまざまな数のサブグラフを含んでもよいことに留意されたい。
【００１５】
さまざまな実施形態において、グラフ１０５は、さまざまなノードｎｉとして図１に示される１以上の頂点又はノードを含み得る。グラフ１０５はまた、エッジｅｉとして図１に示される、ノードを連結する１以上のエッジを含み得る。さまざまな実施形態において、ＧＰＳ１００、特に、ＳＰ１５０は、クラスタを連結するエッジの数が、最小化されないとしても、低減されるように、グラフ１０５のノードを複数のクラスタにクラスタリングするよう構成され得る。さまざまな実施形態において、グラフ１０５は、理解されるように、さまざまな形でＧＰＳ１００に提供され得る。また、図示されるグラフ１０５は、８個のノードおよび１１個のエッジのみを含むが、さまざまな実施形態において、グラフ１０５は、手動でグラフを効率的に分割する人間の能力をはるかに超える、数百又は数千のノード及び／又はエッジを含む、さらに大規模なものであり得ることが認識されよう。一般に、１００個以上のノード及び／又はエッジを含むグラフは、人間が手動で効率的に分割することが困難である。
【００１６】
さまざまな実施形態において、ＳＰ１５０は、グラフ１０５に対してスペクトル分割を実行するためのさまざまなコンポーネントを含み得る。例えば、ＳＰ１５０は、ベクトル推定部１１０（「ＶＥ１１０」）を含み得る。ＶＥ１１０は、グラフ１０５の分割を補助することができる、推定固有ベクトル等の１以上の推定ベクトルを生成するよう構成され得る。さまざまな実施形態において、推定固有ベクトルは、理解されるように、グラフ１０５を記述するラプラシアン行列の推定固有ベクトルであり得る。固有ベクトル及びラプラシアン行列の具体的な説明は、以下で見出すことができる。さまざまな実施形態において、ＶＥ１１０は、ベクトルに基づいて評価関数を最小にする値を有する当該ベクトルを決定することによって固有ベクトル推定を実行するよう構成され得る。さまざまな実施形態において、ＶＥ１１０は、クラスタリングのために使用する複数の推定固有ベクトルを生成するよう構成され得る。ＶＥ１１０はまた、以下で説明するように、クラスタリングをより多くのサブグラフに精緻化するために、さらなる推定固有ベクトルを生成するよう構成され得る。
【００１７】
さまざまな実施形態において、ＳＰ１５０はまた、クラスタ決定部１２０（「ＣＤ１２０」）を含み得る。さまざまな実施形態において、ＣＤ１２０は、ＶＥ１１０によって生成された推定固有ベクトルに基づいて、グラフ１０５のノードを複数のクラスタにクラスタリングするよう構成され得る。さまざまな実施形態において、ＣＤ１２０は、生成された推定固有ベクトルによって記述される複数次元空間内の点として、グラフ１０５のノードを表現するよう構成され得る。さまざまな実施形態において、ＣＤ１２０は、理解されるように、ｋ平均クラスタリングを実行して、複数次元空間においてグラフ１０５のノードをクラスタリングするよう構成され得る。他の実施形態において、ＣＤ１２０は、理解されるように、グラフのノードをクラスタリングするために他のプロセスを実行してもよい。
【００１８】
さまざまな実施形態において、ＳＰ１５０は、品質メトリクス決定部１３０（「ＱＭ１３０」）を含み得る。ＱＭ１３０は、ＣＤ１２０によって決定されたクラスタリングについての１以上の品質メトリクスを決定するよう構成され得る。さまざまな実施形態において、品質メトリクスは、本明細書で説明するように、モジュール性メトリクス（modularity  metrics）及び／又はクラスタパス長メトリクス（cluster  path  length  metrics）を含み得る。さまざまな実施形態において、他の品質メトリクスは、ＱＭ１３０によって決定され得る。さまざまな実施形態において、ＳＰ１５０は、精緻化制御部１４０（「ＲＣ１４０」）を含み得る。ＲＣ１４０は、より高品質のパーティションを決定するために、より多くの数の推定固有ベクトル及び／又はより多くの数のクラスタに対して、ＶＥ１１０による推定固有ベクトル推定とＣＤ１２０によるクラスタ決定とを繰り返すようにＳＰ１５０を制御するよう構成され得る。さまざまな実施形態において、ＲＣ１４０は、ＱＭ１３０によって決定された品質メトリクスに基づいて、ベクトル推定及びクラスタ決定を制御するよう構成され得る。例えば、ＲＣ１４０は、品質メトリクスが増加し続けている間は、ベクトル及びクラスタの数を増加させるよう構成され得る。品質メトリクスが増加しなくなる（あるいは、１以上の閾値を超えて増加しなくなる）と、ＲＣ１４０は、ＳＰ１５０及びＳＰ１５０のコンポーネントによるさらなる分割を中止させることができる。
【００１９】
さまざまな実施形態において、ＧＰＳ１００は、分割の制御に加えてパーティションのレポートのために使用することができるコンポーネントを含み得る。さまざまな実施形態において、ＧＰＳ１００は、パーティショナセレクタ１６０（「ＰＳ１６０」）を含み得る。ＰＳ１６０は、ＳＰ１５０を使用して分割するか、又は、エッジ中心性パーティショナ１８０（「ＥＣＰ１８０」）等の１以上の他の分割コンポーネントを使用して分割するか、を選択するよう構成され得る。さまざまな実施形態において、ＰＳ１６０は、例えば、グラフのサイズ又は複雑度等の、グラフ１０５の１以上の品質に基づいて、パーティショナの間で選択するよう構成され得る。他の実施形態において、ＰＳ１６０は、ＳＰ１５０によって提供されたクラスタリングについてのレビュー品質メトリクスを選択し、そのクラスタリングが、ＧＰＳ１００からの結果としてレポートするのに十分な品質であるかどうかを判定するよう構成され得る。クラスタリングが、十分な品質ではない場合、ＰＳ１６０は、ＥＣＰ１８０又は他のグラフパーティショナを使用して、グラフ１０５の分割を実行することができる。
【００２０】
さまざまな実施形態において、ＥＣＰ１８０は、１以上のエッジ中心性分割プロセスを実行することができる。さまざまな実施形態において、エッジ中心性グラフ分割プロセスは、エッジ中心性を計算し、より大きな中心性値を有するエッジを削除することができる。このプロセスは、グラフ１０５が切断されるようになるまで続けられ得、クラスタ品質メトリクスが、最近のエッジ削除がより良いクラスタ品質メトリクスをもたらしたかどうかを確認するために計算され得る。品質が改善した場合、このプロセスは、十分なパーティションが作成されるまで続けられ得る。品質が劣化した場合、削除されたエッジが、グラフに再び追加され得る。さまざまな実施形態において、ＥＣＰ１８０によって実行される技術は、ＳＰ１５０の品質メトリクスよりも優れた品質メトリックを提供することができる。しかしながら、さまざまな実施形態において、ＥＣＰ１８０は、所与のサイズのグラフに対しては、ＳＰ１５０よりも遅くその分割を実行し得る。この効率の差は、入力グラフのサイズが大きくなるにつれて急速に大きくなり得る。
【００２１】
ＧＰＳ１００はまた、レポータ１９０を含み得る。レポータ１９０は、プログラムの解析又はデバッグのために、ＳＰ１５０又は他のパーティショナによって実行された分割の結果をレポートするよう構成され得る。さまざまな実施形態において、レポータ１９０は、例えば、サブグラフ１９５及び１９６を記述するノードのアイデンティフィケーション（ＩＤ、識別情報）といったさまざまな形の結果を提供するよう構成され得る。さまざまな実施形態において、レポータは、アナライザ又はデバッガ（図示せず）による後続のアクセスのためのデータ構造の形で記憶デバイスに、且つ／又は、テキストレポート（図示せず）等を介してユーザに、分割結果を直接レポートするよう構成され得る。サブグラフ１９５及び１９６をレポートするための他の技術も理解されよう。
【００２２】
図２を参照すると、ＧＰＳ１００がグラフを分割する例示的なプロセス２００が、さまざまな実施形態により示されている。図２は、特定の動作を特定の順番で示しているが、さまざまな実施形態において、動作は、組み合わされることもあるし、部分に分割されることもあるし、且つ／あるいは、省略されることもある。さまざまな実施形態において、ＧＰＳ１００は、図２のプロセスを実行して、入力グラフを分割することに加えて分割自体を実行するために、どのパーティショナを使用するかを選択することができる。
【００２３】
プロセス２００は、決定動作２１０で開始することができ、決定動作２１０において、ＧＰＳ１００は、分割するためのグラフ１０５を受信することができる。さまざまな実施形態において、グラフ１０５は、１以上のノード及びノードを連結する１以上のエッジのインジケーション又はレコードを含み得る。さまざまな実施形態において、グラフ１０５は、有向グラフ又は無向グラフであり得、エッジ重みを含むこともあるし含まないこともある。さまざまな実施形態において、ＧＰＳ１００は、有向グラフを無向グラフに変換するよう構成され得る。次いで、判定動作２１５において、ＰＳ１６０は、ＥＣＰ１８０によって実行されるような非推定分割技術（non-estimated  partitioning  technique）を、望ましくない処理時間を招くことなく実行することができるほど、グラフのサイズが十分に小さいかどうかを判定することができる。例えば、ＰＳ１６０は、グラフのサイズが１００ノード未満である場合、分割のためにＥＣＰ１８０を選択することができる。さまざまな実施形態において、グラフが十分に小さい場合、プロセス２００は、次いで動作２５０に進み、動作２５０において、ＥＣＰ１８０は、グラフ１０５をサブグラフ（例えば、サブグラフ１９５及び１９６）に分割するためにエッジ中心性プロセスを実行することができる。次いで、プロセス２００は、動作２６０に進み、動作２６０において、サブグラフは、ＧＰＳ１００によってレポートされ得る。他の実施形態において、ＰＳ１６０は、グラフのサイズを解析する代わりに又はグラフのサイズを解析することに加えて、グラフ連結性（graph  connectedness）又は他のグラフメトリクス等の、グラフ１０５の他の品質を解析するよう構成されてもよいことに留意されたい。
【００２４】
一方、判定動作２１５において、グラフ１０５が、非推定分割するには大きすぎるとＰＳ１６０が判定した場合（又は、推定分割が何らかの他の理由により適用可能であるとＰＳ１６０が判定した場合）、動作２２０において、ＳＰ１５０は、グラフ１０５に対して推定スペクトル分割を実行して、グラフ１０５におけるノードの１以上のクラスタリングを決定することができる。動作２２０のプロセスの特定の実施形態は、図３のプロセス３００を参照して以下で説明され得る。
【００２５】
次いで、動作２３０において、ＱＭ１３０は、クラスタリングについての品質メトリクスを決定することができる。いくつかの実施形態において、品質メトリクスは、ＳＰ１５０がグラフ１０５を分割する過程でＱＭ１３０によって決定され得る。他の実施形態において、品質メトリクスは、ＳＰ１５０がグラフ１０５を分割した後、ＳＰ１５０によって生成された１以上のパーティションについて決定され得る。さまざまな実施形態において、ＧＰＳ１００は、そのような決定のために、ＱＭ１３０以外の品質メトリクス決定部を含み得る。
【００２６】
さまざまな実施形態において、品質メトリクスは、連結性、コンパクト性、又は他の特性等の、グラフ１０５内の現在のクラスタリングの特性を示すさまざまなメトリクスを含み得る。例えば、動作２３０でのさまざまな実施形態において、ＱＭ１３０は、クラスタリングについてのモジュール性メトリクスＱを計算することができる。ＱＭ１３０は、以下に示される式（１）を使用してモジュール性メトリクスＱを計算することができる。Ｑを計算するために、ＱＭ１３０は、ｋ×ｋ行列ｅを構築することができ、ここで、ｋは、グラフ１０５内で見出されたパーティション又はクラスタの数である。ｅの各要素ｅｉｊは、クラスタｉ内のノードをクラスタｊ内の頂点に連結する、グラフ１０５内の全てのエッジの割合（fraction）とすることができる。行列ｅの値は、元のグラフ１０５に基づいて決定され得る。行合計
【数２】
0006382284.tif 000003
は、
【数３】
0006382284.tif 000004
として定義することができ、クラスタｉ内のノードに連結するエッジの割合を表す。式（１）に示されるように、モジュール性尺度Ｑは、行列ｅのトレースから行列ｅ２の要素の合計を減算した値とすることができる。Ｑの値が０に近いことは、クラスタ内のエッジの数が、頂点間のランダム連結をもって予期されるよりも良くないことを示し得、したがって、クラスタリングが不充分であることを示し得る。Ｑの値が最大値である１に近いことは、良いクラスタリングを示し得る。
【数４】
0006382284.tif 000005
【００２７】
いくつかの実施形態において、動作２３０において、ＱＭ１３０は、クラスタリングについての修正されたクラスタパス長メトリクスを計算することができる。ＱＭ１３０によって計算される修正されたクラスタパス長メトリクスは、モジュール性メトリクスＱと比較して、大規模グラフに対する妥当なクラスタの数及びサイズで、且つ類似するクラスタリングに対するピークで最大化することができる。モジュール性メトリクスＱと同様に、修正されたクラスタパス長の値が大きいほど、クラスタリングがより良いことを示し得る。式（２）に示されるように、修正されたクラスタパス長Ｍは、プラス成分Ｍ＋からマイナス成分Ｍ−の４倍を減算した値とすることができる。
Ｍ＝Ｍ＋−４Ｍ−        （２）
【００２８】
プラス成分Ｍ＋は、式（３）に示されるように計算され得る。式（３）の項ｎｉは、クラスタｉ内のノードの数を表し、項ｎは、グラフ１０５内のノードの数を表す。したがって、プラス成分Ｍ＋は、各クラスタ内のノードの相対数によって重み付けされた、各クラスタ内のノード間の平均距離に対するグラフ１０５内のノード間の平均距離の合計に等しい値とすることができる。
【数５】
0006382284.tif 000006
【００２９】
マイナス成分Ｍ−は、式（４）に示されるように計算され得る。以下に示されるように、マイナス成分Ｍ−は、エッジ密度（Edge  Density）を含み得る。エッジ密度は、式（５）に示されるように計算され得る。エッジ密度は、グラフ１０５に含まれる可能性があるエッジの最大可能数に対するグラフ１０５内のエッジの数の比を表し得る。マイナス成分Ｍ−にエッジ密度を含めることにより、疎グラフ１０５に対する過剰クラスタリングを防ぐことができる。
【数６】
0006382284.tif 000007
【数７】
0006382284.tif 000008
【００３０】
次いで、判定動作２４５において、ＳＰ１５０は、決定された品質メトリクスをレビューして、クラスタリングが十分な品質であるかどうかを判定することができる。さまざまな実施形態において、ＳＰ１５０は、判定動作２４５の判定を実行するために、決定された品質メトリクスを１以上の閾値と比較することができる。さまざまな実施形態において、ＳＰ１５０は、Ｑの値が０．３より大きい場合、及び／又はＭの値が大きな正の整数である場合、クラスタリングが十分な品質であると判定することができる。判定動作２４５において、クラスタリングが十分な品質ではないとＳＰ１５０が判定した場合、動作２５０において、ＥＣＰ１８０は、グラフ１０５をサブグラフ（例えば、サブグラフ１９５及び１９６）に分割するためにエッジ中心性プロセスを実行することができる。いずれにせよ、動作２６０において、ＳＰ１５０又はＥＣＰ１９０によって決定されたサブグラフは、ＧＰＳ１００によってレポートされ得る。
【００３１】
図３を参照すると、ＳＰ１５０がグラフ１０５のスペクトル分割を実行する例示的なプロセス３００が、さまざまな実施形態により示されている。さまざまな実施形態において、プロセス３００は、図２のプロセス２００の動作２２０の全て又は一部を実施するために実行され得る。図３は、特定の動作を特定の順番で示しているが、さまざまな実施形態において、動作は、組み合わされることもあるし、部分に分割されることもあるし、且つ／あるいは、省略されることもある。プロセス３００は、動作３１０で開始することができ、動作３１０において、ＶＥ１１０は、グラフ１０５についての固有ベクトルの初期セットを推定することができる。動作３１０のプロセスの特定の実施形態は、図４のプロセス４００を参照して以下で説明され得る。さまざまな実施形態において、動作３１０を繰り返して、グラフ１０５についての５つの推定固有ベクトルの初期セットを形成することができる。しかしながら、他の実施形態において、他のサイズの初期セットが使用されてもよい。
【００３２】
図４を参照すると、グラフについての固有ベクトルを推定する例示的なプロセス４００の例示的な処理が、さまざまな実施形態により示されている。さまざまな実施形態において、プロセス４００は、図３のプロセス３００の動作３１０の全て又は一部を実施するために実行され得る。図４は、特定の動作を特定の順番で示しているが、さまざまな実施形態において、動作は、組み合わされることもあるし、部分に分割されることもあるし、且つ／あるいは、省略されることもある。プロセス４００は、動作４１０で開始することができ、動作４１０において、ＶＥ１１０は、グラフ１０５についてのラプラシアン行列を生成することができる。さまざまな実施形態において、グラフ１０５についてのラプラシアン行列は、以下の定義（６）による、グラフ１０５のノード及びエッジに従って定義される行列を含み得る。
【数８】
0006382284.tif 000009
【００３３】
さまざまな実施形態において、動作４２０〜４６０は、以下の式（７）を参照して実行され得る。さまざまな実施形態において、ＶＥ１１０は、動作４２０〜４６０の過程にわたって、式（７）の関数を設定し最小化するよう構成され得る。
【数９】
0006382284.tif 000010
ここで、ｎは、グラフ１０５内のノードの数であり、ｖｉは、ｖのｉ番目の座標であり、ｃは、定数であり、総和は、ノードｉとノードｊとがグラフ内のエッジによって連結される全ての座標ｖｉと座標ｖｊとに対してなされる（「ｉ〜ｊ」として示されている）。さまざまな実施形態において、式（７）のｆの値を最小化することによって、動作４１０のラプラシアン行列の推定固有ベクトルを提供するために使用することができるベクトルｖを得ることができる。さまざまな実施形態において、ｖの大きさの２乗がｎに近くなるようにするために、式（７）の最後の項、例えば、
【数１０】
0006382284.tif 000011
が２乗され得ることに留意されたい（正規化のために１／ｎの係数が付加されている）。次いで、動作４２０において、ＶＥ１１０は、式（７）で使用するための定数ｃを選択することができる。いくつかの実施形態において、動作４２０において、ｃは、グラフ１０５の次数の逆数にほぼ等しい値に選択され得る。
【００３４】
次いで、動作４３０において、ＶＥ１１０は、ｖのランダム座標を選択し、その座標を０に設定することができる。さまざまな実施形態において、ＶＥ１１０は、非常に小さい固有ベクトルにつながる推定プロセスを回避するために、その座標を０に設定することができる。次いで、動作４４０において、ＶＥ１１０は、ｖの残りの座標をランダム値に設定することができる。動作４５０において、ＶＥ１１０は、式（７）の関数に対して最急降下法を実行して、ｆを最小化することができる。さまざまな実施形態において、最急降下法を実行するための技術が理解されよう。他の実施形態において、関数ｆを最小化するための他の技術が使用されてもよい。動作４５０の後、動作４６０において、ＶＥ１１０は、動作４３０において０に設定された座標を、新しい値で置換することができる。さまざまな実施形態において、０に設定された座標は、その近傍座標の平均値に設定され得る。例えば、ｖのｉ番目の座標ｖｉが、動作４３０において０に設定された場合、ｖｉは、ｖｉ−１とｖｉ＋１との平均値に設定され得る。動作４６０の完了後、ｖが、グラフ１０５についてのラプラシアン行列の推定固有ベクトルとして使用され得る。次いで、プロセス４００は終了する。
【００３５】
図３に戻ると、動作３２０において、ＣＤ１２０は、動作３１０においてＶＥ１１０によって生成された推定固有ベクトルによって記述されるｎ次元空間においてグラフのノードを表現することができる。例えば、動作３１０において、５つの固有ベクトルが推定された場合、動作３２０において、グラフは、これらの固有ベクトルによって記述される５次元空間において表現され得る。さまざまな実施形態において、ｎ次元空間においてノードを表現するための技術が知られている。次いで、動作３３０において、理解されるように、ノードが、最近傍平均を有するクラスタに識別されるように、ｋ平均クラスタリングを実行して、グラフの表現されたノードを、ｋ個のクラスタに分割することができる。さまざまな実施形態において、そのようなクラスタリングが動作３３０において最初に生じるときに、２つのクラスタを決定するために、ｋが２に設定され得る。しかしながら、他の実施形態において、異なる数のクラスタが決定されてもよい。
【００３６】
次いで、動作３４０において、動作３３０で得られたクラスタリングが記録され得、動作３５０において、クラスタリングについての品質メトリクスが、ＱＭ１３０によって決定され得る。さまざまな実施形態において、ＱＭ１３０は、上述したようにＱ及び／又はＭのメトリクスを決定することができる。次いで、判定動作３５５において、ＲＣ１４０は、動作３５０において決定された品質メトリクスが、以前に決定されたメトリクスに対して依然として十分に増加しているかどうかを判定することができる。さまざまな実施形態において、判定動作３５５において、（もしあれば）１以上の品質メトリクスの増加量を閾値と比較して、増加量がさらなる精緻化に十分であるかどうかを判定することができる。
【００３７】
品質メトリクスが十分に増加している場合、クラスタリングがさらなる精緻化から改善できると判定され得、プロセス３００は、動作３７０に進み、動作３７０において、さらなる固有ベクトルが、ＶＥ１１０によって推定され得る。動作３１０と同様に、動作３７０のプロセスの特定の実施形態は、図４のプロセス４００を参照して説明され得る。次いで、動作３８０において、ＣＤ１２０は、ｋの値を１だけ増加させて、ＣＤ１２０は、次の反復でグラフ１０５をより多数のクラスタに分割することができる。次いで、プロセス３００は、ｋの新しい値のための新しいクラスタリングを決定するために、動作３２０に戻ることができる。一方、判定動作３５５において、品質メトリクスが十分には増加していないと判定された場合、動作３６０において、ＣＤ１２０は、結果として生じたパーティションとして記録されたもののうち、より高品質のメトリクスを有する１以上のクラスタをレポートすることができる。次いで、プロセス３００は終了する。
【００３８】
図５を参照すると、図２〜図４のプロセスを含む、本開示のさまざまな態様を実施するのに適した例示的なコンピュータが、さまざまな実施形態により示されている。図示されるように、コンピュータ５００は、１以上のプロセッサ又はプロセッサコア５０２、及びシステムメモリ５０４を含み得る。特許請求の範囲を含む本出願の目的のために、「プロセッサ」及び「プロセッサコア」という用語は、文脈により別途明確に要求されない限り、同義語とみなされ得る。さらに、コンピュータ５００は、大容量記憶デバイス５０６（例えば、ディスケット、ハードドライブ、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）等）、入力／出力デバイス５０８（例えば、ディスプレイ、キーボード、カーソルコントロール、リモートコントロール、ゲームコントローラ、画像キャプチャデバイス等）、及び通信インタフェイス５１０（例えば、ネットワークインタフェイスカード、モデム、赤外線受信機、無線トランシーバ（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）、近距離無線通信、無線周波数識別等））を含み得る。これらの要素は、１以上のバスを表し得るシステムバス５１２を介して互いに接続され得る。複数のバスの場合、それらのバスは、１以上のバスブリッジ（図示せず）によってブリッジされ得る。
【００３９】
これらの要素の各々は、当分野で知られている従来の機能を実行することができる。詳細には、システムメモリ５０４及び大容量記憶デバイス５０６は、集合的に計算ロジック５２２と呼ばれるＳＰ１５０、ＰＳ１６０、ＥＣＰ１８０、及び／又はレポータ１９０等の、図２〜図４を参照して説明した分割技術に関連する動作のうちの１以上を実装するプログラミング命令のワーキングコピー及び永続的コピーを記憶するために、使用され得る。さまざまな要素は、１以上のプロセッサ５０２によってサポートされるアセンブラ命令、又はそのような命令にコンパイルすることができる、例えばＣ等の高水準言語によって実装され得る。さまざまな実施形態において、システムメモリ５０４又は大容量記憶デバイス５０６は、システムオンチップ、ＵＳＢフラッシュドライブ、ＳＤカード、ＳＡＴＡ  ＳＳＤ等の集積フラッシュメモリを含むさまざまなメモリ実装を含み得る。
【００４０】
プログラミング命令の永続的コピーは、例えば、コンパクトディスク（ＣＤ）等の配布媒体（図示せず）を介して、又は（配布サーバ（図示せず）から）通信インタフェイス５１０を介して、工場内又は現場で永続的記憶デバイス５０６に配置され得る。実施形態において、プログラミング命令は、１以上の非一時的なコンピュータ読み取り可能な記憶媒体に記憶され得る。他の実施形態において、プログラミング命令は、信号等の一時的な記憶媒体に符号化され得る。
【００４１】
これらの要素５１０〜５１２の数、機能、及び／又は能力は変わり得る。それらの構成は、既知であり、したがって、これ以上説明されない。
【００４２】
図６は、さまざまな実施形態に従った、上述した技術に関連する動作の全て又は選択された動作を実行するよう構成された命令を有する例示的なコンピュータ読み取り可能な記憶媒体６０２を示している。図示されるように、コンピュータ読み取り可能な記憶媒体６０２は、さまざまなプログラミング命令６０４を含み得る。プログラミング命令６０４は、プログラミング命令の実行に応じて、デバイス（例えば、コンピュータ５００）が、例えば、上述した図面のプロセスのさまざまな動作（例えば、本明細書で説明した分割技術を実行するために実行されるさまざまな動作を含むが、これらに限定されるものではない）を実行することを可能にするよう構成され得る。代替実施形態において、プログラミング命令６０４は、複数のコンピュータ読み取り可能な記憶媒体６０２に配置されてもよい。
【００４３】
図５に戻ると、一実施形態に関して、プロセッサ５０２のうちの少なくとも１つは、図２〜図４のプロセスの態様を実施するよう構成された計算ロジック５２２を有するメモリと共にパッケージ化され得る。一実施形態に関して、プロセッサ５０２のうちの少なくとも１つは、システムインパッケージ（ＳｉＰ）を形成するように、図２〜図４のプロセスの態様を実施するよう構成された計算ロジック５２２を有するメモリと共にパッケージ化され得る。一実施形態に関して、プロセッサ５０２のうちの少なくとも１つは、図２〜図４のプロセスの態様を実施するよう構成された計算ロジック５２２を有するメモリと共に同じダイ上に統合され得る。一実施形態に関して、プロセッサ５０２のうちの少なくとも１つは、システムオンチップ（ＳｏＣ）を形成するように、図２〜図４のプロセスの態様を実施するよう構成された計算ロジック５２２を有するメモリと共にパッケージ化され得る。少なくとも１つの実施形態に関して、ＳｏＣは、例えば、コンピューティングタブレット（例えば、Ｗｉ−Ｆｉ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）低エネルギー、近距離無線通信、無線周波数識別（ＲＦＩＤ）等）、及びシステムの機能要件及び非機能要件を満たすために必要な他のコンポーネントにおいて利用され得るが、これらに限定されるものではない。
【００４４】
上述した技術を実行するためのコンピュータ読み取り可能な媒体（少なくとも１つのコンピュータ読み取り可能な媒体を含む）、方法、装置、システム、及びデバイスは、本明細書で開示した実施形態の例である。さらに、上述したインタラクションにおける他のデバイスは、開示したさまざまな技術を実行するよう構成され得る。本明細書で説明した実施形態の特定の例は、以下を含むが、これらに限定されるものではない。
【００４５】
例１は、データフロープログラミングをサポートするよう構成されたコンピューティング装置を含み得る。コンピューティング装置は、１以上のコンピューティングプロセッサと、１以上のコンピューティングプロセッサ上で動作して、プログラムに関連付けられたデータフローグラフを複数のサブグラフに分割するスペクトルグラフパーティショナと、を含み得る。スペクトルグラフパーティショナは、グラフを複数のサブグラフに分割するための１以上の推定ベクトルを生成するベクトル推定部を含み得る。スペクトルグラフパーティショナはまた、グラフの複数の推定ベクトル及びクラスタノードに基づいて複数次元空間を定義し、複数次元空間において複数のサブグラフを形成するクラスタ決定部を含み得る。複数のサブグラフは、プログラムの解析又はデバッグにおいて使用され得、プログラムは、タスクを実行するようにコンピューティング装置又は別のコンピューティング装置をプログラムするために使用され得る。
【００４６】
例２は、例１のコンピューティング装置を含み得、ベクトル推定部は、グラフを記述するラプラシアン行列の固有ベクトルを生成することによって、１以上の推定ベクトルを生成することができる。
【００４７】
例３は、例２のコンピューティング装置を含み得、ベクトル推定部は、
【数１１】
0006382284.tif 000012
によって表される関数を最小化することによって、ベクトルｖとして固有ベクトルを生成することができ、ｎは、グラフにおける頂点の数であり、ｃは、定数である。
【００４８】
例４は、例３のコンピューティング装置を含み得、関数を最小化することは、関数ｆに対して最急降下法を実行することを含み得る。
【００４９】
例５は、例３のコンピューティング装置を含み得、定数ｃの値は、グラフの次数の逆数に少なくとも部分的に基づき得る。
【００５０】
例６は、例３のコンピューティング装置を含み得、固有ベクトルを生成することは、関数ｆを最小化する前に、ベクトルｖの１つの座標を０に設定することを含み得る。
【００５１】
例７は、例６のコンピューティング装置を含み得、固有ベクトルを生成することは、関数ｆを最小化した後、０に設定された座標を、その座標の近傍座標の平均値に設定することを含み得る。
【００５２】
例８は、例１〜７のいずれかのコンピューティング装置を含み得、クラスタ決定部は、ｋ平均クラスタリングプロセスを実行することによって、グラフのノードをクラスタリングして、複数のサブグラフを形成することができる。
【００５３】
例９は、例１〜８のいずれかのコンピューティング装置を含み得、スペクトルグラフパーティショナは、グラフのノードのクラスタリングが与えられると、ノードのクラスタリングについての１以上の品質メトリクスを決定する品質メトリクス決定部をさらに含み得る。
【００５４】
例１０は、例９のコンピューティング装置を含み得、品質メトリクス決定部は、ノードのクラスタリングについてのモジュール性メトリクスを決定することができる。
【００５５】
例１１は、例９のコンピューティング装置を含み得、品質メトリクス決定部は、ノードのクラスタリングについてのクラスタパス長メトリクスを決定することができる。
【００５６】
例１２は、例９のコンピューティング装置を含み得、スペクトルグラフパーティショナは、１以上の品質メトリクスに少なくとも部分的に基づいて、推定ベクトルの生成と、グラフのノードのクラスタリングと、を繰り返させる精緻化制御部をさらに含み得る。
【００５７】
例１３は、例１２のコンピューティング装置を含み得、精緻化制御部は、さらなる推定ベクトルが生成され得るように、グラフのノードを、増加した数のクラスタにクラスタリングさせることができる。
【００５８】
例１４は、例１〜１３のいずれかのコンピューティング装置を含み得、スペクトルグラフパーティショナを使用するか又はコンピューティング装置の１以上の他のグラフパーティショナを使用するかを選択するパーティショナセレクタをさらに含み得る。
【００５９】
例１５は、例１４のコンピューティング装置を含み得、パーティショナセレクタは、グラフのサイズに少なくとも部分的に基づいて選択することができる。
【００６０】
例１６は、例１４のコンピューティング装置を含み得、パーティショナセレクタは、スペクトルグラフパーティショナによって生成された１以上のクラスタリングについて決定された１以上の品質メトリクスに少なくとも部分的に基づいて選択することができる。
【００６１】
例１７は、例１４のコンピューティング装置を含み得、パーティショナセレクタは、スペクトルグラフパーティショナとエッジ中心性パーティショナとの間で選択することができる。
【００６２】
例１８は、データフロープログラミングをサポートするためのコンピュータ実装方法を含み得る。方法は、コンピューティングシステムによって、プログラムに関連付けられたデータフローグラフを受信するステップと、コンピューティングシステムによって、グラフを複数のサブグラフに分割するための１以上の推定ベクトルを生成するステップと、コンピューティングシステムによって、複数の推定ベクトルに基づいて複数次元空間を定義するステップと、コンピューティングシステムによって、グラフのノードをクラスタリングして、複数次元空間において複数のサブグラフを形成するステップと、を含み得る。複数のサブグラフは、プログラムの解析又はデバッグにおいて使用され得、プログラムは、タスクを実行するようにコンピューティングシステム又は別のコンピューティングシステムをプログラムするために使用され得る。
【００６３】
例１９は、例１８の方法を含み得、１以上の推定ベクトルを生成するステップは、グラフを記述するラプラシアン行列の固有ベクトルを生成するステップを含み得る。
【００６４】
例２０は、例１９の方法を含み得、固有ベクトルを生成するステップは、
【数１２】
0006382284.tif 000013
によって表される関数を最小化することによって、ベクトルｖとして固有ベクトルを生成するステップを含み得、ｎは、グラフにおける頂点の数であり、ｃは、定数である。
【００６５】
例２１は、例２０の方法を含み得、関数を最小化することは、関数ｆに対して最急降下法を実行することを含み得る。
【００６６】
例２２は、例２０の方法を含み得、コンピューティングシステムによって、グラフの次数の逆数に少なくとも部分的に基づく定数ｃの値を使用するステップをさらに含み得る。
【００６７】
例２３は、例２０の方法を含み得、固有ベクトルを生成するステップは、関数ｆを最小化する前に、ベクトルｖの１つの座標を０に設定するステップを含み得る。
【００６８】
例２４は、例２３の方法を含み得、固有ベクトルを生成するステップは、関数ｆを最小化した後、０に設定された座標を、その座標の近傍座標の平均値に設定するステップを含み得る。
【００６９】
例２５は、例１８〜２４のいずれかの方法を含み得、グラフのノードをクラスタリングして、複数のサブグラフを形成するステップは、ｋ平均クラスタリングプロセスを実行するステップを含み得る。
【００７０】
例２６は、例１８〜２５のいずれかの方法を含み得、グラフのノードのクラスタリングが与えられると、コンピューティングシステムによって、ノードのクラスタリングについての１以上の品質メトリクスを決定するステップをさらに含み得る。
【００７１】
例２７は、例２６の方法を含み得、１以上の品質メトリクスを決定するステップは、ノードのクラスタリングについてのモジュール性メトリクスを決定するステップを含み得る。
【００７２】
例２８は、例２６の方法を含み得、１以上の品質メトリクスを決定するステップは、ノードのクラスタリングについてのクラスタパス長メトリクスを決定するステップを含み得る。
【００７３】
例２９は、例２６の方法を含み得、コンピューティングシステムによって、１以上の品質メトリクスに少なくとも部分的に基づいて、推定ベクトルの生成と、グラフのノードのクラスタリングと、を繰り返すステップをさらに含み得る。
【００７４】
例３０は、例２９の方法を含み得、コンピューティングシステムによって、さらなる推定ベクトルが生成され得るように、グラフのノードを、増加した数のクラスタにクラスタリングするステップをさらに含み得る。
【００７５】
例３１は、例１８〜３０のいずれかの方法を含み得、コンピューティングシステムによって、コンピューティングシステムのスペクトルグラフパーティショナを使用するか又は１以上の他のグラフパーティショナを使用するかを選択するステップをさらに含み得る。
【００７６】
例３２は、例３１の方法を含み得、選択するステップは、グラフのサイズに少なくとも部分的に基づいて選択するステップを含み得る。
【００７７】
例３３は、例３１の方法を含み得、選択するステップは、スペクトルグラフパーティショナによって生成された１以上のクラスタリングについて決定された１以上の品質メトリクスに少なくとも部分的に基づいて選択するステップを含み得る。
【００７８】
例３４は、例３１の方法を含み得、選択するステップは、スペクトル分割プロセスとエッジ中心性分割プロセスとの間で選択するステップを含み得る。
【００７９】
例３５は、コンピューティングシステム上での実行に応じて、コンピューティングシステムにデータフロープログラミングをサポートさせる命令が書き込まれた１以上のコンピュータ読み取り可能な媒体を含み得る。命令は、コンピューティングシステムに、プログラムに関連付けられたデータフローグラフを受信させ、グラフを複数のサブグラフに分割するための１以上の推定ベクトルを生成させ、複数の推定ベクトルに基づいて複数次元空間を定義させ、グラフのノードをクラスタリングさせて、複数次元空間において複数のサブグラフを形成させることができる。複数のサブグラフは、プログラムの解析又はデバッグにおいて使用され得、プログラムは、タスクを実行するようにコンピューティングシステム又は別のコンピューティングシステムをプログラムするために使用され得る。
【００８０】
例３６は、例３５のコンピュータ読み取り可能な媒体を含み得、１以上の推定ベクトルを生成させることは、グラフを記述するラプラシアン行列の固有ベクトルを生成させることを含み得る。
【００８１】
例３７は、例３６のコンピュータ読み取り可能な媒体を含み得、固有ベクトルを生成させることは、
【数１３】
0006382284.tif 000014
によって表される関数を最小化させることによって、ベクトルｖとして固有ベクトルを生成させることを含み得、ｎは、グラフにおける頂点の数であり、ｃは、定数である。
【００８２】
例３８は、例３７のコンピュータ読み取り可能な媒体を含み得、関数を最小化させることは、関数ｆに対して最急降下法を実行させることを含み得る。
【００８３】
例３９は、例３７のコンピュータ読み取り可能な媒体を含み得、命令は、さらに、コンピューティングシステムに、グラフの次数の逆数に少なくとも部分的に基づく定数ｃの値を使用させることができる。
【００８４】
例４０は、例３７のコンピュータ読み取り可能な媒体を含み得、固有ベクトルを生成させることは、関数ｆを最小化させる前に、ベクトルｖの１つの座標を０に設定させることを含み得る。
【００８５】
例４１は、例４０のコンピュータ読み取り可能な媒体を含み得、固有ベクトルを生成させることは、関数ｆを最小化させた後、０に設定された座標を、その座標の近傍座標の平均値に設定させることを含み得る。
【００８６】
例４２は、例３５〜４１のいずれかのコンピュータ読み取り可能な媒体を含み得、グラフのノードをクラスタリングさせて、複数のサブグラフを形成させることは、ｋ平均クラスタリングプロセスを実行させることを含み得る。
【００８７】
例４３は、例３５〜４２のいずれかのコンピュータ読み取り可能な媒体を含み得、命令は、さらに、グラフのノードのクラスタリングが与えられると、コンピューティングシステムに、ノードのクラスタリングについての１以上の品質メトリクスを決定させることができる。
【００８８】
例４４は、例４３のコンピュータ読み取り可能な媒体を含み得、１以上の品質メトリクスを決定させることは、ノードのクラスタリングについてのモジュール性メトリクスを決定させることを含み得る。
【００８９】
例４５は、例４３のコンピュータ読み取り可能な媒体を含み得、１以上の品質メトリクスを決定させることは、ノードのクラスタリングについてのクラスタパス長メトリクスを決定させることを含み得る。
【００９０】
例４６は、例４３のコンピュータ読み取り可能な媒体を含み得、命令は、さらに、コンピューティングシステムに、１以上の品質メトリクスに少なくとも部分的に基づいて、推定ベクトルの生成と、グラフのノードのクラスタリングと、を繰り返させることができる。
【００９１】
例４７は、例４６のコンピュータ読み取り可能な媒体を含み得、命令は、さらに、さらなる推定ベクトルが生成され得るように、コンピューティングシステムに、グラフのノードを、増加した数のクラスタにクラスタリングさせることができる。
【００９２】
例４８は、例３５〜４７のいずれかのコンピュータ読み取り可能な媒体を含み得、命令は、さらに、コンピューティングシステムに、コンピューティングシステムのスペクトルグラフパーティショナを使用するか又は１以上の他のグラフパーティショナを使用するかを選択させることができる。
【００９３】
例４９は、例４８のコンピュータ読み取り可能な媒体を含み得、選択させることは、グラフのサイズに少なくとも部分的に基づいて選択させることを含み得る。
【００９４】
例５０は、例４８のコンピュータ読み取り可能な媒体を含み得、選択させることは、スペクトルグラフパーティショナによって生成された１以上のクラスタリングについて決定された１以上の品質メトリクスに少なくとも部分的に基づいて選択させることを含み得る。
【００９５】
例５１は、例４８のコンピュータ読み取り可能な媒体を含み得、選択させることは、スペクトル分割プロセスとエッジ中心性分割プロセスとの間で選択させることを含み得る。
【００９６】
例５２は、データフロープログラミングをサポートするためのコンピューティング装置を含み得る。コンピューティング装置は、プログラムに関連付けられたデータフローグラフを受信する手段と、グラフを複数のサブグラフに分割するための１以上の推定ベクトルを生成する手段と、複数の推定ベクトルに基づいて複数次元空間を定義する手段と、グラフのノードをクラスタリングして、複数次元空間において複数のサブグラフを形成する手段と、を含み得る。複数のサブグラフは、プログラムの解析又はデバッグにおいて使用され得、プログラムは、タスクを実行するようにコンピューティング装置又は別のコンピューティング装置をプログラムするために使用され得る。
【００９７】
例５３は、例５２のコンピューティング装置を含み得、１以上の推定ベクトルを生成する手段は、グラフを記述するラプラシアン行列の固有ベクトルを生成する手段を含み得る。
【００９８】
例５４は、例５３のコンピューティング装置を含み得、固有ベクトルを生成する手段は、
【数１４】
0006382284.tif 000015
によって表される関数を最小化することによって、ベクトルｖとして固有ベクトルを生成する手段を含み得、ｎは、グラフにおける頂点の数であり、ｃは、定数である。
【００９９】
例５５は、例５４のコンピューティング装置を含み得、関数を最小化する手段は、関数ｆに対して最急降下法を実行する手段を含み得る。
【０１００】
例５６は、例５４のコンピューティング装置を含み得、関数を最小化する手段は、グラフの次数の逆数に少なくとも部分的に基づく定数ｃの値を使用する。
【０１０１】
例５７は、例５４のコンピューティング装置を含み得、固有ベクトルを生成する手段は、関数ｆを最小化する前に、ベクトルｖの１つの座標を０に設定する手段を含み得る。
【０１０２】
例５８は、例５７のコンピューティング装置を含み得、固有ベクトルを生成する手段は、関数ｆを最小化した後、０に設定された座標を、その座標の近傍座標の平均値に設定する手段を含み得る。
【０１０３】
例５９は、例５２〜５８のいずれかのコンピューティング装置を含み得、グラフのノードをクラスタリングして、複数のサブグラフを形成する手段は、ｋ平均クラスタリングプロセスを実行する手段を含み得る。
【０１０４】
例６０は、例５２〜５９のいずれかのコンピューティング装置を含み得、グラフのノードのクラスタリングが与えられると、ノードのクラスタリングについての１以上の品質メトリクスを決定する手段をさらに含み得る。
【０１０５】
例６１は、例６０のコンピューティング装置を含み得、１以上の品質メトリクスを決定する手段は、ノードのクラスタリングについてのモジュール性メトリクスを決定する手段を含み得る。
【０１０６】
例６２は、例６０のコンピューティング装置を含み得、１以上の品質メトリクスを決定する手段は、ノードのクラスタリングについてのクラスタパス長メトリクスを決定する手段を含み得る。
【０１０７】
例６３は、例６０のコンピューティング装置を含み得、１以上の品質メトリクスに少なくとも部分的に基づいて、推定ベクトルの生成と、グラフのノードのクラスタリングと、を繰り返させる手段をさらに含み得る。
【０１０８】
例６４は、例６３のコンピューティング装置を含み得、さらなる推定ベクトルが生成され得るように、グラフのノードを、増加した数のクラスタにクラスタリングさせる手段をさらに含み得る。
【０１０９】
例６５は、例５２〜６４のいずれかのコンピューティング装置を含み得、コンピューティング装置のスペクトルグラフパーティショナを使用するか又は１以上の他のグラフパーティショナを使用するかを選択する手段をさらに含み得る。
【０１１０】
例６６は、例６５のコンピューティング装置を含み得、選択する手段は、グラフのサイズに少なくとも部分的に基づいて選択する手段を含み得る。
【０１１１】
例６７は、例６５のコンピューティング装置を含み得、選択する手段は、スペクトルグラフパーティショナによって生成された１以上のクラスタリングについて決定された１以上の品質メトリクスに少なくとも部分的に基づいて選択する手段を含み得る。
【０１１２】
例６８は、例６５のコンピューティング装置を含み得、選択する手段は、スペクトル分割プロセスとエッジ中心性分割プロセスとの間で選択する手段を含み得る。
【０１１３】
説明の目的のために、特定の実施形態が、図示され、本明細書で説明されたが、同じ目的を達成するために計算された広範な代替実施形態及び／又は均等実施形態若しくは実装形態が、本開示の範囲から逸脱することなく、図示され説明された実施形態の代わりに使用されてもよい。本出願は、本明細書で説明した実施形態の任意の応用形態及び変更形態を包含することが意図されている。したがって、本明細書で説明した実施形態は、請求項によってのみ定められることが明白に意図されている。
【０１１４】
本開示において、「ある」又は「第１の」要素又はその均等物が記載されている場合、そのような開示は、１以上のそのような要素を含み、２以上のそのような要素を要求することもないし、２以上のそのような要素を排除することもない。さらに、識別された要素の序数インジケータ（例えば、第１の、第２の、又は第３の）は、要素を区別するために使用され、そのような要素の必要数又は限定数を示したり示唆したりするものでもないし、別途明示されない限り、そのような要素の特定の配置又は順番を示すものでもない。
【符号の説明】
【０１１５】
１００  グラフ分割システム
１０５  グラフ
１１０  ベクトル推定部
１２０  クラスタ決定部
１３０  品質メトリクス決定部
１４０  精緻化制御部
１５０  スペクトルグラフパーティショナ
１６０  パーティショナセレクタ
１８０  エッジ中心性パーティショナ
１９０  レポータ
１９５  サブグラフ
１９６  サブグラフ
【図１】
0006382284.tif 000019
【図２】
0006382284.tif 000020
【図３】
0006382284.tif 000021
【図４】
0006382284.tif 000022
【図５】
0006382284.tif 000023
【図６】
0006382284.tif 000024