Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

5.1 techniques of amortized analysis

738 views

Published on

Published in: Technology
  • Be the first to comment

5.1 techniques of amortized analysis

  1. 1. 12/10/16 (1) Study/PFDS/5.1-Techniques of Amortized Analysiskinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 1/12
  2. 2. 12/10/16 (1) 5.1 Techniques of Amortized Analysis ・全体の操作が O(n) であることが証明できればいい (O(log n) や O(n) の操 作が混じっていてもいい) ・すべての操作についていちいち O(1) を証明する必要はないkinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 2/12
  3. 3. 12/10/16 (1) 考え方 1.最初に、個々の操作の「ならしコスト a_i」を定義する。 2.長さ m の任意の操作列に対して、以下を証明する。 sum_{i=1}^{m} {a_i} geq sum_{i=1}^{m} {t_i} a_i:ならしコスト, t_i:実コスト, m:操作の数 2’.通常は、以下を証明する sum_{i=1}^{j} {a_i} geq sum_{i=1}^{j} {t_i} a_i:ならしコスト, t_i:実コスト, j:m 以下の任意の自然数kinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 3/12
  4. 4. 12/10/16 (1) accumulated savings ・総ならしコストから総実コストを引いたものが accumulated savings (預金総 額) ・任意の途中段階で預金総額が非負 Rightarrow 総ならしコストが総実コスト の上界 ・ならし解析では、実コストがならしコストよりも大きくなるような場合があっても 良い ・a_i < t_i : 預金を減らす「高価な」操作 ・a_i > t_i : 預金を増やす「安価な」操作kinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 4/12
  5. 5. 12/10/16 (1) ならし解析の手法 どうやって、ならしコストを決めるのか? ・出納法(Banker’s Method) ・ポテンシャル法(Physicist’s Method) ・(集計法(aggregate method))kinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 5/12
  6. 6. 12/10/16 (1) 出納法 (Banker’s Method) ・預金をデータの個々の場所に割り当てたクレジットとして表す ・預金は(後の段階で)個々のデータに対する操作に使われる ・出納法では、ある操作 i に対するならしコスト a_i は以下のように定義する a_i = t_i + c_i - c_{-i} c_i : 操作 i で割り当てるクレジット, c_{-i} : 操作 i で消費するクレジットkinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 6/12
  7. 7. 12/10/16 (1) 出納法 (Banker’s Method) ・クレジットは以下の条件を満たすように定義する ・使用する前に割り当てる ・同じクレジットを2回以上消費しない ・クレジットが上の条件を満たすように定義されると、 sum_{i}^{m} c_i geq sum_{i}^{m} c_{-i} となり、(定義より)以下が導ける sum_{i}^{m} a_i geq sum_{i}^{m} t_i 従って、総ならしコストが総実コストの上界と言えるkinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 7/12
  8. 8. 12/10/16 (1) 出納法(Banker’s Method) Bankerskinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 8/12
  9. 9. 12/10/16 (1) ポテンシャル法 操作 i の入出力となるデータ d_{i-1} 及び d_i について、 ポテンシャル法では、データ d から実数への関数 Phi を用いて、ならしコスト a_i を以下のように定義する。 a_i = t_i + Phi(d_i) - Phi(d_{i-1})kinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 9/12
  10. 10. 12/10/16 (1) ポテンシャル法 実コストの合計 sum t_i は sum_{i=1}^j t_i = sum_{i=1}^j (a_i + Phi(d_{i-1}) - Phi(d_i)) = sum_{i=1}^j a_i + Phi(d_0) - Phi(d_j) 従って、Phi(d_0) =0、Phi(d_j) geq 0 となる Phi を与えれば、総ならしコスト が、総実コストの上界となる。kinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 10/12
  11. 11. 12/10/16 (1) ポテンシャル法 Potentialkinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 11/12
  12. 12. 12/10/16 (1) 最後に ・出納法とポテンシャル法は等価なものであって、相互に変換可能 ・ポテンシャル法の方が単純 ・出納法の「場所」の概念で、何か特別なことが出来るわけではないが「場所」 を考慮すると便利な場合がある。 ・「クレジット」や「ポテンシャル」は解析の道具に過ぎないので、(コメント以外 の)プログラム内に現れることはない。kinug.com/wiki/Study/PFDS/5.1-Techniques of Amortized Analysis#(1) 12/12

×