当前课程知识点:算法设计与分析 >  4 Greedy Algorithms >  4.1 Coin Changing >  Coin Changing

返回《算法设计与分析》慕课在线视频课程列表

Coin Changing在线视频

Coin Changing

下一节:Interval Scheduling

返回《算法设计与分析》慕课在线视频列表

Coin Changing课程教案、知识点、字幕

在这一章 我们学习贪婪算法

什么是贪婪算法呢

顾名思义 就是用贪婪的方式去求解问题

对于困难复杂的问题

我们经常把大问题拆分成小问题

化繁为简 化难为易

我们先来看一个例子

在超市里 我们经常遇到找零钱的问题

我们以美国的货币为例

来看一下

美国的硬币共有

一分 五分 一毛 两毛五 一元 五种

如何用最少数量的硬币

来支付一个给定的数额呢

比如要支付三毛四

我们可以用一个两毛五

一个五分 四个一分来支付

这种支付方式是最少数目的吗

我来看看收银员的算法

他是一步一步的来支付

每一步呢

支付当前可支付的最大面额的硬币

比如要支付2块8毛9

他呢 先支付一个一元

再支付一个一元

余下的八毛九

当前可支付的最大面额的硬币是两毛五

可以支付三个

再支付一个一毛

然后四个四分

我们先给出这个算法的伪代码

实际上我们处理的是更一般的情况

假设有n种硬币

我们先把这n种硬币按照它的面值

从小到大进行排列

令S是我们准备支付的硬币的集合

如果 目前要支付的金额x是大于零的

令k是当前面额不超过x的

最大面值的硬币

如果没有这样的硬币k 那么我们就返回无解

否则我们就支付这个硬币

并且把待支付的金额修改为x减去c_k

之后返回要支付硬币的集合S

这个算法是最优的吗

我们来证明

对于美国的硬币系统

包含一分 五分 一毛 两毛五 一元的情况

这个算法是最优的

我们对x进行归纳证明

当要支付的金额x介于ck和c_k+1之间

我们的算法将会支付硬币k

我们证明

任何的最优解中一定也包含硬币k

否则的话

她就需要用面值更小的硬币

取值c_1到c_k-1

来支付x的金额

下面的表格表明这种情况不会发生的

我们先来看一下

最优解它所具有的性质

在最优解中

一分钱的硬币数量一定不会超过四个

否则我们就可以用一个五分钱的硬币来替换

从而减少硬币的数目

五分钱硬币的数目不会超过一个

否则的话我们就可以用一毛钱的硬币

来做替换

五分钱和一毛钱的硬币数目不会超过两个

我们刚才说

五分钱的硬币数目不会超过一个

当有一个五分 两个一毛的情况

我们可以用一个两毛五的硬币来做替换

如果有三个一毛的硬币

我们可以用一个两毛五的硬币

和一个五分的硬币来做替换

另外 两毛五的硬币数量不会超过三个

否则 我们就可以用一元的硬币来做替换

有了这些性质

我们再来看一下c_k不同取值的情况

当c_k等于1

这已经是最小面额的硬币

不可能用更小面额的硬币来支付

当c_k等于5的时候

比它更小的面额的硬币是一分

而最优解中

一分的硬币最多有四个

所以呢 它至多能够支付四分钱

当c_k等于10的时候

比它更小面值的硬币最多能够支付

一个五分 四个一分 合计是九分

当c_k等于25的时候

比它更小面值的硬币最多能够支付

两个一毛 四个一分 合计二十四分

当c_k等于100的时候

用面值更小的硬币

最多可以支付三个两毛五

两个一毛 四个一分 合计九毛九分

所有这些可能的情况

能够支付的金额

都少于当前所要支付的金额

因此 最优解中一定包含c_k面值的硬币

然后再考虑x减去c_k

这是一个规模更小的问题

根据归纳法

我们得到所需的结论

我们证明了

收银员的算法

对于美国的硬币系统是正确的

但是当条件有一些改变以后

这个算法就不一定是最优的

我们来看一下美国的邮政系统的情况

美国的邮票面值分为一分 一毛

两毛一 三毛四 七毛

一元 三元五

十二元 两毛五 十五元

如果要支付的邮资是140分

按照我们收银员的算法

我们将支付一元 三毛四

以及六个一分

这总共需要七张邮票

而实际上最优解是两张七毛的邮票就足够了

算法设计与分析课程列表:

1 Introduction of Algorithm

-1.1 Introduction

--Introduction

-1.2 A First Problem: Stable Matching

--A First Problem: Stable Matching

-1.3 Gale-Shapley Algorithm

--Gale-Shapley Algorithm

-1.4 Understanding Gale-Shapley Algorithm

--Understanding Gale-Shapley Algorithm

-Homework1

-Lecture note 1

--Lecture note 1 Introduction of Algorithm

2 Basics of Algorithm Analysis

-2.1 Computational Tractability

--Computational Tractability

-2.2 Asymptotic Order of Growth

--Asymptotic Order of Growth

-2.3 A Survey of Common Running Times

--A Survey of Common Running Times

-Homework2

-Lecture note 2

--Lecture note 2 Basics of Algorithm Analysis

3 Graph

-3.1 Basic Definitions and Applications

--Basic Definitions and Applications

-3.2 Graph Traversal

--Graph Traversal

-3.3 Testing Bipartiteness

--Testing Bipartiteness

-3.4 Connectivity in Directed Graphs

--Connectivity in Directed Graphs

-3.5 DAG and Topological Ordering

--DAG and Topological Ordering

-Homework3

-Lecture note 3

--Lecture note 3 Graph

4 Greedy Algorithms

-4.1 Coin Changing

--Coin Changing

-4.2 Interval Scheduling

--Interval Scheduling

-4.3 Interval Partitioning

--Interval Partitioning

-4.4 Scheduling to Minimize Lateness

--Scheduling to Minimize Lateness

-4.5 Optimal Caching

--Optimal Caching

-4.6 Shortest Paths in a Graph

--Shortest Paths in a Graph

-4.7 Minimum Spanning Tree

--Minimum Spanning Tree

-4.8 Correctness of Algorithms

--Correctness of Algorithms

-4.9 Clustering

--Clustering

-Homework4

-Lecture note 4

--Lecture note 4 Greedy Algorithms

5 Divide and Conquer

-5.1 Mergesort

--Mergesort

-5.2 Counting Inversions

--Counting Inversions

-5.3 Closest Pair of Points

--Closest Pair of Points

-5.4 Integer Multiplication

--Integer Multiplication

-5.5 Matrix Multiplication

--Video

-5.6 Convolution and FFT

--Convolution and FFT

-5.7 FFT

--FFT

-5.8 Inverse DFT

--Inverse DFT

-Homework5

-Lecture note 5

--Lecture note 5 Divide and Conquer

6 Dynamic Programming

-6.1 Weighted Interval Scheduling

--Weighted Interval Scheduling

-6.2 Segmented Least Squares

--Segmented Least Squares

-6.3 Knapsack Problem

--Knapsack Problem

-6.4 RNA Secondary Structure

--RNA Secondary Structure

-6.5 Sequence Alignment

--Sequence Alignment

-6.6 Shortest Paths

--Shortest Paths

-Homework6

-Lecture note 6

--Lecture note 6 Dynamic Programming

7 Network Flow

-7.1 Flows and Cuts

--Flows and Cuts

-7.2 Minimum Cut and Maximum Flow

--Minimum Cut and Maximum Flow

-7.3 Ford-Fulkerson Algorithm

--Ford-Fulkerson Algorithm

-7.4 Choosing Good Augmenting Paths

--Choosing Good Augmenting Paths

-7.5 Bipartite Matching

--Bipartite Matching

-Homework7

-Lecture note 7

--Lecture note 7 Network Flow

8 NP and Computational Intractability

-8.1 Polynomial-Time Reductions

--Polynomial-Time Reductions

-8.2 Basic Reduction Strategies I

--Basic Reduction Strategies I

-8.3 Basic Reduction Strategies II

--Basic Reduction Strategies II

-8.4 Definition of NP

--Definition of NP

-8.5 Problems in NP

--Problems in NP

-8.6 NP-Completeness

--NP-Completeness

-8.7 Sequencing Problems

--Sequencing Problems

-8.8 Numerical Problems

--Numerical Problems

-8.9 co-NP and the Asymmetry of NP

--co-NP and the Asymmetry of NP

-Homework8

-Lecture note 8

--Lecture note 8 NP and Computational Intractability

9 Approximation Algorithms

-9.1 Load Balancing

--Load Balancing

-9.2 Center Selection

--Center Selection

-9.3 The Pricing Method: Vertex Cover

--The Pricing Method: Vertex Cover

-9.4 LP Rounding: Vertex Cover

--LP Rounding: Vertex Cover

-9.5 Knapsack Problem

--Knapsack Problem

-Homework9

-Lecture note 9

--Lecture note 9 Approximation Algorithms

10 Local Search

-10.1 Landscape of an Optimization Problem

--Landscape of an Optimization Problem

-10.2 Maximum Cut

--Maximum Cut

-10.3 Nash Equilibria

--Nash Equilibria

-10.4 Price of Stability

--Price of Stability

-Homework10

-Lecture note 10

--Lecture note 10 Local Search

11 Randomized Algorithms

-11.1 Contention Resolution

--Contention Resolution

-11.2 Linearity of Expectation

--Linearity of Expectation

-11.3 MAX 3-SAT

--MAX 3-SAT

-11.4 Chernoff Bounds

--Chernoff Bounds

-Homework11

-Lecture note 11

--Lecture note 11 Randomized Algorithms

Exam

-Exam

Coin Changing笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。