バイナリツリートラバーサルの問題、時間と空間の複雑さ、制圧戦略アルゴリズム、LRUデータ構造、動的プログラミングアルゴリズム貪欲

  1. バイナリツリー、行きがけ、後順トラバーサルの先行順走査

    1. 先行順走査
      1. [ルート]についてのトラバーサル順序ルール
      2. ABCDEFGHK
    2. 予約限定!
      1. ルートを支配するトラバーサル順序[左右]
      2. BDCAEHGKF
    3. 後順
      1. [ルート]についてのトラバーサル順序ルール
      2. DCBHKGFEA
  2. 時間の複雑さと空間の複雑さとは何ですか

    1. 時間複雑
      1. これは、消費電流、アルゴリズムの実行時間を指し、
    2. 宇宙複雑
      1. 現在のアルゴリズムの実行を指しますが占有多くのメモリ容量を必要とし
    3. アルゴリズムの効率の評価は、その時の複雑さと空間の複雑さを見ることが主な理由です。そして、時には魚やクマの足の両方を持つことができませんので、我々はバランスから取得する必要があります
  3. 戦略を排除しているアルゴリズムは知っていますか?

  4. LRUアルゴリズムでは、あなたが選択したデータ構造の種類を実現できるようにする場合

    1. 原則LRUアルゴリズム(最低使用、最低使用):
      1. LRUの4つの実装
        1. LRU-K
          1. 原理:Kは、LRU-Kは、最も最近使用された回数を示し、したがってLRU LRU-1とみなすことができます。LRU-Kの主な目的は、問題を解決することを目的とする「キャッシュ汚染」LRUアルゴリズム、核となるアイデアは「最近使用一回」拡張するために、最近使用K回の基準であります
          2. 実装:LRU、LRU-Kに比べては、記録されたすべてのキャッシュされたデータをアクセスされている歴史のキューを維持するために、より多くを必要としています。アクセスデータの数は、K回に到達したときにのみ、キャッシュにデータを入れます。必要にデータを排除する場合、LRU-Kは、現在の最大データアクセス時間がタイムアウトした後、K番目に記載の方法。
            1. プロセス
              1. データが最初にアクセスされ、アクセス履歴リストに追加
              2. 履歴リスト内のデータへのアクセスは、Kの訪問に達しない場合は、特定のルール(FIFO、LRU)解消に従ってください
              3. データアクセス履歴キューがK倍に達したアクセス数は、インデックスデータは、履歴キューから削除されると、バッファキュー、およびデータキャッシュにデータを移動し、キャッシュキューの再発注時まで
              4. キャッシュデータキューが再度アクセスされた後、並べ替え
              5. データバッファキュー行を除去する必要性は、現在最も古いデータから最後から二番目のK訪問のうち、すなわち、データの終わりに段階的に廃止するとき
          3. LRU-Kがヒット率LRUより高いによって引き起こされるキャッシュ汚染の問題を低減し、彼はプライオリティキュー、アルゴリズムの複雑さとコストが比較的高いです
          4. 考察:
            1. また、LRU-K以来アクセスする必要があるが、オブジェクトのキャッシュに配置されていないので、メモリ消費がLRUレコードよりもあろうもの、大量のデータ、メモリの消費量が大きいであろう場合
            2. 彼は時間に基づいてソートする必要があります(注文時の間に段階的に廃止することができ、あなたは即座に並べ替えることができます)、CPUの消費量は、LRUよりも高くなります
        2. 2つのキュー(2Q)
          1. 原則:LRU-2アルゴリズムは、LRU-2 2Qアクセス履歴キューアルゴリズムは(これは、データをキャッシュされていないことに注意してください)FIFOバッファキュー2Qアルゴリズムは、2つのバッファキュー、他のFIFOキューを持っているに変更されていることを除いて、似ていますLRUキューです
          2. 実装:第二のデータにアクセスするとき、データバッファ内の最初のI質問、2QアルゴリズムFIFOキューのデータは、データがLRUキュー内部FIFO待ち行列から移動され、各キュー2に従ってデータのうち、自分の道
            1. 実装プロセス
              1. 新しいアクセスデータは、FIFOキューに挿入されます
              2. FIFO内のデータがアクセスされていない場合は、再度、その後、最終的にFIFOの規則に従って段階的に廃止
              3. データはその後、FIFOキューに再度アクセスした場合、データはLRUキューの先頭に移動されます
              4. データ切断LRUキューが再度アクセスされ、それはLRUキューの先頭にデータを移動します
              5. データの終わりのうちLRUキュー
        3. マルチキュー(MQ)
          1. 原則:MQアルゴリズム複数のキューへのデータのアクセス頻度に基づいて、異なるキューは、異なるアクセス優先権を持っている、核となるアイデアはこれです:多くの訪問優先キャッシュデータ
          2. 達成:複数のキューに分けMQアルゴリズムLRUキャッシュ、異なるアクセス優先度に対応する各キュー。アクセス優先度は訪問の数に基づいて計算されます
        4. LRU
          1. 原理:履歴データのアクセス記録に基づいてデータを排除するためのアルゴリズムは、核となるアイデアは、「データが最近訪問された場合には、将来のアクセスの確率が高くなります。」です
          2. 実装:最も一般的には達成することであるキャッシュデータを格納するためのリンクリストを使用することです
            1. プロセス
              1. リストの先頭に挿入ブック
              2. たびキャッシュヒット(つまり、キャッシュされたデータがアクセスされたとき)、リストの先頭に移動します
              3. リストがいっぱいになると、リンクされたリストデータの尾が破棄されます
  5. 動的なプログラミングと貪欲法は、それを知っています

    1. ダイナミックプログラミング
      1. グローバル最適解は局所最適解を含まなければならないが、局所最適解が含まれているとは限らないの前に、そのすべての最適解を前に記録する必要があります
      2. キー動的プログラミングは、状態遷移方程式、すなわち、どのように全体的に最適な解を導出するために得られた局所最適解を使用することです
      3. 境界条件:それは最も簡単な、局所的な最適解を直接求めることができるです
    2. 貪欲アルゴリズム
      1. 常に現在の問題解決を参照するには時間が最良の選択肢であることを確認、それは全体のベストと考えるべきではない、と言うことです、彼は最適解の部分的にしか意味を成し
      2. 作られて貪欲な意思決定のすべてのステップは、貪欲な意思決定が最適解は、次のステップに最適解から導出されているため、変更することはできませんが、最適解の前に、前のステップで保持されていません
      3. 右の条件貪欲アルゴリズム:各ステップの最適解は、前のステップの最適解を含まなければなりません
    3. 共通:すべての再帰的なアルゴリズムは、グローバルな最適解を導出する局所最適解であります

おすすめ

転載: www.cnblogs.com/tulintao/p/11576221.html