java - 在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;
}
该函数通过了一些测试用例,但在其他测试用例失败。帮助将不胜感激:) 谢谢!
解决方案
推荐阅读
- python - 检测某人是否被 Discord.py 机器人静音
- laravel - 如何将变形关系属性附加到 Laravel 中的模型?
- java - Android,WebView 中的 WebGL:“未捕获的 ReferenceError:未定义 mat4”
- jsf - 如何在 JSF 中编写以下 JS 正则表达式
- python - python如何区分实例属性和具有相同名称的装饰属性?
- pdf - PDF 中嵌入的 PFB 会导致 PDF/A 合规性错误
- sql - 如何在 Liquibase 中执行多项操作?
- git - 我已经在 Jenkins 中构建了一个 CI 管道并为所有 8 个微服务创建了 .jar 文件,现在我必须将这些 .jar 和 .properties 文件推送到 github
- python - Flask 从磁盘读取静态 jpg 图像文件并存储在 MySQL 数据库中,无需表单
- flutter - 当我打印进行调试时,它显示类型-->“未来的实例”
' 在颤振中