当前课程知识点:算法设计与分析 >  4 Greedy Algorithms >  4.5 Optimal Caching >  Optimal Caching

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

Optimal Caching在线视频

下一节:Shortest Paths in a Graph

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

Optimal Caching课程教案、知识点、字幕

下面我们来学习最优缓存问题

缓存中可以存放k个元素

有m个要访问的要求依次到达

记为d_1,d_2,…d_m

如果缓存中存在当前要访问的元素

那么我们就称为缓存命中

如果访问的元素没有被存储于缓存中

我们必须剔除已存在的某个元素

加入要访问的元素

这称为缓存未命中

我们的目标是

制定一个更新缓存的计划

使得剔除的操作次数最少

比如下面例子中k等于2

初始缓存为ab

需求序列为abcbcaab

第一轮a的访问要求可以满足

第二轮b的访问要求也可以满足

第三轮c不在缓存中

我们把a剔除 加入c

进行一次剔除操作

第四轮b在缓存中

第五轮c在缓存中

第六轮a不在缓存中

剔除c 加入a

如此依次进行

共有两次剔除操作

对于最有缓存的问题

我们设计这样的贪婪算法

剔除缓存中下一次访问需求最远的元素

我们简称这个算法为FF算法

比如当前的缓存内容为abcdef

访问需求为g

不在缓存中

我们看一下

缓存中的元素

在访问队列中下一次出现最晚的是f

我们就将f从缓存中剔除

下面我们来证明这个算法

对于最优缓存问题来说是最优的

算法和结论是符合直觉的

但是 证明却很精巧

如果一个方案中

我们只有在需要一个元素的时候

才把它加入到缓存

我就称这个方案是简化的

直觉上来说

对于一个未简化的方案

我们可以把它转换为一个简化的方案

而不增加剔除的次数

比如说 在这个例子中

第二轮 a的访问要求能够得到满足

但是它剔除了b 加入了x

在第三轮 c的要求能得到满足

但是它剔除了x 加入了d

在第四轮 d的访问要求也能满足

但它剔除了c 加入了b

第五轮 a的要求能得到满足

但是它剔除了d 加入了c

在下一轮b的要求也能够得到满足

但是它剔除了c 加入了x

我们看到 一共进行了五次剔除

实际上要完成同样的任务

我们可以用这样的方式

在第四轮

对于d的访问要求不能够得到满足时

剔除b 加入d

第六轮 b的访问要求不能得到满足时

把c去掉 加入b

再下一轮

去掉d 加入c

我们总共用了三次剔除操作

满足了上面的所有的访问要求

我们将证明

对于任何未简化的方案

我们可以把它转化为一个简化的方案

而不增加剔除的次数

假设 方案S

在时刻t 把d加入缓存

而当前没有对d的访问要求

令c是S中同时被剔除的元素

我们证明 可以在t时刻不做c和d的交换

如果方案S中对d的操作之前

这里包括访问和剔除

c在某一步又被加回来

我们可以在这一步把d加入

剔除同样的元素

之后进行相同的操作

这样剔除的次数减少了一次

下面我们分情况来讨论

在d被操作之前

元素c未被重新加入

第一种情况 在对d的访问要求之前

我们在时刻t'

又把d剔除 加入了元素e

我们可以在这一步剔除c 加入e

从而减少了一次剔除的操作

第二种情况 在d被剔除之前

有访问d的要求

那么我们在这一步

剔除c 加入d

剔除的次数没有增加

但是这个方案更加简化

我们一直做下去

或者可以减少剔除的次数

或者可以使得方案更加简化

最后我们一定可以得到一个简化的方案

下面证明算法的最优性

我们用归纳法来证明

存在一个最优的方案S

它与ff算法

前j+1步的操作是完全相同的

令S是一个简化的最优方案

它前j步和ff算法采用相同的操作

我们将得到S'

它的前j+1步和FF算法采用相同的操作

考虑 第j+1个需求d

到目前为止

S和FF算法的操作是完全一样的

所以缓存中的内容也完全相同

第一种情况

如果d在缓存中

那么S和FF算法都不做任何的操作

我们令S'=S

第二种情况

d不在缓存中

S和FF算法都剔除了同样的元素

那么在这一步

它们又是完全相同的

我们令S'=S

第三种情况

d不在缓存中

S加入了d 剔除了f

FF算法加入d 删除了e

这个e是不等于f的

令S'前j步和S相同

在这一步和FF算法相同

也就是说

它也删除e 加入d

之后S'和S执行相同的操作

直到时刻j'

它们必须执行不同的操作

此时一定是要涉及e或者是f

令g是此时的访问要求

我们分三种情况来讨论

第一种情况g=e

这是不会发生的

因为在FF算法中

j时刻之后

对f的访问要求一定是在e的前面

第二种情况

g=f

元素f不在S的缓存中

令e'是S要剔除的元素

如果e'=e的话

S'的缓存中包含f

不做任何操作

与S有相同的缓存

如果e'不等于e

S'可以剔除e' 加入e

也与S有相同的缓存

虽然这个方案不是简化的

但是可以转化为一个简化的方案

并和FF算法前j+1步的操作是相同的

最后一种情况

g不等于e,f

S一定是剔除e

令S'剔除f

现在S与S'有相同的缓存

综合上面的讨论

我们得到了所要的结论

对于缓存问题

有两个版本

在线版本和离线版本

对于离线版本

我们事先知道需求序列

对于在线版本

需求序列是逐一释放的

不是事先已知的

缓存问题是计算机科学领域里

一个最基本的问题

对于在线版本

我们只能利用已经发生的信息

LIFO策略

它剔除最近被加入的元素

LRU策略 剔除上一次访问最早的元素

对于离线版本

我们已经证明了FF算法是最优的

对在线的缓存问题来说

LRU是k竞争的

而LIFO可以是任意坏的

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

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

Optimal Caching笔记与讨论

也许你还感兴趣的课程:

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