在无向图中合并顶点(Java)

时间:2014-02-11 14:52:29

标签: java methods graph edge vertices

我试图在使用Java从中删除边缘后合并无向图中的顶点。我使用包含整数的包的数组来表示所述图,其中包含顶点数和边数的变量。例如,六边形图表示为:
6个顶点,6个边缘
0:5 1
1:2 0
2:3 1
3:4 2
4:5 3
5:0 4

冒号前面的数字是顶点,后面的数字是它们连接的顶点。

如果我移除连接顶点1和2的边缘,我得到这个:
6个顶点,5个边缘
0:5 1
1:0
2:3
3:4 2
4:5 3
5:0 4

然后我想合并这两个顶点(1和2)以获得:
5个顶点,5个边缘
0:1 4
1:0 2
2:1 3
3:2 4
4:3 0

这是我编写解决方案的最新尝试(它非常不完整,但至少它是这样的):

public Graph MergeVerticies(int start, int end)
{
    Graph tempGraph = new Graph(V - 1); //V = number of vertices

    for(int i = 0; i < V; i++)
    {
        for(int j = 0; j < V; j++)
        {
            if(isEdge(i,j))
            {
                if(i == start && j == end)
                {
                    //not sure
                }
                else if(i == end && j == end)
                {
                    //not sure
                }
                else if(i >= end && j >= end)
                {
                    tempGraph.addEdge(i-1,j-1);
                }
                else if(i <= end && j >= end)
                {
                    tempGraph.addEdge(i,j-1);
                }
                //Seems like this would take a lot of conditions
                //There is probably a simpler set of conditions
            }
        }
    }
    return tempGraph;
}

开始和结束是要合并的顶点。 tempGraph是使用合并顶点创建的新图形。任何编写此方法的帮助都将非常受欢迎

0 个答案:

没有答案