Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 最小化数组中相关项之间的距离_Algorithm_Sorting_Distance - Fatal编程技术网

Algorithm 最小化数组中相关项之间的距离

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个项目的列表,我希望尽可能优化这些项目,我不知道有任何排序算法以这种方式排序-有人能告诉我现有算法的方向吗 从评论中: 数据图如下所示-(对格式设置表示歉意!) 我相信你要找的是拓扑排序 此算法用于有向图。在这里,字母

我有一个相关项的数组,{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