Я пытаюсь разработать код для работы в колледже, и у меня есть алгоритм, который дает мне кратчайший путь между двумя узлами в графе. Обратите внимание, что узлы - это страны, у которых есть столица.
Может ли кто-нибудь объяснить мне, как я могу разработать что-то, что дает мне кратчайший путь из страны A в страну B через список столиц (стран)?
Я реализовал метод, который также дает мне расстояние между двумя географическими точками.
Моя первоначальная мысль заключалась в том, чтобы упорядочить список столиц на основе их расстояния до страны A, а затем просуммировать все расстояния кратчайшего пути между страной 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;
}
Спасибо.