According to most of the reading I have done, a bidirectional search algorithm is said to terminate when the \"forward\" and \"backward\" frontiers first intersect. However,
In an unweighted (unit cost) graph, bidirectional BFS has found the optimal solution when it hits the intersection, as Russell & Norvig themselves state on page 80 of the 2003 edition of ''AIMA'':
Bidirectional search is implemented by having one or both of the searches check each node before it is expanded to see if it is in the fringe of the other search tree [...] The algorithm is complete and optimal (for uniform step costs) if both searches are breadth-first[.]
(By "expanding a node", R&N mean generating the successors. Emphasis added.)