首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求教个算法,该如何解决

2012-07-29 
求教个算法有一个坐标集合ListPoint连接所有坐标点要求:两点间连线距离最短,尽量不要出现连线交叉[解决

求教个算法
有一个坐标集合List<Point>
连接所有坐标点

要求:

两点间连线距离最短,尽量不要出现连线交叉

[解决办法]
鱼与熊掌不可兼得,要求苛刻,程序无法实现。对于程序来说,“尽量”这个词的处理难度太大了,它没有人脑那么智能。
[解决办法]
令我想到了蚊香,不知道怎么样
[解决办法]
哈哈,我也觉得“尽量”这个词,要么就交叉要么就不交叉,如果是不交叉的话,起点的定义不同,结果也不同。
[解决办法]
我没有想到好的办法呢,目前就是全部遍历一遍。。。如果你LIST里数量不多的话应该感觉不出什么计算延迟的吧。
[解决办法]
你试过么?试一下看看咯!
[解决办法]
你在网上搜索一下Dijkstra算法相关介绍和C#版代码看看吧。
[解决办法]
旅行者
[解决办法]

探讨
引用:
你在网上搜索一下Dijkstra算法相关介绍和C#版代码看看吧。

那个是在给定起点和终点的情况下取最短路线,不一定每个点都会连上

[解决办法]
基本思路是这样:
首先是list一个点a和list中其他点取距离最小的点b记录下来,将这两点重list中移除,再用b重剩下的list中取距离最小的点c。
可用递归调用重复进行,直到list为空,此时递归过程中各个最小距离的和就是为从a开始的最小值。

而且,出现交叉现象的情况定不是最优算法,所以要将list中所有点都作为起始点来计算一次,其中最小值定为所求。

热点排行