【算法】枚举算法
一一列举出该问题所有可能的解,并在逐一列举的过程中,将它们逐一与目标状态进行比较以得出满足问题要求的解。在列举的过程中,既不能遗漏也不能重复。
介绍
枚举算法:也称为穷举法算法,指的是按照问题本身的性质。
由于枚举算法要通过列举问题的所有状态来得到满足条件的解,因此,在问题规模变大时,其效率一般是比较低的。但是枚举算法也有自己特有的优点:
多数情况下容易编程实现,也容易调试。
建立在考察大量状态、甚至是穷举所有状态的基础上,所以算法的正确性比较容易证明。
所以,枚举算法通常用于求解问题规模比较小的问题,或者作为求解问题的一个子算法出现,通过枚举一些信息并进行保存,而这些消息的有无对主算法效率的高低有着较大影响。
枚举算法的解题思路
枚举算法是设计最简单、最基本的搜索算法。是我们在遇到问题时,最应该优先考虑的算法。
我们往往可以先通过枚举算法尝试解决问题,然后在此基础上,再去考虑其他优化方法和解题思路。
采用枚举算法解题的一般思路如下:
确定枚举对象、枚举范围和判断条件,并判断条件设立的正确性。
一一枚举可能的情况,并验证是否是问题的解。
考虑提高枚举算法的效率。
我们可以从下面几个方面考虑提高算法的效率:
抓住问题状态的本质,尽可能缩小问题状态空间的大小
加强约束条件,缩小枚举范围。
根据某些问题特有的性质。例如对称性等,避免对本质相同的状态重复求解。
相关题目与参考
百钱买百鸡问题水仙花数
枚举算法练习例题(Python版)_Python_罗罗诺亚_InfoQ写作社区
蓝桥杯省赛备战笔记—— (六)枚举 + 枚举练习题 - 远征i - 博客园
【枚举Day1】20170529-2枚举算法专题练习 题目 - ljc20020730 - 博客园
文章作者:望江
文章链接:https://www.sy11037.top/archives/suan-fa-mei-ju-suan-fa
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!
评论已关闭!