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

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

● 给定一个硬币系统 ,若使其为典范硬币系统,则要求其各相邻面值比例 ,及各开区间 内各金额 (非面值)的余数覆盖成本 小于相邻面值比例 ,即 ,其中,。当余数覆盖成本大于相邻面值比例时,即 时,需插入相邻面值构成的开区间 之间的某个金额作为新增面值优化原硬币系统。若优化后导致相邻面值比例不达标,即小于 2 了,需整体重构层级。

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

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

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

|-----------------------------|----------------------------------------------|-----------------------------------------------------|-----------------------------------------------------|
| 硬币系统 {1,5,11}区间 | 余数覆盖成本 | 相邻面值比例 | |
| 相邻面值 1 元和 5 元 构成的开区间(1,5) | f(2)=2(2枚1元) | 5/1=5 | 2≤5?(√) |
| 相邻面值 1 元和 5 元 构成的开区间(1,5) | f(3)=3(3枚1元) | 5/1=5 | 3≤5?(√) |
| 相邻面值 1 元和 5 元 构成的开区间(1,5) | f(4)=4(4枚1元) | 5/1=5 | 4≤5?(√) |
| 相邻面值 5 元和 11 元 构成的开区间(5,11) | f(6)=2(1枚5元,1枚1元) | 11/5=2.2 | 2≤2.2?(√) |
| 相邻面值 5 元和 11 元 构成的开区间(5,11) | f(7)=3(1枚5元,2枚1元) | 11/5=2.2 | 3≤2.2?(错误 ) |
| 相邻面值 5 元和 11 元 构成的开区间(5,11) | f(8)=4(1枚5元,3枚1元) | 11/5=2.2 | 4≤2.2?(错误 ) |
| 相邻面值 5 元和 11 元 构成的开区间(5,11) | f(9)=5(1枚5元,4枚1元) | 11/5=2.2 | 5≤2.2?(错误 ) |
| 相邻面值 5 元和 11 元 构成的开区间(5,11) | f(10)=2(2枚5元) | 11/5=2.2 | 2≤2.2?(√) |

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

相关推荐
小邓儿◑.◑8 小时前
贪心算法 | 每周8题(三)
算法·贪心算法
电子_咸鱼18 小时前
LeetCode——Hot 100【电话号码的字母组合】
数据结构·算法·leetcode·链表·职场和发展·贪心算法·深度优先
gsfl1 天前
贪心算法1
算法·贪心算法
YY_TJJ2 天前
算法题——贪心算法
算法·贪心算法
M17迪Pq:00072 天前
学会“做减法”之--用户体验优化
人工智能·贪心算法·产品运营·动态规划·软件工程
铭哥的编程日记5 天前
贪心算法精选30道编程题 (附有图解和源码)
算法·贪心算法
哈泽尔都8 天前
运动控制教学——5分钟学会PRM算法!
人工智能·单片机·算法·数学建模·贪心算法·机器人·无人机
Miraitowa_cheems9 天前
LeetCode算法日记 - Day 68: 猜数字大小II、矩阵中的最长递增路径
数据结构·算法·leetcode·职场和发展·贪心算法·矩阵·深度优先
Mr.Ja10 天前
【LeetCode热题100】No.11——盛最多水的容器
算法·leetcode·贪心算法·盛水最多的容器