私は最近、Dijkstraのアルゴリズムを実装してJavaを実践しました。私は今、ランダムなテストグラフを作成する方法を検討しています(片方向エッジで)。Dijkstraのアルゴリズムのテストグラフを構築する戦略?
現在、私はナイーブな方法を使用しています。ノードは2次元空間(xとyは0〜MAX_SPACE定数の間の符号なし整数)の任意の場所に作成されます。エッジは、ノードを接続するためにランダムに作成されるため、各ノードのアウトディートは少なくとも1(最大MAX_DEGREE)です。インシデントは強制されません。次に、セット内の最初と最後のノードの間のパスを検索します。これは接続されている場合と接続されていない場合があります。
より現実的な状況では、ノードは2d空間での近接度に比例して接続される可能性があります。そのプロパティを持つランダムなテストグラフを作成するための良い戦略は何ですか?
NOTES
私は主に手で描かれたと確認することができ、グラフを構築するために、これを使用しますが、より大きなグラフにスケーリングすることは考慮されます。
戦略は簡単に以下の定数をサポートするように変更する必要があります(そしておそらく他の人を - あなたは何か面白いものを考えるなら、私に知らせて):
- MIN_NODES、MAX_NODES:グラフのサイズの範囲
- つながり:平均出次数
- PROXIMITY:あなたは異なるランダムで見ることによって開始することができ、近位のノード
多分[GTgraph](http://www.cse.psu.edu/~madduri/software/GTgraph/index.html)ツールが役に立つかもしれません。最短経路の課題でグラフを生成するために使用されています。また私は[this](http://videolectures.net/ecmlpkdd09_akoglu_rtg/)ビデオを見つけました。 – MadChuckle
@MadChuckle:どちらも有望なリードのようです。ありがとうございました! – theazureshadow
@amit:はい、クラスタは多くの現実的な状況の特徴です。しかし、私は*すべての*機能を含む答えは期待していません。 – theazureshadow