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.

Amortize analysis of Deque with 2 Stack

2,445 views

Published on

ならし解析の話。
DequeをStack2つで実装した場合について追加や削除のならし計算量がO(1)であることを示す。
Accounting MethodとPotential Methodを説明。

Published in: Science
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes.........ACCESS WEBSITE Over for All Ebooks ..... (Unlimited) ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ACCESS that WEBSITE Over for All Ebooks (Unlimited) ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... DOWNLOAD FULL EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ...................................ALL FOR EBOOKS................................................. Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ..............ACCESS that WEBSITE Over for All Ebooks ................ ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ...................................ALL FOR EBOOKS................................................. Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Amortize analysis of Deque with 2 Stack

  1. 1. 計算量のはなし2 ~DequeはStack2つでつくれる~
  2. 2. 目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting Method ● Potential Method
  3. 3. 目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting Method ● Potential Method
  4. 4. 有名なことわざ DequeはStack2つでつくれる
  5. 5. Deque ● 次の操作に対応したデータ構造 – 列の先頭に値を追加  (pushF) – 列の末尾に値を追加  (pushB) – 列の先頭から値を取り出す (popF) – 列の末尾から値を取り出す (popB)
  6. 6. Deque: 図示 ● ここに空のDequeがあるじゃろ – 左が先頭(Front), 右が末尾 (Back)
  7. 7. Deque: 図示 ● pushF(3) 3
  8. 8. Deque: 図示 ● pushF(3), pushB(4) 3 4
  9. 9. Deque: 図示 ● pushF(3), pushB(4), pushF(5) 3 45
  10. 10. Deque: 図示 ● pushF(3), pushB(4), pushF(5), popB() 3 4 5 4
  11. 11. Deque: 図示 ● pushF(3), pushB(4), pushF(5), popB() 35
  12. 12. Deque: 図示 ● pushF(3), pushB(4), pushF(5), popB(), popF() 3 5
  13. 13. Deque: 図示 ● pushF(3), pushB(4), pushF(5), popB(), popF() 3
  14. 14. Deque: 図示 ● pushF(3), pushB(4), pushF(5), popB(), popF() pushB(4) 3 4
  15. 15. Deque: 図示 ● pushF(3), pushB(4), pushF(5), popB(), popF() pushB(4), pushF(3) 3 433
  16. 16. 有名なことわざ(再掲) DequeはStack2つでつくれる
  17. 17. Deque(Stack×2): 図示 ● 空のDequeの下にStackが2つあるじゃろ – 左が先頭(Front), 右が末尾 (Back)
  18. 18. 432 Deque(Stack×2): 図示 ● pushF(1), pushF(2), pushF(3), pushF(4) 4321 1
  19. 19. 432 Deque(Stack×2): 図示 ● pushF(1), pushF(2), pushF(3), pushF(4) popB() 4 321 1
  20. 20. 32 Deque(Stack×2): 図示 ● pushF(1), pushF(2), pushF(3), pushF(4) popB() 4 321 1 エイヤッ 4
  21. 21. 32 Deque(Stack×2): 図示 ● pushF(1), pushF(2), pushF(3), pushF(4) popB() 4 321 1 4
  22. 22. 32 Deque(Stack×2): 図示 ● pushF(1), pushF(2), pushF(3), pushF(4) popB() 321 1
  23. 23. 32 Deque(Stack×2): 大事な所 ● PopしたいのにStackがからの時、もう片方の Stackの半分を移してくる 4 321 1 エイヤッ 4
  24. 24. フハハ Dequeはこのようにして Stack2つでつくれるのじゃ
  25. 25. 目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting Method ● Potential Method
  26. 26. 半分うつすのやばそう ● Stack2つで実装したDequeの計算量を評価し てみよう
  27. 27. 操作一覧 ● pushBack ● pushFront ● popBack ● popFront
  28. 28. 操作一覧 ● pushBack どうせO(1) ● pushFront どうせO(1) ● popBack ● popFront
  29. 29. 操作一覧 ● pushBack どうせO(1) ● pushFront どうせO(1) ● popBack だいたいO(1) ● popFront だいたいO(1)
  30. 30. 半分移すとき時間かかる ● pushBack どうせO(1) ● pushFront どうせO(1) ● popBack だいたいO(1)  ときどき O(N) ● popFront だいたいO(1) ときどき O(N)
  31. 31. 半分移すとき時間かかる ● pushBack どうせO(1) ● pushFront どうせO(1) ● popBack だいたいO(1)  ときどき O(N) ● popFront だいたいO(1) ときどき O(N) ● でもO(N)であることは本当に「ときどき」で、ま れにしか起こらない
  32. 32. 半分移すとき時間かかる ● pushBack どうせO(1) ● pushFront どうせO(1) ● popBack だいたいO(1)  ときどき O(N) ● popFront だいたいO(1) ときどき O(N) ● でもO(N)であることは本当に「ときどき」で、ま れにしか起こらない
  33. 33. 半分移すとき時間かかる ● pushBack どうせO(1) ● pushFront どうせO(1) ● popBack だいたいO(1)  ときどき O(N) ● popFront だいたいO(1) ときどき O(N) ● でもO(N)であることは本当に「ときどき」で、まれに しか起こらない ● O(N)っていいたくない
  34. 34. そんなときに便利なのが ならし計算量
  35. 35. ならし計算量とは ● データ構造に対する操作の計算量の評価で 使われる「計算量もどき」 ● 時と場合によって計算量がかわるが、均すと O(f(x))になるとき 「ならし計算量がO(f(x))である」 という
  36. 36. ならし計算量とは ● データ構造に対する操作の計算量の評価で 使われる「計算量もどき」 ● 時と場合によって計算量がかわるが、均すと O(f(x))になるとき 「ならし計算量がO(f(x))である」 という
  37. 37. ならし計算量とは ● データ構造に対する操作の計算量の評価で 使われる「計算量もどき」 ● 時と場合によって計算量がかわるが、均すと O(f(x))になるとき 「ならし計算量がO(f(x))である」 という ?
  38. 38. 「均す」とは ● データ構造の中で、操作をN回やった時、「実 際の計算量」の総和と「ならし計算量」の総和 がだいたい同じになる ● 例: – Dequeのpopの実際の計算量 ● O(1)だったりO(N)だったり – Dequeのpopのならし計算量 ● O(1)
  39. 39. Dequeの計算量 ● Dequeの操作のならし計算量は全てO(1) – ほんまか ● ならし計算量がO(1)ということは N 回操作し たときの「実際の計算量」がO(N)であるという こと – 実験してみるとそれっぽい ● これから2つの方法でこれを証明する
  40. 40. 目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting Method ● Potential Method
  41. 41. AccountingMethod ● 直訳:会計法(法律っぽい) ● 初めあなたの所持金は0円です ● あなたが操作をするたびに、「ならし計算量」 円だけお金がふってきます ● あなたが操作をするたびに、「実際の計算 量」円払わなければなりません ● あなたはどのタイミングでも所持金が負に なってはいけません
  42. 42. AccountingMethod ● 何円ふってくるか、うまく決めて所持金が負に ならなければそれがならし計算量 ● うまく思いつこう!
  43. 43. AccountingMethod ● 以下のように設定するとうまくいく – 操作をすると 5 円ふってくる
  44. 44. AccountingMethod ● 以下のように設定するとうまくいく – 操作をすると 5 円ふってくる ● これでうまくいくことをこれから証明
  45. 45. AccountingMethod:5円の証明 ● pushBack,pushFront – 実際の計算量は 1 – よって1円払わないといけない ● popBack,popFrontのエイヤッしないやつ – 実際の計算量は 1 – 1円払わないといけない ● どちらの場合も差し引いて4円貯金が増える
  46. 46. AccountingMethod:5円の証明 ● popBack,popFrontのエイヤッするとき – もう片方のStackの中身(N個とする)をいっ たん全部出して、半分ずつ入れ分ける – 実際の計算量は 2N – 差し引いて2N-5円貯金が減る ● このとき借金しなければよい
  47. 47. AccountingMethod:5円の証明 ● 実は以下の命題が成り立つ – 左側のStackにL個、右側のStackにR個の 要素が入ってる時、4×max(L, R)円以上の 貯金がある – 帰納法で証明可能
  48. 48. AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い    
  49. 49. AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い – pushとエイヤッしないpopは 貯金が4円増えるので成 立し続ける    
  50. 50. AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い – pushとエイヤッしないpopは 貯金が4円増えるので成 立し続ける – エイヤッするとき、もともと貯金が4N円以上あるので 操作後は2N円以上が保証される  
  51. 51. AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い – pushとエイヤッしないpopは 貯金が4円増えるので成 立し続ける – エイヤッするとき、もともと貯金が4N円以上あるので 操作後は2N円以上が保証される – エイヤッ後は4×max(L,R)は2Nになる
  52. 52. AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い – pushとエイヤッしないpopは 貯金が4円増えるので成 立し続ける – エイヤッするとき、もともと貯金が4N円以上あるので 操作後は2N円以上が保証される – エイヤッ後は4×max(L,R)は2Nになる 成立し続ける
  53. 53. AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い – pushとエイヤッしないpopは 貯金が4円増えるので成 立し続ける – エイヤッするとき、もともと貯金が4N円以上あるので 操作後は2N円以上が保証される – エイヤッ後は4×max(L,R)は2Nになる 成立し続ける (Q.E.D.)
  54. 54. これが Accounting Method
  55. 55. AccountingMethod ● ならしO(1)を求めるのに向いてる – ふってくる値段を貯金がなくならないように充 分大きくするだけ ● ふってくる値段は操作毎に変えても良い – popは4円 – pushは1円とかでも大丈夫 ● 今回のようにデータ構造の状態に対して貯金の 下限を示したりして使う
  56. 56. AccountingMethod:演習問題 ● 以下をAccountingMethodで示してみよ ● 動的にメモリを確保する配列(vector)の push_backのならし計算量:O(1) – メモリがなくなったら別の場所にいまの2倍 の大きさのメモリを確保します
  57. 57. 目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting Method ● Potential Method
  58. 58. PotentialMethod ● データ構造の状態に対してPotentialという値 を定義する ● ある操作をしてPotentailがP1からP2に変わっ たとする ● そのならし計算量を 「実際の計算量」 + P2 – P1 として定義する
  59. 59. PotentialMethod:なんでそんなことするの ● 長い処理を考える
  60. 60. PotentialMethod:なんでそんなことするの ● 長い処理を考える 状態   Potential 実計算量  均計算量 C1 C2 C3 CN : : P1 P2 P3 PN : : X1 X2 XN : :
  61. 61. PotentialMethod:なんでそんなことするの ● ポテンシャルと実計算量から均計算量を出す 状態   Potential 実計算量  均計算量 C1 C2 C3 CN : : P1 P2 P3 PN : : X1 X2 XN : : X1+P2-P1 X2+P3-P2 XN+PN-(ry : :
  62. 62. PotentialMethod:なんでそんなことするの ● 計算量の総和を考えてみる 状態   Potential 実計算量  均計算量 C1 C2 C3 CN : : P1 P2 P3 PN : : X1 X2 XN : : X1+P2-P1 X2+P3-P2 XN+PN-(ry : :
  63. 63. PotentialMethod:なんでそんなことするの ● 計算量の総和を考えてみる ● 実計算量 – X1 + X2 + X3 + … + XN ● 均計算量 – (X1 + P2 – P1) + (X2 + P3 – P2) + … (ry ↓ – X1 + X2 + X3 + … + XN + (PN – P1)
  64. 64. PotentialMethod:なんでそんなことするの ● 計算量の総和を考えてみる ● 実計算量 – X1 + X2 + X3 + … + XN ● 均計算量 – (X1 + P2 – P1) + (X2 + P3 – P2) + … (ry ↓ – X1 + X2 + X3 + … + XN + (PN – P1)
  65. 65. PotentialMethod:なんでそんなことするの ● 「実計算量の総和」と「均計算量の総和」の差 が PN – P1 – 終状態と始状態のPotentialの差 – これが「均計算量の総和」以下のオーダー なら、実計算量と均計算量のオーダーが一 致する – 均計算量の定義と合致
  66. 66. PotentialMethod:Dequeのポテンシャル ● うまいポテンシャルを見つけて、どんな操作も 均計算量がO(1)であることを示せば良い
  67. 67. PotentialMethod:Dequeのポテンシャル ● うまいポテンシャルを見つけて、どんな操作も 均計算量がO(1)であることを示せば良い ● 今回は左側のStackの要素数をL、右側の Stackの要素数をRとして 4*max(L, R) をPotentialとするとうまくいく
  68. 68. PotentialMethod:4*max(L,R)の証明 ● 各操作の均計算量 – push ● ポテンシャルはたかだか4増える ● 実計算量は1 ● よってならし計算量は5
  69. 69. PotentialMethod:4*max(L,R)の証明 ● 各操作の均計算量 – pop(エイヤッなし) ● ポテンシャルは増えない ● 実計算量は1 ● よってならし計算量は1以下
  70. 70. PotentialMethod:4*max(L,R)の証明 ● 各操作の均計算量 – pop(エイヤッあり) ● ポテンシャルは4*(N/2)減る ● 実計算量は2N ● よってならし計算量は0
  71. 71. PotentialMethod:4*max(L,R)の証明 ● PN-P1 – N回操作した後の均計算量の総和はO(N) – PN-P1の最大値は4N=O(N) ● ずっと同じ方からpushしたとき – よっしゃ
  72. 72. PotentialMethod:4*max(L,R)の証明 ● ポテンシャル4*max(L,R)での均計算量がす べてO(1)でした
  73. 73. PotentialMethod:4*max(L,R)の証明 ● ポテンシャル4*max(L,R)での均計算量がす べてO(1)でした (Q.E.D.)
  74. 74. これが Potential Method
  75. 75. PotentialMethod ● ならしO(1)以外を求めるのにも有用 – フィボナッチヒープのO(logN) – スプレー木のO(logN) – UnionFind木のO(α(n)) (アッカーマン関数の 逆関数) ● 4*max(L,R)はAccountingMethodにもでてきた値 – AccountingもPotentialも歩み寄り方が違うだ けで、やりたい証明は同じ
  76. 76. PotentialMethod:演習問題 ● 以下をPotentialMethodで示してみよ ● 動的にメモリを確保する配列(vector)の push_backのならし計算量:O(1) – メモリがなくなったら別の場所にいまの2倍 の大きさのメモリを確保します
  77. 77. 目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting Method ● Potential Method ● おしまい

×