我试图将一堆图表合并为一个。保持顶点,然后逐个添加边。我有一个边缘对象和一个由边缘组成的图形对象。边缘由u和v(重量但其标称值)组成。换句话说,我的图G'将拥有所有Gi的节点,并由每个G0 ... Gn中出现的所有边组成。我想稍后将它们从源到目的地合并到BFS,以模拟不断变化的无线网络。代码是java。
例如,2个图A-B-C,A-C将成为具有来自A-C的新路径的A-B-C(我无法绘制它)。 建立(第三个参数是名义重量):
Graph G1 = new Graph(2);
G1.buildGraph(A,B,1);
G1.buildGraph(B,C,1);
Graph G2 = new Graph(3);
G2.buildGraph(A,B,1);
G2.buildGraph(A,C,1);
G2.buildGraph(B,C,1);
拿上面的两个并创建第三个。
问题是我无法重复边缘而且我不知道如何设置对象比较哈希或一些有效的方法来过滤掉重复的边缘。我想在他们之间寻找常见的子图,在我看来是同样的东西,但这是NP完整的。
如果需要,我可以发布代码,我不知道如何使用对象中的两个字段进行哈希。我想我必须在创建新图表时比较每个u,v作为一对,以确保我不重复边缘,除了比较所有这些之外,我不知道如何做到这一点。糟糕的运行时间。
由于