(1)fifo:first in first out,先進先出
(2)lru:least recently used,最近最少使用
(3)lfu:least frequently used,最不經常使用
fifo表示先進先出,類似於對列,在資料的結構上使用對列來實現。
結構圖:
1. 新訪問的資料插入fifo佇列尾部,資料在fifo佇列中順序移動;
2. 淘汰fifo佇列頭部的資料;
lru表示很少使用演算法,其核心思想是「如果資料最近被訪問過,那麼將來被訪問的機率也更高」。
最常見的實現是使用乙個鍊錶儲存快取資料,結構圖如下:
1. 新資料插入到鍊錶頭部;
2. 每當快取命中(即快取資料被訪問),則將資料移到鍊錶頭部;
3. 當鍊表滿的時候,將鍊錶尾部的資料丟棄。
lru和lfu的區別:
lfu演算法是根據在一段時間裡資料項被使用的次數選擇出最少使用的資料項,即根據使用次數的差異來決定。而lru是根據使用時間的差異來決定的。
lfu表示最不經常使用的演算法,其核心思想是「如果資料過去被訪問多次,那麼將來被訪問的頻率也更高」。
結構圖:
1. 新加入資料插入到佇列尾部(因為引用計數為1);
2. 佇列中的資料被訪問後,引用計數增加,佇列重新排序;
3. 當需要淘汰資料時,將已經排序的列表最後的資料塊刪除。
參考:
A 演算法總結
1 把起點加入 open list 2 重複如下過程 a 遍歷 open list 查詢 f 值最小的節點,把它作為當前要處理的節點。b 把這個節點移到 close list c 對當前方格的 8 個相鄰方格的每乙個方格?如果它是不可抵達的或者它在 close list 中,忽略它。否則,做如下操作...
演算法導論 排序演算法總結
從六月初開始看演算法導論,陸陸續續看了有2個月了,但實際看的時間只有半個月左右。這期間都忙著找導師 期末考試,同時還回家修養了十來天。真正專心的看演算法是在離家返校後,由於沒有考試和作業的煩惱,天天都沉浸在演算法中,感覺效率較高。這段時間學到的東西較多,下面來總結一下 比較排序有 插入排序法 合併排...
回溯演算法 演算法總結(四)
回溯算法也叫試探法,它是一種系統地搜尋問題的解的方法。回溯演算法的基本思想是 從一條路往前走,能進則進,不能進則退回來,換一條路再試。用回溯演算法解決問題的一般步驟為 1 定義乙個解空間,它包含問題的解。2 利用適於搜尋的方法組織解空間。3 利用深度優先法搜尋解空間。4 利用限界函式避免移動到不可能...