Document

アルゴリズムイントロダクション輪講
D3照山順一
全体連絡
• 輪講について:
アルゴリズムイントロダクションを読んでいきます。
• 発表:担当箇所をパワーポイントで説明
• 時間・場所:毎週月曜13時~、2研
• 分担など:研究室の輪講のページを参照
やろうとしている範囲
1章:序論
2章:オーダーの話
3章:和の計算
4章:漸化式
5章:集合など
6章:確率など
7章:ヒープソート
8章:クイックソート
9章:線形時間ソート
10章:中央値、順序統計量
16章:動的計画法
17章:貪欲アルゴリズム
18章:ならし解析
23章:初等グラフアルゴリズム
24章:最小全域木
25章:単一始点最短路
26章:全点対間最短路
27章:最大フロー
36章:NP完全問題
37章:近似アルゴリズム
1章:序論
• アルゴリズムとは何か?
• アルゴリズムの良さ、解析
• ソーティング
– 挿入ソート
– マージソート
– 他のアルゴリズムは7章以降で
1章:序論
• アルゴリズムとは?
– 問題を解くための道具
入力
手続き
出力
1章:序論
• 問題:ソーティング
• 入力:列
• 出力:非減少列
列
{5,2,4,6,1,3}
手続き
非減少列
{1,2,3,4,5,6}
具体例、インスタンス
• アルゴリズムが問題を解く:
⇒すべてのインスタンスに対して正しく出力し停止する。
1章:序論:挿入ソート
• 挿入ソート
: 正しくソートされている
524613
524613
254613
245613
1章:序論:挿入ソート
• 挿入ソート
: 正しくソートされている
524613
524613
254613
245613
245613
124563
123456
1章:序論:疑似コード
• 本教科書の注意点:
アルゴリズムは言葉での説明もあるが、厳密
な形としては疑似コードで与えられていく
1章:序論:疑似コード
1:字下げ
2:ループ、条件分岐
3:コメント
4:代入
5:変数
6:配列
1章:序論:疑似コード
1:字下げ
2:ループ、条件分岐
3:コメント
4:代入
5:変数
6:配列
1章:序論:疑似コード
1:字下げ
2:ループ、条件分岐
3:コメント
4:代入
5:変数
6:配列
1章:序論:疑似コード
1:字下げ
2:ループ、条件分岐
3:コメント
4:代入
5:変数
6:配列
1章:序論:疑似コード
1:字下げ
2:ループ、条件分岐
3:コメント
4:代入
5:変数
6:配列
:i と j 両方に e を代入
1章:序論:疑似コード
1:字下げ
2:ループ、条件分岐
3:コメント
4:代入
5:変数
6:配列
1章:序論:疑似コード
1:字下げ
2:ループ、条件分岐
3:コメント
4:代入
5:変数
6:配列
1章:序論:疑似コード
1:字下げ
2:ループ、条件分岐
3:コメント
4:代入
5:変数
6:配列
5 1
21 42 5
4 6
6 3
245613
1章:序論:解析
• アルゴリズムの解析:アルゴリズムの良さ
計算時間:入力サイズの関数
コスト 繰返回数
ti :今の位置と挿入する位置との差
1章:序論:解析
最良時間
最悪時間
:アルゴリズムの評価として採用
係数、低次項を無視
増加率を気にする!
1章:序論:分割統治法
• よりよいアルゴリズムを設計したい:
分割統治法:部分問題を再帰的に解く
分割:部分問題に分割
統治:部分問題を再帰的に解く
結合:部分問題の解から元の問題を解く
マージソート:
分割:列を半分に分割
統治:それぞれ再帰的に解く
結合:ソートされた2つの列から1つのソート列を生成
1章:序論:分割統治法
マージソート:
分割:列を半分に分割
統治:それぞれ再帰的に解く
結合:ソートされた2つの列から1つのソート列を生成
1234
2348
1579
第Ⅰ部:数学的基礎
•
•
•
•
2章:オーダーの話
3章:和の計算
4章:漸化式⇒オーダー計算への近道
5章:集合など
今日はここまで終わらせる予定
• 6章:確率など
• 大事なところをかいつまんでいきます。
• 分からなければ質問してください。
2章:オーダー
• 計算時間の漸近的な挙動:
十分に大きなデータ入力を考える
2章:オーダー
• 計算時間の漸近的な挙動:
十分に大きなデータ入力を考える
2章:オーダー
• 計算時間の漸近的な挙動:
十分に大きなデータ入力を考える
2章:オーダー
2章:オーダー
•
も
満たさない2つの関数:
も
2章:よく使う関数
• よく使う記号と関数
– 単調性
– 切り上げ (ceiling) :
– 切り捨て (flooring) :
– 多項式 :
– 指数関数
– 対数関数
2章:よく使う関数
• よく使う記号と関数
– 階乗 n! :スターリングの公式
– 反復対数関数
となる最小のi
3章:和の計算
• while, for の評価で使う
Σの式の評価:
算術級数:
幾何級数:
調和数:
3章:和の計算
• 和の評価の方法:数学的帰納法
• 上界、下界の評価もできる。
*帰納法とオーダーを混ぜると間違いやすい[板書]
3章:和の計算:評価のテクニック
• 項の上界の利用
– 最大の項
– 幾何級数
– 和の分割
定数
– 積分近似
評価しやすい
3章:和の計算:評価のテクニック
– 和の分割
– 積分近似
4章:漸化式
• 今日の一番の山場:いったん休憩?
• 漸化式からオーダーを求める:
• 置き換え法、反復法、分類法
4章:置き換え法
• 推測⇒帰納法
– うまくいけば強力だが、推測しやすいものにしか適用できない
境界条件は?
定数a, a+1 で成り立てば
n>aで漸化式が成り立つ。
例)T(2) , T(3) で考える。
ならどの値でもよい
4章:置き換え法
• 微妙な例:
• 推測:
• 代入してみると、
• 対処法:低次項を引く
なら成り立つ!!
4章:置き換え法
• 帰納法とオーダー記法:混ぜると間違えやすい!
• 誤った証明:
4章:反復法
• 漸化式を繰り返し展開して、和の形から評価する。
境界条件までのステップ数
各段階でのコストの和
4章:反復法
• 再帰木(recursion tree):再帰計算の視覚化
4章:分類法
• 便利な道具:
4章:分類法
オーダーに影響がないくらい小さい
オーダーを支配するくらい大きい
だいたい同じ
4章:分類定理の証明
1)n が b のべき乗のときを証明
2)任意のnでも成り立つ
4章:分類定理の証明
• n が b のべき乗のときを証明
(1)以下の式が成り立つ(反復法、再帰木)
4章:分類定理の証明
(2)
の評価:
のオーダーの中身
4章:分類定理の証明
(2)
の評価:
のオーダーの中身
4章:分類定理の証明
(2)
の評価:
実は導ける
4章:分類定理の証明
• 一般のnのとき(概略のみ):
天井関数と床関数によるオーダーへの影響は?
• 上界の証明方針:反復法:
べき乗の時とほとんど同じ関係式
5章:集合
•
•
•
•
離散数学における基本的なもの
集合、関係、関数、グラフ、木・・・
簡単に説明・・・
23章~27章:グラフアルゴリズムなので分か
らない用語が出てきたらここに戻るように。
5章:集合
• 集合:要素の集まり
• 空集合:
• 部分集合:
• 真部分集合:
• 積集合、 和集合、 差集合:
• 補集合:
• ド・モルガンの法則:
5章:集合
• 分割:
•
•
•
•
•
サイズ(要素数、基数):
加算無限:自然数と1対1対応
非加算無限:自然数と1対1対応しない
べき集合:
直積:
5章:集合
• 包除原理(inclusion-exclusion)(問題5.1-3)
5章:関係
• 2項関係:直積の部分集合
• 反射的(reflexive):
• 対称的(symmetric):
• 推移的(transitive):
• 3つの性質を持つ関係を同値関係という。
5章:関係:同値関係
• 同値関係の例:
偶奇が同じ
Nで割ったあまりが同じ:mod N
• 集合を同値関係毎に分割してみる
同値類:
同値類の性質:
1:同値類は分割をなす
2:任意の分割は同値関係を表す
5章:関係:同値関係
1:同値類は分割をなす
Ⅰ:
反射性・推移性から、
よって、
Ⅱ:同値類の和集合はA
反射的なので、
5章:関係:同値関係
2:任意の分割は同値関係を表す
A上の分割:
次のような関係を考え、同値関係であることを示す:
反射性:aRa は自明
対称性:aRb : a, bは同じ集合の要素 ⇒ bRa
推移性: aRb かつ bRc ⇒ aRc
5章:関係:他の用語
• 反対称的: aRb かつ bRa の時、a=b
例)
• 反順序関係:反射的かつ反対称的
• 反順序集合:反順序関係が定義された集合
• 全順序:すべてのペアに対して反順序関係が成立
5章:関数
• 関数:
Aの要素すべてに対して、Bの要素が唯一に対応
• 単射、全射、全単射:
• 置換:
• 逆関数:
なる全単射
5章:グラフ
• 有向グラフ:
V:頂点集合
E:辺集合
1
2
3
4
5章:グラフ
• 無向グラフ:
V:頂点集合
E:辺集合
1
2
3
4
5章:グラフ
• 有向グラフと無向グラフで用語が少し変わる
頂点の次数
有向グラフ
無向グラフ
uからvに接続
uから出る、vに入る
uとv上に接続
uとvは隣接
出次数、入次数
次数=出次数+入次数
隣接頂点の数
• 経路、閉路:
• 連結:全頂点間に経路がある (有向:強連結)
• 同型:グラフが等価になる頂点間の全単射が存在
5章:グラフ
• 部分グラフ:
• 誘導グラフ:
• 完全グラフ:全頂点間に辺がある
• 2部グラフ:頂点集合をV1とV2に分割した時、
辺がV1-V2間のみである
• 森:閉路がない無向グラフ
• 木:閉路がなく連結な無向グラフ
• ダグ(DAG):閉路がない有向グラフ
5章:木
木:閉路のない連結な無向グラフ
*以下の命題はすべて等価である
1:Gは木
2:任意の2頂点は唯一の単純経路で連結
3:Gは連結で、どの辺を除いても非連結となる
4:Gは連結で、|E| = |V|-1
5:Gは閉路を持たず、|E| = |V|-1
6: Gは閉路を持たず、一つでも辺を増やせば、閉路ができる
5章:木
1:Gは木
2:任意の2頂点は唯一の単純経路で連結
3:Gは連結で、どの辺を除いても非連結となる
4:Gは連結で、|E| = |V|-1
5:Gは閉路を持たず、|E| = |V|-1
6: Gは閉路を持たず、一つでも辺を増やせば、閉路ができる
(1)→(2):経路が2つあると閉路があり矛盾
(2)→(3):ほぼ自明
(3)→(4):帰納法
5章:木
1:Gは木
2:任意の2頂点は唯一の単純経路で連結
3:Gは連結で、どの辺を除いても非連結となる
4:Gは連結で、|E| = |V|-1
5:Gは閉路を持たず、|E| = |V|-1
6: Gは閉路を持たず、一つでも辺を増やせば、閉路ができる
(4)→(5):閉路を持つと連結でなくなる
(5)→(6):閉路がない⇒森、森かつ辺の数→(1)、(1)→(2)
(6)→(1):Gは連結
5章:いろいろな木
•
•
•
•
根付き木:先祖・子孫、親・子の関係
順序木: k番目の子かも区別
2分木 (k分木) :子が高々2つ(k個)
位置木:何番目の子かラベルが付いている
根(root)
深さ(depth)