purely functional data structures 5.3 日本語での説明

1,025 views
986 views

Published on

purely functional data structures 5.3節の内容を日本語で説明します。

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

  • Be the first to like this

No Downloads
Views
Total views
1,025
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

purely functional data structures 5.3 日本語での説明

  1. 1. 償却についてBankers methodクレジットはデータ構造の中のロケーションに結び付けられる。Ai = Ti + Ci – CiAi : 蓄積された償却コストTi : 蓄積された実際のコストCi : 操作 i によって置かれたクレジットの数Ci : 操作 i によって消費されたクレジットクレジットは消費される前に置かれる。クレジットは1回しか使えない。bankers methodはクレジット不変則を定義する。クレジット不変則とは:高価(expensive)な操作が発生するときにはいつも充分なクレジットが正しいロケーションに置かれている。クレジットの増加 == 計算量の貯金が増えるクレジット(信用)がないとお金を貸さないからbanker(銀行家)?
  2. 2. Physicists method関数Φはオブジェクトをdのポテンシャルと呼ばれる実数にマップする。Φは初めは0で、非負。ポテンシャルは蓄積されたsavingの下限を示す。Di は操作 i の出力と操作(i+1)の入力とする。操作 i の償却されたコストAiはAi = Ti + Φ(Di) - Φ(Di-1)となる。蓄積された実際のコストはΣTi = ΣAi + Φ(D0) - Φ(Dj)となる。もし Φ(D0) = 0で Φ(Dj) >= 0 ならΦ(Dj) >= Φ(D0) かつ ΣAi >= ΣTiなので、蓄積された償却コストは蓄積された実際のコストの上限になる。ポテンシャルが増加する == 計算量の貯金が増えるポテンシャルを使うからphysicist (自然科学者)?
  3. 3. 5.3 Binomial Heapwikipediaの説明http://ja.wikipedia.org/wiki/%E4%BA%8C%E9%A0%85%E3%83%92%E3%83%BC%E3%83%97 「二項木」 「二項ヒープの構造」 binomial heapの例。ランク 0, 2, 3の3 つの二項木から構成されている。
  4. 4. binomial heapのinsertは償却されたらO(1)になる・1 physicists methodの場合ポテンシャルをbinomial heapの中の木の数と定義します。insert は (k+1)ステップかかります。 (k はlinkを呼ぶ回数)t個のtreeがbinomial heapにもともと存在する場合、insert後には t-k+1個の木があることになります。ポテンシャルの差異は (t-k+1) - t = 1-k なので、償却されたコストは (k+1) + (1-k) = 2 になります。rank 4 3 2 1 0tree 1 0 1 1 1 (1: 木が存在する。0: 木が存在しない) ↓ insert (rank 0の木を1個追加する)tree 1 1 0 0 0この場合k=3
  5. 5. binomial heapのinsertは償却されたらO(1)になる・2 bankers methodの場合 (Exercise 5.2)ヒープの中の木1個ごとにクレジット1を割当てます。insert は (k+1)ステップかかります。 (k はlinkを呼ぶ回数)t個のtreeがbinomial heapにもともと存在する場合、insert後には t-k+1個の木があることになります。クレジットの変化分は (t-k+1) - t = 1-k なので、償却されたコストは (k+1) + (1-k) = 2 になります。(physicists method とほぼ同一の説明です)
  6. 6. Exercise 5.3 (1)binomial heapのmergeは償却されてもO(logn)になることを示す。ポテンシャルをbinomial heapの中の木の数と定義します。 a = t + Σd∈Out Φ(d) + Σd∈In Φ(d)mergeの実行において、consはlogn回、linkはk回呼ばれます。そのとき、ポテンシャルの変化は -k となります。(merge前のヒープのポテンシャルをそれぞれΦ1, Φ2とすると、 merge後のヒープのポテンシャルは Φ1+Φ2-k)合計して logn + k - k = logn となります。よって償却してもO(logn)rank 4 3 2 1 0tree 1 0 1 0 1 + (merge)tree 0 0 0 1 1 ↓tree 1 1 0 0 0 ⇒ この例ではlinkは3回発生します。ポテンシャルの変化は-3 (=-k)です
  7. 7. Exercise 5.3 (2)binomial heapのdeleteMinは償却されてもO(logn)になることを示す。ポテンシャルをbinomial heapの中の木の数と定義します。(i) heapにrank 1の木がある場合rank 4 3 2 1 0tree 1 0 1 0 1 ↓ deleteMintree 1 0 1 0 0 ⇒ この例ではポテンシャルの変化 = -1(ii) heapにrank 0の木がない場合rank 4 3 2 1 0tree 1 0 0 0 0 ↓ deleteMintree 0 1 1 1 1 ⇒ この例ではポテンシャルの変化 = 3つまり、deleteMinによるポテンシャルの変化 = a (-1≦a<logn -1 の整数)
  8. 8. Exercise 5.3 (2) binomial heapのdeleteMinの続きdeleteMinの中でそれぞれの木で最小のrootを見つけるのに αlogn ステップかまた、木からrootを取り去ってそれをマージするのに βlogn ステップかかる。deleteMinの前後でポテンシャルの変化は a (-1≦a<logn -1 ) となる。合計して αlogn + βlogn + a (-1≦a<logn -1 )よって償却しても O(logn)

×