【发布时间】:2011-01-24 08:50:38
【问题描述】:
我有一系列图形坐标,我需要找到通过它们的最短单向路径。我没有预定的开始/结束,但每个点只能触摸一次,不需要返回最佳原点。
我尝试了几种 TSP 方法,但它们似乎都是基于在最后返回原点,这在这种情况下会产生非常低效的结果。
例子
1、13
3, 0
3、7
2、21
2、11
3、12
1、19
3、6
会解决
3, 0
3、6
3、7
3、12
2、11
1、13
1、19
2、21
注意事项:
是的,我试过搜索功能,有一个基本相同的问题 Algorithm: shortest path between all points 然而,唯一真正的答案是 TSP,再一次,闭路对此效率低下。
它不需要 100% 准确,我已经有一个排列方法,但是它太慢了,我需要处理至少 ~25-30 个点,用一个很好的近似值来解决对我来说很有效
提前致谢。
编辑澄清,TSP 倾向于解决 img #1,我想要的结果是 img #2
img 3 是通过 TSP 解决的上述示例,而 img #4 是所需的(x 坐标向后移 -.5 以提高可见性)
为更好的措施加上更多 #1 = TSP,#2 = 期望
基本上我想要连接 n 个点的最短链,使用最有效的起点和终点
【问题讨论】:
-
这与 PHP 有什么关系?您是否有要显示的代码,例如表示节点和图的结构?
-
好吧,我想它与 php 没有直接关系,除了我更喜欢 php 解决方案,因为那是我希望它结束的语言(假设 php 可以在合理的时间内处理处理),但是一个算法或一些用主要语言(c++、java、ruby 等)写的不错的注释代码就足够了
-
图形中的模式表明您不希望路径改变方向。如何使 (x2,y2)
-
@Apalala 你能澄清一点吗?上面的图像确实偶尔会改变方向,例如在 img #2 中。通常它往往是从上到下和一个角到另一个,但并非总是如此。最后一张图片是从中上开始到左下结束,也有可能是从左上开始到左下结束。
-
调整链接权重的建议不会排除从下到左的解决方案,它只会使从上到右的解决方案看起来更便宜。这是一种可以应用于标准解决方案之上的启发式方法。
标签: php algorithm shortest-path