2012-03-12 8 views
-1

私はこれによって私は、グラフ1の最後のノードがグラフ2 グラフ1の最初のノードのpredecesorなければならないことを意味し、グラフに併合又は結合するためのアルゴリズムが必要です。2つの別々のグラフアルゴリズムをマージ/結合しますか?

1->2->3 
    \/
    4->5 

グラフ2:

6->7 
    | \ 
    8->9 

これは私が必要なものである:

1->2->3 
    \/
    4->5->6->7 
      | \ 
      8->9 
+0

これまでに何か試しましたか? – Halfwarr

+1

私はあなたが質問を誤解していると思う、私はsecondgraphをトラバースして、すべての単一のノードを最初のものに加えることができ、エッジも追加することができると認識しているが、あらかじめ定義されたalgorythmがあれば、 – sm13294

答えて

1

createNewGraph 反復グラフ1と追加新しいグラフこれらのノード間の各辺の各ノードiteratesuccessors ため 反復グラフ1 新しいグラフに追加

反復グラフ2と追加新しいグラフ 反復グラフ2 これらのノード間の各辺の各ノードiteratesuccessors ため

グラフのfirstnodeにグラフ1の最後のノードからエッジを追加する新しいグラフに追加2

0
  1. 頂点をスキャングラフ1の頂点を見つけて、outdegreeの頂点を見つける。
  2. グラフ2の頂点をスキャンし、indegreeの頂点を見つけます。
  3. 2つの頂点を円弧で接続します。

グラフによっては、ソリューションが固有である場合と固有でない場合があります(例では一意です)。

+0

接続する必要があるノードがすでに指定されていますが、これは自分のメソッドです:concat(DirectedGraphInterface g1、DirectedGraphInterface g2)。私はJavaでyEd grailを使用しています – sm13294

0

グラフの表現方法によって異なります。たとえば、例のようにノードに番号が付けられている場合(最初のグラフの場合は1..N、2番目のグラフの場合はN+1..M)、新しいグラフを作成し、両方のグラフを新しいものにコピーし、エッジを追加します。N,N+1それに。

関連する問題