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

实验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_activities
    
    
    start = [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 = 0
        fractions = [0] * len(values)  
        for i in items:
            if weights[i] <= capacity:
                fractions[i] = 1
                max_value += values[i]
                capacity -= weights[i]
            else:
                fractions[i] = capacity / weights[i]
                max_value += values[i] * capacity / weights[i]
                break  
    
        return max_value, fractions
    
    values = [60, 100, 120]
    weights = [10, 20, 30]
    capacity = 50
    
    max_value, fractions = greedy_knapsack(values, weights, capacity)
    print("Maximum value in knapsack:", max_value)
    print("Fractions of items taken:", fractions)
    

实验感想:

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mybatis 生成器,是否功能实现,需写测试类

一、看视频步骤 请按视频流程走 mybatis-18-CSDN直播 二、视频报错 解决思路 网址&#xff1a; 使用配置 | MyBatis-Plus (baomidou.com) 添加代码&#xff1a; 效果图&#xff1a;√ Tests passed: 前面✔&#xff0c;表示正确。 1为最终结果

面包屑新玩法,ReactRouter+Ant Design实现动态渲染

在Ant Design中,可以通过Breadcrumb组件结合react-router库实现动态生成面包屑导航。具体步骤如下: 定义路由配置数据结构 我们需要在路由配置中添加额外的面包屑相关信息,例如面包屑标题、icon等。例如: const routes [{path: /,breadcrumbName: 首页},{path: /users,brea…

【笔试】03

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

【macOS】M芯片安装windows10以及配置office

背景 M3芯片Macbook ProParallel Desktop19office word visio打算配置一个好用的笔记本&#xff0c;携带着尽快把论文的正文写完&#xff0c;macOS里面的word排版可能出错&#xff0c;所以像配置一个双系统&#xff0c;里面必然要有的是word和visio&#xff0c;其他没有要求 …

使用linux,c++,创作一个简单的五子棋游戏

#include <iostream> #include <vector> #include <unordered_map> using namespace std; // 棋盘大小 const int BOARD_SIZE 15; // 棋子类型 enum ChessType { EMPTY, BLACK, WHITE }; // 棋盘类 class ChessBoard { private: vect…

大数据学习第四天

文章目录 yaml 三大组件的方式交互流程hive 使用安装mysql(hadoop03主机)出现错误解决方式临时密码 卸载mysql (hadoop02主机)卸载mysql(hadoop01主机执行)安装hive上传文件解压解决版本差异修改hive-env.sh修改 hive-site.xml上传驱动包初始化元数据在hdfs 创建hive 存储目录启…

怎么选出一个95分的产品?选品的逻辑到底是什么?如何不选错

大家好&#xff0c;我是电商花花。 选品定生死。 做电商的应该都会听过这句话&#xff0c;可能有些商家也只是听听就过去&#xff0c;如果没有遇到选品的问题就很难感受到。 如果你体验到一款好的产品带来的流量红利&#xff0c;体验一次爆单&#xff0c;就会知道选出优质的…

Reactor 核心概念-响应式编程-003

🤗 ApiHug {Postman|Swagger|Api...} = 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: We build what we loveApiHug - API design Copilot - IntelliJ IDEs Plugin | MarketplaceReactor 核心库在: reactor-core, 实现。 引入 (gradl…

【头文件】对.h文件的理解

目录 &#x1f31e;1. 头文件的概念 &#x1f30a;1.1 头文件的由来 &#x1f30a;1.2 头文件的作用 &#x1f30a;1.3 在.h文件中实现函数也不会出错的原因 &#x1f31e;2. 简单示例 &#x1f30a;2.1 头文件addition.h &#x1f30a;2.2 头文件接口实现addition.cpp …

Leetcode 119 杨辉三角 II

目录 一、问题描述二、示例及约束三、代码方法一&#xff1a;递推方法二&#xff1a;线性递推 四、总结 一、问题描述 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。   在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。   自我…

【JavaEE网络】深入理解Socket套接字及其在网络编程中的应用

目录 Socket套接字UDP VS TCP有连接 VS 无连接可靠传输 VS 不可靠传输面向字节流 VS 面向数据报 全双工 VS 半双工 UDP数据报套接字编程DatagramSocket APIDatagramPacket APIInetSocketAddress APIUDP回显客户端服务器服务器和客户端的工作流程UDP翻译客户端服务器 Socket套接…

轻松找回误删文件,告别企业数据丢失,如何有效利用teamOS二级回收站,提升数据管理效率

在数字化时代&#xff0c;我们越来越依赖电子文件来记录和管理重要信息。 然而&#xff0c;伴随着这种便利的同时&#xff0c;误删或恶意操作导致的文件丢失也成为了一个令人头疼的问题。 那么本文就来谈一谈&#xff0c;企业网盘如何解决误删、甚至恶意删除的问题。 可道云…

高效的数据采集如何促进企业发展?

大数据开启了一个大规模生产、分享和应用数据的时代&#xff0c;它给技术和商业带来了巨大的变化。麦肯锡研究表明&#xff0c;在医疗、零售和制造业领域&#xff0c;大数据每年可以提高劳动生产率0.5-1个百分点。大数据在核心领域的渗透速度有目共睹&#xff0c;然而调查显示&…

ctfshow——XSS

文章目录 XSS介绍什么是xss&#xff1f;XSS危害XSS的分类常用XSSpayload web316——反射型XSSweb317——过滤<script> web318——过滤script、imgweb319——不止过滤script、imgweb320——过滤空格web321——不止过滤空格web322——不止过滤空格web323web324web 325web32…

ubuntu下安装python模块 pip intall xxx报错

报错内容大概如下&#xff1a; WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by NewConnectionError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f0fc68d6370>: Failed to establ…

Python 基础、流程、容器、函数

一、基础语法 1.1 前言 1.1.1 Python简介 Python是一门编程语言&#xff0c;Python的作者是Guido van Rossum&#xff08;龟叔&#xff09; Python优点&#xff1a;简单易学 Python与嵌入式、集成电路行业 强大的库和工具生态系统&#xff1a;Python拥有广泛而强大的库和…

javaWeb项目-社区医院管理服务系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、Java技术 Java语…

什么是全局特征,什么又是局部特征

全局特征和局部特征是用来描述数据中信息的两种不同方式&#xff0c;特别是在图像处理、模式识别和机器学习领域中经常被提到。它们有助于理解和分析数据的不同层面&#xff1a; 全局特征&#xff08;Global Features&#xff09; 全局特征描述了整个数据集的整体属性。在图像…

布局香港之零售小店篇 | 香港一人小企与连锁超市的竞争

近年来&#xff0c;内地品牌入驻香港市场开拓业务已成大势所趋。香港特区政府早前公布的「2023年有香港境外母公司的驻港公司按年统计调查」显示&#xff0c;2023年母公司在海外及内地的驻港公司数量高达9039家。内地品牌在香港的成功落地&#xff0c;不仅为香港市民带来了丰富…

杰理695的UI模式LED灯控制

UI模式LED灯修改每个模式对应的LED灯闪烁修改在ui_normal_status_deal(u8 *status, u8 *power_status, u8 ui_mg_para)