但是,对于
d
i
r
e
c
t
e
d
a
c
y
c
l
i
c
g
r
a
p
h
directed \ acyclic \ graph
directedacyclicgraph来说,存在线性时间算法,即拓扑排序!
有向无环图中的最长路径问题-拓扑排序(类似关键路径问题)
关键路径AOE网中只有一个汇点
但这里的图不一定只有一个汇点
适用于带权图
算法流程
使用BFS对所有结点进行拓扑排序
在拓扑排序过程中每当遇到一个结点(设为结点j),更新从其出发的所有结点的dist值。对于从结点i出发的任意一条边(i,j)按如下方式进行更新:
d
i
s
t
[
j
]
←
m
a
x
{
d
i
s
t
[
j
]
,
d
i
s
t
[
i
]
+
w
e
i
g
h
t
(
i
,
j
)
}
dist[j] \leftarrow max\{dist[j],dist[i] + weight(i,j)\}
dist[j]←max{dist[j],dist[i]+weight(i,j)}