java最长路径算法_Dijkstra是DAG中最长的路径

Longest distance problem has no optimal substructure 代表 any graph ,DAG与否 . 然而,图G上的任何最长距离问题等同于变换图G'中的最短距离问题G'= - G,即每个边权重的符号被反转 .

如果变换后的图形G ' is expected to have negative edges and cycles, then Bellman-Ford algorithm is used for finding shortest distance. However, if G is guaranteed to have only non-negative weights (i.e. G'是非正权重,那么Dijkstra 's algorithm could be better choice over Bellman-Ford. (see ' Evgeny Kluev'对_498088的响应_)如果G是DAG,则G ' will be a DAG too. For DAG, we'更好的算法用于找到最短距离并且应该在Dijkstra 's or Bellman-Ford' s上选择 .

Summary:

最长的路径问题没有最优的子结构,因此修改Dijkstra中的最小权重函数可以用于图形,无论是否为DAG . 我们宁愿转换G,而不是修改任何最短路径算法(以微不足道的方式),并且看看哪个最短路径算法在转换后的G.上运行得最好 .

Note

A-------B

| | assume: edges A-B, B-C, C-A of same weight

| |

+-------C

我们看到MAX_DIS(A,B)= A-> C-> B.

对于"MAX_DIS"是最优结构,在上述情况下,是关系

MAX_DIS(A,B) = MAX_DIS(A,C) + MAX_DIS(C,B) should be satisfied.

但它并不像我们所见,MAX_DIS(A,C)= A-> B-> C和MAX_DIS(C,B)= C-> A-> B因此它提供了一个最长距离问题可能没有的例子最佳子结构 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值