コードレスサイクルを列挙する 線形時間アルゴリズム 宇野 毅明 情報学研究所 2003年11月7日 アルゴリズム研究会 結果 ・ 与えられたグラフのコードレスサイクルを列挙するアルゴリズ ムを構築した (コードレスサイクル: ショートカットのないサイクル ・ コードレスサイクル1つあたりの計算時間は、グラフの大きさ に線形 ・ 計算実験で、実際の計算時間は1つあたり、定数~頂点数で あることを示した (ついでにコードレスサイクルの数も調べた) 問題:コードレスサイクルの列挙 問題: 与えられたグラフ G = ( V, E ) のコードレスサイクル を列挙せよ パス コード コードレスサイクル このグラフの全コードレ スサイクルを見つける 応用 化学構造の解析 ・ コードレスサイクル = 極小な環構造 ・ 化学シフト値の予測において予測精度の向上に寄与 (局所的な環構造情報が似ているものを検索して予測) その他 ・ サイクルより数が少ないため、トラクタブルなモデル ・ サイクルによるモデル化をコードレスサイクルで置き換え る? パス/サイクル列挙の既存研究 2頂点 s と t を結ぶパスの列挙: 72年にRead&Tarjan ・ 1つあたり O(|V|+|E|) 時間 (出力数線形) サイクルの列挙: 72年にRead&Tarjan ・ s-t パスの列挙を用いて行う 1つあたり O(|V|+|E|) 時間 (出力数線形) s t このグラフの(シンプルな) 全ての s-t パスを見つける 記法 グラフ G、頂点集合 S に対し G\S: G から S の頂点を取ったグラフ S G G\ S コードレスサイクルの分類1 ・頂点 v を選ぶ ・ v を含まないコードレスサイクル ⇔ G\{v} のコードレスサイクル 再帰的に列挙できる (G\{v} を渡す) G\{v} G v v コードレスサイクルの分類2 ・ v に接続する枝 e=(v,t) を選ぶ ・ v と e 両方を含むコードレスサイクル ⇔ G\{e} の v-t コードレスパス G\{e} の v-t コードレスパスを列挙すればよい G \ {e } G v v e t t コードレスサイクルの分類3 ・ v を含むが e を含まないコードレスサイクル ⇔ G\{t} の v を含むコードレスサイクル G\{t} の v を含むコードレスサイクルを列挙すればよい G \ {e } G v v e t s-t コードレスパスの分類1 ・ s と t が接続していたら、s-t コードレスパスは (s,t) のみ N(v):v に隣接する頂点の集合 ・ s に接続する各枝 e=(s,v) を含む s-t コードレスパス ⇔ G\(N(s)\{v}) の v-t コードレスパス G\{e} の v-t コードレスパスを列挙すればよい G\(N(s)\{v}) G s s e v t e v t 分類まとめ ・ コードレスサイクル (1) v を含むコードレスサイクル (2) (v を含まない)コードレスサイクル ・ v を含むコードレスサイクル (1) s-t コードレスパス (2) v を含むコードレスサイクル ・ コードレスパス (1) (e を含む)コードレスパス コードレス サイクル v を含むコード レスサイクル s-t コード レスパス 以後、s-t コードレスパスの列挙を解説 コードレスパスの存在性 ・ s の次に v を通る s-t コードレスパスが存在 ⇔ G\N(s) にv に隣接する頂点から t へのパスが存在 v s t どの頂点の再帰呼び出しが空か O(|V|+|E|) 時間で判定 基本アルゴリズム コードレスパス列挙 (G, s, t ) 1. s と t が隣接するなら、(s, t)を出力して終了 2. G\N(s) で t へ到達可能な頂点に印をつける 3. For each v∈ N(s) do 4. If v に隣接する N(s) 以外の頂点に印が付いている then コードレスパス列挙 (G\( N(s)\{v} ), v, t ) 5. End for v 1反復O(|V|+|E|) +再帰の深さ|V| コードレスパス1つあたりO(|E|2) 2 以外は、v∈N(s) の次数の合計に比例 コードレスパス1つあたり O(|V|+|E|) s t アルゴリズムの式変形 ・ あらかじめ1つs-t コードレスパスを求めておき(親反復から受 け取り)、存在性のチェックを1回分サボる コードレスパス列挙 (G, s, t, P ) 1. s と t が隣接するなら、(s, t)を出力して終了 2. u := P での s の次の頂点 3. コードレスパス列挙 (G\( N(s)\{u} ), u, t, P ) 4. G\N(s) で t へ到達可能な頂点を全て調べる 5. For each v∈N(s), v≠u do 6. If G\( N(s)\{v} ) に v-t パスが存在 then コードレスパス列挙 (G\( N(s)\{v} ), s, t, P ) 7. End for 到達可能性のチェックを簡素化 ・ 3 の再帰呼び出しの中で、G\ N(s) の全ての頂点について t への到達可能性を調べると、4 がさぼれる。 3. コードレスパス列挙 (G\( N(s)\{u} ), u, t, P ) 4. G\N(s) で t へ到達可能な頂点を全て調べる3.の再帰構造 これをサボる s u w t 到達可能性のチェックを簡素化 ・ 3 の再帰呼び出しの中で、G\ N(s) の全ての頂点について t への到達可能性を調べると、4 がさぼれる。 3. コードレスパス列挙 (G\( N(s)\{u} ), u, t, P ) 4. G\N(s) で t へ到達可能な頂点を全て調べる3.の再帰構造 これをサボる s u w t 到達可能性のチェックを簡素化 ・ 3 の再帰呼び出しの中で、G\ N(s) の全ての頂点について t への到達可能性を調べると、4 がさぼれる。 3. コードレスパス列挙 (G\( N(s)\{u} ), u, t, P ) 4. G\N(s) で t へ到達可能な頂点を全て調べる3.の再帰構造 これをサボる 消した頂点を使って行ける 所のみ調べればよい s u w t 到達可能性のチェックを簡素化 ・ 3 の再帰呼び出しの中で、G\ N(s) の全ての頂点について t への到達可能性を調べると、4 がさぼれる。 3. コードレスパス列挙 (G\( N(s)\{u} ), u, t, P ) 4. G\N(s) で t へ到達可能な頂点を全て調べる3.の再帰構造 これをサボる s u 3. の再帰全体での計算時間が O(|V|+|E|) w t アルゴリズムの再帰構造 s a a c b d e d s g f c e g j t i e g f h f t h h i j i #青いパス = #コードレスパス 青いパス1つあたり O(|V|+|E|) j j t t t コードレスパス1つあたり O(|V|+|E|) t t f i t t b h j 実験結果(計算時間) ・ ランダムグラフを作り実験(1パターンあたり1回) ・ 1万個あたりの計算時間 100 200 400 800 1600 3200 頂点数 10% 40% 70% 80% 90% 0.17 0.18 0.17 0.2 0.24 0.29 0.09 0.09 0.09 0.13 0.13 0.19 0.09 0.09 0.10 0.13 0.21 0.25 0.10 0.11 0.15 0.26 0.29 0.61 0.12 0.17 0.26 0.54 1.30 1.79 密度 実験結果(コードレスサイクル数) ・ コードレスサイクルと、普通のサイクルの数の比較 10 15 20 25 頂点数 10% 30% 50% 70% 90% 0 0 0 0 1 1 8 20 352 165 6620995 637 2099 45 3697 247 771 1775 3 4 34 1470 298 9114038 2049 81 108906 350 908 1928 密度 実験結果(コードレスサイクル数2) ・ コードレスサイクル数 10% 30% 50% 70% 90% 50 64383 267435 82607 34137 18873 75 119379652 14504338 1158210 221990 73810 100 - 273504609 8269935 877466 199133 150 - - 149022507 6641331 200 - - - 30334867 2466694 300 - - - - 2167686 11457502 化学シフト値予測システムに組み込み ・ 化学シフト値:核磁気共鳴で原子核の解析をする際に得られ る、原子の観測値の1つ ・ 局所的な、立体的な構造により、変化するため、化合物の構 造を解析する際に用いられる(化学シフト値から、経験と過去の 解析結果から、構造を予測する) ・ 化学シフト値を精度よく予測すると、立体構造を精度よく予測 できる 化学シフト値予測システムに組み込み ・ CASTシステム:佐藤 寛子 (NII), 越野 広雪 (理研) 立体構造も考慮した、化合物データベース 1. 化学シフト値を予測したい化合物の各原子に対して、 局所的な平面構造が等しく & 環構造が似ている 化合物の原子をデータベースから検索 2. 検索でヒットした原子の化学シフト値の平均で予測する (環構造が類似 = 各長さに対し、含まれる環の数が類似) (局所構造のみ見たい & 全ての環を考慮すると、オーバー フィット コードレスサイクルが都合よい) 化学シフト値予測システムに組み込み ・ 実験結果 まとめと今後の展開 ・グラフのコードレスサイクルを列挙する、解1つあたり入力の線形 時間のアルゴリズムを提案した ・ 計算実験により、ランダムグラフに対する実験的な計算時間は、 グラフが疎なら定数、密ならば頂点数に比例することを示した ・ ランダムグラフではコードレスサイクル数はサイクル数に比べて 爆発的に増えないこと、密なグラフのコードレスサイクルはそれほ ど多くないことを示した ・ 化学シフト値予測システムに組み込み、予測精度を上げた
© Copyright 2024 ExpyDoc