Advanced Data Structures Lecture 1 岩間・伊藤研究室 M1 添島 琢己 Linked list • 各要素に次の要素へのポインタ 3 5 1 6 4 2 access(x) :xがリストのi番目にある時、iを返す access(1)=3 access(5)=2 最初に時間がかかってもよいのでaccess(x)の時間を定数時間にする 線形時間探索 3 • • • • 5 1 6 4 2 順番に見ていくと、最悪の場合でn時間かかる。 平均でもn/2時間 (ただし、各要素がランダムに配置してある時) 探索確率が分かっていればStochastic modelを 使う。 Stochastic model • 要素iの探索は確率piで要求される。 • 要素を探索が行われる確率が高い順から並 べる。 3 確率 2 5 1 6 4 2 1 2 3 4 5 6 0.05 0.35 0.25 0.13 0.15 0.07 6 1 3 5 4 n この最適化によるコストは Cost (OPT ) ipi i 1 Frequency Count(FC) • 各要素の要求回数を保存しておき、要求回 数ごとに並べ替える。 3 10 5 8 1 5 6 5 4 3 2 2 6 6 1 5 4 3 2 2 access(6) 3 10 5 8 Transpose • 要求された後に要素を1つ前に移動させる。 3 5 1 6 4 2 1 4 6 2 access(4) 3 5 Move to Front(MTF) • 要求された後に要素を先頭に移動させる。 3 5 1 6 4 2 5 1 4 6 access(2) 2 3 Stochastic modelとの比較 • Stochastic modelとMTFのコストには以下の不 等式が成り立つ Cost(MTF) 2 Cost(Stoch astic model) Cost(MTF) 2 Cost(Stoch astic model) b(i,j): 要素jより前に要素iがある確率 n b(i, j ) pi (1 pi p j ) k 1 n Cost ( MTF ) p j (1 j 1 k 1 pi pi p j i j b(i, j )) 1 2 1i n 1i j n Cost ( MTF ) 1 21 Cost ( StochasticModel ) n 1 pi p j pi p j 競合比 • 全ての入力列σに対して、ある定数bが存在し、 以下の不等式が成り立つ時、アルゴリズムA の競合比はcである。 Cost A c CostOPT b OPTは最適なアルゴリズム 未来の入力まで知っているアルゴリズムを オフラインアルゴリズム、 現在までの入力しか知らないアルゴリズムを オンラインアルゴリズムという。 FCの競合比の解析 1 2 3 4 5 : 1,,1,2,2i,i,, n … i n個 n-i+1個 n n 2 Cost ( FC ) i n i 1 n 1 6 i 1 n Cost (OPT ) i n 1 n 2 i 1 Cost ( FC ) n 1 Cost (OPT ) 6n 2 … n-1 n Transposeの競合比の解析 1 2 3 … 4 5 n個 CostTranspose mn 3 CostOPT m 2 2n 1 2 : 5,4,5,4 m個 MTFの競合比の解析 ならし時間を以下のように定義する。 ならし時間= +(探索時間) =OPTとMTFで順序の異なる組(i,j)の数 OPTとMTFの最初のリストは同じものとする MTFの競合比の解析 MTF ○△□□○△ p ●▲■ ○=a △=b □=c ●=d ▲=e ■=f OPT ○○● △▲△ p ■□□ i i 1 a c e MTFi a b c 1 OPTi a b d e 1 MTFi i i 1 2a b e 1 2(a b d e 1) 2OPTi Cost ( MTF ) m 0 2Cost (OPT ) Cost ( MTF ) 2Cost (OPT ) Order By Next Request(OBNR) • リストのi番目の要素が要求されたら以下の 動作を行う。 リストの i 2 lgi 番目まで要素を見る。 これらの要素を次にいつ要求されるかに従って並び 替える。 • ONBRはオフラインアルゴリズムであるが最適 なアルゴリズムではない。 Order By Next Request(OBNR) 1 2 3 4 5 6 7 8 1 2 3 4 要求列:5,6,7,8,1,2,1,3,4,…. 5 6 7 8 • 長さnのリストの要素全てをある順番で繰り返 し要求すると、サイクル1回あたりのコストは (n lg n) である。 要求列:1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,…. 1 2 3 4 5 6 7 8 Order By Next Request(OBNR) • 1回のサイクル内の1回の要求でコストが 2 k かかる回数は n 2k 1 であり、k lg n なので lg n n 2 k 1 (n lg n) 2 k 1 k 要素1個にアクセスするならしコストは (lg n) OBNRの解析 • 2 k 1 1 から 2 までを1つのブロックとする。 k • リストの先頭の要素が要求されたら、先頭の 要素にコスト1を加える。 • そうでなければ、 2 番目まで見ているので、 コストは 2i であり、これを見たブロックのなか で後ろから2番目のブロックに割り振る。 i OBNRの解析 …. 2i 2 1 2i 2 … 2i 1 2i 1 1 x 2i 要求列:x,………..,x,…… 異なった要素数: r ブロックの各要素に割り振られるコストは4である。 iが2回要求される間に要素iはそれぞれのブロックで高々1回 しかコストを割り振られない。 iが2回要求される間に要求される異なった要素の数をrとする と要素iはr番目までしか行かないので、 lg r 個以下のブロッ クにしか入らない。 よって、要素iにアクセスするならしコストは 4lg r 1 以下である。 OBNRの解析 m m 4 lg fi i 1 n • OBNR全体のコストは 以下である。 1 O lg pi • 要素iに対するならしコストは 1 O p lg • ある要素に対する期待されるコストは p 1 O m p lg • 全体のコストは p 1i n 1i n fi pi m i i m:要求列の長さ fi:要素iが要求される回数 i i
© Copyright 2024 ExpyDoc