Bidirectional search
Bidirectional search is a graph search algorithm designed to find the shortest path from an initial vertex to a goal vertex in a directed graph by simultaneously conducting two searches, one forward from the start node and one backward from the goal node, terminating when their frontiers intersect.[1] This approach can significantly outperform unidirectional search by exploring fewer nodes, potentially reducing computational complexity from O(bd) to approximately O(bd/2) for a tree with branching factor b and goal distance d, making it particularly effective in graphs with high branching factors, such as road networks, game trees, or puzzle-solving domains.[1] For example, Bidirectional A* employs heuristic estimates to guide the forward search toward the goal () and the backward search toward the start (), while bidirectional Dijkstra’s algorithm uses actual path costs, both aiming to minimize node expansions.[1][2] Widely applied in navigation systems, artificial intelligence, and scheduling, bidirectional search excels in structured graphs but faces challenges like coordinating searches to meet efficiently and handling asymmetric edge costs, which require precise termination conditions to ensure optimality.[1][3]
Moreover, bidirectional heuristic search explores a state space from a start state to a goal state , using two searches to find a sequence of operators that transforms into .[1] Operators need not be invertible; it suffices to identify, for any node , its parent nodes reachable by valid operators, similar to determining the start of a one-way street from its end in route-finding.[1] For edges with inverse arcs, costs may differ: the forward search uses from parent to , and the backward search uses , supporting graphs with asymmetric costs like road networks.[1] The algorithm terminates when a node appears in both search frontiers, forming an optimal path if the total cost is no greater than the minimum cost of unexpanded nodes, ensuring completeness on finite graphs with non-negative weights.[3][1] Bidirectional Dijkstra’s algorithm, a non-heuristic variant resembling unidirectional Dijkstra’s with , excels in navigation by minimizing path costs.[2][1]
History
[edit]
Although Dijkstra's algorithm (1959) with no heuristics, explores outwards from a single source, its fundamental approach of systematically expanding the set of reached nodes laid the groundwork for later search algorithms like bidirectional search, which independently explores from both the start and goal states.[4]
Bidirectional search was pioneered in 1966 by J.R. Doran and T.A.J. Nicholson, whose independent contributions established its core principles.[5][3] Doran, at the University of Edinburgh, conducted “doubletree searching” experiments on the Eight- and Fifteen-puzzles using the Graph Traverser program, employing heuristics to guide dual search trees from start and goal.[5] His approach aimed to reduce computational effort but revealed coordination challenges, as misleading heuristics led to excessive node expansions.[5] Despite these limitations, Doran’s work introduced the idea of simultaneous searches meeting in the middle, laying a foundation for heuristic-driven bidirectional methods.[5]
Concurrently, T.A.J. Nicholson (1966) developed a non-heuristic bidirectional algorithm at Harwell for finding shortest routes in networks, such as traffic systems.[3] His method extended paths with the least accumulated distance from both start and goal, alternating searches until a common point formed an optimal route.[3] Nicholson’s algorithm included a termination condition ensuring the path’s cost was no greater than unexpanded alternatives, demonstrating efficiency in practical graph problems.[3] Unlike Doran’s puzzle-focused experiments, it targeted real-world routing, showcasing bidirectional search’s versatility.[3] This dual 1966 origin highlighted the concept’s adaptability across heuristic and non-heuristic domains.[5][3]
Besides, A* search (1968) introduced heuristics to guide the search towards the goal, the concept of bidirectional search, aiming to improve efficiency by searching from both ends, remained a distinct optimization strategy that could potentially be combined with heuristic search techniques like those used in A*.[6]
In 1969, Ira Pohl advanced bidirectional heuristic search, building on earlier ideas to integrate A*-like heuristics, published in 1971.[7] His approach aimed to improve efficiency by guiding searches toward each other, but it struggled with inefficient frontier convergence, often exploring far more nodes than necessary.[7] Pohl’s implementations, tested on problems like the Fifteen Puzzle, were suboptimal, as the dual trees failed to meet effectively in the solution space.[7] Despite these challenges, his work popularized heuristic bidirectional search, influencing subsequent research.[7] Pohl’s efforts bridged Doran’s heuristic concepts to more formal algorithmic frameworks, setting the stage for later refinements.[7]
Dennis de Champeaux addressed Pohl’s limitations with the Bidirectional Heuristic Front-to-Front Algorithm (BHFFA) in 1977, followed by BHFFA2 in 1983.[8][9] BHFFA used front-to-front heuristics, estimating costs between opposing search frontiers to better coordinate dual searches.[8] BHFFA2 introduced refined termination conditions, ensuring paths were optimal when the searches met, akin to unidirectional A* guarantees.[9] These algorithms improved efficiency on complex graphs, reducing unnecessary node expansions.[8] De Champeaux’s contributions solidified bidirectional search’s theoretical underpinnings, making it practical for diverse applications.[9]
In the 2000s, Andrew Goldberg and collaborators optimized bidirectional Dijkstra’s algorithm, focusing on termination conditions for large-scale graphs like road networks.[2] Their work ensured the algorithm stopped with an optimal path, minimizing node explorations in navigation systems.[2] Building on Nicholson’s non-heuristic framework, Goldberg’s refinements enhanced computational efficiency for real-world routing.[2] His contributions made bidirectional search a standard tool in practical applications, from GPS to logistics.[2] These advancements underscored the algorithm’s scalability beyond theoretical puzzles.[2]
In 2017, researchers introduced theories of necessary expansions and minimum vertex cover, advancing bidirectional search’s efficiency.[10] The Near-Optimal Bidirectional Search (NBS) algorithm achieved expansions within twice the necessary optimum using vertex cover approximations, effective even with inconsistent heuristics.[11] NBS provides similar guarantees with consistent and front-to-front heuristics, but selecting pairs of nodes to expand in these cases is computationally inefficient.[12] For consistent heuristics, BAE* efficiently leverages this property for high practical performance, while DIBBS, a similar algorithm, was independently developed.[13] These methods optimized node selection across domains like robotics and puzzles.[14][15] The 2017 theories marked a significant step in refining bidirectional search for modern applications.[16]
Terminology and notation
[edit]The following terms and notations are commonly used in the context of search algorithms, particularly bidirectional heuristic search:
- : The branching factor of a search tree, representing the average number of child nodes per node.
- : The set of non-leaf nodes in , containing nodes already visited or explored by the search in direction .
- : The current search direction. By convention, denotes the forward direction (from start to goal), and denotes the backward direction (from goal to start).[17]
- : The opposite search direction, defined as . For example, if , then , and vice versa.
- : The cost of the path from the root node to node in the search tree.
- : The heuristic estimate of the cost from node to the goal node, used to guide the search.
- : The cost associated with moving from node to node in the search tree.
- : The set of leaf nodes of , sometimes called . This set represents the nodes available for expansion in direction . In bidirectional search, these are often referred to as the search "frontiers" or "wavefronts" when visualized graphically. A "collision" occurs when a node from one wavefront has successors in the opposing wavefront during expansion.
- : The start state or initial node of the search.
- : The goal state or target node of the search (sometimes denoted , though not to be confused with the cost function ).
- : The search tree in direction . If , the root is (forward search); if , the root is (backward search).
Approaches for bidirectional heuristic search
[edit]Bidirectional heuristic search varies by how it estimates paths, with three main types: Front-to-Front, Front-to-Back, and Perimeter Search.[18]
Front-to-back
[edit]Front-to-Back methods estimate the heuristic for a node based on the cost to the opposite search’s starting point ( or ).[18] BiMAX-BS*F, for example, performs well in puzzles like the Fifteen puzzle.[19]
Front-to-front
[edit]Front-to-Front methods calculate using costs to nodes in the opposite search’s frontier (). The BHFFA algorithm, for instance, picks the smallest estimate.[18][8][9]
Perimeter search
[edit]Perimeter Search examines a set area around the start or goal, though it’s less widely used.[18]
Example
[edit]Bidirectional search can be illustrated with a simple road network of five intersections (A, B, C, D, E), aiming to find the shortest path from A to E.[1] The forward search starts at A, exploring B (cost 2) and C (cost 3), while the backward search begins at E, reaching D (cost 2) and C (cost 4).[1] They meet at C, forming the path A→C→E (cost 7), verified as optimal since no unexpanded path has lower cost.[1] Using Bidirectional A*, a heuristic (e.g., straight-line distance to E or A) prioritizes C, reducing expansions compared to exploring all nodes.[1]
Step | Forward Frontier | Backward Frontier | Meeting Node |
---|---|---|---|
1 | A | E | - |
2 | B, C | D, C | - |
3 | C | C | C |
4 | - | - | A→C→E |
State of the Art
[edit]Recent bidirectional search advancements focus on scaling to large graphs and optimizing node expansions with modern techniques.[20] The MM algorithm, introduced in 2024, ensures forward and backward searches meet at the solution’s midpoint, using consistent heuristics to avoid expanding beyond the optimal path’s halfway point.[21] In 2021, Consistent-Heuristic Bucket-Based Bidirectional Search (CBBS) grouped nodes by cost estimates, cutting expansions in problems like the pancake puzzle.[22] Front-to-Front GPU Bidirectional Search (FFGBS) uses GPU parallelism for front-to-front heuristics, excelling on large road networks.[22]
Parallel External Memory BAE* (PEM-BAE*) adapts BAE* for distributed systems, outperforming parallel A* on complex graphs.[23] Non-parametric approaches, like enriched NBS variants, adjust strategies dynamically for robustness in robotics and planning.[24] New Bidirectional A* (NBA*) and Time-Dependent Bidirectional A* tackle dynamic graphs, boosting efficiency.[25] Ongoing work on front-to-front heuristics promises further gains, particularly for AI and operations research.[24]
Applications
[edit]Bidirectional search is widely used in navigation systems, enabling efficient route planning for GPS and autonomous vehicles.[20] Algorithms like bidirectional Dijkstra’s compute shortest paths in road networks, handling real-time traffic updates with low computational cost.[22] The 2024 MM algorithm ensures searches meet at the path’s midpoint, enhancing long-distance routing for self-driving cars.[21] Front-to-Front GPU Bidirectional Search (FFGBS) leverages parallel processing, speeding up queries in large urban graphs.[22] These methods support dynamic rerouting, critical for modern navigation apps.[21]
In robotics and automated planning, bidirectional search optimizes pathfinding and task scheduling.[26] The 2017 Near-Optimal Bidirectional Search (NBS) reduces node expansions, enabling robots to navigate complex warehouse layouts efficiently.[27] Bidirectional A* with Enhanced efficiency (BAE*) plans real-time, collision-free paths for drones and multi-agent systems.[28] In 2024, Parallel External Memory BAE* (PEM-BAE*) scaled these capabilities for distributed planning, improving logistics scheduling.[29] Consistent-Heuristic Bucket-Based Bidirectional Search (CBBS) streamlines task sequences in supply chains.[30]
Bidirectional search advances puzzle-solving and graph-based artificial intelligence, addressing complex combinatorial and network problems.[20] NBS and Dynamically Improved Bounds Bidirectional Search (DIBBS) solve puzzles like the pancake puzzle and Rubik’s Cube faster than unidirectional methods. CBBS, introduced in 2021, optimizes large state spaces by grouping nodes, enhancing puzzle-solving efficiency.[22] In AI, bidirectional search supports social network analysis and bioinformatics by finding shortest paths or optimizing flows in sparse graphs.[24] Non-parametric NBS variants handle diverse network structures, from protein interactions to recommendation systems.[24]
See Also
[edit]References
[edit]- ^ a b c d e f g h i j k l m Russell, Stuart; Norvig, Peter (2010). Artificial Intelligence: A Modern Approach (3rd ed.). Prentice Hall. pp. 81–82. ISBN 978-0136042594.
- ^ a b c d e f g Goldberg, Andrew V.; Harrelson, Chris; Kaplan, Haim; Werneck, Renato T. (2006-04-05). "Efficient Point-to-Point Shortest Path Algorithms, COS423 Handout" (PDF). Princeton University.
- ^ a b c d e f g h Nicholson, T.A.J. (1966). "Finding the Shortest Route Between Two Points in a Network". The Computer Journal. 9 (3): 275–280. doi:10.1093/comjnl/9.3.275.
- ^ Dijkstra, E. W. (1959). A note on two problems in connexion with graphs. Numerische Mathematik, 1(1), 269–271.
- ^ a b c d e Doran, J.R. (14 December 1966). Doubletree Searching and the Graph Traverser (Technical report). University of Edinburgh, Department of Machine Intelligence and Perception. KPU-R-22.
- ^ Hart, P. E., Nilsson, N. J., & Raphael, B. (1968). A formal basis for the heuristic determination of minimum cost paths. IEEE Transactions on Systems Science and Cybernetics, 4(2), 100–107.
- ^ a b c d e Pohl, Ira (1971). "Bi-directional Search". Machine Intelligence. 6. Edinburgh University Press: 127–140.
- ^ a b c d de Champeaux, Dennis; Sint, Lenie (1977). "An Improved Bidirectional Heuristic Search Algorithm". Journal of the ACM. 24 (2): 177–191. doi:10.1145/322003.322004.
- ^ a b c d de Champeaux, Dennis (1983). "Bidirectional Heuristic Search Again". Journal of the ACM. 30 (1): 22–32. doi:10.1145/322358.322360.
- ^ Shaham, Shani; Holte, Robert C.; Felner, Ariel (2017). "Front-to-End Bidirectional Heuristic Search with Near-Optimal Node Expansions". Proceedings of the International Joint Conference on Artificial Intelligence (IJCAI). Retrieved 2025-04-16.
- ^ Shaham, Shani; Holte, Robert C.; Felner, Ariel (2017). "Front-to-End Bidirectional Heuristic Search with Near-Optimal Node Expansions". Proceedings of the International Joint Conference on Artificial Intelligence (IJCAI). Retrieved 2025-04-16.
- ^ Shperberg, Shlomi S.; Shperberg, Ariel; Felner, Ariel; Shimony, Solomon E. (2019). "Enriching Non-Parametric Bidirectional Search Algorithms". Proceedings of the International Symposium on Combinatorial Search (SoCS). Retrieved 2025-04-16.
- ^ Shperberg, Shlomi S.; Felner, Ariel; Sturtevant, Nathan R. (2022). "Dynamically Improved Bounds Bidirectional Search". Artificial Intelligence. 303: 103625. doi:10.1016/j.artint.2021.103625. Retrieved 2025-04-16.
- ^ Shperberg, Shlomi S.; Felner, Ariel; Sturtevant, Nathan R. (2022). "Dynamically Improved Bounds Bidirectional Search". Artificial Intelligence. 303: 103625. doi:10.1016/j.artint.2021.103625. Retrieved 2025-04-16.
- ^ Qureshi, Ahmed Hussain; Ayaz, Yasar (2018). "Intelligent Bidirectional Rapidly-Exploring Random Trees for Optimal Motion Planning in Complex Cluttered Environments". Robotics and Autonomous Systems. 104: 92–107. doi:10.1016/j.robot.2018.02.007. Retrieved 2025-04-16.
- ^ Shaham, Shani; Holte, Robert C.; Felner, Ariel (2017). "Front-to-End Bidirectional Heuristic Search with Near-Optimal Node Expansions". Proceedings of the International Joint Conference on Artificial Intelligence (IJCAI). Retrieved 2025-04-16.
- ^ Kwa, James B.H. (1989). "BS∗: An admissible bidirectional staged heuristic search algorithm". Artificial Intelligence. 38 (1). Elsevier BV: 95–109. doi:10.1016/0004-3702(89)90069-6. ISSN 0004-3702.
- ^ a b c d Kaindl, H.; Kainz, G. (1997-12-01). "Bidirectional Heuristic Search Reconsidered". Journal of Artificial Intelligence Research. 7. AI Access Foundation: 283–317. arXiv:cs/9712102. doi:10.1613/jair.460. ISSN 1076-9757.
- ^ Auer, Andreas; Kaindl, Hermann (2004). A case study of revisiting best-first vs. depth-first search (PDF). The 16th European Conference on Artificial Intelligence.
- ^ a b c Sturtevant, N.; Felner, A. (2018). "A Brief History and Recent Achievements in Bidirectional Search". Proceedings of the AAAI Conference on Artificial Intelligence. 32 (1): 5106–5113. doi:10.1609/aaai.v32i1.12218.
- ^ a b c Felner, A.; Shperberg, S.S.; Sturtevant, N.R.; Zhang, T. (2024). "MM: A Bidirectional Search Algorithm that is Guaranteed to Meet in the Middle". Artificial Intelligence. 338: 104232. doi:10.1016/j.artint.2024.104232.
- ^ a b c d e Pavlik, J.; Shperberg, S.S.; Felner, A.; Sturtevant, N.R. (2021). "Scaling up Budgeted Bidirectional Heuristic Search". Proceedings of the International Symposium on Combinatorial Search. 14 (1): 116–118. doi:10.1609/socs.v14i1.18507 (inactive 13 April 2025).
{{cite journal}}
: CS1 maint: DOI inactive as of April 2025 (link) - ^ Shaham, S.S.; Shperberg, S.S.; Felner, A. (2024). "Parallel External Memory Bidirectional Search". Proceedings of the International Symposium on Combinatorial Search. 17 (1): 149–151. doi:10.1609/socs.v17i1.28014 (inactive 13 April 2025).
{{cite journal}}
: CS1 maint: DOI inactive as of April 2025 (link) - ^ a b c d Shaham, S.S.; Shperberg, S.S.; Felner, A.; Holte, R.C. (2019). "Enriching Non-Parametric Bidirectional Search Algorithms". Proceedings of the International Conference on Automated Planning and Scheduling. 29: 434–442. doi:10.1609/icaps.v29i1.3517 (inactive 13 April 2025).
{{cite journal}}
: CS1 maint: DOI inactive as of April 2025 (link) - ^ Pijls, Wim; Post, Henk (2009). Yet another bidirectional algorithm for shortest paths (PDF) (Report). Econometric Institute, Erasmus University Rotterdam.
- ^ Holte, Robert C.; Felner, Ariel; Sharon, Guni; Sturtevant, Nathan R. (2016). "Bidirectional Search That Is Guaranteed to Meet in the Middle". Proceedings of the AAAI Conference on Artificial Intelligence. 30 (1): 3411–3417. doi:10.1609/aaai.v30i1.10522. Retrieved 2025-04-16.
- ^ Shaham, Shani; Holte, Robert C.; Felner, Ariel (2017). "Front-to-End Bidirectional Heuristic Search with Near-Optimal Node Expansions". Proceedings of the International Joint Conference on Artificial Intelligence (IJCAI). Retrieved 2025-04-16.
- ^ Eckerle, Johannes; Chen, Jing; Sturtevant, Nathan R.; Zilles, Sandra; Holte, Robert C. (2017). "Sufficient Conditions for Node Expansion in Bidirectional Heuristic Search". Proceedings of the International Conference on Automated Planning and Scheduling. 27: 126–134. Retrieved 2025-04-16.
- ^ Shperberg, Shlomi S.; Shperberg, Ariel; Felner, Ariel; Shimony, Solomon E. (2019). "Enriching Non-Parametric Bidirectional Search Algorithms". Proceedings of the International Symposium on Combinatorial Search (SoCS). Retrieved 2025-04-16.
- ^ Milutinović, Tina; Sturtevant, Nathan R. (2021). "Two New Bidirectional Search Algorithms". Computational Optimization and Applications. 80 (2): 603–631. doi:10.1007/s10589-021-00303-5.
{{cite journal}}
:|access-date=
requires|url=
(help)
Further reading
[edit]- Russell, Stuart J.; Norvig, Peter (2010). "3.4 Uninformed search strategies". Artificial Intelligence: A Modern Approach (3rd ed.). Prentice Hall. ISBN 978-0136042594..