查找无向图中的所有唯一路径

时间:2011-04-04 08:24:14

标签: algorithm language-agnostic graph

我有一个问题,我需要在度数< = 4的无向图中搜索所有唯一路径。该图基本上是一个网格,所有连接仅在直接邻居之间(4路)。

  • 路径无法访问同一个顶点 不止一次。
  • 路径可以访问任何路径 制作路径的顶点数。
  • 路径至少包含2个顶点。

我该如何解决这个问题?

enter image description here

1 个答案:

答案 0 :(得分:2)

这是我刚才提出的伪代码:

  1. 从任何节点开始。
  2. 获取所有路径
  3. 查看他们的领导位置,如果是未访问过的节点,请访问它。
  4. 以递归方式为先前路径中的节点调用相同的函数。
  5. 保留路径数量的计数器。
  6. 这是Java中的这段代码(未经测试):

    public int getPaths (Node n, Set<Node> nodesVisited) {
        int pathCount = 0;
        for (Path p : n.getPaths()) {
            Node otherSide = p.getOtherNode(n); // Where this function basically takes a node and gets the other node in the path
            if (!(nodesVisited.contains(otherSide))) {
                nodesVisited.add(otherSide);
                pathCount += 1 + getPaths(otherSide, new Set<Nodes>(nodesVisited));
            }
        }
        return pathCount;
    }
    

    这应该从一个起始节点找到路径。你可以在每个节点上启动它,但你会得到一些重复。为了清除它们,你还需要返回路径。