电脑存储器空间的大小固定,无法容纳服务器上所有的文件,所以当有新的文件要被置换入缓存时,必须根据一定的原则来取代掉适当的文件。此原则即所谓缓存文件置换机制。
缓存文件置换方法有:
- 先进先出算法(FIFO):最先进入的内容作为替换对象
- 最近最少使用算法(LFU):最近最少使用的内容作为替换对象
- 最久未使用算法(LRU):最久没有访问的内容作为替换对象
- 非最近使用算法(NMRU):在最近没有使用的内容中随机选择一个作为替换对象
去年在搬瓦工买了一年的洛杉矶的VPS,用v2ray,注册了一个域名,开始很谨慎,用websocket伪装,用了几天,速度实在是慢。
于是我从websocket换成了KPS协议,速度快的飞起,youtube 1080P毫无压力,A few moments later。。。。。
被墙了。
矩阵链乘积(英语:Matrix chain multiplication,或Matrix Chain Ordering Problem,MCOP)是可用动态规划解决的最佳化问题。给定一序列矩阵,期望求出相乘这些矩阵的最有效方法。此问题并不是真的去执行其乘法,而只是决定执行乘法的顺序而已。
因为矩阵乘法具有结合律,所有其运算顺序有很多种选择。换句话说,不论如何括号其乘积,最后结果都会是一样的。例如,若有四个矩阵ABCD,将可以有:
ABCD=(AB)(CD)=A(BCD)=A(BC)D=…
但括号其乘积的顺序是会影响到需计算乘积所需简单算术运算的数目,即其效率。例如,设A为一10 X 30矩阵,B为30 X 5矩阵与C为5 X 60矩阵,则:
明显地,第一种方式要有效多了。既然已确认过此问题了,那要如何决定n个矩阵相乘的最佳顺序呢?可以比较每一顺序的运算量(使用蛮力),但这将需要时间O(2n),是一种非常慢且对大n不实在的方法。那解决方法,如我们将看到的,是将问题分成一套相关的子问题。以解答子问题一次而再使用其解答数次,即可以彻底地得出其所需时间。此一方法称为动态规划。
N个矩阵(A1,A2,A3,,,An)链乘的最佳顺序,对于这个问题,它的子问题是什么?如何将它拆分成更小的子问题呢?
可以将这N个矩阵分成两部分,第一部分的最佳顺序是一个子问题,第二部分的最佳顺序也是一个子问题。那这两个子问题和大问题又如何建立联系呢?
将N个矩阵分成两部分,有多种不同的划分方法,三个矩阵链乘有2种划分方法:(AB)C和A(BC)
我们去尝试所有的划分方法,求得每种划分方法需要的计算数,取最小的作为N个矩阵链乘的最优解。
划分而得的两部分又可以拆分成更小的子问题,这时候动态规划就能发挥威力,我们自下而上去求解,将求得的结果存在一张表中,方便复用。
由此可见,动态规划问题的主要求解思路就是如何寻找最优解问题的子问题,以及如何将大问题和子问题联系起来。