当前位置: 首页 > 知识库问答 >
问题:

在图形中运行DFS的问题

翟越
2023-03-14

节点包含(String from,String to,int time)。给定一个HashMap,key是一个字符串,value是一个具有相同From的节点列表。

我想写一个函数来找到从给定起点(字符串起始)到终点(字符串结束)的所有可能路径。我试图编写一个dfs函数,但它看起来只返回一组结果。有人能帮忙吗?

>

  • 节点:String from、String to、int time
  • list>res:节点列表的结果列表
  • 列表列表:记录当前节点的临时列表
  • HashMap>图:键为全部from值,值为具有相同from的节点列表
  • cur:从一个起始值开始并更改每个DF
  • 结束:目标
  • 访问过的:记录访问过/访问过的集合

    private static void dfs(res, list,HashMap<String, List<Node>> graph,String cur, String end, visited){
        if(cur.equals(end)) {
            res.add(new ArrayList<Node>(list));
            return;
        }
        for(Node n : graph.get(cur)) {
            if (visited.contains(n.to)) continue;
            list.add(n);
            visited.add(n.to);
            dfs(res, list, graph, n.to, end, visited);
            list.remove(list.size()-1);
            visited.remove(visited.size()-1);
        }
    }
    
  • 共有1个答案

    姜嘉赐
    2023-03-14

    我怀疑窃听器已经到线上了

        visited.remove(visited.size()-1);
    

    如果查看setJavaDoc,您会注意到唯一的remove方法是boolean remove(Object),而没有list中的remove by index。因此该行有效地(由于自动装箱):

        visited.remove(Integer.valueOf(visited.size()-1));
    

    这显然不是你想要的,因为它什么也不删除。改为尝试按值删除上次访问的节点:

        visited.remove(n.to);
    
     类似资料:
    • 问题内容: 早上好! 我正在开发一种算法,以查找无向图而不是加权图中的所有路径。我目前正在使用具有回溯功能的DFS算法来尝试执行此操作。这是我当前的代码: 该程序在其输入上接收整数。第一个是节点数,第二个是链接数,第三个是开始节点和结束音,它们是相同的。之后的所有整数表示节点之间的连接。 问题在于,该算法仅查找一次访问单个节点的所有路径。我想要的是仅查找一次访问每个连接的所有路径的算法。关于我该怎

    • 请帮助我BFS和DFS的下图从顶点1开始,其中节点相邻的顶点通过增加顺序访问 这不是一道家庭作业题。

    • 我不太确定这是不是解决办法,有人能帮我弄清楚吗? 谢谢!

    • 我被以下错误困住了。我不知道这是什么类型的错误。我该怎么办?

    • 为了将您训练过的网络导入到C++中,您需要导出您的网络才能这样做。在搜索了很多并且几乎没有找到关于它的信息之后,澄清了我们应该使用freeze_graph()来能够做到这一点。 由于Tensorflow的新0.7版本,他们增加了它的文档。

    • 用户实体类: 感谢任何帮助。多谢了。