这一课我们来介绍穷举法,有一些人把穷举法视为上不了台面的低级方法,这种想法是错误的,虽然穷举思想的原理简单,但是用穷举思想设计一个算法却一点也不简单。各种算法模式或思想没有高下之分,关键在于你是否能灵活运用,更不用说很多著名的算法也会在某个局部应用穷举的思想了。某些最优解问题,如果有多个最优解,还只能用穷举法才能把这些最优解都找出来。有时候,为了验证动态规划算法的解是否正确,也会用穷举法来辅助验证。所以,不要小看穷举法,很多问题在走投无路的情况下,试试穷举法或许是最后的救命稻草。
穷举法
穷举法又称穷举搜索法,是一种在问题域的解空间中对所有可能的解穷举搜索,并根据条件选择最优解的方法的总称。解空间又被称为状态空间,是所有可能是解的候选解的集合,之所以特别强调在解空间内穷举搜索,是想传达一个重要的思想,那就是穷举并不是漫无目的的乱找,它是一种在有限的解空间(解空间至少在理论上是有限的)内按照一定的策略进行查找的思想。数学上也把穷举法称为枚举法,就是在一个由有限个元素构成的集合中,把所有元素一一枚举研究的方法。比如要找出一个班上身高最高的同学,只需要给这个班上的同学一一测量身高,然后通过比较就可以确定哪个同学身高最高。穷举法就是这样的一种思想,对解空间内的候选解按某种顺序进行逐一枚举和检验,并