Skip to content

Latest commit

 

History

History
27 lines (17 loc) · 1.76 KB

01.Enumeration-Algorithm.md

File metadata and controls

27 lines (17 loc) · 1.76 KB

1. 枚举算法简介

枚举算法(Enumeration Algorithm):也称为穷举算法,指的是按照问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,将它们逐一与目标状态进行比较以得出满足问题要求的解。在列举的过程中,既不能遗漏也不能重复。

枚举算法的核心思想是通过对问题状态空间内的每种可能的情况进行求解判断,从而得到满足条件的解。

由于枚举算法要通过求解问题状态空间内所有可能的状态来得到满足问题要求的解,因此,在问题规模变大时,其效率一般是比较低的。

但是,枚举算法也有自己特有的优点,即:多数情况下,容易编程实现,而且容易调试。 正是由于这样的原因,枚举算法通常用于求解问题规模比较小的问题,或者作为求解问题的一个子算法出现,通过枚举一些信息并进行保存,而这些消息的有无对主算法效率的高低有着较大影响。

2. 枚举算法解题思路

采用枚举算法解题的一般思路如下:

  1. 确定枚举对象、枚举范围和判断条件,并判断条件设立的正确性。
  2. 一一枚举可能的情况,并验证是否是问题的解。
  3. 从下面几个方面考虑提高算法的效率:
    1. 抓住问题状态的本质,尽可能缩小问题状态空间的大小。
    2. 加强约数条件,缩小枚举范围。
    3. 根据某些问题特有的性质,例如对称性等,避免对本质相同的状态重复求解。

3. 枚举算法的应用

参考资料

  • 【书籍】算法竞赛入门经典:训练指南 - 刘汝佳,陈锋 著
  • 【书籍】ACM-ICPC 程序设计系列 - 算法设计与实现 - 陈宇 吴昊 主编