1. (简答题) 什么是贪心算法?
贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。
虽然贪心算法对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路径问题。最小生成树问题等。
2. (简答题) 简述贪心算法的基本要素。
贪心算法解决的问题一般具有两个重要性质:
(1)贪心选择性质
一个问题的整体最优解可通过一系列局部最优解的选择达到,并且每次的选择可以依赖以前做出的选择,但不依赖于后面要做出的选择。这就是贪心选择性质。
这是贪心算法可行的第一个基本要素,也是贪心算法(自顶向下)与动态规划算法(自底向下)的主要区别。
(2)最优子结构性质
当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。