Преобразовать неориентированный граф в двунаправленный граф - PullRequest
0 голосов
/ 23 апреля 2020

Учитывая G = (V, E) связный, неориентированный граф. Есть ли способ преобразовать его в ориентированный граф в обоих направлениях между двумя ребрами. так что если есть A и B как вершина, то A-> B и B-> A должны существовать в ориентированном графе. Я хочу знать алгоритм для этого, чтобы я мог написать код для него. Я не могу думать об этом.

1 Ответ

0 голосов
/ 24 апреля 2020

Быстрый способ представления графа с 10 узлами: представление списка смежности узла в виде набора.

set<int> G[10];

Затем просто выполните

for(int u = 0; u < 10; u++){    //for each node u
    for(int v : G[u]){          //for each node v where exists an edge (u → v)

        if(!G[v].contains(u)) G[v].insert(u);    //add the missing edge (v → u) 

   }
}

Сложность: O (V + E lg (V))

Если хотите, вы можете использовать unordered_set вместо set и сделать сложность O (V + E).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...