こんにちは私は問題に直面しています -
無向グラフ、ソース、および宛先が与えられた場合、すべての可能なパスを考慮して、訪問した個別のノードの総数を見つけるコードを記述します。
私は再帰的な解決策を持っていますが、その正確さについてはわかりません。
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;
}
失敗する可能性のあるテストケースと、無向グラフのすべての単純なパスのアルゴリズムの良いソースを提案してください。