具有最小额外边缘的网状环网

时间:2015-12-15 22:10:15

标签: algorithm graph

我的问题中有几个数据集可以合理地分组为环形网络,为了最有吸引力地显示它们,我想以最小化边数的方式组合它们:

These three ring networks combine to form a united network with reused connections, optimizing the graph's appearance.

这个问题对于两个人来说非常简单:只需将所有共享节点放在一起,然后让其他节点绕回来。它对于网络中的3个或更少节点也很简单,因为顺序无关紧要。但是,我如何解决3个或更多网络的问题,其中包含4个或更多节点?

由于每个环中的数据都是无序的,我可以重新排序以获得最大效率。如果给定一组像这样的任意一组环形网络,如何确保这些组合环网络中的最小边数?

编辑:使用此代码的代码:

function arrangeInLoops (sets) {

    /* sort sets for maximum edge overlap */

    var graph = new Graph();

    for (var i = 0; i < sets.length; i++) {
        for (var j = sets[i].length - 1; j >= 0; j--) {
            // Both of these methods are made idempotent
            graph.addNode(sets[i][j]);
            graph.addEdge(sets[i][j], sets[i][j > 0 ? j - 1 : sets[i].length - 1]);
        }
    }

    return graph;
}

0 个答案:

没有答案