我的目标是在加权无向图中找到所有周期及其各自的权重。循环的权重定义为构成循环的路径的权重之和。我的预设算法执行以下操作:
dfs(int start, int now,int val)
{
if(visited[now])
return;
if(now==start)
{
v.push_back(val);// v is the vector of all weights
return;
}
dfs through all nodes neighbouring to now;
}
我从每个起点呼叫dfs()
:
for(int i=0;i<V;++i)
{
initialise visited[];
for(int j=0;j<adj[i].size();++j)// adj is the adjacency matrix
dfs(i,adj[i][j].first,adj[i][j].second);
// adj is a vector of vector of pairs
// The first element of the pair is the neighbour index and the second element is the weight
}
因此,该算法的整体复杂性为O(V*E)
(我认为是这样)。任何人都可以提出更好的方法吗?
答案 0 :(得分:3)
由于不是每个人都以同样的方式定义它,我假设......
以下步骤可以确定是否(至少)存在一个奇数加权循环:
复杂性O(V + E)
(这次真的,而不是一个指数的事情或不工作的解决方案)。