给定二维坐标系中的一组点,如果仅访问所有点一次,如何计算最小距离和路径?

时间:2019-04-26 01:10:07

标签: algorithm sorting

限制条件如下:

  1. 设置了一个固定阈值,该距离大于阈值的距离由距离本身计算得出 且小于或等于距离的距离视为常数;

  2. 最好让路径随x坐标增加(即p1.x <= p2.x <= ... <= pn.x), 但是先考虑condition.1,然后再考虑condition.2;

  3. 我们每个地点只能参观一次。

1 个答案:

答案 0 :(得分:0)

有关优化的注意事项:因此,基本上是一条最短的汉密尔顿路径,具有2个扭曲(条件1和2)。考虑到最短的HP可以通过Traveling Salesman算法解决(虚拟城市与其他所有城市的距离为零),要获得更好的优化解决方案,您可以在将条件矩阵提供给TSP算法之前尝试根据条件1处理距离矩阵。 有关如何针对最短的HP here使用TSP的更多信息。

暴力法

为了便于阅读,我将您的观点称为[A,B,... C]。让我们这样表达我们的观点:

+---+---+---+
|   | X | Y |
+---+---+---+
| A | 0 | 0 |
| B | 4 | 3 |
| C | 0 | 3 |
+---+---+---+

然后使用勾股定理创建距离矩阵:

+---+------+------+------+
|   |  A   |  B   |  C   |
+---+------+------+------+
| A | 0.00 | 5.00 | 3.00 |
| B | 5.00 | 0.00 | 4.00 |
| C | 3.00 | 4.00 | 0.00 |
+---+------+------+------+

我对您的第一个条件(固定阈值)的理解是,任何低于某个特定值的距离都被视为零。将该条件应用于距离矩阵(假设在我们的例子中为3.50)。

+---+------+------+------+
|   |  A   |  B   |  C   |
+---+------+------+------+
| A | 0.00 | 5.00 | 0.00 |
| B | 5.00 | 0.00 | 4.00 |
| C | 0.00 | 4.00 | 0.00 |
+---+------+------+------+

现在,如果我们坚持使用蛮力方法,那么我们必须为路线的所有可能排列提供资金。在我们的情况下,它将很简单

+------+-----------+--------------+
| Path | Distances | Total Length |
+------+-----------+--------------+
| ABC  | 5+4       |            9 |
| ACB  | 0+4       |            4 |
| BAC  | 5+0       |            5 |
| BCA  | 4+0       |            4 |
| CAB  | 0+5       |            5 |
| CBA  | 4+5       |            9 |
+------+-----------+--------------+

删除相同但相反的路由。

+------+-----------+--------------+
| Path | Distances | Total Length |
+------+-----------+--------------+
| ABC  | 5+4       |            9 |
| ACB  | 0+4       |            4 |
| BAC  | 5+0       |            5 |
+------+-----------+--------------+

以总长度中的最短长度为准,这就是您的解决方案。

第二个条件-X上的距离胜过Y上的距离

据我了解,只有在“总长度”中有平局时,此条件才会激活。在这种情况下,请使用这些点的X坐标之差的绝对值来创建距离矩阵:

+---+------+------+------+
|   |  A   |  B   |  C   |
+---+------+------+------+
| A | 0.00 | 4.00 | 0.00 |
| B | 4.00 | 0.00 | 4.00 |
| C | 0.00 | 4.00 | 0.00 |
+---+------+------+------+

根据您所束缚的路线汇总距离,然后使用该距离的最小值来确定应优先选择的路线。