Java Boruvka MST算法

Java Boruvka MST算法,java,algorithm,Java,Algorithm,请帮助我创建最小生成树的Boruvka算法。我根据Sedgwick给出的示例编写了一个算法的代码,但显然做了一大堆废话,因为该算法永远不会跳出循环。请告诉我我在哪里犯了错误,以及如何改正错误,我将非常感激。代码如下。 对不起,我的英语:) 公共类Boruvka { 私有边缘[]mst; /** *尚未丢弃且尚未在MST中的边 */ 私人边缘[]想要的人; /** *每个组件的最近邻,查找组件编号作为索引 */ 私人边缘[]邻居; /** *我们正在其上搜索MST的图形表示 */ 私有图g; /*

请帮助我创建最小生成树的Boruvka算法。我根据Sedgwick给出的示例编写了一个算法的代码,但显然做了一大堆废话,因为该算法永远不会跳出循环。请告诉我我在哪里犯了错误,以及如何改正错误,我将非常感激。代码如下。 对不起,我的英语:)

公共类Boruvka
{
私有边缘[]mst;
/**
*尚未丢弃且尚未在MST中的边
*/
私人边缘[]想要的人;
/**
*每个组件的最近邻,查找组件编号作为索引
*/
私人边缘[]邻居;
/**
*我们正在其上搜索MST的图形表示
*/
私有图g;
/**
*
*/
私人联合会;
//构造函数和方法
/**
*建造师
*@param G图
*/
公共博鲁夫卡(图G){
这个.g=g;
}
/**
*Boruvka算法
*
*
*@return最小生成树-形成它的边
*/
公共边缘[]Boruvkamstag()
{
Edge hlpEdge=新边(g.getMaxWeight(),0,0);
this.uf=新的UnionFind(g.getCountVertexes());
this.wannabes=新边[this.g.getCountEdge()];
/**
*获取从图G到阵列边的所有边
*/
对于(int i=0;i
考虑带有此控制语句的
for
循环:

for (int i=this.g.getCountEdges(); i!=0; i=nxtPhase)
退出此循环的唯一方法是将
i
设置为
0

i = nxtPhase
唯一改变
nxtPhase
的地方就是这里

this.wannabes[nxtPhase++] = e;
如前所述,
nxtPhase
通过所有可能的
int
值(我不知道Java的默认溢出行为,所以不知道当它到达
2^32-1
时实际会发生什么)。这可能不是您想要的

i = nxtPhase
this.wannabes[nxtPhase++] = e;