Talk:Uniform-cost search

Untitled
This "algorithm" is some sort of nuisance. By all means this is just the Dijkstra's algorithm called another name. I think Mr. Russel and Mr. Norvig should correct their book.

"Dijkstra's algorithm, which is perhaps better-known, can be regarded as a variant of uniform-cost search, where there is no goal state and processing continues until all nodes have been removed from the priority queue, i.e. until shortest paths to all nodes (not just a goal node) have been determined." - this is not a difference. This is exactly how the Dijksta's algorithm is normally used for single source single target problems.

Shouldn't this page be merged with the Dijkstra's algorithm page? Aren't both equivalent?

I agree! If not, can someone point out the difference? —Preceding unsigned comment added by 129.97.36.143 (talk) 13:06, 9 July 2009 (UTC)

Reply: Uniform cost search is just Dijkstra's algorithm with a single source and a single goal node. It can be thought of as a subset of Dijkstra's algorithm, however this variation of Dijkstra's algorithm is useful and significant enough to have its own name. You might think mathematically and computationally these two methods are similar enough to not bother distinguishing between them, but for example in AI, uniform cost search is relevant and other variations of Dijkstra's are not. Why bother learning about the intricacies of Dijkstra's algorithm, which behaves differently from its one source one goal variation, when you only need to be familiar with the aforementioned variation?

One example of how they behave differently is evident when considering time and space complexity when dealing with a large search space (or even an infinite one!). — Preceding unsigned comment added by 193.61.235.14 (talk) 16:52, 3 January 2018 (UTC)

Comparison with Dijkstra's algorithm
There is one subtle difference between Dijkstra's algorithm and the Uniform-cost search algorithm. The Uniform-cost search algorithm looks for a 'local best' when trying to find a solution. Meaning, if we start from A and have A going to B, C, and D with D as a Goal, and B going to D and with the following costs:

The uniform cost algorithm would first choose: Dijkstra's is able to detect that there is a shorter path from A->D (total cost 3) then the other path A->B->D (total cost 10). Kyle van der Meer (talk) 03:43, 1 October 2009 (UTC)
 * A->B, Least expensive path
 * B->D, Least expensive path
 * A->B->D is the answer, because D is the Goal and it stops. *EDIT*: This isn't the answer. Only when D is popped out of the queue, the answer must be determined. In this case, the queue would be A-B-C-D(3)-D(9)


 * Sorry, I do not understand what the heck you are talking about. This "algorithm" is exactly the Dijkstra's algorithm.


 * Artificial Intelligence: A Modern Approach by Russell and Norvig (2nd ed.) pg. 75 reads "We can guarantee completeness [of uniform-cost search] provided the cost of every step is greater than or equal to some small positive constant ϵ. This condition is also sufficient to ensure optimality." It seems like your example is using a non-backtracking hill-climbing search. Uniform-cost search should have kept node D (from the A -> D cost 3 path) on the priority queue, and would explore it before exploring B -> D. Given the description in Russel and Norvig uniform-cost does seem equivalent to Dijkstra. Qatux (talk) 20:49, 16 October 2009 (UTC)

Uniform Search and Branch and Bounds relation...
There are a lot of references (easily google-able) which say that Uniform Cost Search is another name for the Branch and Bound algorithm - a cursory glance (by myself, admittedly no expert) shows that they are indeed similar. -- If they are similar, or if Uniform Cost Search is simply a (domain specific?) implementation (or variant of) of Branch and Bound, then perhaps someone (with better knowledge than I) can explain the relationship (or simply add 'aka [...]' and/or a see-also link to this page and the Branch and Bound page). Thanks!

In fact, the branch and bounds algorithm is an improvement of the basic uniform cost, in order to return the path with the minimum cost. The main difference is in the order of verifying if a path has a goal or not. In the uniform cost is checked if any path in the priority queue has a goal in the. Probably it does not make a lot of sense. But we are talking about an algorithm without heuristic function. In this way the goal is reached with further expansion. However if we want the best path, we check If the first path has a goal, besides that branch and bounds will not accept new paths with worst cost than a path in the queue with a goal. Let says q{S, A, B, G} = 11 and p{S,A,C}= 12, p>q, thus it will not be added to the queue. However if we have r{S,A,C}=8, then r<q, thus it will make it to the priority queue, because it is possible that we have a better path to the goal. Thus this is the improvement added to the uniform cost by the branch and bounds. In this way the algorithm ensures that the path with the lowest cost is returned. In further improvements of the uniform cost algorithm we can add heuristics and deletion of redundant paths. Thus, uniform cost + branch and bounds + heuristics + deletion of redundant paths = A*.

Redirect to the whole page and not specific section
There is a reason for redirect to Practical_optimizations_and_infinite_graphs section? Zardav (talk) 16:26, 7 June 2016 (UTC) I change it. If there is a problem with this please write here. Zardav (talk) 07:46, 8 June 2016 (UTC)