2016-04-25 110 views
3

我有一组相关项{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项的(复杂得多)列表,我希望尽可能地进行优化,而且我不知道任何以这种方式排序的排序算法 - 任何人都可以指向现有算法的方向吗?

从评论: 数据的曲线看起来像如下─(道歉格式化!)

#Dependencies #Items 
      0  9 
      1  27 
      2  57 
      3  55 
      4  11 
      5  3 
      6  1 
+0

目前还不清楚你与什么比较。 –

+0

距离排序的值最近的是比较距离上游和下游依存关系的距离,交换项目,然后查看这两个项目是否具有比以前更大的总距离。即便如此,它并不是特别有效! –

+0

这个解释并没有帮助我理解你到底想要做什么 –

回答

0

我相信你在找什么是拓扑排序。

该算法用于有向图。这里的字母表形成图的节点,并且依赖关系形成单向边。 该算法是深度优先搜索的应用程序,用于排序作业。

This是一个非常简洁的解释。

+2

所提供的例子有一个最佳的解决方案,在依赖性“C”之后和依赖性“B”之前放置'D'。这不是一种拓扑排序!即使他对拓扑类型感兴趣,他仍然希望为距离函数提供最小值的那个。 – btilly