算法第四章作业
1、
贪心策略:优先选择当前区间的结束点,选点尽量覆盖更多的区间。使用结构体接收每一个区间的开始与结束时间,并将所有活动根据结束时间进行排序,同时创建一个基准点用于记录最后一个选的点。随后遍历排序后的所有活动区间,若遇到当前区间未被最新的点覆盖,就选择该区间的结束点作为最新的点。
证明:假设贪心法的解数为k,最优解解数为m。假设k>m。最优解的第一个选点o1区间为[s1,f1],贪心选择第一个选点a1=f1。a1在最优解的选点区间内,故存在新解{a1, o2, o3...}。新解也是最优解。同理,其他被oi覆盖的区间,ai也可以替换。重复调整新最优解{a1, a2, a3...am}。最优解必须覆盖所有区间,然而贪心算法逻辑中,只有当当前区间未被前一个选点覆盖时,才会选择新的点。因此如果a1...am已经覆盖所有区间,不会再继续选点到更多的ak。这与假设k>m矛盾。所以k<=m,算法满足贪心算法性质。
时间复杂度:排序使用sort快排,时间复杂度为O(logn)。遍历所有活动时间复杂度为O(n)。故算法整体时间复杂度为O(nlogn)
2、
贪心算法是一种通过局部最优推出整体最优的方式,每一步都选择当前状态下的最优决策。
使用贪心算法需要满足性质:1贪心选择性质,全局最优解可通过一系列局部最优选择得到;2最优子结构性质,问题的最优解包含其子问题的最优解。
优点:时间复杂度较低。缺点:需要证明局部贪心最优决策能否得到局部最优解

浙公网安备 33010602011771号