SlideShare a Scribd company logo
1 of 8
Download to read offline
5.1 Techniques of Amortized Analysis
            島崎 清山 @seizans
着想
• 従来:処理単位の計算量を解析
                  ×n
• 処理列の計算量:(各処理の計算量)
• 各処理の計算量を、抑えたい合計計算量 / n で抑える
 必要
• ならし解析:処理列の計算量を解析
• 処理列の合計計算量にフォーカス
• 各処理に自由度:重い処理が数回あることを許容可
方法
• Amortized   Cost (ならしコスト) という概念を導入
 • Actual
      Cost (実コスト) に対しての仮想コスト
• ならしコストの設定
 • (抑えたい合計計算量)       >= (ならしコスト) × n
 • (ならしコストの和)
            >= (実コストの和)
• 上記のように設定、証明できれば次が示せたことに
 • (抑えたい合計計算量)       >= (実コストの和)
Phisicist’s Method (Potential Method)
• 日本語:ポテンシャル法
• ポテンシャル関数を使ってならしコストを定義する
• ポテンシャル関数
 • データの状態→ 実数 という対応を定義する
 • 定義例:スタックに積まれたオブジェクト数
• (ならしコスト和)        = (実コスト和) + (現ポテンシャル)
• 次のようなポテンシャル関数           p を定義できれば・・・
 • p(D0) = 0 
 • p(Di) >= 0 (any i) 
• (ならしコスト和)        >= (実コスト和) が示せたことになる
例:スタック(multipopあり)
• multipop:複数個を一度にpopする(最悪計算量は            n)
• p(Di):操作   i 後のスタック上のオブジェクト数と定義
 • この定義は        p(D0) = 0 と p(Di) >= 0 を満たしている
• ならしコストの計算
 • push:2   ( = 実コスト(1) + ポテンシャル差(1) )
 • pop:0   ( = 実コスト(1) + ポテンシャル差 (-1) )
 • multipop:0   ( = 実コスト(n) + ポテンシャル差 (-n) )
• よってならしコストはどれも                O(1)
• よって総ならしコストは               O(n)
• よって総実コストは          O(n)
Banker’s Method (Accounting Method)
• 日本語:出納法
• ポテンシャル法でのポテンシャル差にフォーカス
• 各処理で預金額(=ポテンシャル差)を決める
• (ならしコスト)   = (実コスト) + (預金額)
• 預金総額(=ポテンシャル)が常に非負である必要
例:スタック(multipop あり)
•   各処理での預金額を次のように定義
    •   push:1
    •   pop:-1
    •   multipop:-n
•   するとならしコストは
    •   push:2
    •   pop:0
    •   multipop:0
•   よってならしコストはどれも O(1)
•   よって総ならしコストは O(n)
•   よって総実コストは O(n)
私見
• Banker’s   Method の預金を割り当てるロケーション
  • 今のところ考える必要がない
• Banker’s   Method で預金と借金との区別
  • 両方の和で預金だと考えて問題ない
• のか?

More Related Content

What's hot

Processing資料(2) 再帰
Processing資料(2) 再帰Processing資料(2) 再帰
Processing資料(2) 再帰reona396
 
RUPC2014_Day3_G
RUPC2014_Day3_GRUPC2014_Day3_G
RUPC2014_Day3_GYuma Inoue
 
条件分岐・繰り返し処理
条件分岐・繰り返し処理条件分岐・繰り返し処理
条件分岐・繰り返し処理rippro
 
purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明Tetsuro Nagae
 
閉凸集合への射影の存在
閉凸集合への射影の存在閉凸集合への射影の存在
閉凸集合への射影の存在政孝 鍋島
 
Ninja of Train
Ninja of TrainNinja of Train
Ninja of Traintomerun
 
Similarity functions in Lucene 4.0
Similarity functions in Lucene 4.0Similarity functions in Lucene 4.0
Similarity functions in Lucene 4.0Koji Sekiguchi
 
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Inc.
 

What's hot (11)

diff template library
diff template librarydiff template library
diff template library
 
Processing資料(2) 再帰
Processing資料(2) 再帰Processing資料(2) 再帰
Processing資料(2) 再帰
 
RUPC2014_Day3_G
RUPC2014_Day3_GRUPC2014_Day3_G
RUPC2014_Day3_G
 
条件分岐・繰り返し処理
条件分岐・繰り返し処理条件分岐・繰り返し処理
条件分岐・繰り返し処理
 
purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明purely functional data structures 5.3 日本語での説明
purely functional data structures 5.3 日本語での説明
 
閉凸集合への射影の存在
閉凸集合への射影の存在閉凸集合への射影の存在
閉凸集合への射影の存在
 
Ninja of Train
Ninja of TrainNinja of Train
Ninja of Train
 
DP特集
DP特集DP特集
DP特集
 
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
 
Similarity functions in Lucene 4.0
Similarity functions in Lucene 4.0Similarity functions in Lucene 4.0
Similarity functions in Lucene 4.0
 
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
 

Viewers also liked (9)

PFDS8.1
PFDS8.1PFDS8.1
PFDS8.1
 
メッセージ認証コード(Message Authentication Code)
メッセージ認証コード(Message Authentication Code)メッセージ認証コード(Message Authentication Code)
メッセージ認証コード(Message Authentication Code)
 
Yesod and Auth
Yesod and AuthYesod and Auth
Yesod and Auth
 
Cryptography
CryptographyCryptography
Cryptography
 
20120527yesod
20120527yesod20120527yesod
20120527yesod
 
Yesod(at FPM2012)
Yesod(at FPM2012)Yesod(at FPM2012)
Yesod(at FPM2012)
 
Ppl
PplPpl
Ppl
 
Xpath in-lens
Xpath in-lensXpath in-lens
Xpath in-lens
 
IdrisでWebアプリを書く
IdrisでWebアプリを書くIdrisでWebアプリを書く
IdrisでWebアプリを書く
 

Recently uploaded

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Recently uploaded (8)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

Pfds20120304

  • 1. 5.1 Techniques of Amortized Analysis 島崎 清山 @seizans
  • 2. 着想 • 従来:処理単位の計算量を解析 ×n • 処理列の計算量:(各処理の計算量) • 各処理の計算量を、抑えたい合計計算量 / n で抑える 必要 • ならし解析:処理列の計算量を解析 • 処理列の合計計算量にフォーカス • 各処理に自由度:重い処理が数回あることを許容可
  • 3. 方法 • Amortized Cost (ならしコスト) という概念を導入 • Actual Cost (実コスト) に対しての仮想コスト • ならしコストの設定 • (抑えたい合計計算量) >= (ならしコスト) × n • (ならしコストの和) >= (実コストの和) • 上記のように設定、証明できれば次が示せたことに • (抑えたい合計計算量) >= (実コストの和)
  • 4. Phisicist’s Method (Potential Method) • 日本語:ポテンシャル法 • ポテンシャル関数を使ってならしコストを定義する • ポテンシャル関数 • データの状態→ 実数 という対応を定義する • 定義例:スタックに積まれたオブジェクト数 • (ならしコスト和) = (実コスト和) + (現ポテンシャル) • 次のようなポテンシャル関数 p を定義できれば・・・ • p(D0) = 0  • p(Di) >= 0 (any i)  • (ならしコスト和) >= (実コスト和) が示せたことになる
  • 5. 例:スタック(multipopあり) • multipop:複数個を一度にpopする(最悪計算量は n) • p(Di):操作 i 後のスタック上のオブジェクト数と定義 • この定義は p(D0) = 0 と p(Di) >= 0 を満たしている • ならしコストの計算 • push:2 ( = 実コスト(1) + ポテンシャル差(1) ) • pop:0 ( = 実コスト(1) + ポテンシャル差 (-1) ) • multipop:0 ( = 実コスト(n) + ポテンシャル差 (-n) ) • よってならしコストはどれも O(1) • よって総ならしコストは O(n) • よって総実コストは O(n)
  • 6. Banker’s Method (Accounting Method) • 日本語:出納法 • ポテンシャル法でのポテンシャル差にフォーカス • 各処理で預金額(=ポテンシャル差)を決める • (ならしコスト) = (実コスト) + (預金額) • 預金総額(=ポテンシャル)が常に非負である必要
  • 7. 例:スタック(multipop あり) • 各処理での預金額を次のように定義 • push:1 • pop:-1 • multipop:-n • するとならしコストは • push:2 • pop:0 • multipop:0 • よってならしコストはどれも O(1) • よって総ならしコストは O(n) • よって総実コストは O(n)
  • 8. 私見 • Banker’s Method の預金を割り当てるロケーション • 今のところ考える必要がない • Banker’s Method で預金と借金との区別 • 両方の和で預金だと考えて問題ない • のか?