区間グラフにおける区間表 現からMPQ-treeを効率よく 構成するアルゴリズム 北陸先端科学技術大学院大学(JAIST) 情報科学研究科 斎藤 寿樹 清見 礼 上原 隆平 発表内容 区間グラフにおける区間表現からMPQ-treeを効率 よく構成するアルゴリズム 1 1 2 9 3 4 5 10 6 7 12 2 2, 4 4 9 3 5 6 10 11 11 8 7 区間表現 8 MPQ-tree 12 区間グラフとは 1950年代後半に数学者の Hajös と,分子生物学者の Benzer とが独立に考えたグラフクラス 区間表現をもつグラフ 0 それぞれの区間は各頂点に対応 2つの区間が重なっている ⇔ 対応する2つの頂点間に辺が存在する 1 2 3 4 5 6 1 I3 3 I4 I1 I2 2 4 区間グラフの応用 区間をDNAの断片や時間と考える バイオインフォマティクス 数十万~数百万の区 スケジューリング問題など 間を処理 高速なアルゴリズムが必要 x1 x2 x4: TTTACGTGGT x3 x4 断片の文字列 区間グラフ x1: ACGGTTTA x2: ATCGGAACG x3: AACGGTTTAC ATCGGGAACGGTTTACGTGGT x2 x1 x3 x4 区間表現 PQ-tree 1976年にBoothらによって提案 区間グラフ用の補助データ構造 木構造(順序木) 内部ノードにはPまたはQのラベル 葉には極大クリークを割り当てる O(n)領域 区間グラフの認識(O(n+m)時間) ○:Pノード □:Qノード C7 C1 C5 C6 C2 C3 C4 PQ-tree MPQ-tree(Modified PQ-tree) 1989年にKorteらによって提案 区間グラフを表現するデータ構造 PQ-treeの改良 各ノードに頂点集合を割り当てる O(n)領域 区間グラフの認識 区間グラフの同型性判定(O(n+m) 時間) ○:Pノード □:Qノード 1 2 2, 4 4 3 5 6 12 9 10 7 8 MPQ-tree 11 MPQ-tree 葉およびPノードとQノードと呼ばれる節点を持つ順序木 Qノードはセクションと呼ばれるまとまりに分割 Pノードとセクションに頂点集合を割り当てる 根から葉までのパス上に存在する頂点集合は区間グラフ 上で極大クリーク Qノード Pノード 4 1 2 2 2, 4 4 9 5 5 10 11 6 :Q-node 10 12 11 :P-node 7 8 MPQ-tree 6 1 3 3 7 12 9 葉 区間グラフ 8 MPQ-tree 葉およびPノードとQノードと呼ばれる節点を持つ順序木 Qノードはセクションと呼ばれるまとまりに分割 Pノードとセクションに頂点集合を割り当てる 根から葉までのパス上に存在する頂点集合は区間グラフ 上で極大クリーク Qノード Pノード 4 1 2 2 2, 4 4 9 5 5 10 11 6 :Q-node 10 12 11 :P-node 7 8 MPQ-tree 6 1 3 3 7 12 9 葉 区間グラフ 8 MPQ-tree 区間表現と密接な関係がある MPQ-treeの親は区間表現において子を内包 1 1 2 2 3 3 9 9 2, 4 4 4 5 5 10 10 6 6 7 7 8 8 12 12 11 11 MPQ-tree 区間表現と密接な関係がある MPQ-treeの親は区間表現において子を内包 1 1 2 2 3 3 9 9 2, 4 4 4 5 5 10 10 6 6 7 7 8 8 12 12 11 11 MPQ-tree 対応する区間グラフが変化しない操作 1. 2. Pノードの子の順序を任意に入れ替える Qノードのセクションの順序を逆順にする 1 1 2 4 2 4 9 5 6 10 11 7 5 12 9 11 7 8 1 3 3 6 2, 4 10 2 12 5 3 10 11 12 12 11 6 7 8 8 1 9 10 4 9 1 2 2, 4 3 4 10 7 11 12 2 4 3 6 5 9 5 6 7 8 8 今回の問題について 入力:区間表現 出力: MPQ-tree 応用上の多くの問題の入力は区間表現 入力される区間の数は大量 構成する既存のアルゴリズムは複雑 グラフ表現経由 直接(PQ-tree用) 効率がよく単純なアルゴリズムは重要 既存の手法(グラフ表現経由) グラフ表現から構成 O(n+m)時間かかる 区間表現をグラフ表現に変換 グラフ表現からMPQ-treeを構成 1. 2. 区間表現 1 O(n)領域 O(n+m)時間 O(n+m)領域 9 10 4 5 6 7 12 11 2 8 O(n)領域 1 6 7 5 8 1 3 MPQ-tree O(n+m)時間 4 2 3 2 グラフ表現 1 場合分けが多く実 装が複雑 12 9 11 10 2 3 2, 4 4 9 5 6 10 11 7 8 12 既存の手法(区間表現からPQ-tree) 区間表現から直接PQ-treeを構成 O(n log n)時間 端点がソートされているときO(n)時間 decomposition tree という概念を使用するため複雑 1 2 9 3 10 4 5 6 7 8 区間表現 O(n)領域 12 11 C7 O(n log n)時間 C1 C5 C6 C2 C3 C4 PQ-tree O(n)領域 提案手法 区間表現から直接MPQ-treeを構成 O(n log n)時間 端点がソートされているときO(n)時間 単純なデータ構造(スタックなど)を用いたアルゴリズム 1 1 2 9 3 10 4 5 6 7 8 区間表現 O(n)領域 12 11 2 O(n log n)時間 3 2, 4 4 9 5 6 10 11 7 8 MPQ-tree O(n)領域 12 提案手法 冗長性がある 3 2 区間表現 12 10 1 4 9 6 7 5 O(n)時間 11 8 コンパクトな区間表現 1 2 区間をP/Qノード および葉に分類 MPQ-tree 12 9 3 10 4 5 11 6 7 8 冗長性がない 番号は規則を持つ 提案手法 1 区間表現 2 12 9 3 10 4 5 11 6 O(n)時間 7 8 コンパクトな区間表現 1 O(n)時間 区間をP/Qノード および葉に分類 O(n)時間 MPQ-tree 2 2, 44 2, 4 3 5 6 7 12 9 10 8 11 区間をP/Qノードおよび葉に分類 葉に分類される区間 Qノードに分類される区間 区間の長さが0 他の異なる区間と互いに一部分だけ交差 Pノードに分類される区間 その他の区間 区間をP/Qノードおよび葉に分類 左から端点をスイープ 左端点iLを読み込んだとき PUSH(S,iL) 右端点iRを読み込んだとき スタックの先頭とiを比較 整合性が取れていなければQノード 例 1 一致しない 2 3L 3 2L 1L スタック 1R 整合性が取れてい ないのでQノード 区間をP/Qノードおよび葉に分類 左から端点をスイープ 左端点iLを読み込んだとき PUSH(S,iL) 右端点iRを読み込んだとき スタックの先頭とiを比較 整合性が取れていなければQノード 例 1 2 3L 3 2L 1L スタック 2R 区間をP/Qノードおよび葉に分類 右の端点iRを読み込んだとき Qノードに分類されている区間の右端点がすべて読 み込まれたとき Qノードをスタックから取り除き、確定する 例 1 2 3L 3 2L 1L スタック 3R 1,2,3 Qノードに確定 区間をP/Qノードおよび葉に分類 右の端点iRを読み込んだとき スタックの先頭とiが異なるQノード Qノードをマージ 例 1 5L 2 34R 4L 3 3L 4 5 2L 1L スタック 12R 区間をP/Qノードおよび葉に分類 同じQノードに含まれる区間はスタック上で連続 に存在 iR O(1)時間 マージの回数は全体で高々n回 O(1)時間 iL アルゴリズムの実行時間 … O(n)時間 結論 区間表現からMPQ-treeを構成するアルゴリズム O(n log n)時間で実行できる ソートされていればO(n)時間 単純なアルゴリズム 今後の課題 区間グラフの列挙(ランダム生成) 高速であることを実験的に示す
© Copyright 2024 ExpyDoc