贪心算法+算法设计

一、基本思想

1、局部最优与全局最优:贪心算法在每一步选择当前状态下的最优解,希望这样的局部最优决策能导致全局最优解。

2、贪心选择性质:在算法的每一步都采取当前状态下的最优选择,不考虑子问题的解如何影响未来的状态。

3、可行解:每一步的贪心选择都必须保证解是可行的,即选择之后的状态仍然满足问题的要求。

二、技巧和方法

1、贪心选择条件:确定一个贪心选择函数,该函数能够在每一步选择中提供最优的决策。

2、最优子结构:确保问题具有最优子结构,即通过子问题的最优解可以构建原问题的最优解。

3、贪心策略:定义一个贪心策略,明确在每一步如何做出贪心选择。

4、剪枝:在搜索过程中,一旦发现某一部分不可能产生最优解,就剪去这部分,以减少计算量。

5、排序:对于某些问题,预先对输入数据进行排序可以简化贪心选择过程。

6、记忆化:存储已经计算过的结果,避免重复计算,特别是在动态规划中。

7、迭代与分治:将问题分解为更小的子问题,递归解决每个子问题,然后合并结果。

三、基本要素

贪心选择性:

贪心选择性是指在算法的每一步选择中,根据某个贪心标准(贪心选择函数)做出局部最优解的选择,从而希望这样的局部最优决策能够导致全局最优解。贪心算法的核心在于每一步都做出当前看起来最优的选择,而不考虑这个选择对未来选择的影响。

贪心选择性的关键在于:

1、贪心标准:定义一个标准或函数,用于评估每一步的最优性。

2、局部最优:每一步都基于贪心标准做出最优选择。

3、可行解:每次选择都必须保证解的可行性,即选择之后的状态仍然满足问题的所有约束。

最优子结构

最优子结构性质是指一个问题的最优解包含其子问题的最优解。换句话说,可以独立地解决子问题,并将这些子问题的最优解组合起来以形成原问题的最优解。

最优子结构性质的关键在于:

1、子问题:问题可以分解为更小的子问题。

2、最优解:子问题的最优解是可以确定的。

3、组合:原问题的最优解可以通过组合子问题的最优解来获得

四、算法实例

编程实现下述活动的最佳安排

joblist = [['a', 8, 10], ['b', 1, 5], ['c', 4, 8], ['d', 1, 3], ['e', 6, 9], ['f', 2, 4], ['g', 4, 7], ['h', 1, 5], ['i', 6, 12]]

  1. def get_max_intervalschdeule(joblist):
  2. job_schedule=[]
  3. num_jobs=len(joblist)
  4. joblist.sort(key=lambda x: x[2])#按照结束时间对所有的job排序
  5. for n in range(num_jobs):
  6. if not job_schedule:
  7. job_schedule.append(joblist[n])
  8. else:
  9. if job_schedule[-1][2]<=joblist[n][1]:#当前遍历到的job与job_schedule中的最后一个job比较
  10. job_schedule.append(joblist[n])
  11. return job_schedule
  12. # 给定的工作列表
  13. joblist = [['a', 8, 10], ['b', 1, 5], ['c', 4, 8], ['d', 1, 3], ['e', 6, 9], ['f', 2, 4], ['g', 4, 7], ['h', 1, 5], ['i', 6, 12]]
  14. # 调用函数并打印结果
  15. best_schedule = get_max_intervalschdeule(joblist)
  16. print("Best Schedule:", best_schedule)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倚楼听风疏雨骤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

举报

选择你想要举报的内容(必选)
  • 内容涉黄
  • 政治相关
  • 内容抄袭
  • 涉嫌广告
  • 内容侵权
  • 侮辱谩骂
  • 样式问题
  • 其他
点击体验
DeepSeekR1满血版
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回顶部