Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Ken Ogura
PDF, PPTX
5,526 views
Amortize analysis of Deque with 2 Stack
ならし解析の話。 DequeをStack2つで実装した場合について追加や削除のならし計算量がO(1)であることを示す。 Accounting MethodとPotential Methodを説明。
Science
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 77
2
/ 77
Most read
3
/ 77
4
/ 77
5
/ 77
6
/ 77
7
/ 77
8
/ 77
9
/ 77
10
/ 77
11
/ 77
12
/ 77
13
/ 77
14
/ 77
15
/ 77
16
/ 77
17
/ 77
18
/ 77
19
/ 77
20
/ 77
21
/ 77
22
/ 77
23
/ 77
24
/ 77
25
/ 77
26
/ 77
27
/ 77
28
/ 77
29
/ 77
30
/ 77
31
/ 77
32
/ 77
33
/ 77
34
/ 77
35
/ 77
36
/ 77
37
/ 77
38
/ 77
39
/ 77
40
/ 77
41
/ 77
42
/ 77
43
/ 77
44
/ 77
45
/ 77
Most read
46
/ 77
47
/ 77
Most read
48
/ 77
49
/ 77
50
/ 77
51
/ 77
52
/ 77
53
/ 77
54
/ 77
55
/ 77
56
/ 77
57
/ 77
58
/ 77
59
/ 77
60
/ 77
61
/ 77
62
/ 77
63
/ 77
64
/ 77
65
/ 77
66
/ 77
67
/ 77
68
/ 77
69
/ 77
70
/ 77
71
/ 77
72
/ 77
73
/ 77
74
/ 77
75
/ 77
76
/ 77
77
/ 77
More Related Content
PDF
最大流 (max flow)
by
HCPC: 北海道大学競技プログラミングサークル
PDF
最小カットを使って「燃やす埋める問題」を解く
by
shindannin
PDF
Rolling Hashを殺す話
by
Nagisa Eto
PDF
Convex Hull Trick
by
HCPC: 北海道大学競技プログラミングサークル
PDF
双対性
by
Yoichi Iwata
PDF
色々なダイクストラ高速化
by
yosupo
PDF
指数時間アルゴリズムの最先端
by
Yoichi Iwata
PPTX
動的計画法を極める!
by
HCPC: 北海道大学競技プログラミングサークル
最大流 (max flow)
by
HCPC: 北海道大学競技プログラミングサークル
最小カットを使って「燃やす埋める問題」を解く
by
shindannin
Rolling Hashを殺す話
by
Nagisa Eto
Convex Hull Trick
by
HCPC: 北海道大学競技プログラミングサークル
双対性
by
Yoichi Iwata
色々なダイクストラ高速化
by
yosupo
指数時間アルゴリズムの最先端
by
Yoichi Iwata
動的計画法を極める!
by
HCPC: 北海道大学競技プログラミングサークル
What's hot
PDF
指数時間アルゴリズム入門
by
Yoichi Iwata
PDF
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
by
Kensuke Otsuki
PDF
Nazoki
by
Ken Ogura
PDF
Rolling hash
by
HCPC: 北海道大学競技プログラミングサークル
PDF
プログラミングコンテストでの乱択アルゴリズム
by
Takuya Akiba
PDF
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
PDF
プログラミングコンテストでのデータ構造 2 ~動的木編~
by
Takuya Akiba
PDF
Donutsプロコンチャレンジ 2015 解説
by
kuno4n
PDF
AtCoder Beginner Contest 024 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 039 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 015 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 026 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 023 解説
by
AtCoder Inc.
PPTX
2SAT(充足可能性問題)の解き方
by
Tsuneo Yoshioka
PDF
様々な全域木問題
by
tmaehara
PDF
Binary indexed tree
by
HCPC: 北海道大学競技プログラミングサークル
PDF
ウェーブレット木の世界
by
Preferred Networks
PDF
明日使えないすごいビット演算
by
京大 マイコンクラブ
PDF
Union find(素集合データ構造)
by
AtCoder Inc.
PDF
平面グラフと交通ネットワークのアルゴリズム
by
Takuya Akiba
指数時間アルゴリズム入門
by
Yoichi Iwata
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
by
Kensuke Otsuki
Nazoki
by
Ken Ogura
Rolling hash
by
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテストでの乱択アルゴリズム
by
Takuya Akiba
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
プログラミングコンテストでのデータ構造 2 ~動的木編~
by
Takuya Akiba
Donutsプロコンチャレンジ 2015 解説
by
kuno4n
AtCoder Beginner Contest 024 解説
by
AtCoder Inc.
AtCoder Regular Contest 039 解説
by
AtCoder Inc.
AtCoder Beginner Contest 015 解説
by
AtCoder Inc.
AtCoder Beginner Contest 026 解説
by
AtCoder Inc.
AtCoder Beginner Contest 023 解説
by
AtCoder Inc.
2SAT(充足可能性問題)の解き方
by
Tsuneo Yoshioka
様々な全域木問題
by
tmaehara
Binary indexed tree
by
HCPC: 北海道大学競技プログラミングサークル
ウェーブレット木の世界
by
Preferred Networks
明日使えないすごいビット演算
by
京大 マイコンクラブ
Union find(素集合データ構造)
by
AtCoder Inc.
平面グラフと交通ネットワークのアルゴリズム
by
Takuya Akiba
Similar to Amortize analysis of Deque with 2 Stack
PPTX
純粋関数型アルゴリズム入門
by
Kimikazu Kato
PDF
たのしい関数型
by
Shinichi Kozake
PPTX
AtCoder167Dをダブリングで解く
by
Akira KANAI
PDF
Pyramid
by
tomerun
PDF
Ruby4章後半(演算子)
by
Hiroshi Isimaru
KEY
Applicative functor
by
Yuichi Adachi
PDF
Java初心者勉強会(2015/08/07)資料
by
Toshio Ehara
PDF
Rpn and forth 超入門
by
Yoshitaka Seo
PDF
これからの「言語」の話をしよう ―― 未来を生きるためのツール
by
Nobuhisa Koizumi
PDF
関数プログラミング入門
by
Hideyuki Tanaka
PPTX
T77 episteme
by
えぴ 福田
PDF
Java電卓勉強会資料
by
Toshio Ehara
KEY
モナドがいっぱい!
by
Kenta Sato
PDF
モナドハンズオン前座
by
bleis tift
PDF
Javaプログラミング入門
by
なおき きしだ
PDF
型超ざっくり入門@ハンズラボ社内勉強会
by
Yusuke Usui
PPTX
超LINQ入門
by
yone64
PDF
関数型軽い紹介
by
Daniel Perez
PDF
これから Haskell を書くにあたって
by
Tsuyoshi Matsudate
PPTX
ふるたに流プログラミング学習法
by
Kazuma Furutani
純粋関数型アルゴリズム入門
by
Kimikazu Kato
たのしい関数型
by
Shinichi Kozake
AtCoder167Dをダブリングで解く
by
Akira KANAI
Pyramid
by
tomerun
Ruby4章後半(演算子)
by
Hiroshi Isimaru
Applicative functor
by
Yuichi Adachi
Java初心者勉強会(2015/08/07)資料
by
Toshio Ehara
Rpn and forth 超入門
by
Yoshitaka Seo
これからの「言語」の話をしよう ―― 未来を生きるためのツール
by
Nobuhisa Koizumi
関数プログラミング入門
by
Hideyuki Tanaka
T77 episteme
by
えぴ 福田
Java電卓勉強会資料
by
Toshio Ehara
モナドがいっぱい!
by
Kenta Sato
モナドハンズオン前座
by
bleis tift
Javaプログラミング入門
by
なおき きしだ
型超ざっくり入門@ハンズラボ社内勉強会
by
Yusuke Usui
超LINQ入門
by
yone64
関数型軽い紹介
by
Daniel Perez
これから Haskell を書くにあたって
by
Tsuyoshi Matsudate
ふるたに流プログラミング学習法
by
Kazuma Furutani
More from Ken Ogura
PDF
Deque with Haskel
by
Ken Ogura
PDF
Trianguler
by
Ken Ogura
PDF
Npc april fool2014
by
Ken Ogura
PDF
計算量
by
Ken Ogura
PDF
辺彩色
by
Ken Ogura
PDF
かけざん
by
Ken Ogura
PDF
人間対Pc2
by
Ken Ogura
PDF
PC解体
by
Ken Ogura
PDF
ハッキング実演
by
Ken Ogura
PDF
Shio dtm
by
Ken Ogura
PDF
Cをやりましょう
by
Ken Ogura
PDF
April2013
by
Ken Ogura
ODP
April2013
by
Ken Ogura
PDF
Mage
by
Ken Ogura
PDF
Imo
by
Ken Ogura
PDF
Hairetu2
by
Ken Ogura
PDF
Moon
by
Ken Ogura
PDF
Jissou
by
Ken Ogura
PDF
Lunch
by
Ken Ogura
PDF
Divisor
by
Ken Ogura
Deque with Haskel
by
Ken Ogura
Trianguler
by
Ken Ogura
Npc april fool2014
by
Ken Ogura
計算量
by
Ken Ogura
辺彩色
by
Ken Ogura
かけざん
by
Ken Ogura
人間対Pc2
by
Ken Ogura
PC解体
by
Ken Ogura
ハッキング実演
by
Ken Ogura
Shio dtm
by
Ken Ogura
Cをやりましょう
by
Ken Ogura
April2013
by
Ken Ogura
April2013
by
Ken Ogura
Mage
by
Ken Ogura
Imo
by
Ken Ogura
Hairetu2
by
Ken Ogura
Moon
by
Ken Ogura
Jissou
by
Ken Ogura
Lunch
by
Ken Ogura
Divisor
by
Ken Ogura
Amortize analysis of Deque with 2 Stack
1.
計算量のはなし2 ~DequeはStack2つでつくれる~
2.
目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting
Method ● Potential Method
3.
目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting
Method ● Potential Method
4.
有名なことわざ DequeはStack2つでつくれる
5.
Deque ● 次の操作に対応したデータ構造 – 列の先頭に値を追加
(pushF) – 列の末尾に値を追加 (pushB) – 列の先頭から値を取り出す (popF) – 列の末尾から値を取り出す (popB)
6.
Deque: 図示 ● ここに空のDequeがあるじゃろ –
左が先頭(Front), 右が末尾 (Back)
7.
Deque: 図示 ● pushF(3) 3
8.
Deque: 図示 ● pushF(3),
pushB(4) 3 4
9.
Deque: 図示 ● pushF(3),
pushB(4), pushF(5) 3 45
10.
Deque: 図示 ● pushF(3),
pushB(4), pushF(5), popB() 3 4 5 4
11.
Deque: 図示 ● pushF(3),
pushB(4), pushF(5), popB() 35
12.
Deque: 図示 ● pushF(3),
pushB(4), pushF(5), popB(), popF() 3 5
13.
Deque: 図示 ● pushF(3),
pushB(4), pushF(5), popB(), popF() 3
14.
Deque: 図示 ● pushF(3),
pushB(4), pushF(5), popB(), popF() pushB(4) 3 4
15.
Deque: 図示 ● pushF(3),
pushB(4), pushF(5), popB(), popF() pushB(4), pushF(3) 3 433
16.
有名なことわざ(再掲) DequeはStack2つでつくれる
17.
Deque(Stack×2): 図示 ● 空のDequeの下にStackが2つあるじゃろ –
左が先頭(Front), 右が末尾 (Back)
18.
432 Deque(Stack×2): 図示 ● pushF(1),
pushF(2), pushF(3), pushF(4) 4321 1
19.
432 Deque(Stack×2): 図示 ● pushF(1),
pushF(2), pushF(3), pushF(4) popB() 4 321 1
20.
32 Deque(Stack×2): 図示 ● pushF(1),
pushF(2), pushF(3), pushF(4) popB() 4 321 1 エイヤッ 4
21.
32 Deque(Stack×2): 図示 ● pushF(1),
pushF(2), pushF(3), pushF(4) popB() 4 321 1 4
22.
32 Deque(Stack×2): 図示 ● pushF(1),
pushF(2), pushF(3), pushF(4) popB() 321 1
23.
32 Deque(Stack×2): 大事な所 ● PopしたいのにStackがからの時、もう片方の Stackの半分を移してくる 4 321 1 エイヤッ 4
24.
フハハ Dequeはこのようにして Stack2つでつくれるのじゃ
25.
目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting
Method ● Potential Method
26.
半分うつすのやばそう ● Stack2つで実装したDequeの計算量を評価し てみよう
27.
操作一覧 ● pushBack ● pushFront ● popBack ●
popFront
28.
操作一覧 ● pushBack どうせO(1) ●
pushFront どうせO(1) ● popBack ● popFront
29.
操作一覧 ● pushBack どうせO(1) ●
pushFront どうせO(1) ● popBack だいたいO(1) ● popFront だいたいO(1)
30.
半分移すとき時間かかる ● pushBack どうせO(1) ●
pushFront どうせO(1) ● popBack だいたいO(1) ときどき O(N) ● popFront だいたいO(1) ときどき O(N)
31.
半分移すとき時間かかる ● pushBack どうせO(1) ●
pushFront どうせO(1) ● popBack だいたいO(1) ときどき O(N) ● popFront だいたいO(1) ときどき O(N) ● でもO(N)であることは本当に「ときどき」で、ま れにしか起こらない
32.
半分移すとき時間かかる ● pushBack どうせO(1) ●
pushFront どうせO(1) ● popBack だいたいO(1) ときどき O(N) ● popFront だいたいO(1) ときどき O(N) ● でもO(N)であることは本当に「ときどき」で、ま れにしか起こらない
33.
半分移すとき時間かかる ● pushBack どうせO(1) ● pushFront どうせO(1) ● popBack
だいたいO(1) ときどき O(N) ● popFront だいたいO(1) ときどき O(N) ● でもO(N)であることは本当に「ときどき」で、まれに しか起こらない ● O(N)っていいたくない
34.
そんなときに便利なのが ならし計算量
35.
ならし計算量とは ● データ構造に対する操作の計算量の評価で 使われる「計算量もどき」 ● 時と場合によって計算量がかわるが、均すと O(f(x))になるとき 「ならし計算量がO(f(x))である」 という
36.
ならし計算量とは ● データ構造に対する操作の計算量の評価で 使われる「計算量もどき」 ● 時と場合によって計算量がかわるが、均すと O(f(x))になるとき 「ならし計算量がO(f(x))である」 という
37.
ならし計算量とは ● データ構造に対する操作の計算量の評価で 使われる「計算量もどき」 ● 時と場合によって計算量がかわるが、均すと O(f(x))になるとき 「ならし計算量がO(f(x))である」 という ?
38.
「均す」とは ● データ構造の中で、操作をN回やった時、「実 際の計算量」の総和と「ならし計算量」の総和 がだいたい同じになる ● 例: – Dequeのpopの実際の計算量 ● O(1)だったりO(N)だったり – Dequeのpopのならし計算量 ● O(1)
39.
Dequeの計算量 ● Dequeの操作のならし計算量は全てO(1) – ほんまか ●
ならし計算量がO(1)ということは N 回操作し たときの「実際の計算量」がO(N)であるという こと – 実験してみるとそれっぽい ● これから2つの方法でこれを証明する
40.
目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting
Method ● Potential Method
41.
AccountingMethod ● 直訳:会計法(法律っぽい) ● 初めあなたの所持金は0円です ● あなたが操作をするたびに、「ならし計算量」 円だけお金がふってきます ●
あなたが操作をするたびに、「実際の計算 量」円払わなければなりません ● あなたはどのタイミングでも所持金が負に なってはいけません
42.
AccountingMethod ● 何円ふってくるか、うまく決めて所持金が負に ならなければそれがならし計算量 ● うまく思いつこう!
43.
AccountingMethod ● 以下のように設定するとうまくいく – 操作をすると
5 円ふってくる
44.
AccountingMethod ● 以下のように設定するとうまくいく – 操作をすると
5 円ふってくる ● これでうまくいくことをこれから証明
45.
AccountingMethod:5円の証明 ● pushBack,pushFront – 実際の計算量は 1 –
よって1円払わないといけない ● popBack,popFrontのエイヤッしないやつ – 実際の計算量は 1 – 1円払わないといけない ● どちらの場合も差し引いて4円貯金が増える
46.
AccountingMethod:5円の証明 ● popBack,popFrontのエイヤッするとき – もう片方のStackの中身(N個とする)をいっ たん全部出して、半分ずつ入れ分ける –
実際の計算量は 2N – 差し引いて2N-5円貯金が減る ● このとき借金しなければよい
47.
AccountingMethod:5円の証明 ● 実は以下の命題が成り立つ – 左側のStackにL個、右側のStackにR個の 要素が入ってる時、4×max(L,
R)円以上の 貯金がある – 帰納法で証明可能
48.
AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い
49.
AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い – pushとエイヤッしないpopは 貯金が4円増えるので成 立し続ける
50.
AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い – pushとエイヤッしないpopは 貯金が4円増えるので成 立し続ける –
エイヤッするとき、もともと貯金が4N円以上あるので 操作後は2N円以上が保証される
51.
AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い – pushとエイヤッしないpopは 貯金が4円増えるので成 立し続ける –
エイヤッするとき、もともと貯金が4N円以上あるので 操作後は2N円以上が保証される – エイヤッ後は4×max(L,R)は2Nになる
52.
AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い – pushとエイヤッしないpopは 貯金が4円増えるので成 立し続ける –
エイヤッするとき、もともと貯金が4N円以上あるので 操作後は2N円以上が保証される – エイヤッ後は4×max(L,R)は2Nになる 成立し続ける
53.
AccountingMethod:4*max(L,R)の証明 ● 命題:貯金が4×max(L,R)円以上 ● はじめの状態(空の状態)では成立 ● 成立している状態からどの操作をしても命題が成立 し続けることを示せば良い – pushとエイヤッしないpopは 貯金が4円増えるので成 立し続ける –
エイヤッするとき、もともと貯金が4N円以上あるので 操作後は2N円以上が保証される – エイヤッ後は4×max(L,R)は2Nになる 成立し続ける (Q.E.D.)
54.
これが Accounting Method
55.
AccountingMethod ● ならしO(1)を求めるのに向いてる – ふってくる値段を貯金がなくならないように充 分大きくするだけ ● ふってくる値段は操作毎に変えても良い – popは4円 –
pushは1円とかでも大丈夫 ● 今回のようにデータ構造の状態に対して貯金の 下限を示したりして使う
56.
AccountingMethod:演習問題 ● 以下をAccountingMethodで示してみよ ● 動的にメモリを確保する配列(vector)の push_backのならし計算量:O(1) – メモリがなくなったら別の場所にいまの2倍 の大きさのメモリを確保します
57.
目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting
Method ● Potential Method
58.
PotentialMethod ● データ構造の状態に対してPotentialという値 を定義する ● ある操作をしてPotentailがP1からP2に変わっ たとする ● そのならし計算量を 「実際の計算量」
+ P2 – P1 として定義する
59.
PotentialMethod:なんでそんなことするの ● 長い処理を考える
60.
PotentialMethod:なんでそんなことするの ● 長い処理を考える 状態 Potential 実計算量 均計算量 C1 C2 C3 CN : : P1 P2 P3 PN : : X1 X2 XN : :
61.
PotentialMethod:なんでそんなことするの ● ポテンシャルと実計算量から均計算量を出す 状態 Potential 実計算量 均計算量 C1 C2 C3 CN : : P1 P2 P3 PN : : X1 X2 XN : : X1+P2-P1 X2+P3-P2 XN+PN-(ry : :
62.
PotentialMethod:なんでそんなことするの ● 計算量の総和を考えてみる 状態 Potential 実計算量 均計算量 C1 C2 C3 CN : : P1 P2 P3 PN : : X1 X2 XN : : X1+P2-P1 X2+P3-P2 XN+PN-(ry : :
63.
PotentialMethod:なんでそんなことするの ● 計算量の総和を考えてみる ● 実計算量 – X1
+ X2 + X3 + … + XN ● 均計算量 – (X1 + P2 – P1) + (X2 + P3 – P2) + … (ry ↓ – X1 + X2 + X3 + … + XN + (PN – P1)
64.
PotentialMethod:なんでそんなことするの ● 計算量の総和を考えてみる ● 実計算量 – X1
+ X2 + X3 + … + XN ● 均計算量 – (X1 + P2 – P1) + (X2 + P3 – P2) + … (ry ↓ – X1 + X2 + X3 + … + XN + (PN – P1)
65.
PotentialMethod:なんでそんなことするの ● 「実計算量の総和」と「均計算量の総和」の差 が PN –
P1 – 終状態と始状態のPotentialの差 – これが「均計算量の総和」以下のオーダー なら、実計算量と均計算量のオーダーが一 致する – 均計算量の定義と合致
66.
PotentialMethod:Dequeのポテンシャル ● うまいポテンシャルを見つけて、どんな操作も 均計算量がO(1)であることを示せば良い
67.
PotentialMethod:Dequeのポテンシャル ● うまいポテンシャルを見つけて、どんな操作も 均計算量がO(1)であることを示せば良い ● 今回は左側のStackの要素数をL、右側の Stackの要素数をRとして 4*max(L, R) をPotentialとするとうまくいく
68.
PotentialMethod:4*max(L,R)の証明 ● 各操作の均計算量 – push ●
ポテンシャルはたかだか4増える ● 実計算量は1 ● よってならし計算量は5
69.
PotentialMethod:4*max(L,R)の証明 ● 各操作の均計算量 – pop(エイヤッなし) ●
ポテンシャルは増えない ● 実計算量は1 ● よってならし計算量は1以下
70.
PotentialMethod:4*max(L,R)の証明 ● 各操作の均計算量 – pop(エイヤッあり) ●
ポテンシャルは4*(N/2)減る ● 実計算量は2N ● よってならし計算量は0
71.
PotentialMethod:4*max(L,R)の証明 ● PN-P1 – N回操作した後の均計算量の総和はO(N) –
PN-P1の最大値は4N=O(N) ● ずっと同じ方からpushしたとき – よっしゃ
72.
PotentialMethod:4*max(L,R)の証明 ● ポテンシャル4*max(L,R)での均計算量がす べてO(1)でした
73.
PotentialMethod:4*max(L,R)の証明 ● ポテンシャル4*max(L,R)での均計算量がす べてO(1)でした (Q.E.D.)
74.
これが Potential Method
75.
PotentialMethod ● ならしO(1)以外を求めるのにも有用 – フィボナッチヒープのO(logN) – スプレー木のO(logN) –
UnionFind木のO(α(n)) (アッカーマン関数の 逆関数) ● 4*max(L,R)はAccountingMethodにもでてきた値 – AccountingもPotentialも歩み寄り方が違うだ けで、やりたい証明は同じ
76.
PotentialMethod:演習問題 ● 以下をPotentialMethodで示してみよ ● 動的にメモリを確保する配列(vector)の push_backのならし計算量:O(1) – メモリがなくなったら別の場所にいまの2倍 の大きさのメモリを確保します
77.
目次 ● 有名なことわざの紹介 ● ならし計算量のはなし ● Accounting
Method ● Potential Method ● おしまい
Download