当前位置: 首页 > news >正文

典范硬币系统(Canonical Coin System)→ 贪心算法

【典范硬币系统】
● 典范硬币系统(Canonical Coin System)是指使用
贪心算法总能得到最少硬币数量解‌的货币面值组合‌

● 给定一个硬币系统 S={S_1,S_2,\cdots,S_i,S_{i+1},\cdots,S_n},若使其为典范硬币系统,则要求其各相邻面值比例 {\textcolor{red}{S_{i+1}/S_i \geq 2}},及各开区间 (S_i,S_{i+1}) 内各金额 r
非面值)的余数覆盖成本 f(r) 小于相邻面值比例 S_{i+1}/S_i,即 {\textcolor{red}{f(r) \leq S_{i+1}/S_i}},其中,r\in (S_i,S_{i+1})。当余数覆盖成本大于相邻面值比例时,即 f(r)>S_{i+1}/S_i 时,需插入相邻面值构成的开区间 (S_i,S_{i+1}) 之间的某个金额作为新增面值优化原硬币系统。若优化后导致相邻面值比例不达标,即小于 2 了,需整体重构层级。

余数覆盖成本,是指位于相邻硬币面值 S_i 与 S_{i+1} 之间的金额 r,通过更小面值硬币覆盖该金额所需的最小硬币数量 f(r)。余数覆盖成本是判断贪心算法有效性的关键指标,需通过层级比例约束与动态调整机制控制其阈值。满足条件的硬币系统(如人民币硬币系统)可高效使用贪心算法,否则需依赖动态规划‌

相邻面值比例优先级,高于余数覆盖成本。即典范硬币系统,必须先满足相邻面值比例 ≥2 的约束条件。


【实例分析】
给定一个硬币系统 {1,5,11},判断其是否为典范硬币系统。
首先,其各相邻面值比例均大于等于 2(5/1=5≥2,11/5=2.2≥2),符合要求。
其次,分析其各余数覆盖成本,列表如下。

硬币系统 {1,5,11}区间余数覆盖成本f(r)相邻面值比例S_{i+1}/S_if(r) \leq S_{i+1}/S_i
相邻面值 1 元和 5 元
构成的
开区间(1,5)
f(2)=2(2枚1元)5/1=52≤5?(√)
f(3)=3(3枚1元)5/1=53≤5?(√)
f(4)=4(4枚1元)5/1=54≤5?(√)
相邻面值 5 元和 11 元
构成的
开区间(5,11)
f(6)=2(1枚5元,1枚1元)11/5=2.22≤2.2?(√)
f(7)=3(1枚5元,2枚1元)11/5=2.23≤2.2?(错误
f(8)=4(1枚5元,3枚1元)11/5=2.24≤2.2?(错误
f(9)=5(1枚5元,4枚1元)11/5=2.25≤2.2?(错误
f(10)=2(2枚5元)11/5=2.22≤2.2?(√)

据表可知,此硬币系统 {1,5,11} 不满足典范硬币系统,故其不能通过利用贪心法求得最优解,只能采用动态规划求最优解。

 


http://www.mrgr.cn/news/96293.html

相关文章:

  • 【商城实战(93)】商城高并发实战:分布式锁与事务处理深度剖析
  • 如何一键安装所有Python项目的依赖!
  • GenBI 中如何引入 LLM 做意图路由,区分查数据还是闲聊
  • 【C#】Task 线程停止
  • 构建高可用性西门子Camstar服务守护者:异常监控与自愈实践
  • Audacity Nyquist插件开发:定义输入框和获取用户输入
  • #VCS# 关于 +incdir+xxx 编译选项的注意点
  • 【Zabbix技术系列文章】第①篇——基础入门
  • Selenium Web自动化如何快速又准确的定位元素路径,强调一遍是元素路径
  • rent8_wechat-新增提醒收租功能
  • SQL优化 | OceanBase是否遵循最左匹配原则?(三)
  • [异步监听事件、异步绑定属性]通过vue的this.$refs.组件.$props和.$on实现异步绑定组件属性和事件监听
  • Kubernetes》k8s》Containerd 、ctr 、cri、crictl
  • Redis:Hash 类型 内部实现、命令及应用场景
  • Redis:List 类型 内部实现、命令及应用场景
  • Java中的异常1
  • Go服务开发高手课(极客讲堂)
  • 一文详解k8s体系架构知识
  • 深入理解 dispatchEvent:前端事件触发的艺术
  • Audacity Nyquist插件开发:插件标头详解