- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
给定一对点的数组,例如
[19, 11], [11,44] ,[ 98,101], [44,98], [12,32],[44,12],[44,98],[98,101], [33,39]
排列数组,使终点等于下一点的起点。如果不相等,则成本 = 1。我们必须将成本降至最低。例如我们可以将上面的安排为
[19,11],[11,44],[44,12],[12,32],[44,98],[98,101],[44,98],[98,101], [33,39]
所以这里的成本是 [12,32],[44,98]
= 1 + [98,101],[44,98]
= 1 + [98,101],[33,39]
= 1 所以总数 = 3。
我已经尝试了一些解决方案,首先匹配精确对,然后尝试匹配非精确对,但我觉得我的贪婪方法不是最优的,可以使用动态规划来找到一些最优解。
另外一种感觉就是统计所有可能的序列但是复杂度非常高n!。
谁能帮我想出一个动态规划的解决方案
最佳答案
我相信这实际上是著名的 Travelling Salesman 的一个实例问题。这意味着您的解决方案不是最优的,并且在多项式时间内也没有可能的最优解。虽然动态规划does seem to稍微降低时间复杂度,它仍然是 NP-Hard。
要了解原因,我们需要使用图论重新表述这个问题。在这里,每个点都是一个节点。每个节点(即点)都通过成本为 1 的有向加权边与其他节点相连。除非源节点的结束值与邻居节点的开始匹配,否则边的权重为 0。现在创建一个虚拟起始节点,其具有直接边连接从它到每个节点,也从每个节点到它。
现在,如果您从起始节点运行 TSP,您将以最低的成本获得所需的序列。
关于algorithm - 给定一对点的数组,对它们进行排序,使终点与下一个点的起点匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54957884/
我需要用一些数据计算弧长: 起始点坐标(Xs、Ys、Zs) 结束点及坐标(Xe、Ye、Ze) 中心点及坐标(Xc、Yc、Zc) Axis 向量,包含分量(Xa、Ya、Za) Arc 从 Start 点
通常 UICollectionView 在滚动超过它的 contentSize 时开始反弹,即当 contentOffset contentSize.width用于水平方向。 是否可以更改此行为,以
我的要求是,当表格宽度大于当前视口(viewport)时,必须添加左右两个按钮。当用户单击左侧按钮时,表格必须向左移动,同样向右移动。 所以我决定使用 jQuery 动画方法来完成要求。我的挑战是,我
我有一堆坡道,我想知道它们的起点和终点(如果有多个起点/终点,我想知道它们是如何连接的)。我目前将这些作为 List ret = new List(); FilteredElementCollecto
我使用了以下代码,仅输入start_point和end_point: import matplotlib.pyplot as plt from matplotlib.path import Path
我正在尝试从 mapr fs origin 进行简单的数据移动到 mapr fs destination (这不是我的用例,只是为了测试目的做这个简单的 Action )。尝试 validate 时这
我是一名优秀的程序员,十分优秀!