java 树 最短路径代码_如何最小化最短路径树的总成本

这个问题(Steiner Tree)是NP-hard和max SNP-complete,因此除非P = NP,否则既没有多项式时间算法也没有PTAS(任意近似近似值) .

除非你知道图形的一些特殊特征(例如图形是平面的,或者至少权重服从三角形不等式),否则MST可以任意比任意更差的权重 . 例如,如果您的K_1,000,000,001具有所有边权重1且仅有一个目标,则最佳解决方案的权重为1,而MST的权重为1,000,000,000 .

如果假设目标与源和每个目标之间的所有边之间存在所有边,则仍然可以按任意因子超调 . 考虑上面的例子,但是将目标和源之间的边缘权重改为2,000,000,000,000,000,000(你仍然偏离最优的十亿分之一) .

当然,您可以通过遍历图形将图形转换为“移除”时间为O(E)左右的边缘权重 . 加上一组目标和源的MST得出近似比为2 .

如果您的图表是平面的,情况会更好 . 由于Borradaile,Kenyon-Mathieu&Klein( Build 于Erickson,Monma和Veinott),有一种快速算法可以给出任意近似的近似值:An O(nlogn) approximation scheme for Steiner tree in planar graphs(doi 10.1.1.133.4154)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值