Je sais que cette question a déjà été posée, mais il n'a pas répondu à ma question. Je comprends comment fonctionne l'Algorithme Dijkstra et l'algorithme A * et que A * est le cas général de Dijkstra.Pourquoi un * plus rapide que Dijkstra
On dit communément que A * trouve la solution plus rapide quel type de logique que vous utilisez une heuristique qui accélère le processus/réduit le facteur de ramification efficace.
Mais je me souviens bien, de faire un * retourner le résultat optimal, vous devez rechercher tous les nœuds qui ont des coûts qui sont inférieurs aux coûts de l'objectif. Ceci assure l'optimalité et aussi il est dit qu'il ne peut y avoir un algorithme qui soit plus rapide, parce que A * regarde tous les noeuds < = objectif-coûts que chaque algorithme au moins doit.
Mais qu'en est-Dijkstra? Il dépense également seulement les noeuds < = objectif-coûts car il élargit le chemin minimal possible à chaque étape.
Quelle est la bonne heuristique A * car si vous avez d'étendre les autres nœuds de toute façon à assurer optimalité? également les deux algorithmes semblent avoir la complexité d'exécution de n log n
quelqu'un L'espoir peut éclaircir ce :)
Si je ne l'exprime mal, je suis sûr. L'anglais n'est pas ma langue maternelle. A * est la généralisation de Dijkstra, est-ce un meilleur terme? – Nocta
Désolé, il semble que vous avez raison. Cette nomenclature quelque peu contre-intuitive semble prévaloir. –