An improved bi-directional heuristic search algorithm