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 はキーと値のペアを維持できるだけでなく、挿入順序も記憶できるためです。
|
<<: 自動運転技術が盛んに進歩していますが、実際に道路上で実用化されるまでにはどれくらい時間がかかるのでしょうか?
>>: ニューラルネットワークの内部はどのようになっているのでしょうか?
AI は、ネットワークとデバイスが過去の決定から学習し、将来のアクティビティを予測し、パフォーマン...
[[200338]]私もディープラーニングの初心者です。この記事はあくまでも私の個人的な意見です。私...
元のアルゴリズムに並列戦略を適用するのは難しいため、他のアルゴリズムのバリアントである pegaso...
[[204618]]今年のAppleカンファレンスでは、iPhone Xの「フロントバン」が観客の...
近年、人工知能は急速に発展し、熱い議論を巻き起こしています。人工知能が人間に取って代わるかどうかが注...
この記事では、機械学習の知識を広め、機械学習で何ができるのか、どのように行うのかを簡単に紹介します。...
著者: Yajie Yingliang、Chen Long 他導入美団のフードデリバリー事業が成長を...
今日、あらゆる業界にとって、「マルウェアを効果的に検出する方法」は、ネットワーク セキュリティに関す...
8月18日、百度とCCTVニュースは共同で「百度ワールド2021」カンファレンスを開催し、AIが何千...
翻訳者 | 朱 仙中校正 | 梁哲、孫淑娟プロジェクト紹介類似画像検索とは、関連するあらゆる画像を検...
ドイツ、米国、フランスの研究者で構成された研究チームは、10万枚以上の画像を使用して、畳み込みニュー...
ニューラル ネットワークは、これまでに発明された最も美しいプログラミング パラダイムの 1 つです。...