Когда я вычислить пути снова вершины C to M
Дейкстры Алгоритм: неверный путь
Правильный путь должен быть
C -> B -> N -> M
Но
A -> B -> N -> M
Я использовал этот код Dijkstra Algorithm
Это изображение для моего графика:
Когда я вычислить пути снова вершины C to M
Дейкстры Алгоритм: неверный путь
Правильный путь должен быть
C -> B -> N -> M
Но
A -> B -> N -> M
Я использовал этот код Dijkstra Algorithm
Это изображение для моего графика:
Это потому, что вы первый вызов функция вычисление для А затем вызвать его для C. некоторых полей, как это:
public double minDistance = Double.POSITIVE_INFINITY;
public Vertex previous;
уже имеет значение, так что вам нужно удалить pathcomputation для A или очистить эти значения, вы можете сделать это с помощью функции, как:
public void clear() {
minDistance = Double.POSITIVE_INFINITY;
previous = null;
}
внутри этого Vertex класса, и называют это так:
for (Vertex v : vertices) {
v.clear();
}
перед тем computePaths(v2);
here является онлайн-версию вашего кода, вы можете увидеть, что выход:
Distance to B: 1.0
Path: [A, B]
Distance to M: 5.0
Path: [C, B, N, M]
что ваш график ?! – Lrrr
Вы не разместили ни свой фактический код, ни ваш график. Как вы ожидаете, что кто-нибудь поможет вам? –
жаль, что я не могу опубликовать больше ссылок и больше кода, я редактирую сообщение – illnino