Bidirectional search - Simple English Wikipedia, the free encyclopedia
In computer science, bidirectional search is a method used for finding the shortest path between two items in a graph. It runs two simultaneous searches starting from the two items.[1]
Implementation
[change | change source]The example below uses two simultaneous breadth-first searches.
void bidirectionalSearch(Item a, Item b) { Queue qA = new Queue(); Queue qB = new Queue(); qA.enqueue(a); qB.enqueue(b); while (!qA.isEmpty() && !qB.isEmpty()) { if (!qA.isEmpty()) { Item v = qA.dequeue(); if (aItem.found) return true; for (Item neighbor : v.neighbors()) { if (!neighbor.found) { neighbor.found = true; qA.enqueue(neighbor); } } } if (!qB.isEmpty()) { Item v = qB.dequeue(); if (v.found) return true; for (Item neighbor : v.neighbors()) { if (!neighbor.found) { neighbor.found = true; qB.enqueue(neighbor); } } } } return false; }
Related pages
[change | change source]References
[change | change source]- ↑ "Bidirectional search". Planning Algorithms. UIUC. Archived from the original on 21 February 2020. Retrieved 11 October 2020.