【发布时间】:2016-05-30 18:11:16
【问题描述】:
我有一个顶点为 ABCDE 的有向图。使用深度优先搜索,如果我希望能够从 A-C 找到唯一路线的数量(例如),我将如何去做?这是我目前的 DFS。
private final Map<Character, Node> mNodes;
private final List<Edge> mEdges;
private List<Node> mVisited = new ArrayList<>();
int weight;
int numberOfPaths;
public DepthFirstSearch(Graph graph){
mNodes = graph.getNodes();
mEdges = new ArrayList<>(graph.getEdges());
for(Node node : mNodes.values()){
node.setVisited(false);
}
}
public void depthFirstSearch(Node source){
source.setVisited(true);
List<Edge> neighbours = source.getNeighbouringEdges(mEdges);
for(Edge edge : neighbours){
System.out.println(edge.getFrom().getName()+"-"+edge.getTo().getName());
if(!edge.getTo().isVisited()){
mVisited.add(edge.getTo());
weight += edge.getWeight();
depthFirstSearch(edge.getTo());
}
}
【问题讨论】:
-
如果图形包含循环,则路径数可能是无限的。也许您的图表恰好是非循环的?
-
图中没有循环 :)
标签: java algorithm depth-first-search