枚举到目标的所有输入路径

时间:2018-11-28 04:04:14

标签: c++ graph directed-acyclic-graphs

尝试枚举到目标顶点的所有输入路径(从顶点开始的路径,度为零)。

所有传入/传出边都存储在称为顶点的向量中。 我试图使用递归从目标开始,向后并在每个传入节点处进行操作,以递归方式调用并检索路径,直到其传入向量边缘大小为零(即度数为零)的顶点为止。

所有不同的路径都使用字符串连接存储在向量中。

该函数正在打印正确数量的不同路径,它们正在开始顶点,但是在此之后,某些路径缺少某些顶点。我不确定导致此问题的原因。

bool enum_paths_helper(int target, vector<string> &paths, int &y) {

    if (has_cycle() || target < 0 || target >= num_nodes())
        return false;

    int i;
    if (vertices[target].incoming.size() == 0) {
        y = paths.size();
        paths.push_back(vertices[target].name);
        return true;
    }
    for (i = 0; i < vertices[target].incoming.size(); i++) {
        enum_paths_helper(vertices[target].incoming[i].vertex_id, paths, y);
        paths[y] = paths[y] +" "  + vertices[target].name;

    }

    return true;
}

0 个答案:

没有答案