如何找到在c ++中实现的有向图的所有路径作为邻接列表?

时间:2014-01-01 03:19:25

标签: c++

我在C ++中将我的图形实现为顶点,如下所示:

struct vertex {
    string node_id;
    string node_name;
    int no_servers;
    float mu;
    int node_type; // 1-7
    float lambda;
    float time;
    bool CD; // 0 if converges join----- and 1 if div  split
    vector<int> adj; // children :adjacency list -vector- of
                     // edges contains the indexes to vertex
}; 

struct fill_data {
    vertex node_data;
    int ORDER; // for edges --- father
    fill_data* next;
};

我需要图表的所有可能路径。在我将到达的每个节点中,将使用其一些父信息进行一些计算。

我无法找到结构或离开,因为每个节点的子节点数因节点而异。

1 个答案:

答案 0 :(得分:0)

在邻接列表中,除了VERTEX之外,您还有一个EDGE。在每个EDGE中指定FROM和TO,这将表示EDGE两端的顶点。

为了找到来自给定VERTEX的所有路径,您只需循环邻接列表并找到所有带有FROM的EDGES等于您要查找其所有子项的VERTEX。

示例:如果要查找顶点A中的所有路径,则搜索邻接列表并过滤所有具有FROM(或源节点)等于A的边,结果是来自顶点A的可能路径。