Я пытаюсь разработать некоторый код для работы в колледже, и у меня есть алгоритм, который дает мне кратчайший путь между двумя узлами в графе. Обратите внимание, что узлами являются страны с капиталом.
Может кто-нибудь объяснить мне, как я могу разработать что-то, что дает мне кратчайший путь из страны А в страну Б, проходящий через список столиц (стран)?
Я реализовал метод, который также дает мне расстояние между двумя географическими точками.
Сначала я хотел упорядочить список столиц на основе их расстояния до страны A, а затем сложить всерасстояния по кратчайшему пути между страной А и первым списком, затем первым списком и третьим списком и так далее. Очевидно, это не правильно.
public double shortestPathCapitals2(List<String> capitais, Pais pOrig, Pais pDest) {
double dist = 0;
LinkedList<Pais> shortPath = new LinkedList<Pais>();
LinkedList<String> temp = new LinkedList<>(capitais);
temp.addFirst(pOrig.getCapital());
temp.addLast(pDest.getCapital());
Collections.sort(temp, (c1, c2) -> (int) (distance(pOrig, shortestPathCapitals2(c2)) - distance(pOrig, obterPaisPorCapital(c1))));
for (int i = 0; i < temp.size() - 1; i++) {
Pais p1 = obterPaisPorCapital(temp.get(i));
Pais p2 = obterPaisPorCapital(temp.get(i + 1));
dist += shortestPath(p1, p2, shortPath);
shortPath.clear();
}
return dist;
}
Спасибо.