基礎アルゴリズムとその証明

基礎アルゴリズムとその証明

数理情報系 4 年

甲本健太

基礎アルゴリズムとその証明

目次

  1. オーダー記法
  2. ソートアルゴリズム
  3. グラフ
    1. グラフの基本用語
    2. 最小木
    3. 最短路
  4. 動的計画法
基礎アルゴリズムとその証明

1. オーダー記法

T(n)=O(f(n))    c>0.n0N.[n>n0T(n)cf(n)]T(n) = O(f(n)) \iff \exists c>0. \exists n_0\in\mathbb{N}. [n > n_0 \Rightarrow T(n)\le cf(n)]

T(n)=o(f(n))    c>0.n0N.[n>n0T(n)cf(n)]    limnT(n)/f(n)=0\begin{align*} T(n) = o(f(n)) &\iff \forall c>0. \exists n_0\in\mathbb{N}. [n > n_0 \Rightarrow T(n)\le cf(n)]\\ &\iff \lim_{n\to\infty} T(n)/f(n) = 0 \end{align*}

T(n)=Θ(f(n))    c1,c2>0.n0N.[n>n0c1f(n)T(n)c2f(n)]\begin{align*} &T(n) = \Theta(f(n))\\ &\iff \forall c_1,c_2>0. \exists n_0\in\mathbb{N}. [n > n_0 \Rightarrow c_1f(n)\le T(n)\le c_2f(n)] \end{align*}

基礎アルゴリズムとその証明

2. ソートアルゴリズム (1/)

全順序が定義された順序付き集合を,その順序にしたがって並べること.

1. バブルソート

アルゴリズム
i=1,2,,n2; j=i,i+1,,n1i = 1,2,\ldots,n-2;~ j=i,i+1,\ldots,n-1 の順に以下の操作を行う.
> A[j],A[j+1]A[j],A[j+1] を比較し,A[j]>A[j+1]A[j]>A[j+1] ならば要素を入れ替える.

正当性
i=1i=1 のとき,最大要素が A[n]A[n] に移動する.i=2i=2 のとき,次に大きい要素が A[n1]A[n-1] に移動する.以下,帰納的に成り立つ.

計算量

(n1)+(n2)++1=n(n1)/2(n-1) + (n-2) + \cdots + 1 = n(n-1)/2

より O(n2)O(n^2)

基礎アルゴリズムとその証明

2. ソートアルゴリズム (2/)

2. マージソート

アルゴリズム

  1. 長さ nn の配列 AA を長さ n/2n/2 の左半分 AlA_l と右半分 ArA_r に分割する
  2. Al,ArA_l,A_r を再帰的にそれぞれソートする
  3. Al,ArA_l,A_r について,小さい方の要素から順にとっていくことで AA の整列集合を得る

正当性
帰納的に示す.Al,ArA_l,A_r が正しくソートされていると仮定する.このときステップ 3 で Al,ArA_l,A_r の要素を昇順に並べた配列,すなわち AA のソート済み配列が得られる.

計算量
漸化式 T(n)=2T(n/2)+cnT(n) = 2T(n/2) + cn より,T(n)=O(nlogn)T(n) = O(n\log n) となる.

基礎アルゴリズムとその証明

3. グラフ (3.1 グラフの基本用語)

基礎アルゴリズムとその証明

3.2 最小木 (1/)


G=(V,E)G = (V,E) の全域木 TT に対し,「TT が最小木     \iff 任意の補木辺 eETe\in E\setminus T に対し,ee によって定まる基本閉路を CeC_e とすると,fCef\in C_e ならば w(f)w(e)w(f)\le w(e)


必要性(\Rightarrow)の証明
ある辺 fCef\in C_e について w(f)>w(e)w(f) > w(e) と仮定する.このとき T=T{f}{e}T'=T\setminus\{f\}\cup\{e\} を考えると w(T)>w(T)w(T)>w(T') である.また TT は全域木である.(\because 路が ff を使っていた場合,代わりに CefC_e - f を使えばよい.)よって,TT の最小性に矛盾.

十分性(\Leftarrow)の証明
TT を右辺の条件を満たし最小木でない全域木とする.また,TT^\astTT|T\setminus T^\ast| が最小になるような最小木とする.ある辺 eTTe\in T^\ast\setminus T を取りその端点を u,vu,v とすると,eeTT^\ast22 つの連結成分 Tu,TvT^\ast_u,T^\ast_v に分割する.また,TT の基本閉路 CeC_e を考えると,CeC_e 上には端点がそれぞれ Tu,TvT^\ast_u,T^\ast_v に含まれるような辺 ff が存在する.仮定より,w(f)w(e)w(f)\le w(e) である.ここで,T:=T{e}{f}{T^\ast}' := T^\ast\setminus\{e\}\cup\{f\} とすると,w(T)w(T)w({T^\ast}')\le w(T^\ast) かつ T{T^\ast}' が全域木であることから T{T^\ast}' は最小木.したがって TT|T\setminus T^\ast| の最小性に矛盾.

基礎アルゴリズムとその証明

4. 動的計画法

mermaid.js