我试图在使用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是使用合并顶点创建的新图形。任何编写此方法的帮助都将非常受欢迎