如何对一个二维依赖表进行排序/排序

6
我很好奇是否有更高级别的理论/方法/算法来解决我遇到的问题。
我正在处理一个网络路由问题(专有无线电网络)。举个例子,我有一个由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也可以工作。
我正在尝试确定可以用什么样的算法来排序。这有点像旅行推销员问题,我不需要“最佳”排序。只需要一个可能相当不错的排序。我需要扩展到10个来源的9个设备。
任何想法、帮助、提示、提示都会受到赞赏。

如果只有10个元素,为什么不采用暴力方法呢?也就是计算所有路径? - Eugen Rieck
1个回答

4
这个问题可以被建模为最小反馈弧集问题,它是一个NP难问题。原始图是一个完全有向图,每条边的权重(v0, v1)是从v0v1的信号强度。在计算最大反馈弧集后,进行拓扑排序将给出具有最大总信号的顺序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接