方向付けされた重み付けされていないグラフが与えられ、問題は最大長の単純なパスを見つけることです (開始頂点と終了頂点は固定されていません)。もちろん O(n^2 * 2 ^n) で解けますが、O(n * 2 ^ n) というアルゴリズムがあると聞きましたが、これは私が知りません。では、O(n * 2 ^n) でそれを解決するにはどうすればよいでしょうか。//n = |V|
2102 次
1 に答える
5
問題が実際にDAGの最長パス問題である場合、ウィキペディアのアルゴリズムは以下のとおりであり、O(| V | + | E |)で実行されます。
algorithm dag-longest-path is
input:
Directed acyclic graph G
output:
Length of the longest path
length_to = array with |V(G)| elements of type int with default value 0
for each vertex v in topOrder(G) do
for each edge (v, w) in E(G) do
if length_to[w] <= length_to[v] + weight(G,(v,w)) then
length_to[w] = length_to[v] + weight(G, (v,w))
return max(length_to[v] for v in V(G))
于 2010-11-29T02:22:22.280 に答える