lecture1

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 
1i  n
1i  j  n
Cost ( MTF )
1 

 21 

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,2i,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にアクセスするならしコストは
4lg 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 
1i  n
1i  n
fi
pi 
m
i
i
m:要求列の長さ
fi:要素iが要求される回数
i
i