Algorithm 最小化数组中相关项之间的距离
我有一个相关项的数组,{A,B,C,D} C依赖于A。 D依赖于B和C 因此,我将此排列中项目之间的总距离计算为: C及A(2),, D和B(2), D和C(1)。 在这个排列中,我们一共有5个 然而,最佳的解决方案是{A,C,D,B},其总距离为3 我有一个(复杂得多)大约200个项目的列表,我希望尽可能优化这些项目,我不知道有任何排序算法以这种方式排序-有人能告诉我现有算法的方向吗 从评论中: 数据图如下所示-(对格式设置表示歉意!)Algorithm 最小化数组中相关项之间的距离,algorithm,sorting,distance,Algorithm,Sorting,Distance,我有一个相关项的数组,{A,B,C,D} C依赖于A。 D依赖于B和C 因此,我将此排列中项目之间的总距离计算为: C及A(2),, D和B(2), D和C(1)。 在这个排列中,我们一共有5个 然而,最佳的解决方案是{A,C,D,B},其总距离为3 我有一个(复杂得多)大约200个项目的列表,我希望尽可能优化这些项目,我不知道有任何排序算法以这种方式排序-有人能告诉我现有算法的方向吗 从评论中: 数据图如下所示-(对格式设置表示歉意!) 我相信你要找的是拓扑排序 此算法用于有向图。在这里,字母
我相信你要找的是拓扑排序 此算法用于有向图。在这里,字母表构成图形的节点,依赖项构成单向边。 该算法是深度优先搜索的应用,用于排序作业
这是一个相当简洁的解释 不清楚您将什么与什么进行比较。我得到的最接近排序值是比较上游和下游依赖项的距离,交换项目,然后查看这两个项目的总距离是否比以前更大。即便如此,它也不是特别有效@萨尔瓦多这个问题我很清楚。他想用一个边被称为“依赖”的图,创建一个平面列表,最小化连接节点之间的长度之和。这个问题似乎是关于图的最小线性排列。这个问题是NP难问题。但是存在。您提出的最佳解决方案
{A,C,D,B}
似乎不可行,因为D
依赖于C
和B
,但是D
在B
之前。提供的示例具有一个最佳解决方案,将D
放在依赖关系C
之后和依赖关系B
之前。那不是拓扑排序!即使他对拓扑排序感兴趣,他仍然希望得到距离函数的最小值。
#Dependencies #Items
0 9
1 27
2 57
3 55
4 11
5 3
6 1