【发布时间】:2015-05-02 12:52:55
【问题描述】:
我一直在开发一种循环路径算法,以创建一条出点的路径。 这是我开始的数组:
(1,1)
(1,6)
(2,2)
(2,5)
(4,1)
(4,2)
(6,5)
(6,6)
这些是坐标系中的点,我想要排序,所以我只需要相邻点之间的水平线或垂直线。所以排序后的数组需要是这样的
(1,1) (A,H)
(1,6) (A,B)
(6,6) (C,B)
(6,5) (C,D)
(2,5) (E,D)
(2,2) (E,F)
(4,2) (G,F)
(4,1) (G,H)
编辑:这些点是从不同的边缘中提取的。每条边由两个点定义。没有相互重叠的边缘。
Edge: (1,1) -> (1,6)
Edge: (1,6) -> (6,6)
Edge: (6,6) -> (6,5)
Edge: (6,5) -> (2,5)
Edge: (2,5) -> (2,2)
Edge: (2,2) -> (4,2)
Edge: (4,2) -> (4,1)
Edge: (4,1) -> (1,1)
感谢您的帮助!
【问题讨论】:
-
这不是排序,只是某种排序。如果是排序,你可以取任意 2 分来判断哪个“更大”,哪个“更小”。在这里,下一个项目的顺序取决于上一个的顺序。
-
据我了解,这里你尝试建立一条连接 N 个点的圆形路径,每个点的边缘必须是水平或垂直的,并且每个水平边缘都必须跟随垂直,反之亦然。如果对于任何给定的 x 或 y 坐标(如您的示例)只有 0 或 2 个点,那么只有一个这样的路径(不考虑遍历方向),如果它存在,并且可以很简单地恢复。如果对于任何给定的 x 或 y 可以有任何偶数个点,问题就会变得更难。
-
你是对的。订购是我的问题的正确定义。我可以后退一步,我确实有由两个点定义的不同边缘,我认为使用点会更容易,但我忘记了使用同一点的两个边缘的可能性
-
边可以相交吗?
-
是的,它们可以相交
标签: algorithm path-finding circular-dependency