Meet in the middle 算法是一种在搜索类问题中常用的技巧
顾名思义这种算法就是同时从两个点往中间搜索,直到碰头为止
看两个图
我们假设一个情景,图一中标红的两个点分别是起点和终点,现在我们要找出一条从起点到终点的路径。
按照传统的BFS思路,我们从上方的起点开始往下搜索,每次拓展相邻的节点。
这样我们就需要遍历大部分的节点才能找到答案,搜索树十分庞大
而当我们使用meet in the middle进行优化(如图二)
我们先从起点搜索到树的一半深度为止,然后从终点倒着搜索。这样我们就可以很快地找出所要求的路径
很明显,我们减少了几乎一半的状态数,大大提高了搜索的效率
当然,meet in the m