我知道这个标题是微不足道的,但我不知道如何更好地解释。
www.un.org/Depts/DGACM/index_spanish.htm 我想要做的是:。
利用文本档案中的图表,发现并打印出最短的道路(最小的vert量),从A到B。
注:使用广度第一搜寻,而不是Dijkstra。
www.un.org/Depts/DGACM/index_spanish.htm The I ve got:
实用算法在图表上适用BAFS,但实际上没有最短的道路。
I m having a hard time distinguishing a vertex in the shortest path from one that is simply run through the algorithm, but not in the shortest path.
For example: Find the shortest path between 0 and 4. 0 connects to 1,2 and 3. 1 connects to 4. My path turns out to be [0,1,2,3,4] instead of [0,1,4].
我没有能够找到任何线索来提出同样的问题,也没有看到任何穿过包括这个问题的BAFS的行走,因此我不敢确定我是否这样做。 这比现在更加困难?
<<>Edit: Code for those who may be interest (not 当然,如果我避免圈子的话)
Edit 2: Changed the way I store my path to a Stack.
public String findPath(int v, int w) {
Queue<Integer> q = new LinkedList<Integer>();
boolean[] visited = new boolean[g.numVertices()];
q.add(v);
Stack<Integer> path = new Stack<Integer>();
while(q.peek() != null) {
runBFS(q.poll(),w,visited,q,path);
}
return path.toString();
}
private void runBFS(int v, int w, boolean[] visited, Queue<Integer> q, Stack<Integer> path) {
if(visited[v]) {
}
else if(v == w) {
path.add(v);
q.clear();
}
else {
path.add(v);
visited[v] = true;
VertexIterator vi = g.adjacentVertices(v);
while(vi.hasNext()) {
q.add(vi.next());
}
}
}
对变量和方法的一些解释:
v = 来源的垂直
w = 目标垂直
g = 图表
vi = 一种正常的变压器,在高射线邻国上空扩散
www.un.org/Depts/DGACM/index_spanish.htm 感谢阅读!