Java对象与图形的两个字段进行比较

Java对象与图形的两个字段进行比较,java,graph,Java,Graph,我试图把一堆图合并成一个。保留顶点,然后逐个添加边。我有一个边对象和一个图形对象,由边组成。边由u和v权重组成,但其标称值为。换句话说,我的图G’将有所有的Gi节点,并由每个G0…Gn中出现的所有边组成。我想稍后将它们合并成一个从源到目标的BFS图,以模拟不断变化的无线网络。代码是java 例如,两个图A-B-C,A-C将变成一个A-B-C,从A-C开始有一个新的路径,我无法绘制它。 第三个参数是标称重量: Graph G1 = new Graph(2); G1.buildGra

我试图把一堆图合并成一个。保留顶点,然后逐个添加边。我有一个边对象和一个图形对象,由边组成。边由u和v权重组成,但其标称值为。换句话说,我的图G’将有所有的Gi节点,并由每个G0…Gn中出现的所有边组成。我想稍后将它们合并成一个从源到目标的BFS图,以模拟不断变化的无线网络。代码是java

例如,两个图A-B-C,A-C将变成一个A-B-C,从A-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作为一对进行比较,以确保不会重复边,我不知道如何做,除了将它们全部进行比较,这是一个糟糕的运行时间


谢谢

不能重复边缘是一件严格的事情吗?或者,它最终只需要是真的。我想知道的是,如果你不能添加边,只是增加重量,所有重量从零开始。然后当你做完后,把所有的正权重都变成一。我想我不明白你的问题。例如,可以通过执行int combined=u+31*v组合两个哈希。与素数相乘可以很好地避免碰撞。如果要匹配边,可能需要通过它们连接的顶点来匹配它们。要在次指数时间内匹配顶点同构问题,您需要唯一的标识符,如示例中的A、B和C,该匹配。这种构造方法可行吗?如果我重复边,我会认为它会破坏新图形上的BFS搜索。问题是,我不知道如何组合这两个散列。我可以用很难的方法来比较每一条添加到图表中的边,但是时间会很糟糕。