Bidirectional search algorithm runs two simultaneous searches, one forward and one backward, and check whether their frontier (the set of nodes waiting to be expended) intersect.