5.1 techniques of amortized analysis

623 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
623
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

×