Microsoft PowerPoint - 13approx.pptx

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

Microsoft PowerPoint - DA2_2019.pptx

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

PowerPoint プレゼンテーション

PowerPoint Presentation

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

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

2011年度 大阪大・理系数学

Microsoft PowerPoint - mp11-06.pptx

Microsoft PowerPoint - ad11-09.pptx

Microsoft PowerPoint - mp13-07.pptx

Microsoft PowerPoint - DA2_2018.pptx

umeda_1118web(2).pptx

スライド タイトルなし

Microsoft PowerPoint - DA2_2017.pptx

Microsoft PowerPoint - DA2_2017.pptx

DVIOUT-SS_Ma

Microsoft PowerPoint - ppt-7.pptx

2016年度 京都大・文系数学

PowerPoint Presentation

alg2015-2r4.ppt

スライド 1

Microsoft Word - 微分入門.doc

A Constructive Approach to Gene Expression Dynamics

情報システム評価学 ー整数計画法ー

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

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

ボルツマンマシンの高速化

Microsoft PowerPoint - 05.pptx

データ構造

PowerPoint Presentation

2015年度 信州大・医系数学

喨微勃挹稉弑

PowerPoint プレゼンテーション

論理と計算(2)

論理と計算(2)

2014年度 信州大・医系数学

2014年度 筑波大・理系数学

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

Microsoft PowerPoint - 10.pptx

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

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

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

Taro-再帰関数Ⅲ(公開版).jtd

() ): (1) f(x) g(x) x = x 0 f(x) + g(x) x = x 0 lim f(x) = f(x 0 ), lim g(x) = g(x 0 ) x x 0 x x0 lim {f(x) + g(x)} = f(x 0 ) + g(x 0 ) x x0 lim x x 0

DVIOUT

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

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

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

グラフ理論における偶奇性の現象

2-1 / 語問題 項書換え系 4.0. 準備 (3.1. 項 代入 等価性 ) 定義 3.1.1: - シグネチャ (signature): 関数記号の集合 (Σ と書く ) - それぞれの関数記号は アリティ (arity) と呼ばれる自然数が定められている - Σ (n) : アリ

cp-7. 配列

2018年度 筑波大・理系数学

算法の設計と評価

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

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

Information Theory

ディジタル信号処理

Chap2

2017年度 金沢大・理系数学

Microsoft PowerPoint - mp11-02.pptx

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル

数学 Ⅲ 微分法の応用 大学入試問題 ( 教科書程度 ) 1 問 1 (1) 次の各問に答えよ (ⅰ) 極限 を求めよ 年会津大学 ( 前期 ) (ⅱ) 極限値 を求めよ 年愛媛大学 ( 前期 ) (ⅲ) 無限等比級数 が収束するような実数 の範囲と そのときの和を求めよ 年広島市立大学 ( 前期

COMPUTING THE LARGEST EMPTY RECTANGLE

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

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

横浜市環境科学研究所

. 角の二等分線と調和平均 平面上に点 を端点とする線分 と を重ならないようにとる, とし とする の二等分線が線分 と交わる点を とし 点 から に垂直に引いた直線が線分 と交わる点 とする 線分 の長さを求めてみよう 点 から に垂直な直線と および との交点をそれぞれ, Dとする つの直角三

<4D F736F F D208C51985F82CD82B682DF82CC88EA95E A>

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

2011年度 東京大・文系数学

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

1999年度 センター試験・数学ⅡB

Łñ“’‘‚2004

プリント


<4D F736F F D F90948A F835A E815B8E8E8CB189F090E05F8E6C8D5A>

演習1

2017年度 長崎大・医系数学

<8D828D5A838A817C A77425F91E6318FCD2E6D6364>

Math-Aquarium 例題 図形と計量 図形と計量 1 直角三角形と三角比 P 木の先端を P, 根元を Q とする A 地点の目の位置 A' から 木の先端への仰角が 30,A から 7m 離れた AQB=90 と なる B 地点の目の位置 B' から木の先端への仰角が 45 であ るとき,

2015年度 京都大・理系数学

PowerPoint Presentation

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

Microsoft PowerPoint - 13基礎演習C_ITプランナー_2StableMatching.pptx

情報処理Ⅰ

<4D F736F F D208CF68BA48C6F8DCF8A C30342C CFA90B68C6F8DCF8A7782CC8AEE967B92E8979D32288F4390B394C529332E646F63>

2011年度 筑波大・理系数学

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

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

14 化学実験法 II( 吉村 ( 洋 mmol/l の半分だったから さんの測定値は くんの測定値の 4 倍の重みがあり 推定値 としては 0.68 mmol/l その標準偏差は mmol/l 程度ということになる 測定値を 特徴づけるパラメータ t を推定するこの手

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

スライド 1

Microsoft PowerPoint - DA2_2018.pptx

2016年度 九州大・理系数学

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

2013年度 信州大・医系数学

Microsoft PowerPoint - JKO18-learning.ppt

データ解析

! Aissi, H., Bazga, C., & Vaderpoote, D. (2009). Mi max ad mi max regret versios of combiatorial optimizatio problems: A survey. Europea joural of ope

Transcription:

I482F 実践的アルゴリズム特論 13,14 回目 : 近似アルゴリズム 上原隆平 (uehara@jaist.ac.jp)

ソートの下界の話 比較に基づく任意のソートアルゴリズムはΩ(n log n) 時間の計算時間が必要である 証明 ( 概略 ) k 回の比較で区別できる場合の数は高々 2 k 種類しかない n 個の要素の異なる並べ方は n! 通りある したがって少なくとも k n 2 n! 2 n e n が成立していなければならない 両辺の対数をとれば以下を得る n n 1 k log 2 n nlog no ( n ) log no(1) e 2

超高速ソートの話 以下の特殊なソートを考える : 入力 : a[1] a[n] で それぞれの a[i] の値は 1~10 以下のアルゴリズム A は O(n) 時間で動作する (!?) 1. 配列 b[1]=b[2]= =b[10]=0; =b[10]=0; // b[i] は a[j]=i を満たす要素の個数 2. for i=1,2,,n do b[a[i]]++; 3. for j=1,2,,10 do j を b[j] 個出力する. このソート A は比較に基づいていない!! Radix sort, bucket sort などと呼ばれるソートと同様のアイデア データが 整数 など 特殊 な場合はこちらの方が速い!! データに暗黙の仮定があれば利用できるかもしれない

典型的な NP 完全問題 KNAP を高速に解く方法 (?) KNAP: Input: アイテムの配列 a[1],, a[n], 大きさ k Output: ai [] kを満たす集合 S {1,,n} が存在するか? is アルゴリズム B: それぞれの a[i] が正整数なら以下で解ける 1. b[1]=b[2]= =b[k]=0; b[2] b[k] 2. for i=1,2,,n do 1. for j=k,k-1,,2,1 do 1. if b[j]>0 then b[j+a[i]]=1; 3. if b[t]>0 then yes else no. 一般には k の値が n に対して指数関数的に大きくなりうるので 実は多項式時間アルゴリズムではない!! b[] をリストにすれば 実数などでも動作する B の実行時間は O(nk) 時間 データが 整数 など 特殊 な場合や とりうる値の組合せの数 (b[] の要素数 ) が n の多項式で押さえられるときは速い!!

典型的な NP 完全問題 KNAP を高速に解く方法 (?) KNAP: Input: アイテムの配列 a[1],, a[n], 大きさ k Output: ai [] kを満たす集合 S {1,,n} が存在するか? is 演習問題 : 次のアルゴリズム B は何を計算しているのか? 1. b[1]=b[2]= =b[k]=0; b[2] b[k] 2. for i=1,2,,n do 1. for j=k,k-1,,2,1 do 1. if b[j]>0 then b[j+a[i]]=b[j+a[i]]+1; 3. if b[t]>0 then yes else no.

近似アルゴリズムの枠組 : 例 : Yes/No タイプの決定問題を 最適化問題 に改造して考える ( 注意 ) 最適化問題は 最小化問題 と 最大化問題 がある VC( 頂点被覆 ): 大きさ最小の頂点被覆を見つける MaxSAT: 与えられた論理式のうち なるべく多くの項を True にする 巡回セールスマン問題 : すべての都市をめぐる最小コストの経路を探す ( グラフを 辺に重み ( コスト ) のついたグラフ にして 全経路を通れることにする ) KNAP: 大きさ k 以下の組合せの中で最大のものを見つける 近似アルゴリズムの良さは 近似率 ( と計算時間 ) で測る : 最適な解を O* として アルゴリズムの出力を O とすると 最小化問題の近似率 =O/O* 1 最大化問題の近似率 =O*/O 1 近似率はいつでも1 以上で 近似率 1のアルゴリズムは誤差のないアルゴリズム

アルゴリズムの良さを 近似率 ( と計算時間 ) で測る : 困難問題 ( を最適化問題に翻訳したもの ) は典型的には以下の 3 つのタイプに分類できる 1. 定数倍近似すら困難なもの ( クラス : この授業では扱わない ) 1. = が成立しない限り定数倍近似は存在しない問題 など 2. 適当な定数に対して定数倍近似が可能なもの (2 倍近似アルゴリズムなど ) 3. 任意の正定数 ε>0 に対して以下の条件を満たすアルゴリズムが存在する : 1. n と 1/ε に対する多項式時間で動作する 2. (1+ε) 近似解を出す このアルゴリズム ( 群 ) を多項式時間近似スキーム (PTAS; Polynomial Time Approximation Scheme) と呼ぶ

2. 2 倍近似アルゴリズムの例 頂点被覆問題 (VC) の最適化バージョン入力 : 無向グラフG=(V,E) 出力 : 最小の頂点被覆 S アルゴリズム C: 1. S:=Φ; ; 2. G の辺 e={u,v} を適当に 1 本選ぶ 3. u と v を S に入れる 4. u,v につながっている辺を G からすべて削除する 5. G に辺が残っていれば 2 に戻る [ 定理 13.1] アルゴリズム Cの実行時間は O( V + E ) 時間である また G の最適な頂点被覆を S* とし アルゴリズムCの出力を S とすると 以下が成立 : S / S* 2 なぜか2 倍を切れるかどうかが難しい問題が多い S は Gの 頂点被覆 : どの辺 {u,v} に対しても u Sまたはv Sが成立 線形時間で動作するのは簡単なので省略

2. 2 倍近似アルゴリズムの例 S は G の 頂点被覆 : アルゴリズム C: 1. S:=Φ; 2. G の辺 e={u,v} { } を適当に 1 本選ぶ 3. u と v を S に入れる 4. u,v につながっている辺を G からすべて削除する 5. G に辺が残っていれば 2 に戻る [ 定理 13.1] G の最適な頂点被覆を S* とし アルゴリズム C の出力を S とすると 以下が成立 : S / S* 2 どの辺 {u,v} に対しても u Sまたはv Sが成立 [ 証明 ] ステップ2で選ばれた辺 e の集合を C とおく e はステップ4で削除されるため同じ辺が 2 度選ばれることはない 2 C = S C は頂点を互いに共有しない辺の集合で e C のそれぞれについて少なくとも一方の端点は S* に入っていなければならない C S* したがって S / S* 2 C / C =22 である

2. 2 倍近似アルゴリズムの例 S は G の 頂点被覆 : アルゴリズム C: 1. S:=Φ; 2. G の辺 e={u,v} { } を適当に 1 本選ぶ 3. u と v を S に入れる 4. u,v につながっている辺を G からすべて削除する 5. G に辺が残っていれば 2 に戻る [ 定理 13.1] G の最適な頂点被覆を S* とし アルゴリズム C の出力を S とすると 以下が成立 : S / S* 2 どの辺 {u,v} に対しても u Sまたはv Sが成立 [ 演習問題 ] アルゴリズム C は 2 倍近似アルゴリズムであることが証明された C の近似率 2 はこれ以上改善できないことを示せ 近率改善を 具体的に 無限に多くの n に対して C の近似率がちょうど 2 であるような n 頂点グラフの例を示せ

[ アイデア ] 個々の値をそれに近い値に丸めて 値の種類を減らす 近似アルゴリズム (Approximation それ Algorithm) 近値丸め 3. 多項式時間近似スキームの例 KNAPの最適化バージョン Input: アイテムの配列 a[1],, a[n], 大きさ k Output: a [] i k を満たす集合 S {1,,n} でもっとも近いもの S k is アルゴリズム D ( アルゴリズム B も参照 ): 1. L:=Φ; // 実現できる和の近似値のリスト 2. for i=1,2,, 1. L のそれぞれの要素 b に対して b+a[i] k ならそれを L に登録 2. L のいくつかの要素を 丸め て 不要なら捨てる 3. L の中の k 以下のもっとも大きな値 k を出力する [ ポイント ] Dで以下の2 点が満たされればよい : 1. Lのサイズがいつでも n の多項式 2. 出力 k がよい近似解を与える

3. 多項式時間近似スキームの例 KNAPの最適化バージョン Input: アイテムの配列 a[1],, a[n], 大きさ k Output: a [] i k を満たす集合 S {1,,n} でもっとも近いもの S k is アルゴリズム D ( アルゴリズム B も参照 ): [ 仮定 ] L が小さい順で並んでいるとする 正の定数 ε を固定する [ 丸めの詳細 ] Lの中で b 1 <b 2 (1+ε/2n) b 1 なら b 2 を削除する [ 定理 13.2] アルゴリズム D はPTASである つまり任意の正定数 εに対して以下が成立する : 1. n, 1/ε の多項式で動作する 2. 近似率は (1+ε) [ 証明 ] 1,2 ともにちょっと計算が必要

補題 13.1: 自然数列 a 1 =1, a 2,, a n =k が 1 t (a i+1 )/a i 1+t を満たすなら 次が成立 : n ln k t x [ 証明 ] (1 t) n k より n log t 1 kである 公式 ln(1 x) を適用すると以下を得る 1 x ln k (1 t) nlogt 1 k ln k ln(1 t) t x 補題 13.2: 0<ε <1に対して 1 1 2n [ 証明 ] 以下の公式をつかう n x x lim 1 e n n x 1 xe 1xx [ 公式 1] ( この式は n に対して単調増加関数 ) [ 公式 2] x 1 ならば 2 n /2 1 e 1 1 以上より 1 1 1 2n 2 2 n 2

KNAP の最適化バージョンの多項式時間近似スキーム [ 定理 13.2] アルゴリズム D はPTASである つまり任意の正定数 εに対して以下が成立する : 1. n, 1/ε の多項式で動作する 2. 近似率は (1+ε) [ 証明 ] 1) Lのサイズが n, 1/ε の多項式で抑えられればよい ここで L の要素列 b 1, b 2, は 1 b 1, b i k, b i+1 /b i >(1+ε/2n) を満たす よって補題 13.1より Lのサイズ<log (1+ε/2n) k = ((2n+ε) log k)/ε < (2n log k)/ε となる

KNAP の最適化バージョンの多項式時間近似スキーム [ 定理 13.2] アルゴリズム D はPTASである つまり任意の正定数 εに対して以下が成立する : 1. n, 1/ε の多項式で動作する 2. 近似率は (1+ε) [ 証明 ] 2) アルゴリズムの出力 k を構成する a[] の要素集合が存在する この集合を S とする つまり次が成立する : a[] k ' a[] S' ここで入力に対する最適な集合を S* とし a [] k* とする S* のそれぞれの a[] S* a[] に対しては それが L に存在しているか それを代替したものがあるはずである 代替されている場合 最悪だと a[] は以下の値 a で代替されている a[] a[] a' a[] n n1 (1 / 2 n) (1 / 2 n) よって k*/(1+ε/2n) n k が成立し 補題 13.2より k*/k 1+ε を得る