2012-03-12 5 views
-1

я Необходим алгоритм для слияния или присоединения к графикам, под этим я имею в виду, что последний узел графа 1 должен быть predecesor первого узла графа 2. График 1:Слияние/объединение двух отдельных алгоритмов графов?

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

График 2:

6->7 
    | \ 
    8->9 

Это то, что мне нужно:

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

Вы что-то пробовали? – Halfwarr

+1

Я думаю, вы неправильно поняли вопрос, я знаю, что я могу пройти второйграф и добавить каждый узел к первому, а также к краям, но мне было интересно, есть ли какой-то предопределенный алгоритм, который упростит его. – sm13294

ответ

1

createNewGraph итерация граф 1 и добавить новый граф итерации граф 1 для каждого узла iteratesuccessors для каждого ребра между этими узлами добавить в новый граф

итерация граф 2 и добавить новый граф итерации граф 2 для каждого узла iteratesuccessors для каждого ребра между этими узлами добавить в новый граф

добавить край от последнего узла графа 1 до firstnode графа 2

0
  1. Сканирование Vertice s графа 1 и найти вершину outdegree ноль.
  2. Сканировать вершины графа 2 и найти вершину indegree ноль.
  3. Подключите две вершины с дугой.

В зависимости от графиков решение может быть или не быть уникальным (оно уникально в примере, который вы даете).

+0

У меня уже определены узлы, которые нужно подключить, это мой метод: concat (DirectedGraphInterface g1, DirectedGraphInterface g2). Я использую yEd grail с java – sm13294

0

Все зависит от того, как вы представляете графики. Например, если узлы пронумерованы как в вашем примере (1..N для первого графика, N+1..M для второго графика), все, что вам нужно сделать, это создать новый график, скопировать оба ваших графика в новый и добавить край N,N+1 к нему.