052贪心法的正确性证明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贪心法正确性证明:活动选择
一个数学归纳法的例子例:证明对于任何自然数n,
1+2+...+n= n (n + 1)/2
证n=1, 左边=1, 右边=1×(1+1)/2=1
假设对任意自然数n等式成立,则1+2+...+(n+1) Array
=(1+2+...+n)+(n
=n(n+1)/2+(n+1)
= (n+1) (n/2+1)
= (n+1) (n+2)/2
2
适合证明涉及自然数的命题P(n)
归纳基础:证明P(1)为真(或P(0)为真).归纳步骤: 若对所有n有P(n)为真,证明
P(n+1)为真
∀n, P(n)→P(n+1)
P(1)
n=1,P(1) ⇒P(2)
n=2, P(2) ⇒P(3)
…
适合证明涉及自然数的命题P(n)
归纳基础:证明P(1)为真(或P(0)为真).
归纳步骤:若对所有小于n 的k 有P(k)真,
证明P(n)为真
∀k ( k<n ∧P(k) ) →P(n)
P(1)
n=2,P(1) ⇒P(2)
n=3, P(1)∧P(2) ⇒P(3)
…
两种归纳法的区别
归纳基础一样
P (1)为真
归纳步骤不同
归纳法1:P (1) ⇒P (2) ⇒P (3)...
证明逻辑
P (1) P (2)P (1) ⇒P (2) P (1) P (3) P (4) ...
⇒⇒归纳法2:
算法正确性归纳证明证明步骤:
1. 叙述一个有关自然数n的命题,该
命题断定该贪心策略的执行最终将导致最优解. 其中自然数n 可以代表算法步数或者问题规模.
2. 证明命题对所有的自然数为真.
归纳基础(从最小实例规模开始)
归纳步骤(第一或第二数学归纳法)
活动选择算法的命题
命题
算法Select执行到第k 步, 选择k 项活动i1 = 1, i2 , … , i k
=1,i2 ,…, i k . 则存在最优解A包含活动i
1
根据上述命题:对于任何k,算法前k 步的选择都将导致最优解,至多到第
n 步将得到问题实例的最优解
归纳证明:归纳基础令S ={1,2,…,n }是活动集,且f 1≤…≤f n
归纳基础: k =1, 证明存在最优解包含活动1证任取最优解A ,A 中活动按截止时间递增排列. 如果A 的第一个活动为j ,j ≠1, 用1替换A 的活动j 得到解A ',即
A'= (A −{ j }) ∪{1},
由于f 1 ≤f j , A ' 也是最优解,且含有
1.
A A ’
f 1≤f j
归纳步骤
证算法执行到第k 步, 选择了活动i 1=1,i 2, …, i k , 根据归纳假设存在最优解A 包含i 1=1,i 2,…,i k , A 中剩下活动选自集合S'
S'= { i | i ∈S , s i ≥f k }
A = { i 1, i 2, … , i k } ∪B
假设命题对k 为真, 证明对k +1也为真.
归纳步骤(续)
B是S'的最优解.(若不然, S' 的最优解为B*, B*的活动比B多,那么
B*∪{1, i2, … , i k }
是S 的最优解,且比A的活动多,与A 的最优性矛盾.)
归纳步骤(续)
将S' 看成子问题,根据归纳基础,存在S' 的最优解B' 有S' 中的第一个, 且|B'| = |B|, 于是
活动i
k+1
{ i1, i2, ... , i k} ∪B'
= { i1, i2, ... , i k, i k+1 } ∪( B'−{ i k+1})也是原问题的最优解.
11
小结
•贪心法正确性证明方法:数学归纳法第一数学归纳法、第二数学归纳法•活动选择问题的贪心法证明:
叙述一个涉及步数的算法正确性命题证明归纳基础
证明归纳步骤
12。