如何对依赖关系的2D表进行排序/排序

时间:2013-05-14 00:15:36

标签: python c algorithm sorting

我很好奇是否有更高层次的理论/方法/算法来解决我的问题。

我正在研究网络路由问题(专有无线电网络)。举例来说,我有一个由5个设备组成的网络。对于每个设备,我可以测量它能听到其他设备的程度。第0个根节点仅作为源使用。因此,在表格形式中,我可能会得到类似的结果:

    _0_ _1_ _2_ _3_ _4_
1 | 21   -  42  55   0
2 |  0  63   -  18  20
3 | 20   0   0   -   0
4 |  0   0  13   0   -

每行表示该设备可以听到其他5个来源的效果。我想要做的是对它们进行排序,以便每个设备从前面的元素中获得最佳的和信号。因此,对于这种简单的情况,排序可能是1, 3, 2, 4。但它也可能是3, 1, 2, 4。事实上,这第二个会更好,因为1可以同时听到0和3. 3, 2, 1, 4也可以。

我正在尝试确定我可以使用哪种算法来订购这些算法。有一些旅行推销员,我不需要“最好的”。只是一个非常好的排序。我需要扩展到9个设备,包含10个源。

任何想法,帮助,推动,提示,提示赞赏。

1 个答案:

答案 0 :(得分:4)

此问题可以建模为minimum feedback arc set problem,这是NP难问题。原始图是一个完整的有向图,每条边(v0, v1)的权重是从v0v1的信号强度。在计算最大反馈弧设置之后,拓扑排序将给出具有最大总信号的排序。