Найти путь

Найти путь

То поиск путей, обычно называемый Найти путь состоит в том, чтобы найти, как перемещаться в среде между начальной и конечной точками с учетом различных ограничений.

Определение графа со значениями

Значенный граф — это граф, с дугами которого мы связываем действительное число, называемое длиной дуги.

Обозначим через w(x,y) длину дуги (x,y) между вершинами x и y.

По аналогии с матрицей смежности можно представить граф со значениями квадратной матрицы, коэффициенты которой соответствуют значениям дуг.

Рассмотрим граф со значениями, вершины которого пронумерованы от 1 до n. Матрица оценки G представляет собой квадратную матрицу M = mij, размер n*n, определяемый формулой

recherche de chemin pathfinding plus court chemin théorie des graphes

Вот пример:

recherche de chemin pathfinding plus court chemin théorie des graphes

Таким образом, мы можем вывести следующую линейную программу с xij=1, если дуга является частью кратчайшего пути, 0 в противном случае:

  • минимизировать recherche de chemin plus court chemin с A множество дуг
  • при условии recherche de chemin plus court chemin

и для всех я, recherche de chemin plus court chemin

recherche de chemin pathfinding plus court chemin théorie des graphes

recherche de chemin pathfinding plus court chemin théorie des graphes

Хотя это линейное программирование, этот метод может быть очень затратным по памяти, а в некоторых случаях даже невозможным для настройки (например, если речь идет о распределенной системе). Другой способ узнать кратчайший путь — узнать кратчайший из всех путей из одной вершины в другую.

Определим вес пути с=(и,…,в)

в виде суммы весов дуг, составляющих его, отмеченных Туалет).Затем мы определяем минимальное расстояние (кратчайший путь) между двумя вершинами u и v следующим образом:

recherche de chemin pathfinding plus court chemin théorie des graphes

Мы хотели бы иметь метод, способный для любого графа и для любой пары вершин Икс и там, чтобы определить кратчайший путь между ними. Для этого мы должны как можно лучше понять и охарактеризовать структуру решения: какими свойствами обладает кратчайший путь?

Лемма Кенига. Кратчайший путь между двумя вершинами является элементарным. Путь называется элементарным, если каждая его вершина посещается только один раз.

Перечисление всех путей для определения кратчайшего обнаруживает серьезный недостаток: время его выполнения. Если число элементарных путей действительно конечно, то тем не менее оно очень велико, порядка нет! на графике заказов нет.

Субоптимальная проблема

Нам нужно второе фундаментальное свойство, т. субоптимальность (см. Динамическое программирование). Обратите внимание, что кратчайший путь является рекурсивным: последовательность кратчайшего пути по-прежнему является кратчайшим путем между его конечными точками. Или если самый быстрый маршрут между а и в проходит через 2 вершины Икс и там, этот путь обязательно проходит по кратчайшему пути между Икс и у.

да р=(и,…,в) это кратчайший путь между а и в, то для любой вершины Икс в дороге п :

  • подпуть п вплоть до Икс, (у,…,х), это кратчайший путь а в Икс
  • подпуть п поскольку Икс, (х,…,в), это кратчайший путь Икс в в

Par absurdum предположим, что существует, например, между а и Икс путь д длины строго меньше длины р=(и,…,х,…,в). Таким образом, мы можем построить новый путь п' Между а и в заменив д sur (u,…,x) dans le chemin п. La longueur de п' est alors strictement inférieure à celle de п, ce qui contredit que п est un plus court chemin de а в в.

Дерево дорожек

Il y a un arbre des chemins les plus courts d’un sommet de départ à tous les autres. Supposons que le graphe est connecté, que les arêtes ne sont pas dirigées et que les poids sont non négatifs. Nous développons un nuage de sommets, commençant par s et couvrant finalement tous les sommets. Nous stockons à chaque sommet v une étiquette d (v) représentant la distance de v de s dans le sous-graphe constitué du nuage et de ses sommets adjacents. A chaque étape: nous ajoutons au nuage le sommet en dehors du nuage avec la plus petite étiquette de distance; nous mettons à jour les étiquettes des sommets adjacents à u (voir arbre couvrant).

Considérons une arête e = (u, z) tel que u est le sommet le plus récemment ajouté au nuage et z n’est pas dans le nuage. La relaxation du bord e met à jour la distance d(z) comme suit: d (z) ← min {d(z), d(u) + poids(e)}

recherche de chemin pathfinding plus court chemin théorie des graphes

recherche de chemin pathfinding plus court chemin théorie des graphes

Делиться
ru_RURU
%d такие блоггеры, как: