贪心算法-活动安排问题和背包问题

实验6贪心算法-活动安排问题和背包问题

实验目的:

  1. 理解贪心算法的基本思想
  2. 运用贪心算法解决实际问题

实验内容:

  1. 采用贪心方法编程实现以下问题的算法

1.如何安排下列活动使得使用的活动场所最少,并给出具体的安排方法。

活动

a

b

c

d

e

f

g

开始

0

3

4

9

7

1

6

完成

2

7

7

11

10

5

8

2.现有一个容量为50的背包和三个物品,它们的重量分别是10,20,30,价值分别为60,100,120,如何装入物品使背包装满,且装入背包的物品总价值最大。

实验步骤:

  • 活动安排问题

  • def greedy_activity_selector(start, finish):activities = sorted(range(len(finish)), key=lambda x: finish[x])chosen_activities = [activities[0]]last_finish_time = finish[activities[0]]for i in activities[1:]:if start[i] >= last_finish_time:chosen_activities.append(i)last_finish_time = finish[i]return chosen_activitiesstart = [0,3,4,9,7,1,6]
    finish = [2,7,7,11,10,5,8]selected = greedy_activity_selector(start, finish)
    print("Selected activities:", selected)

  • 背包问题

  • def greedy_knapsack(values, weights, capacity):value_per_weight = [v/w for v, w in zip(values, weights)]items = sorted(range(len(values)), key=lambda i: value_per_weight[i], reverse=True)max_value = 0fractions = [0] * len(values)  for i in items:if weights[i] <= capacity:fractions[i] = 1max_value += values[i]capacity -= weights[i]else:fractions[i] = capacity / weights[i]max_value += values[i] * capacity / weights[i]break  return max_value, fractionsvalues = [60, 100, 120]
    weights = [10, 20, 30]
    capacity = 50max_value, fractions = greedy_knapsack(values, weights, capacity)
    print("Maximum value in knapsack:", max_value)
    print("Fractions of items taken:", fractions)
    

实验感想:

        贪心算法在这两个问题上的应用非常直观和简洁。它不需要复杂的回溯或穷举,只需按照某种策略选择当前最优解,这大大简化了问题求解的过程。贪心算法在活动安排和分数背包问题上的效率非常高,这是因为它们都拥有贪心选择性质和最优子结构。但在其他背包问题(如0-1背包问题)上,贪心算法可能无法找到最优解,这体现了算法效率和效果之间的平衡。

        在背包问题中,将问题转化为分数背包问题,使我们能够应用贪心策略。这种问题转化的能力是解决复杂问题的关键。通过实验,我更深刻地理解了贪心算法适用的问题类型。贪心算法适用于那些局部最优解能导致全局最优解的问题。通过编写代码实现这些算法,我不仅加深了对算法理论的理解,还提高了编程能力和调试技巧。解决这类问题需要良好的逻辑思维和算法设计能力。实验过程中,我学会了如何分析问题、设计算法,并将这些算法转化为代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/644347.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【笔试】03

FLOPS FLOPS 是 Floating Point Operations Per Second 的缩写&#xff0c;意为每秒浮点运算次数。它是衡量计算机性能的指标&#xff0c;特别是用于衡量计算机每秒能够执行多少浮点运算。在高性能计算领域&#xff0c;FLOPS 被广泛用来评估超级计算机、CPU、GPU 和其他处理器…

甘特图是什么?利用甘特图来优化项目管理流程

在现代项目管理中,图表是一种强大而直观的工具,可以帮助项目经理和团队成员清晰地了解并掌控整个项目进程。其中,甘特图是最常用和最有效的图表之一。 甘特图是一种条形图,可以用来直观地展示项目中各个任务的进度、持续时间和相互关系。它由一个横轴和一个纵轴组成。横轴代表时…

2024 OceanBase 开发者大会:OceanBase 4.3正式发布,打造PB级实时分析数据库

4月20日&#xff0c;2024 OceanBase开发者大会盛大召开&#xff0c;吸引了50余位业界知名的数据库专家和爱好者&#xff0c;以及来自全国各地的近600名开发者齐聚一堂。他们围绕一体化、多模、TP与AP融合等前沿技术趋势展开深入讨论&#xff0c;分享场景探索的经验和最佳实践&a…

编程基础“四大件”

基础四大件包括&#xff1a;数据结构和算法,计算机网络,操作系统,设计模式 这跟学什么编程语言,后续从事什么编程方向均无关&#xff0c;只要做编程开发&#xff0c;这四个计算机基础就无法避开。可以这么说&#xff0c;这基础四大件真的比编程语言重要&#xff01;&#xff0…

typedef 定义函数指针

typdef int(*FUNC_TYPE)(int,int) FUNC_TYPE p NULL; 定义了一个函数指针 函数指针作为函数的参数的用法demon

基于python+django+mysql农业生产可视化系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

I2C,UART,SPI(STM32、51单片机)

目录 基本理论知识&#xff1a; 并行通信/串行通信&#xff1a; 异步通信/同步通信&#xff1a; 半双工通信/全双工通信: UART串口&#xff1a; I2C串口&#xff1a; SPI串口&#xff1a; I2C在单片机中的应用&#xff1a; 软件模拟&#xff1a; 51单片机&#xff1a;…

投票刷礼物链接怎么弄?最新投票活动创建系统源码 轻松创建活动

投票刷礼物链接怎么弄&#xff1f;投票活动创建系统的作用和功能多种多样&#xff0c;为用户提供一个便捷、高效且功能强大的平台&#xff0c;用于创建、管理和执行各种投票活动。分享一个最新投票活动创建系统源码&#xff0c;源码开源可二开&#xff0c;含完整代码包和详细搭…

对象与JSON字符串互转

1、JSON字符串转化成JSON对象 JSONObject jsonobject JSON.parseObject(str); 或者 JSONObject jsonobject JSONObject.parseObject(str); 功能上是一样的&#xff0c;都是将JSON字符串&#xff08;str&#xff09;转换成JSON对象 jsonobject 。注意str一定得是以键值对存在…

专业社区团购小程序,开启社区营销新模式

随着互联网的快速发展&#xff0c;社区团购已经成为了当下最热门的商业模式之一。它通过将社区居民聚集在一起&#xff0c;以较低的价格购买高品质的商品&#xff0c;改变了传统购物模式。社区团购不仅为消费者带来了实惠&#xff0c;同时也为商家提供了新的盈利渠道。 开发社区…

MYSQL之锁机制

什么是锁机制? MySQL的锁机制是数据库中用于管理和控制对共享资源并发访问的一种机制。在多用户环境下&#xff0c;不同的用户可能同时对同一数据进行读写操作&#xff0c;如果没有适当的锁机制&#xff0c;就可能出现数据不一致或脏读等问题。 锁分类 1.从数据库的操作类型…

凌恩病原微生物检测系统上线啦,助力环境病原微生物检测

病原微生物是指能够引起人类或动物疾病的微生物&#xff0c;包括病毒、细菌、真菌、衣原体和支原体等。病原微生物可以通过空气、体液等介质传播&#xff0c;危害人体健康&#xff0c;造成财产损失。因此&#xff0c;快速、准确地检测病原微生物对于疫情防控和保障人民生命健康…