우선 순위 큐에 노드 (정수)를 추가하는 방법을 찾으려고 노력하고 있으므로 다른 클래스를 만들 수 없으므로 Dijkstra 알고리즘의 우선 순위 큐 구현에 관한 질문이 있습니다. 대기열을 사용하여 노드 내부의 가중치를 정렬하지만 노드 자체는 정렬하지 않습니다. 예를 들어Dijkstra 알고리즘에 대해 PriorityQueue를 어떻게 구현합니까?
, I 3 개 노드 (0,1,2)가 노드 0 (10)의 중량을 가지며, 노드 1 (15)을 가지며, 노드 2는 본 내게 줘야 제
Queue<Integer> queue = new PriorityQueue<Integer>();
queue.add(0);
queue.add(1);
queue.add(2);
while(!queue.isEmpty()){
System.out.println(queue.poll());
}
갖는다 2,0,1의 출력. 다른 클래스를 만들지 않고도이 작업을 수행 할 수 있습니까? 아니면 우선 순위 대기열 외에 다른 접근법을 사용할 수 있습니까?
미리 감사드립니다 !!!!!! 어떤 도움을 많이 주시면 감사하겠습니다!
내가 생각할 수있는 한 가지 해결책은 노드를 추가 할 때마다 일반 큐를 정렬하는 것입니다. 따라서 큐에 노드 2,0,1이 있고 8의 가중치를 가진 노드 3을 추가하고 싶습니다. 큐에 들어갈 때까지 큐의 최상위 요소와 가중치를 비교해야 할 것이므로 큐에 2,3,0,1이 될 것입니다.하지만 이것은 비효율적 인 종류의 일종입니다.
감사합니다 !! 그들있어 –