我想計算非有向圖中節點所屬的週期數。圖:包含節點的計數週期
這些週期可以共享它們之間的節點。這兩個將計數:
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
我們不知道哪裏出了問題,向我們展示您當前的(非工作)解決方案。 –