【算法】贪心算法简介

news2025/2/28 5:06:12

贪心算法概述

目录

  • 1.贪心算法概念
  • 2.贪心算法特点
  • 3.贪心算法学习

1.贪心算法概念

贪心算法是一种 “思想” ,即解决问题时从 “局部最优” 从而达到 “全局最优” 的效果。

  • ①把解决问题的过程分为若干步
  • ②解决每一步时候,都选择当前最优解(不关注全局)
  • ③可能会得到全局最优解

示例:

  • 例1:找零问题
    例题:有[20,10,5,1]四种面值的纸币,请用最小的张数来凑出46元。(用√标识)
    在这里插入图片描述

  • 例2:最小路径和
    例题:有下面九宫格,求从[0,0]到[2,2]最小路径和。(下面绿色的线为贪心算法线)
    在这里插入图片描述

  • 例3:背包问题
    例题:现有容量为8的背包,请按下面的v(体积)-w(价值)表用背包装下最大价值的货物。(三种贪心策略,按体积来贪心(绿色)、按价值来贪心(红色)、按性价比来贪心(紫色))
    在这里插入图片描述

2.贪心算法特点

  • 贪心策略因题而异,变化多端。
  • 贪心策略需要证明其正确性
    • 贪心策略错误,举一反例,比如上面例二错误

    • 贪心策略正确,用数学方法进行证明
      上面三个例子中,只有例一是正确的,下面我们来证明其正确性:

      现假设最优解用到每种面额的张数分别是**[A,B,C,D]**
      如果B>=2,可用一张A(20元)进行替换,故最优解的B<=1,同理可知C<=1,D<=1
      结论:对于最优解而言,B <=1; C <= 1; D <= 4;

      我们继续假设我们贪心算法所得的结果分别用到每种面额的张树分别是**[a,b,c,d]**
      由贪心策略尽可能的取20张面额的纸币可知,a >= A
      同时,我们知道如果 a > A,那么对于最优解而言,这个少的20元纸币必须用后面的B、C、D来进行弥补(因为总钱数是一样的),但是(B + C + D)max = 10 + 5 + 4 = 19元。因而不能弥补少的20元,也就是说a 不可能大于 A,所以 a = A;
      同理,我们可以推得b = B;c = C;d = D, 即 a = A,b = B;c = C;d = D

      所以我们所用的贪心算法就是最优解

3.贪心算法学习

前期多借鉴别人的思路,为什么这么想可以不用太关注。
证明因人而异,可以根据需要来是否对证明过程进行掌握。


EOF

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何编写一份高质量的渗透测试报告?

随着网络安全威胁的不断扩展与升级&#xff0c; 渗透测试目前已经成为众多组织主动识别安全漏洞与潜在风险的关键过程。然而&#xff0c;渗透测试的真正价值在于为用户提交一份全面和可操作的渗透测试报告&#xff0c;这份报告不仅仅是一个技术性文档&#xff0c;同时也是促进安…

c语言基础:数组的运用以及在内存中的地址的理解

目录 目录&#xff1a; 1.数组作为函数参数 2.数组在内存中的存储 2.1数组名是什么&#xff1f; 2.2下面我们来探讨二维数组的各个名字表示什么 二维数组的首元素地址是什么呢&#xff1f; *arr表示的是什么呢 &#xff1f;&#xff08;arr是二维数组&#xff09; 1.数组作…

纯分享#126个电商平台集合(包含60个不同国家)值得一看

01 亚洲 中国 淘宝&#xff1a;拥有大量的卖家和商品种类&#xff0c;主要面向中国市场。天猫:淘宝旗下的B2C电商平台&#xff0c;提供品质保证、正品保障的商品。京东:中国第二大B2C电商平台&#xff0c;提供品质保证、正品保障的商品。苏宁易购: 中国家电连锁巨头苏宁旗下的…

玩机进阶教程------修改gpt.bin分区表地址段 完全屏蔽系统更新 fast刷写分区表 操作步骤解析【二】

上期博文简单说明了分区表的基本常识。我们在有些环境中需要屏蔽手机的系统更新选项。除了以前博文中说明的修改系统更新下载文件夹的方法。还可以通过修改分区表类达到目的。在一些辅助维修工具上面带修改分区表功能。修改后效果为屏蔽系统更新和可以恢复出厂。原则上不深刷都…

STP----生成树协议

目的&#xff1a;解决二层环路问题 跨层封装 广播风暴---广播帧在二层环路中形成逆时针和顺时针转动环路&#xff0c;并且无限循环&#xff0c;最终造成设备宕机&#xff0c;网络瘫痪。 MAC地址表的翻摆&#xff08;漂移&#xff09;---同一个数据帧&#xff0c;顺时针接收后记…

pytorch学习笔记2

首先如果遇到conda找不到包&#xff0c;pip老是超时的情况建议添加一下镜像源 conda的 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ cond…

将 cuda kernel 编译成 ptx 和 rocm的hip asm

1&#xff0c;cuda 源码编译 cuda_a_one.cu __global__ void NNNNNVVVVV_one(int *A) {A[333] 777; }编译命令&#xff1a; %.ptx: %.cu nvcc -archsm_70 -ptx $< -o $ 生成的结果&#xff1a; 2, hip 源码编译 hip_a_one.hip__global__ void AAAAAMMMMM_one(int *A…

docker安装Mysql5.7版本

首先Linux系统已经安装好了docker应用。 1.搜索镜像 docker search mysql 2.拉取5.7的镜像 总之,选starts最多的那个就对了。 docker pull mysql:5.7 ~ docker pull mysql:5.7 5.7: Pulling from library/mysql fc7181108d40: Downloading [============> …

基于Spring前后端分离版本的论坛系统-自动化测试

目录 前言 一、测试环境 二、环境部署 三、测试用例 四、执行测试 4.1、公共类设计 创建浏览器驱动对象 测试套件 释放驱动类 4.2、功能测试 注册页面 登录页面 版块 帖子 用户个人中心页 站内信 4.3、界面测试 注册页面 登录页面 版块 帖子 用户个人中心页…

Ubuntu基础使用

快捷键&#xff1a; 命令行打开快捷方式&#xff1a;Ctrl Alt T Ctrl l 清屏 截屏&#xff1a; LinuxOS命令&#xff1a; 显示当前工作目录所有内容&#xff1a;ls &#xff08;-a -l、-lh&#xff09; -a 输入全部内容&#xff08;包括隐藏文件&#xff09; -l 竖向展示…

算法每日一题(python,2024.05.26) day.8

题目来源&#xff08;力扣. - 力扣&#xff08;LeetCode&#xff09;&#xff0c;简单&#xff09; 解题思路&#xff1a; 双指针&#xff0b;交换&#xff0c;使用left和right两个指针&#xff0c;right指针向右移动&#xff0c;left从数组首位开始&#xff0c;当right找到非…

【字典树(前缀树) 哈希映射 后序序列化】1948. 删除系统中的重复文件夹

本文涉及知识点 字典树&#xff08;前缀树) 哈希映射 后序序列化 LeetCode 1948. 删除系统中的重复文件夹 由于一个漏洞&#xff0c;文件系统中存在许多重复文件夹。给你一个二维数组 paths&#xff0c;其中 paths[i] 是一个表示文件系统中第 i 个文件夹的绝对路径的数组。 …

Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解

系列文章目录 Django入门全攻略&#xff1a;从零搭建你的第一个Web项目Django ORM入门指南&#xff1a;从概念到实践&#xff0c;掌握模型创建、迁移与视图操作Django ORM实战&#xff1a;模型字段与元选项配置&#xff0c;以及链式过滤与QF查询详解还在写0.0… 文章目录 系列…

Arxiv AI 综述列表(2024.05.27~2024.05.31) VLM

公众号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 每周末更新&#xff0c;完整版进群获取。 Q 群在群文件&#xff0c;VX 群每周末更新。 目录 1. An Introduction to Vision-Language Modeling …

Semaphore信号量限制访问

文章目录 什么是Semaphore使用Semaphoreacquire函数release函数 什么是Semaphore Semaphore是一个计数信号量&#xff0c;用于控制同时访问特定资源的线程数量&#xff0c;以维护资源的访问控制和确保系统的线程安全。Semaphore可以被视为一个包含若干许可&#xff08;permit&a…

网络分层与各层网络协议介绍

一.OSI七层模型 1.OSI&#xff08;Open Systems Interconnection&#xff09;七层模型是由国际标准化组织&#xff08;ISO&#xff09;提出的一种网络通信协议的参考模型&#xff0c;用于标准化网络通信的过程。 OSI模型将网络通信分为七个层次&#xff0c;每个层次负责不同的…

ChatGPT产品创意,直接出概念图

直接问&#xff0c;“给我一个创意点子” AI7号 它推荐我做一个智能家居植物管理系统&#xff0c;嗯&#xff0c;很小众的样子。直接让它出一张概念图吧。 像模像样&#xff0c;一张图太单薄了&#xff0c;再来5张。 呃...做了4张&#xff0c;下面还有每张图的说明。 你觉得怎…

SpringBoot-世界杯足球赛网站-28567

Springboot世界杯足球赛网站 摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对世界杯足球赛…

zabbix事件告警监控:如何实现对相同部件触发器告警及恢复的强关联

有一定Zabbix使用经验的小伙伴可能会发现&#xff0c;接收告警事件时&#xff0c;其中可能包含着大量不同的部件名&#xff0c;同一部件的事件在逻辑上具有很强关联性&#xff0c;理论上应保持一致的告警/恢复状态&#xff0c;但Zabbix默认并未对它们进行关联&#xff0c;直接后…

HarmonyOS鸿蒙学习笔记(27)resources目录说明

resources目录说明 目录结构目录说明base目录rawfile目录resfile目录资源组目录 参考资料 目录结构 在HarmonyOS的项目结构中&#xff0c;有resources目录&#xff0c;用于存放应用/服务所用到的资源文件&#xff0c;如图形、多媒体、字符串、布局文件等。关于资源文件&#x…