Fondations mathématiques d'un* et Dijkstra , Algorithmes pour l'optimisation des voies
Les algorithmes A* et Dijkstra , qui sont largement utilisés dans les systèmes de navigation, la robotique et le routage réseau, comprennent les bases mathématiques qui permettent d'optimiser leurs performances et leur applicabilité.
Représentation graphique
Les deux algorithmes fonctionnent sur des graphiques, qui se composent de nœuds (vertices) et de bords. Les bords peuvent avoir des poids représentant les coûts, les distances ou les temps. Le graphique peut être dirigé ou non, et les poids sont généralement non négatifs.
Fonctions et heuristique des coûts
Le noyau de ces algorithmes consiste à calculer le coût pour atteindre chaque nœud. L'algorithme Dijkstra , utilise le coût cumulatif depuis le nœud de départ, tandis que A* ajoute une estimation heuristique du coût restant au but. L'heuristique doit être admissible, ce qui signifie qu'il ne surestime jamais le coût réel.
Formulation mathématique
Laissez G = (V, E) être un graphique avec des sommets V et des bords E. Chaque bord (u, v) a un poids w(u, v). Le but est de trouver le chemin le plus court du noeud de départ s au noeud de but t.
L'algorithme Dijkstra , qui met à jour la distance d(v) pour chaque vertex v, initialisé comme d(s) = 0 et d(v) = - - pour v - - s, sélectionne itérativement le vertex avec le plus petit d(v), puis détend ses bords voisins.
A* modifie cette fonction en incorporant un heuristique h(v) qui estime le coût de v à t. La fonction prioritaire devient f(v) = d(v) + h(v). L'algorithme élargit les nœuds en fonction du f(v) le plus bas.
Efficacité de l'algorithme
L'efficacité dépend des structures de données utilisées. L'algorithme Dijkstra , avec une file d'attente prioritaire, est complexe dans le temps. A* peut être plus rapide si l'heuristique est bien conçu, réduisant ainsi le nombre de nœuds élargis.
- Graphique avec poids non négatif
- Heuristique admissible pour A*
- file d'attente prioritaire pour la sélection des nœuds
- Relaxation des bords pour mettre à jour les coûts