我想计算非有向图中节点所属的周期数。图:包含节点的计数周期
这些周期可以共享它们之间的节点。这两个将计数:
A -> B -> A
A -> B -> C -> A
我一直在尝试我的手一段时间了。我目前的实施计数周期两次:单向行走,然后是另一行程。它可能有其他的错误。
这是递归函数来找到路径(从countCycles
包装):
function countPaths(current, destination, visited: set) ->
if visited.contains(current):
if current is destination and visited.size > 2:
return 1
else
return 0
visited.add(current)
count = 0
for each neighbor of current:
count += countPaths(neighbor, destination)
visited.remove(current)
return count
如果唯一的问题是,周期计数两次,我可以减半的结果,但我想走路每个只循环一次。相同的算法可能对其他方面有好处。
最后一段是一个真正的WTF。 –
如果是给我的话,我会花上一个小时。我的老板不会那么高兴。 – slezica
我们不知道哪里出了问题,向我们展示您当前的(非工作)解决方案。 –