如何解决检测Java中未连接无向图中的循环
我编写了一个函数,每次向图中添加边时都会尝试检测循环(最终获得 MST) 该函数接收一个包含当前 MST 的列表、一个包含访问边的列表和边的节点,以检查它是否使图循环。该函数通过贪婪方法接收每条边(每次从最轻到最重的只有正加权边)
private boolean EdgeConnect(List<Edge> candidates_lst,List<Edge> visit,int start,int end){
if (start == end){
return false;
}
for(int k = 0; k < candidates_lst.size(); k++){
Edge edge = candidates_lst.get(k);
int place_node;
if (edge.node1 != end && edge.node2 != end) {
place_node = 0;
}
if (edge.node1 == end) {
place_node = 1;
}
else {
place_node = 2;
}
if (place_node != 0 && !visit.contains(edge)){
visit.add(candidates_lst.get(k));
end = start;
if(place_node == 1){
end = edge.node1;
}
else{
end = edge.node2;
}
if(EdgeConnect(candidates_lst,visit,start,end) == false){
return false;
}
}
}
return true;
}
该函数通过了一些测试用例,但在其他测试用例中失败了。帮助将不胜感激:) 谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。