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 はキーと値のペアを維持できるだけでなく、挿入順序も記憶できるためです。
|
<<: 自動運転技術が盛んに進歩していますが、実際に道路上で実用化されるまでにはどれくらい時間がかかるのでしょうか?
>>: ニューラルネットワークの内部はどのようになっているのでしょうか?
[[411043]]コンピュータサイエンスの卒業生にとって、アルゴリズム関連の職は基本的に「高給」と...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
10年前に放映されたアメリカのテレビシリーズ「ブラックミラー」の第1話のタイトルは「Be Right...
スマート ビルディングの観点から見ると、AI は多くの居住者向けテクノロジーに統合され、建物やキャン...
ディープラーニング:幾何学的視点ディープラーニングに関する最も驚くべき事実は、それがいかにシンプルで...
機械知能、現実と仮想の境界線の曖昧化、そしてインターネットの継続的な進化は、私たちの生活に根本的な影...
フロリダ州中部にある、約12万5000人の住民を抱えるザ・ビレッジの退職者コミュニティには、約750...
好きなアニメ小説のキャラクターとチャットしてみませんか?バーチャルコンパニオンが欲しいですか?あなた...
[[270607]]看護師は医療現場を問わず需要が高いです。米国労働統計局の報告によると、看護師の求...
人工知能(AI)や機械学習の分野では、「ブラックボックス」という概念が常に大きな注目を集めています。...
機械学習モデルが現実世界でますます使用され、導入されるようになると、AI の意思決定は人々の日常生活...