Bidirectional search
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
The example below uses two simultaneous breadth-first searches. <syntaxhighlight lang="java"> 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;
} </syntaxhighlight>
Related pages
References
- ↑ "Bidirectional search". Planning Algorithms. UIUC. Archived from the original on 21 February 2020. Retrieved 11 October 2020.