1

こんにちは私は問題に直面しています -

無向グラフ、ソース、および宛先が与えられた場合、すべての可能なパスを考慮して、訪問した個別のノードの総数を見つけるコードを記述します。

私は再帰的な解決策を持っていますが、その正確さについてはわかりません。

HashSet<String> mConnectedNodes;
Stack<String> stack;

public void findNodesOnAllConnectingPaths(Node startNode, Node endNode) {
    stack.push(startNode.getValue());

    // Check for the base case = finding destination node on path
    if (startNode.getValue() == endNode.getValue()) {
        Enumeration<String> currentElements = stack.elements();
        while(currentElements.hasMoreElements()) {
            mConnectedNodes.add(currentElements.nextElement());
        }
        stack.pop();
        return;
    }

    //Recurse if any connected nodes aren't on the current path
    ArrayList<Node> nodes = startNode.getConnectedNodes();
    for (Node node : nodes) {
        if (!stack.contains(node.getValue())) {
            findNodesOnAllConnectingPaths(node, endNode);
        }
    }
    stack.pop();
    return;
}

失敗する可能性のあるテストケースと、無向グラフのすべての単純なパスのアルゴリズムの良いソースを提案してください。

4

0 に答える 0