在加权定向循环图中寻找从A到B的不同路径的算法

Bab*_*bak 9 algorithm graph path-finding graph-algorithm

假设我们有一个DIRECTED,WEIGHTEDCYCLIC图表.

假设我们只对总重量小于MAX_WEIGHT的路径感兴趣

找到总重量小于MAX_WEIGHT的两个节点A和B之间的不同路径数量的最合适(或任何)算法是什么?

PS:这不是我的功课.只是个人的非商业项目.

Dan*_*her 2

如果节点 和 的数量MAX_WEIGHT不是太大(并且所有权重都是整数),则可以使用动态规划

unsigned long long int num_of_paths[MAX_WEIGHT+1][num_nodes];
Run Code Online (Sandbox Code Playgroud)

初始化为 0,除了num_of_paths[0][start] = 1;

for(w = 0; w < MAX_WEIGHT; ++w){
    for(n = 0; n < num_nodes; ++n){
        if (num_of_paths[w][n] > 0){
            /* for each child c of node n
             * if w + weight(n->c) <= MAX_WEIGHT
             * num_of_paths[w+weight(n->c)][c] += num_of_paths[w][n];
             */
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

解是 的总和num_of_paths[w][target], 0 <= w <= MAX_WEIGHT