1
그래프의 두 꼭지점 사이의 최단 경로를 반환하려고합니다. breadthFirstSearch를 찾기 위해 작성된 코드가 있지만 최단 경로를 반환하도록 수정하는 방법을 모르겠습니다. 아래는 내 breadthFirstSearch 함수입니다.ShortestPath with BFS (BreadthFirstSearch)
private void breadthFirstSearch(T start,T end){
Queue<T> queue = new LinkedList<>();
Set<T> visited = new HashSet<>();
visited.add(start);
queue.add(start);
while(!queue.isEmpty()){
T v = queue.poll();
for(int i =0;i<this.keyToVertex.get(v).successors.size();i++){ if(visited.contains(this.keyToVertex.get(v).successors.get(i).key)){
continue;
}
visited.add(this.keyToVertex.get(v).successors.get(i).key);
queue.add(this.keyToVertex.get(v).successors.get(i).key);
}
}
}
어떻게 최단 경로를 반환하도록 수정할 수 있습니까?
! 나중에 참조 할 수 있도록 LinkedList의 첫 번째 요소를 최종 꼭지점과 비교하기 때문에 첫 번째 요소가 아닌 LinkedList의 마지막 요소를 가져 오려고합니다. – Hussein
@Hussein 나는'getLast()'대신'peek()'을 사용했다는 것을 의미한다고 생각한다. 나는'peek()'이 마지막으로 (문서를 점검하지 않고) 리턴 할 것이라는 인상을 받았다. 분명히 틀렸다. 지적 해 주셔서 고맙습니다. – janos