LRU は Least Recently Used の略で、よく使われるページ置換アルゴリズムです。長い間使われていないページを削除します。実は、これも非常にシンプルで、人気のないページを適時に削除して、トイレを占領してリソースを無駄にしないようにするものです。 LRU は一般的なページ置換アルゴリズムです。コンピューティングでは、すべてのファイル操作をメモリ内で実行する必要があります。ただし、コンピュータのメモリのサイズは固定されているため、すべてのファイルをメモリにロードすることはできません。そのため、メモリに追加されるファイルを選択する戦略を開発する必要があります。 一般的なページ置換アルゴリズムは次のとおりです。
LRU原則 LRU の設計原則は、データが最近の期間に頻繁にアクセスされた場合、将来も頻繁にアクセスされるというものです。つまり、頻繁にアクセスされるデータであれば、すぐにヒットするようにする必要があり、頻繁にアクセスされないデータであれば、容量が制限を超えたときに削除する必要があります。 コアはスタックを使用して操作を実行することであり、主にgetとputの2つの操作が含まれます。 得る 取得時に、スタック内に値がある場合は、その値のキーがスタックの先頭に移動され、ない場合は null が返されます。 置く スタックがいっぱいでないとき、スタックに入れるキーがあれば、そのキーに対応する値を更新し、キーの値をスタックの一番上に持ってきます。入れるキーがない場合は、そのままスタックにプッシュします。 スタックがいっぱいになったとき、スタックに入れるキーがある場合は、このキーに対応する値を更新し、キーの値をスタックの一番上に置きます。スタックに入れるキーがない場合は、スタックの一番下の要素を削除し、値をスタックの一番上に置きます。 解決策:配列を維持し、get メソッドと put メソッドを提供し、最大数を制限します。 get を使用すると、要素を最近使用したものとしてマークし、最初の項目に昇格させることができます。 put はキー値を追加できますが、最大制限に達したかどうかを判断する必要があります。 達していない場合は、配列の最初の項目に直接挿入できます。 最大制限 max に達した場合は、データの末尾の要素を削除する必要があります。
LRUアルゴリズムの設計 上記の操作プロセスを分析すると、putメソッドとgetメソッドの時間計算量をO(1)にするために、キャッシュデータ構造に必要な条件として、高速検索、高速挿入、高速削除、および順序をまとめることができます。 明らかに、キャッシュは最近使用されたデータと長い間使用されていないデータを区別するためにソートされる必要があるため、キーがすでに存在するかどうかを確認するためにキャッシュを調べる必要があり、容量がいっぱいの場合は最後のデータを削除する必要があり、各アクセスではデータをキューの先頭に挿入する必要もあります。 では、上記の条件を同時に満たすデータ構造は何でしょうか? ハッシュ テーブルは検索が高速ですが、データには固定の順序がありません。リンク リストには順序があり、挿入と削除は高速ですが、検索は低速です。そこで、これらを組み合わせて、ハッシュ リンク リストという新しいデータ構造を形成します。 LRU キャッシュ アルゴリズムのコア データ構造は、二重リンク リストとハッシュ テーブルを組み合わせたハッシュ リストです。このデータ構造は次のようになります。 js実装
leetCode 146 テストに合格しました。実行時間: 720 ミリ秒。メモリ使用量: 58.5 MB。
実際には、上記のアプローチにはバリエーションがあります。オブジェクトを使用してキーと値のペアを保存し、配列を使用してキーの順序を保存できます。
時間の計算量は O(1) なので、配列を走査してキー値を見つけることはできません。 ES6 の Map を使用するとこの問題を解決できます。Map はキーと値のペアを維持できるだけでなく、挿入順序も記憶できるためです。
|
<<: 自動運転技術が盛んに進歩していますが、実際に道路上で実用化されるまでにはどれくらい時間がかかるのでしょうか?
>>: ニューラルネットワークの内部はどのようになっているのでしょうか?
執筆者 | Yan Zheng制作:51CTO テクノロジースタック(WeChat ID:blog)...
現在、人工知能の開発は引き続き盛んに行われており、新世代の科学技術革命の先駆者となりつつあります。米...
AI トレンドがあらゆるところで広がる 2021 年を迎える準備はできていますか? ここでは、202...
ルール研究所の研究者らは、XML 暗号化プロトコルに重大なセキュリティ上の脆弱性を発見し、シカゴで開...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
インテリジェント コンピューティング センターを「誰でもアクセス可能かつ無料」にする時が来ています。...
Microsoft の人工知能チャットボット Bing Chat が、Google Chrome お...
今日では、人々の仕事や生活のあらゆる側面がテクノロジーによって支援されています。人工知能はそのような...
人工知能の時代音声、指紋、顔認識など。 AI技術は飛躍的に進歩している犯罪者もこれに気づいているこの...
ここ2日間、アメリカ人女性歌手テイラー・スウィフトが中国語を話す短い動画が、さまざまなソーシャルプラ...
[[200112]]編集者注: チャットボットは目新しいものではありません。Facebook や ...
ほとんどの人は 2 つのグループに分かれます。これらの機械学習アルゴリズムが理解できません。アルゴリ...
色をどのように表現するか考えたことはありますか?最新の研究によると、人間は個別の記号を使用して領域の...