Python 平面上的点的最短连线网

说明:

各位大佬,这篇文章是小弟两年前写的,才疏学浅,那时是当做一道面试题来做的,解决办法和正确性证明都是我自己想出来的。两年过去我已成长不少,原来这类问题叫做「最小生成树问题」,而我用的解法叫做「Prim 算法」,在 CLRS 中都有讲解。

未曾想此文今日还有人评论,故作此说明,方便想深挖的朋友按图索骥。——20201029

以下为原文↓↓

 

Python3.6.3

 如下图所示,平面上有一些点,需要将所有点连起来,使任何一个点都可以和其他点连通(直接或间接),且连接线段长度总和最短。

点

例:下面的四个点,相互连通,并且总长度是最短的。

4点

思路:共有n个点,最短连线集合f(n)一定存在。

假设有m (1≤m<n)个点,它们的最短连线集合是f(m),并且满足在f(n)中这m个点的连线也可以是f(m)。

计算剩余n-m个点与m个点的距离,最短的那条就是要求的下一条连线。

  • 9
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值