与えられます:任意の数のサイクルを含むことができる重み付けされていない有向グラフ(G =(E、V))です。疎循環グラフ内で最も長い単純パス
目標:すべての頂点のために、私はV
アルゴリズムのアイデアで、いくつかのターゲット頂点Xに最長の単純なパスをしたい:
For each v in V
v.distanceToTarget = DepthFirstSearch(v)
Next
DepthFirstSearch(v as Vertex)
if v = target then
'Distance towards target is 0 for target itself
return 0
elseif v.isVisitedInCurrentDFSPath then
'Cycle found -> I wont find the target when I go around in cycles -> abort
return -infinity
else
'Return the maximum Distance of all Successors + 1
return max(v.Successors.ForEach(Function(v) DepthFirstSearch(v))) + 1
end if
は、すべてのケースのために、この正しいですか? (すべての頂点からターゲットに到達できると仮定します)
グラフの辺の数は非常に少ないです。 仮定| E | < = 3 * | V |保持する。どのように平均時間の複雑さを計算するのですか?
ありがとうございます!