Как получить и сохранить инцидентные ребра узла в подграфе большого графа? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть два следующих класса:

class node
{
public:
   node(){};
   vector<edge*> my_edgeS;
   vector<edge*> my_sub_edgeS;
};

class edge
{
   edge(){};
   node *start, *end;
   bool inserted;
};

, где node и edge представляют узел и ребро исходного графа (G) соответственно, start и endявляются начальным и конечным узлами ребра, соответственно, и my_edgeS содержит ребра, инцидентные данному узлу в G.

Ребра и узлы G сохраняются в vector<edge*> edgeS и vector<node*> nodeS вкод.

Переменная inserted используется для определения того, какие ребра включены в конкретный подграф (SG) графа.По определению, SG содержит все узлы G.

Чтобы получить и сохранить ребра, падающие на узлы в SG, я использовал следующие манипуляции:

for (int i = 0; i < (int)nodeS.size(); i++) 
    nodeS[i]->my_sub_edgeS.clear();
edge* e;
for (int i = 0; i < (int)edgeS.size(); i++)
{
    e = edgeS[i];
    if (e->inserted)
    {
        e->start->my_sub_edgeS.push_back(e);
        e->end->my_sub_edgeS.push_back(e);
    }
}

Много либолее эффективные возможности для создания и сохранения записей my_sub_edgeS (например, с использованием других типов контейнеров STL вместо vector)?Падающие ребра узлов применяются для выполнения алгоритмов поиска связующего дерева для SG.

...