在开始写关于集束搜索的文章之前,我发现我对很多相关的算法都不是很熟悉,这严重影响到了我对集束搜索的理解,为了能让自己更好的理解集束搜索,我又回顾了一些基础。
我的回顾之旅:
BFS算法中,我总结了两篇二叉树的BFS搜索和无向图的BFS搜索,在理解BFS搜索算法的过程中又额外涉及到了通过树的中序和先序遍历生成二叉树和存储无向图的邻接矩阵和邻接链表这两个知识点,有兴趣的朋友可以查看我的文集“算法之旅”。
好了,闲话不多说,我们先开始说一说什么是集束搜索吧。
Beam Search
尽管广度优先搜索BFS能够保证在无权无向图中找到起点与终点之间的最短路径,但是由于该算法对存储的消耗是指数级别的,因此对于搜索空间较大的问题,广度优先搜索算法几乎无用武之地,因为往往在找到最优解之前,存储内存就已经消耗完了,但是如果我们不得不去在一个搜素空间较大的图中寻找两点之间的路径时,我们该怎么办呢?前人给了我们这样一个解决方法:那就是放宽对路径的要求,不再要求路径一定是最短路径,退而求其次,寻找一个相对较短的路径,这个相对值是可以在我们能接受的范围之内的,这种解决方案就是集束搜索的算法思想了。
集束搜索B