求教个算法
有一个坐标集合List<Point>
连接所有坐标点
要求:
两点间连线距离最短,尽量不要出现连线交叉
[解决办法]
鱼与熊掌不可兼得,要求苛刻,程序无法实现。对于程序来说,“尽量”这个词的处理难度太大了,它没有人脑那么智能。
[解决办法]
令我想到了蚊香,不知道怎么样
[解决办法]
哈哈,我也觉得“尽量”这个词,要么就交叉要么就不交叉,如果是不交叉的话,起点的定义不同,结果也不同。
[解决办法]
我没有想到好的办法呢,目前就是全部遍历一遍。。。如果你LIST里数量不多的话应该感觉不出什么计算延迟的吧。
[解决办法]
你试过么?试一下看看咯!
[解决办法]
你在网上搜索一下Dijkstra算法相关介绍和C#版代码看看吧。
[解决办法]
旅行者
[解决办法]
[解决办法]
基本思路是这样:
首先是list一个点a和list中其他点取距离最小的点b记录下来,将这两点重list中移除,再用b重剩下的list中取距离最小的点c。
可用递归调用重复进行,直到list为空,此时递归过程中各个最小距离的和就是为从a开始的最小值。
而且,出现交叉现象的情况定不是最优算法,所以要将list中所有点都作为起始点来计算一次,其中最小值定为所求。