Je me demandais quelle était la différence entre recherche à coût uniforme et algorithme de Dijkstra. Ils semblent être le même algorithme.
L'algorithme de Dijkstra, qui est peut-être mieux connu, peut être considéré comme une variante de la recherche à coût uniforme, où il n'y a pas d'état d'objectif et le traitement se poursuit jusqu'à ce que tous les nœuds aient été supprimés de la file d'attente prioritaire, c'est-à-dire jusqu'aux chemins les plus courts vers tous les nœuds ( pas seulement un nœud objectif) ont été déterminés
http://en.wikipedia.org/wiki/Uniform-cost_search#Relationship_to_other_algorithms
L'algorithme de Dijkstra recherche les chemins les plus courts de la racine à tous les autres nœuds dans un graphique, tandis que le coût uniforme recherche les chemins les plus courts en termes de coût vers un nœud cible.
En outre, le coût uniforme a moins d'espace requis, tandis que la file d'attente prioritaire est remplie "paresseusement" contrairement à Dijkstra, qui ajoute tous les nœuds à la file d'attente au démarrage avec un coût infini.
Compilation d'autres réponses par NotAUser, dreaMone et Bruno Calza
L'algorithme de Dijkstra trouve le chemin le plus court du nœud racine à tous les autres nœuds. le coût uniforme recherche les chemins les plus courts en termes de coût du nœud racine au nœud cible. La recherche de coût uniforme est l'algorithme de Dijkstra qui se concentre sur la recherche d'un seul chemin le plus court vers un seul point d'arrivée plutôt que le chemin le plus court vers chaque point.
UCS le fait en s'arrêtant dès que le point d'arrivée est trouvé. Pour Dijkstra, il n'y a pas d'état d'objectif et le traitement continue jusqu'à ce que tous les nœuds aient été supprimés de la file d'attente prioritaire, c'est-à-dire jusqu'à ce que les chemins les plus courts vers tous les nœuds (pas seulement un nœud d'objectif) aient été déterminés.
UCS a moins d'espace requis, où la file d'attente prioritaire est remplie progressivement, contrairement à Dijkstra, qui ajoute tous les nœuds à la file d'attente au démarrage avec un coût infini.
En raison des points ci-dessus, Dijkstra prend plus de temps que UCS
Le SCU est généralement formulé sur les arbres tandis que Dijkstra est utilisé sur les graphiques généraux
Djikstra n'est applicable que dans les graphiques explicites où le graphique entier est donné en entrée. Le SCU commence par le sommet source et traverse progressivement les parties nécessaires du graphique. Par conséquent, il s'applique à la fois aux graphiques explicites et aux graphiques implicites (où les états/nœuds sont générés).
Il y a un article qui parle des similitudes et des différences des deux.
http://www.aaai.org/ocs/index.php/SOCS/SOCS11/paper/view/4017/4357