合并/加入两个单独的图算法?

时间:2012-03-12 18:38:28

标签: java graph finite-automata

我需要一个合并或连接到图形的算法,我的意思是图1的最后一个节点应该是图2的第一个节点的前身。 图1:

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

图2:

6->7
   | \
   8->9

这就是我需要的:

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

3 个答案:

答案 0 :(得分:1)

createNewGraph 迭代图1并添加新图 迭代图1     对于每个节点iteratesuccessors         对于这些节点之间的每个边缘,添加到新图形

迭代图2并添加新图 迭代图2     对于每个节点iteratesuccessors         对于这些节点之间的每个边缘,添加到新图形

将图1的最后一个节点的边添加到图2的第一个节点

答案 1 :(得分:0)

  1. 扫描图1的顶点,找到outdegree零的顶点。
  2. 扫描图2的顶点,找到indegree零的顶点。
  3. 用弧线连接两个顶点。
  4. 根据图表,解决方案可能是也可能不是唯一的(在您提供的示例中它是唯一的。)

答案 2 :(得分:0)

完全取决于您如何表示图表。例如,如果节点的编号如您的示例所示(第一个图形为1..N,第二个图形为N+1..M),您需要做的就是创建一个新图形,将两个图形复制到新的,并添加边N,N+1