算法设计与分析之贪心算法

摘要:
a) 定义一个可以通过非贪婪策略获得的最优解a,并假设其中一个元素是kb)来推广和讨论k的值。证明了第一步中的贪婪选择和大小为n-1的子问题可以组合成全局最优解

1 贪心策略

 模板:为了使***最*,如何做贪心选择

2 贪心算法正确性证明

2.1 贪心选择性

 定义:若一个问题的全局优化解可以通过局部优化选择得到,则该问题称为具有贪心选择性

2.2 优化子结构

 定义:若一个优化问题的优化解包含它的子问题的优化解,则称其具有优化子结构

2.3 正确性证明

证明步骤:

  • 证明算法所求解的问题具有贪心选择性
  • 证明算法所求解的问题具有优化子结构
  • 证明算法确实按照贪心选择性进行局部优化选择

(1)证明算法所求解的问题具有贪心选择性

证明思路:证明存在一个最优解是以贪心选择开始的(包含贪心选择),常用Exchange Argument方法

首先写出贪心选择性:设某元素是符合贪心选择的(例如xx最大的,符合贪心选择即可),则一定存在最优解包含该元素。

a) 定义通过非贪心策略可以得到的一个最优解A,并设其中某个元素为k

b) 对k的值进行归纳讨论。

  • 若k=贪心选择的下标,则说明贪心选择的元素存在于一个最优解A中;
  • 若k!=贪心选择的下标,将某最优解中的元素用贪心策略会选择的元素交换,说明得到的解A'并不比A差

c) 存在原问题的最优解包含贪心选择得到的元素(最优解可以通过贪心选择得到)

(2)证明算法所求解的问题具有优化子结构

证明思路:证明将一个最优解分解为第一步的贪心选择和一个大小为n-1的解,该解是大小为n-1的子问题的最优解

假设如果子问题的解不是最优解,将其替换为对应最优解应该可以得到原问题的一个更优的解,这与最初的解是原问题的最优解矛盾,因此最优子结构得证。

(3)证明算法确实按照贪心选择性进行局部优化选择

证明思路:证明第一步的贪心选择和大小为n-1的子问题可以合并为一个全局最优解

 

免责声明:文章转载自《算法设计与分析之贪心算法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.Net Mvc 返回Json,动态生成EasyUI Tree哈工大算法设计与分析期末试题解析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

木板切割问题——贪心

一、问题引入 农夫约翰为了修理栅栏,要将一块很长的木块切成N块。准备切成的长度分别是L1、L2、、、,LN,未切割前的木板长度切好为切割后木板长度的总和。每次切断木板时的开销是这块木板的长度。(1 ≤ N ≤ 20000,0 ≤ Li ≤ 50000) 二、解题思路 由于N的值非常大,不可能枚举所有情况再求解,必须用一种比较高效的算法。木板的切割循序不...

leetcode1546题解【前缀和+贪心】

leetcode1546.和为目标值的最大数目不重叠非空子数组数目 题目链接 算法 前缀和+贪心 时间复杂度O(n)。 1.对nums数组求前缀和; 2.在求前缀和过程中将前缀和sum插入到set集合中,每次都在set集合中寻找sum-target是否存在,如果存在,说明存在这么一个子数组,满足该子数组中的数字和等于target; 3.在set集合中找到su...

剪绳子(贪心算法)

1 #include <iostream> 2 #include <cmath> 3 4 using namespacestd; 5 6 /** 7 * 题目分析: 8 * 先举几个例子,可以看出规律来。 9 * 4 : 2*2 10 * 5 : 2*3 11 * 6 : 3*3 12 * 7 : 2*2*3 或者4*3 13...

贪心-Stall Reservations

问题:有n 头牛( 1<=n<=50,000) 要挤奶。给定每头牛挤奶的时间区间 [A,B](1<=A<=B<=1,000,000 A,B 为整数 。牛需要呆畜栏里才能挤奶。一个畜栏同一时间只能容纳一头牛。问至少需要多少个畜栏,才能完成全部挤奶工作,以及每头牛都放哪个畜栏里( Special judged)去同一个畜栏的两头牛,...

oj教程--贪心

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。...

算法导论13.贪心算法

与动态规划类似,贪心算法也将问题化简为规模较小的子问题,并通过递归解决子问题来获取整个问题的解。不同的是,贪心问题不对子问题进行比较,而是只生成一个非空的子问题,而使选择在当时看上去是最优的(即“贪心”的含义)。 活动选择问题 几个互相竞争的活动都要求以独占的方式占用某个公用资源(如选修课程对个人可支配时间的要求,或会议对会议室的要求),每个活动都有开始时间...

最新文章