SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
償却について
Banker's method

クレジットはデータ構造の中のロケーションに結び付けられる。

Ai = Ti + Ci – Ci

Ai : 蓄積された償却コスト
Ti : 蓄積された実際のコスト
Ci : 操作 i によって置かれたクレジットの数
Ci : 操作 i によって消費されたクレジット

クレジットは消費される前に置かれる。クレジットは1回しか使えない。
banker's methodはクレジット不変則を定義する。

クレジット不変則とは:
高価(expensive)な操作が発生するときにはいつも充分な
クレジットが正しいロケーションに置かれている。

クレジットの増加 == 計算量の貯金が増える
クレジット(信用)がないとお金を貸さないからbanker(銀行家)?
Physicist's 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 (自然科学者)?
5.3 Binomial Heap

wikipediaの説明
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
                     つの二項木から構成されている。
binomial heapのinsertは償却されたらO(1)になる

・1 physicist's 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   0
tree   1    0   1   1   1   (1: 木が存在する。0: 木が存在しない)
           ↓ insert (rank 0の木を1個追加する)
tree 1 1 0          0   0
この場合k=3
binomial heapのinsertは償却されたらO(1)になる

・2 banker's 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 になります。

(physicist's method とほぼ同一の説明です)
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   0
tree 1         0   1   0   1
           + (merge)
tree   0       0   0   1   1
           ↓
tree 1 1 0 0 0
 ⇒ この例ではlinkは3回発生します。ポテンシャルの変化は-3 (=-k)です
Exercise 5.3 (2)
binomial heapのdeleteMinは償却されてもO(logn)になることを示す。

ポテンシャルをbinomial heapの中の木の数と定義します。

(i) heapにrank 1の木がある場合
rank 4 3 2 1 0
tree 1 0 1 0 1
     ↓ deleteMin
tree 1 0 1 0 0
 ⇒ この例ではポテンシャルの変化 = -1

(ii) heapにrank 0の木がない場合
rank 4 3 2 1 0
tree 1 0 0 0 0
     ↓ deleteMin
tree 0 1 1 1 1
 ⇒ この例ではポテンシャルの変化 = 3
つまり、deleteMinによるポテンシャルの変化 = a (-1≦a<logn -1 の整数)
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)

Más contenido relacionado

La actualidad más candente

Sanpo
SanpoSanpo
Sanpooupc
 
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 9: Bernoulli Likelihood wit...
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 9: Bernoulli Likelihood wit...【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 9: Bernoulli Likelihood wit...
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 9: Bernoulli Likelihood wit...Koji Yoshida
 
Joi模擬予選2013 6番解説
Joi模擬予選2013 6番解説Joi模擬予選2013 6番解説
Joi模擬予選2013 6番解説DEGwer
 
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号Yuto Takei
 
LL Quiz LT @ LL Diver
LL Quiz LT @ LL DiverLL Quiz LT @ LL Diver
LL Quiz LT @ LL Diverwataken44
 
Gcd
GcdGcd
Gcdoupc
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - Komeometo
 

La actualidad más candente (11)

Sanpo
SanpoSanpo
Sanpo
 
Pfds20120304
Pfds20120304Pfds20120304
Pfds20120304
 
Pyramid
PyramidPyramid
Pyramid
 
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 9: Bernoulli Likelihood wit...
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 9: Bernoulli Likelihood wit...【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 9: Bernoulli Likelihood wit...
【DBDA勉強会2013】Doing Bayesian Data Analysis Chapter 9: Bernoulli Likelihood wit...
 
Ml ch7
Ml ch7Ml ch7
Ml ch7
 
Joi模擬予選2013 6番解説
Joi模擬予選2013 6番解説Joi模擬予選2013 6番解説
Joi模擬予選2013 6番解説
 
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
 
Pad入門その3
Pad入門その3Pad入門その3
Pad入門その3
 
LL Quiz LT @ LL Diver
LL Quiz LT @ LL DiverLL Quiz LT @ LL Diver
LL Quiz LT @ LL Diver
 
Gcd
GcdGcd
Gcd
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - K
 

Más de Tetsuro Nagae

オブザーバビリティ、OpenTelemetryについて.pptx
オブザーバビリティ、OpenTelemetryについて.pptxオブザーバビリティ、OpenTelemetryについて.pptx
オブザーバビリティ、OpenTelemetryについて.pptxTetsuro Nagae
 
RDBのインデックスについて.pptx
RDBのインデックスについて.pptxRDBのインデックスについて.pptx
RDBのインデックスについて.pptxTetsuro Nagae
 
Purely functional data structures 8.2 日本語での説明
Purely functional data structures 8.2 日本語での説明Purely functional data structures 8.2 日本語での説明
Purely functional data structures 8.2 日本語での説明Tetsuro Nagae
 
Blueprintsについて
BlueprintsについてBlueprintsについて
BlueprintsについてTetsuro Nagae
 
Purely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heapPurely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heapTetsuro Nagae
 

Más de Tetsuro Nagae (7)

オブザーバビリティ、OpenTelemetryについて.pptx
オブザーバビリティ、OpenTelemetryについて.pptxオブザーバビリティ、OpenTelemetryについて.pptx
オブザーバビリティ、OpenTelemetryについて.pptx
 
RDBのインデックスについて.pptx
RDBのインデックスについて.pptxRDBのインデックスについて.pptx
RDBのインデックスについて.pptx
 
MySQL SQL tuning
MySQL SQL tuningMySQL SQL tuning
MySQL SQL tuning
 
Hoare論理
Hoare論理Hoare論理
Hoare論理
 
Purely functional data structures 8.2 日本語での説明
Purely functional data structures 8.2 日本語での説明Purely functional data structures 8.2 日本語での説明
Purely functional data structures 8.2 日本語での説明
 
Blueprintsについて
BlueprintsについてBlueprintsについて
Blueprintsについて
 
Purely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heapPurely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heap
 

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

  • 1. 償却について Banker's method クレジットはデータ構造の中のロケーションに結び付けられる。 Ai = Ti + Ci – Ci Ai : 蓄積された償却コスト Ti : 蓄積された実際のコスト Ci : 操作 i によって置かれたクレジットの数 Ci : 操作 i によって消費されたクレジット クレジットは消費される前に置かれる。クレジットは1回しか使えない。 banker's methodはクレジット不変則を定義する。 クレジット不変則とは: 高価(expensive)な操作が発生するときにはいつも充分な クレジットが正しいロケーションに置かれている。 クレジットの増加 == 計算量の貯金が増える クレジット(信用)がないとお金を貸さないからbanker(銀行家)?
  • 2. Physicist's 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 (自然科学者)?
  • 4. binomial heapのinsertは償却されたらO(1)になる ・1 physicist's 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 0 tree 1 0 1 1 1 (1: 木が存在する。0: 木が存在しない) ↓ insert (rank 0の木を1個追加する) tree 1 1 0 0 0 この場合k=3
  • 5. binomial heapのinsertは償却されたらO(1)になる ・2 banker's 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 になります。 (physicist's method とほぼ同一の説明です)
  • 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 0 tree 1 0 1 0 1 + (merge) tree 0 0 0 1 1 ↓ tree 1 1 0 0 0  ⇒ この例ではlinkは3回発生します。ポテンシャルの変化は-3 (=-k)です
  • 7. Exercise 5.3 (2) binomial heapのdeleteMinは償却されてもO(logn)になることを示す。 ポテンシャルをbinomial heapの中の木の数と定義します。 (i) heapにrank 1の木がある場合 rank 4 3 2 1 0 tree 1 0 1 0 1 ↓ deleteMin tree 1 0 1 0 0  ⇒ この例ではポテンシャルの変化 = -1 (ii) heapにrank 0の木がない場合 rank 4 3 2 1 0 tree 1 0 0 0 0 ↓ deleteMin tree 0 1 1 1 1  ⇒ この例ではポテンシャルの変化 = 3 つまり、deleteMinによるポテンシャルの変化 = a (-1≦a<logn -1 の整数)
  • 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)