article

Bidirectional search is a tree-search algorithm that runs two simultaneous searches: one forward from the initial state, and one backward from the goal, and stopping when the two meet in the middle. The reason for this approach is that each of the two searches has complexity O(b^{d/2}) (in Big O notation), and O(b^{d/2}+b^{d/2}) is much less than the running time of one search from the beginning to the goal, which would be O(b^{d}).

This does not come without a price: Aside from the complexity of searching two times in parallel, we have to decide which search tree to extend at each step; we have to be able to travel backwards from goal to initial state - which may not be possible without extra work; and we need an efficient way to find the intersection of the two search trees. This additional complexity means that the A* search algorithm is often a better choice if we have a reasonable heuristic.

See also


Birthday paradox

Reference


  • Stuart Russell and Peter Norvig. Artificial Intelligence: A Modern Approach, 2nd ed., Prentice Hall, 2002 (§3.4).

Trees (structure) | Search algorithms

 

This article is licensed under the GNU Free Documentation License. It uses material from the "Bidirectional search".

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld