我的问题中有几个数据集可以合理地分组为环形网络,为了最有吸引力地显示它们,我想以最小化边数的方式组合它们:
这个问题对于两个人来说非常简单:只需将所有共享节点放在一起,然后让其他节点绕回来。它对于网络中的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;
}