アルゴリズムとデータ構造

Similar documents
alg2015-2r4.ppt

Microsoft PowerPoint - 13approx.pptx

Microsoft PowerPoint - ca ppt [互換モード]

簡単な検索と整列(ソート)

Microsoft PowerPoint - qcomp.ppt [互換モード]

曲線 = f () は を媒介変数とする自然な媒介変数表示 =,= f () をもつので, これを利用して説明する 以下,f () は定義域で連続であると仮定する 例えば, 直線 =c が曲線 = f () の漸近線になるとする 曲線 = f () 上の点 P(,f ()) が直線 =c に近づくこ

オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110,

2015年度 2次数学セレクション(整数と数列)

Microsoft PowerPoint - mp11-06.pptx

スライド 1

微分方程式による現象記述と解きかた

論理と計算(2)

Microsoft Word - 微分入門.doc

Microsoft PowerPoint - 10.pptx

航空機の運動方程式

喨微勃挹稉弑

Microsoft PowerPoint - mp11-02.pptx

Microsoft PowerPoint - DA2_2018.pptx

DVIOUT-SS_Ma

2015-2018年度 2次数学セレクション(整数と数列)解答解説

2015年度 信州大・医系数学

パソコンシミュレータの現状

Microsoft PowerPoint - DA2_2017.pptx

微分方程式 モデリングとシミュレーション

Microsoft PowerPoint - H22制御工学I-10回.ppt

DVIOUT

2014年度 千葉大・医系数学

学習指導要領

オートマトンと言語

2011年度 筑波大・理系数学

Microsoft Word - NumericalComputation.docx

Microsoft PowerPoint - 10.pptx

構造化プログラミングと データ抽象

例 e 指数関数的に減衰する信号を h( a < + a a すると, それらのラプラス変換は, H ( ) { e } e インパルス応答が h( a < ( ただし a >, U( ) { } となるシステムにステップ信号 ( y( のラプラス変換 Y () は, Y ( ) H ( ) X (

DVIOUT-SS_Ma

RLC 共振回路 概要 RLC 回路は, ラジオや通信工学, 発信器などに広く使われる. この回路の目的は, 特定の周波数のときに大きな電流を得ることである. 使い方には, 周波数を設定し外へ発する, 外部からの周波数に合わせて同調する, がある. このように, 周波数を扱うことから, 交流を考える

4STEP 数学 Ⅲ( 新課程 ) を解いてみた関数 1 微分法 1 微分係数と導関数微分法 2 導関数の計算 272 ポイント微分法の公式を利用 (1) ( )( )( ) { } ( ) ( )( ) ( )( ) ( ) ( )( )

論理と計算(2)

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

2011年度 大阪大・理系数学

Information Theory

様々なミクロ計量モデル†

2016年度 京都大・文系数学

解析力学B - 第11回: 正準変換

<4D F736F F F696E74202D2091E6824F82538FCD8CEB82E88C9F8F6F814592F990B382CC8CB4979D82BB82CC82505F D E95848D8682CC90B69

工業数学F2-04(ウェブ用).pptx

ファイナンスのための数学基礎 第1回 オリエンテーション、ベクトル

< 中 3 分野例題付き公式集 > (1)2 の倍数の判定法は 1 の位が 0 又は偶数 ( 例題 )1~5 までの 5 つの数字を使って 3 ケタの数をつくるとき 2 の倍数は何通りできるか (2)5 の倍数の判定法は 1 の位が 0 又は 5 ( 例題 )1~9 までの 9 個の数字を使って 3

Microsoft PowerPoint - 13.ppt [互換モード]

0 21 カラー反射率 slope aspect 図 2.9: 復元結果例 2.4 画像生成技術としての計算フォトグラフィ 3 次元情報を復元することにより, 画像生成 ( レンダリング ) に応用することが可能である. 近年, コンピュータにより, カメラで直接得られない画像を生成する技術分野が生

Problem P5

チェビシェフ多項式の2変数への拡張と公開鍵暗号(ElGamal暗号)への応用

Microsoft PowerPoint - DA2_2017.pptx

2013年度 信州大・医系数学

DVIOUT

Chap2

混沌系工学特論 #5

フィードバック ~ 様々な電子回路の性質 ~ 実験 (1) 目的実験 (1) では 非反転増幅器の増幅率や位相差が 回路を構成する抵抗値や入力信号の周波数によってどのように変わるのかを調べる 実験方法 図 1 のような自由振動回路を組み オペアンプの + 入力端子を接地したときの出力電圧 が 0 と

構造化プログラミングと データ抽象

Taro-プログラミングの基礎Ⅱ(公

Probit , Mixed logit

数学 ⅡB < 公理 > 公理を論拠に定義を用いて定理を証明する 1 大小関係の公理 順序 (a > b, a = b, a > b 1 つ成立 a > b, b > c a > c 成立 ) 順序と演算 (a > b a + c > b + c (a > b, c > 0 ac > bc) 2 図

Microsoft PowerPoint - mp13-07.pptx

2016年度 筑波大・理系数学

PowerPoint Presentation

オートマトン 形式言語及び演習 3. 正規表現 酒井正彦 正規表現とは 正規表現 ( 正則表現, Regular Expression) オートマトン : 言語を定義する機械正規表現 : 言語

Microsoft Word - thesis.doc

2015-2017年度 2次数学セレクション(複素数)解答解説

( 最初の等号は,N =0, 番目は,j= のとき j =0 による ) j>r のときは p =0 から和の上限は r で十分 定義 命題 3 ⑵ 実数 ( 0) に対して, ⑴ =[] []=( 0 または ) =[6]+[] [4] [3] [] =( 0 または ) 実数 に対して, π()

PowerPoint Presentation

1 対 1 対応の演習例題を解いてみた 微分法とその応用 例題 1 極限 微分係数の定義 (2) 関数 f ( x) は任意の実数 x について微分可能なのは明らか f ( 1, f ( 1) ) と ( 1 + h, f ( 1 + h)

重要例題113

経済数学演習問題 2018 年 5 月 29 日 I a, b, c R n に対して a + b + c 2 = a 2 + b 2 + c 2 + 2( a, b) + 2( b, c) + 2( a, c) が成立することを示しましょう.( 線型代数学 教科書 13 ページ 演習 1.17)

Phys1_03.key

Information Theory

umeda_1118web(2).pptx

東邦大学理学部情報科学科 2014 年度 卒業研究論文 コラッツ予想の変形について 提出日 2015 年 1 月 30 日 ( 金 ) 指導教員白柳潔 提出者 山中陽子

Microsoft Word - 201hyouka-tangen-1.doc

Microsoft PowerPoint - H21生物計算化学2.ppt

2011年度 東京大・文系数学

PowerPoint Presentation

PowerPoint Presentation

学習指導要領

線積分.indd

31 33

Microsoft PowerPoint SIGAL.ppt

航空機の運動方程式

PowerPoint Presentation

2017年度 長崎大・医系数学

学習指導要領

Microsoft PowerPoint - ppt-7.pptx

頻出問題の解法 4. 絶対値を含む関数 4.1 絶対値を含む関数 絶対値を含む関数の扱い方関数 X = { X ( X 0 のとき ) X ( X <0 のとき ) であるから, 絶対値の 中身 の符号の変わり目で変数の範囲を場合分けし, 絶対値記号をはずす 例 y= x 2 2 x = x ( x

数学 t t t t t 加法定理 t t t 倍角公式加法定理で α=β と置く. 三角関数

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

<4D F736F F D208C51985F82CD82B682DF82CC88EA95E A>

データ解析

Microsoft PowerPoint - 09.pptx

Microsoft Word - 補論3.2

スライド 1

Transcription:

講義 アルゴリズムとデータ構造 第 2 回アルゴリズムと計算量 大学院情報科学研究科情報理工学専攻情報知識ネットワーク研究室喜田拓也 講義資料 2018/5/23

今日の内容 アルゴリズムの計算量とは? 漸近的計算量オーダーの計算の方法最悪計算量と平均計算量 ポイント オーダー記法 ビッグオー (O), ビッグオメガ (Ω), ビッグシータ (Θ) 2

お風呂スケジューリング問題 お風呂に入る順番を決めよう! ww 1 時間 ww 2 ww 3 ww 4 全員の待ち時間と入浴時間の合計を最小にする順番を求める 3

お風呂スケジューリング問題 例えば, こんな順番だと 待ち時間 入浴時間 ww 3 0 ww 3 ww 2 ww 3 ww 2 ww 4 ww 3 + ww 2 ww 4 ww 1 ww 3 + ww 2 + ww 4 ww 1 もっと小さくできます ww 1 + 3ww 2 + 4ww 3 + 2ww 4 4

お風呂スケジューリング問題 お風呂に入る順番を決めよう! ww 1 ww 2 時間 私も! お父さんの入った浴槽に浸かりたくない! ww 3 ww 4 お姉ちゃんよりは後でいいや 複雑な制約が付くと, スケジューリング問題はとても難しい! 5

よいアルゴリズムとは? 性能の指標はいろいろある計算時間 メモリサイズ ( 使用メモリ量 ) 外部記憶への入出力数 ネットワークの通信量 ほかの要素再利用可能性 (Reusability) 読みやすさ (Readability) 移植しやすさ (Portability) etc... ここでは, 計算時間とメモリサイズのみに注目する 6

計算コスト ( 計算量 ) という考え方 時間計算量 (time complexity) 計算のステップ数 領域計算量 (space complexity) 記憶領域量 ある問題を解くために必要な計算量を測りたい でも計算時間やメモリサイズはいろいろな要素に依存する! 1. アルゴリズムの方式 2. コーディングスタイル 3. 言語の種類とコンパイラの質 4. ハードウェアの性能 5. 入力そのもの 7

1 個の問題に対して入力は様々 問題例 1 解 1 アルゴリズム 問題例 2 解 2 1 個の問題 = 無限個の問題例の集合 問題 : 最大公約数を求める問題 (GCD) 入力 : 正整数 aa 0, aa 1 出力 :aa 0 と aa 1 の最大公約数 問題例 : (aa 0, aa 1 ) = (28,12), (987654321, 123456789) 8

計算量の評価法 問題例の規模によって計算量が変わる 問題例の規模に応じた評価 入力長 nnの関数 TT(nn) として計算量を評価ただし, 入力長および計算量は計算コストモデルに依存定数 ( 一様 ) コストモデルすべての数を1 語 (1 単位のデータ ) とみなして どの基本命令も単位時間で実行できると仮定対数コストモデル各々の数は, それを表現するのに必要なビット数の語数が必要であり 基本命令の実行はビット数に応じた時間がかかると仮定 大きな数字を扱うことが本質的な問題は対数コストモデル そうでない場合は定数コストモデルで考えることが多い 9

オーダー 記法について ビッグオーダーとかグランドオーダーとか?

漸近的計算量 オーダー評価とは計算量 TT(nn) は十分大きな nn に対して評価する定数倍の差はないものとみなす 定義 [ 漸近的上界 ( ビッグオー記法 )] TT(nn) = O(ff(nn)) ある実数 cc > 0 と自然数 nn 0 が存在して全ての nn nn 0 に対して TT nn cc ff(nn) が成り立つ TT(nn) は, オーダー ff(nn) である または TT(nn) は, ビッグオー ff(nn) である と読む 漸近的上界 (asymptotic upper bound)= 意味 関数 TT(nn) は ff(nn) と同じか小さい 漸近的上界はいくらでも存在するができるだけ単純で精度のよいものがよい (1) 2nn 2 + 5nn + 1000 = O(nn 2 ) best! (2) 2nn 2 + 5nn + 1000 = O(nn 2 + nn) (1) より複雑 (3) 2nn 2 + 5nn + 1000 = O(nn 3 ) (1) より精度が悪い 11

なぜ計算時間をオーダーで測るのか? 質問 : 問題のサイズを大きくしていったらどうなるか? 100nn, 5nn 2, nn 3 /2, 2 nn の計算時間をもつ 4 つのプログラムに対して, その入力 nn を増やしながら走らせたときの計算時間のグラフ オーダーが大きいほど, 係数によらず計算時間が急速に増加する 12

なぜ計算時間をオーダーで測るのか? 質問 : 時間をかけた分だけ大きなサイズの問題が解けるか? 実行時間 TT(nn) 10 3 秒で解ける最大問題サイズ O(nn) 時間アルゴリズムなら計算時間を 10 倍にすると 10 倍の サイズの問題が解ける 10 4 秒で解ける最大問題サイズ 増大率 ( 倍 ) 100nn 10 100 10.0 5nn 2 14 45 3.2 nn 3 /2 12 27 2.3 2 nn 10 13 1.3 しかし,O(nn 3 ) 時間なら 2.3 倍,O(2 nn ) 時間なら 1.3 倍しか 大きくならない! 13

漸近的計算量の性質 TT 1 nn = O ff nn, TT 2 nn = O gg nn のとき, 次の等式が成立 1. TT 1 (nn) + TT 2 (nn) = O max ff nn, gg nn 意味 : いくつかの処理を順次行う場合は一番遅い処理が全体の処理速度を支配する 2. TT 1 nn TT 2 (nn) = O ff nn gg nn 意味 : 処理を繰り返し行うとその回数分時間がかかる ( 例 ) nn 2 + nn 3 = O nn 3, nn 2 nn 3 = O nn 5 証明してみよう! オーダー表記の注意点 : ( 左辺の精度 ) ( 右辺の精度 ) ( 例 ) 2nn 2 + 5nn + 1000 = O nn 2 O(nn 2 ) = 2nn 2 + 5nn + 1000 14

漸近的下界 定義 [ 漸近的下界 ( ビッグオメガ記法 )] TT(nn) = Ω(ff(nn)) ある実数 cc > 0 と自然数 nn 0 が存在して全ての nn nn 0 に対して TT nn cc ff(nn) が成り立つ 漸近的下界 (asymptotic lower bound)= 意味 関数 TT(nn) は ff(nn) と同じか大きい TT(nn) はビッグオメガ ff(nn) である と読む ( 例 ) TT nn = 2nn 2 + 5nn + 1000 = Ω nn 2 TT nn = nn2, nn 3, if nnは奇数 if nnは偶数 TT(nn) = Ω nn 2 下の定義では Ω nn 3 次の定義を Ω の定義として採用することもある ( 研究論文ではこちらも多い ) 上の定義の方が厳しいので上の定義を満たせば次の定義も満たす 漸近的下界の別定義 TT(nn) = Ω(ff(nn)) ある実数 cc > 0 が存在して, 無限個の nn に対して TT nn cc ff(nn) が成り立つ 15

漸近的にタイトな限界 定義 [ 漸近的にタイトな限界 (asymptotic tight bound)] TT(nn) = Θ(ff(nn)) ある実数 cc 0, cc 1 > 0 と自然数 nn 0 が存在して全ての nn nn 0 に対して, cc 0 ff nn TT nn cc 1 ff nn が成り立つ TT(nn) はビッグシータ ff(nn) である と読む ( 例 ) TT nn = 2nn 2 + 5nn + 1000 = Θ nn 2 TT nn = nn2, if nnは奇数 nn 3, if nnは偶数 TT nn Θ nn 3 一般に TT(nn) = Θ(ff(nn)) TT(nn) = O(ff(nn)), TT(nn) = Ω(ff(nn)) Ω の別定義であれば のみ成立 16

( 上級編 ) 教養として o と ω も知っておこう! 定義 [ 漸近的にタイトでない上界 ] TT(nn) = o(ff(nn)) 任意の実数 cc > 0 に対し, ある自然数 nn 0 が存在して, 全ての nn nn 0 に対して TT nn cc ff nn が成り立つ TT(nn) はスモールオー ff(nn) である と読む TT(nn) はnnが無限大に近づくにつれて,ff(nn) に対して相対的に小さくなる T nn すなわち, lim = 0 となる TT(nn) はff(nn) より真に小さい nn ff nn ( 例 ) 2nn = o nn 2, 2nn 2 o nn 2 定義 [ 漸近的にタイトでない下界 ] TT(nn) = ωω(ff(nn)) 任意の実数 cc > 0 に対し, ある自然数 nn 0 が存在して, 全ての nn nn 0 に対して TT nn cc ff nn が成り立つ TT(nn) はスモールオメガff(nn) である と読む TT(nn) はnnが無限大に近づくにつれて,ff(nn) に対して相対的に大きくなる T nn すなわち, lim = となる TT(nn) はff(nn) より真に大きい nn ff nn ( 例 ) 2nn 2 = ωω nn, 2nn 2 ωω nn 2 TT(nn) = o(ff(xx)) ff(xx) = ωω(tt(nn)) 17

オーダーの計算の基本 規則 1: TT(nn) が nn の多項式ならば, 最大次数の項のオーダーになる ( 例 ) 2nn 2 + 3nn + 100 = O nn 2 10nn + 2 nn + 5 = 10nn 1 + 2nn 0.5 + 5 = O nn 規則 2: 次のオーダーの式が成立する log nn = O(nn) nn = O 2 nn 任意のcc > 0に対して,log nn = O nn cc 規則 3: TT(nn) がいくつかの項の和ならば, 最大次数の項のオーダーになる ( 例 ) 3nn 2 + 2 nn + 100 log nn + 5 = O nn 2 18

増加のオーダーによる比較 (1) 計算時間が TT 1 nn と TT 2 nn のアルゴリズムではどちらが速いか? 増加のオーダーが小さい方が速い 規則 4: TT 1 (nn) よりも TT 2 (nn) の方が増加のオーダーが大きい TT lim 1 nn = 0 lim TT 2 nn nn TT 2 nn nn TT 1 nn = 規則 5: TT 1 (nn) と TT 2 (nn) は増加のオーダーが等しい TT 1 nn = Θ T 2 nn TT 2 nn = Θ TT 1 nn TT 1 (nn) とTT 2 (nn) は増加のオーダーが等しい あるcc > 0が存在し TT, lim 1 nn nn TT 2 nn 注意 = cc 19

増加のオーダーによる比較 (2) 規則 6: ロピタル (de l Hospital) の法則 1. ff(xx) とgg(xx) が微分可能で,ff(aa) = gg(aa) = 0かつxx = aa 以外でgg xx 0 ff xx であるなら,lim = lim ff xx が成り立つ xx aa gg xx xx aa gg xx 2. ff(xx) とgg(xx) が微分可能で, lim ff(xx) = lim gg(xx) = であれば, xx xx ff xx lim = lim ff xx が成り立つ xx gg xx xx gg xx ( 例 ) nn 0.01 と log nn 100 ではどちらが漸近的に増加率が大きいか? lim nn log nn 100 nn 0.01 = lim nn 100 log nn 99 1/nn 0.01nn 0.99 = lim nn 100 log nn 99 0.01nn 0.01 = lim nn 100 99 log nn 98 0.01 2 nn 0.01 = = lim nn 100! 0.01 100 nn 0.01 = 0 20

発展問題 次のオーダー表記を簡略化せよ (a) O nn log nn + nn 2 + O nn 1.83 log nn 明らかに nn log nn < nn 2, nn log nn < nn 1.83 log nn である. また, nn 1.83 log nn lim nn nn 2 log nn = lim = lim nn nn0.17 nn 1/nn = lim 0.17nn 0.83 nn よって, 十分大きな nn に対して nn 1.83 log nn < nn 2 であるから O nn log nn + nn 2 + O nn 1.83 log nn = O nn 2 となる. (b) O nn log nn + nn 100 + nn 30 log nn nn 30 log nn < nn 100 は明らか. また十分大きな nn に対して,nn 100 < nn log nn が成り立つ. よって, O nn log nn + nn 100 + nn 30 log nn = O nn log nn となる. 1 = 0. 0.17nn0.17 (c) O(nn 3 sin 2 nn)o(2 nn / log nn) チャレンジ! 21

アルゴリズムの計算量 計算量を問題例の入力長 nn の関数としてオーダー評価したもの以下の二つの評価法がある 最悪計算量 (worst case complexity) 入力長が nn である問題例の中で最大の計算量平均計算量 (average case complexity) 入力長が nn である問題例の計算量の期待値 ( 例 ) 入力長が N の問題例に対し確率 (nn 1)/nn で O nn, 確率 1/nn で O nn 2 であるようなアルゴリズムの計算量 最悪時間計算量 O nn 2 平均時間計算量 O nn 通常は, 最悪計算量で評価することが多い 22

お風呂スケジューリング問題の計算量は? お風呂に入る順番を決めよう! ww 1 ww 2 時間 nn 人のお風呂スケジューリング問題の 解の空間は nn! ( 順列通り ) もある! 単純な方法だと O nn! 時間かかるが うまくやれば O nn log nn 時間で解ける! ww 3 ww 4 全員の待ち時間と入浴時間の合計を最小にする順番を求める 23

今日のまとめ アルゴリズムの計算量とは? 時間計算量と領域計算量入力長 nn の関数 TT(nn) として計算量を評価 オーダー記法漸近的計算量 ( 十分大きな nn で. 定数倍は無視 ) ビッグオー (O), ビッグオメガ (Ω), ビッグシータ (Θ), スモールオー (o), スモールオメガ (ωω) オーダーの比較の仕方, 簡略化の方法 最悪計算量と平均計算量 24