A Dynamic Edit Distance Table Sung-Ryul Kim and Kunsoo Park CPM2000, LNCS 1848, pp. 60-68, 2000 Edit distance (編集距離) 文字列 x[1...n] を文字列 y[1...n] へ変換する ために要する最小コスト d 各操作のコスト 置換 = 削除 = 挿入 = 1 CARRIAGE 1 MARRIAGE k=2 MASSAGE 3 編集距離 Dynamic Programming a b b b 1 1 2 1 D(i, j) = min{D(i-1, j-1)+ij, D(i-1, j)+1, D(i, j-1)+1} n D m a b a b b a b b 0 1 2 3 4 5 6 7 8 b 1 1 1 2 3 4 5 6 7 b 2 2 1 2 2 3 4 5 6 a 3 2 2 1 2 3 3 4 5 b 4 3 2 2 1 2 3 3 4 a 5 4 3 2 2 2 2 3 4 b 6 5 4 3 2 2 3 2 3 b 7 6 5 4 3 2 3 3 2 a 8 7 6 5 4 3 2 3 3 b 9 8 7 6 5 4 3 2 3 O(mn) DPによるEDの求め方 論文の主張 A と B の Edit distance が与えられたとき・・・ A と B’ (B’=aB) ・・・ incremental A と B’ (bB’=B) ・・・ decremental の Edit distance を求める! D O(mn) 等価な情報 を保持 Dの差分表現 DR O(mn) D’ O(m+n) DR’ 論文の主張 Dの差分表現 DR(i, j).L = D(i, j) D(i, j 1) D b 1 1 1 2 3 4 5 6 7 b 2 2 1 2 2 3 4 5 6 a 3 2 2 1 2 3 3 4 5 b 4 3 2 2 1 2 3 3 4 a 5 4 3 2 2 2 2 3 4 b 6 5 4 3 2 2 3 2 3 b 7 6 5 4 3 2 3 3 2 a 8 7 6 5 4 3 2 3 3 b 9 8 7 6 5 4 3 2 3 DR.L DR.U b b a b a b b a b a b a b b a b b 0 0 -1 -1 -1 -1 -1 -1 -1 0 -1 0 -1 -1 -1 -1 -1 -1 1 1 -1 0 -1 -1 -1 -1 -1 1 0 1 -1 0 -1 -1 -1 -1 1 1 1 1 0 0 -1 -1 -1 1 1 0 1 0 1 1 -1 -1 1 1 1 0 1 -1 0 1 -1 1 1 1 1 1 1 -1 0 1 a b a b b a b b 0 1 2 3 4 5 6 7 8 DR(i, j).U = D(i, j) D(i 1, j) b b a 0 -1 -1 -1 -1 -1 -1 -1 1 0 0 -1 -1 -1 -1 -1 0 1 -1 0 0 -1 -1 -1 DR.UL b b a b a b b a b a b a b b a b b 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a b a b b a b b b a b b a b 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 -1 1 0 1 1 1 -1 0 0 0 1 1 0 -1 1 0 -1 1 -1 0 -1 1 0 -1 -1 0 -1 -1 1 0 DR(i, j).UL = D(i, j) D(i 1, j 1) = DR(i, j).U + DR(i 1, j).L Dの差分表現 アイデア DR.U b 0 -1 -1 -1 -1 -1 -1 -1 0 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 0 1 -1 -1 -1 1 1 1 0 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 a b a b b a b b 0 0 -1 -1 -1 -1 -1 -1 -1 0 -1 0 -1 -1 -1 -1 -1 -1 1 1 -1 0 -1 -1 -1 -1 -1 1 0 1 -1 0 -1 -1 -1 -1 1 1 1 1 0 0 -1 -1 -1 1 1 0 1 0 1 1 -1 -1 1 1 1 0 1 -1 0 1 -1 1 1 1 1 1 1 -1 0 1 b a b DR.L b b a 0 -1 -1 -1 -1 -1 -1 -1 0 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 1 0 0 -1 -1 -1 -1 -1 0 1 -1 0 0 -1 -1 -1 DR'.U b a b a b b a b b DR'.L a b a b b a b b a b a a b b b b a a b b 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 0 0 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 DR’ a b a b b a b b b a b b a a b b b b a a b b 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 -1 1 0 1 1 1 -1 0 0 0 1 1 0 -1 1 0 -1 1 -1 0 -1 1 0 -1 -1 0 -1 -1 1 0 DR a b a b b a b b a b a b b a b b b a b a b b a b 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 b a b a b b a b -1 0 0 0 0 0 0 0 -1 0 -1 0 0 0 0 0 -1 0 0 -1 0 0 0 0 0 -1 0 0 -1 0 0 0 0 -1 0 0 0 -1 0 0 0 0 -1 0 0 -1 0 0 0 0 0 -1 0 0 -1 0 0 0 0 -1 0 0 0 -1 ちょっとちがう 基本的アイデア Change Table D' a b a b b a b b 0 1 2 3 4 5 6 7 8 b 1 1 1 2 3 4 5 6 7 a 2 1 2 1 2 3 4 5 6 b 3 2 1 2 1 2 3 4 5 Ch a b a b b a b b -1 0 1 1 1 1 1 1 1 a 4 3 2 1 2 2 2 3 4 b 5 4 3 2 1 2 3 2 3 b 6 5 4 3 2 1 2 3 2 a 7 6 5 4 3 2 1 2 3 b 8 7 6 5 4 3 2 1 2 D a b a b b a b b b a b a b b a b -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1 0 0 0 -1 -1 -1 -1 -1 1 0 0 0 -1 -1 -1 -1 1 0 0 0 0 -1 -1 -1 1 1 0 0 0 -1 -1 -1 1 1 1 0 0 0 -1 -1 1 1 1 0 0 0 0 -1 0 1 2 3 4 5 6 7 8 b 1 1 1 2 3 4 5 6 7 b 2 2 1 2 2 3 4 5 6 a 3 2 2 1 2 3 3 4 5 b 4 3 2 2 1 2 3 3 4 a 5 4 3 2 2 2 2 3 4 b 6 5 4 3 2 2 3 2 3 b 7 6 5 4 3 2 3 3 2 a 8 7 6 5 4 3 2 3 3 b 9 8 7 6 5 4 3 2 3 O(m+n) Affected entry Ch(i, j) = D’(i, j) D(i, j +1) ココの値が等しくない Change table 論文の概要 decremental (bB’=B)の場合のみ • • • • • 補題1 Chの最上段と最左列の値 補題2 Ch(i, j)のとり得る値の範囲 補題3 Chテーブルの 1 の階段 補題4 Chテーブルの 1 の階段 補題5 DR上の影響される場所(affected entry) • 補題6 ChテーブルとDRテーブルの関係 • (隠れ補題) DRからDR’の計算方法 • 提案アルゴリズム 論文の概要 補題1 1. Ch(0, j) = 1 for all 0 j n 2. Ch(i, 0) = 0 for all 1 i k1 ただし k は A[k]=B[1] を満たす最小の値 3. Ch(i, 0) = 1 for all k i m Ch a b a b b a b b b b a b a b b a b -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 1 0 0 -1 -1 -1 -1 -1 -1 1 0 0 0 -1 -1 -1 -1 -1 1 1 0 0 0 -1 -1 -1 -1 1 1 0 0 0 0 -1 -1 -1 1 1 1 0 0 0 -1 -1 -1 1 1 1 1 0 0 0 -1 -1 1 1 1 1 0 0 0 0 -1 補題1 証明 (1)は自明. (2)(3)は… D’ a b a b c a b b 0 1 2 3 4 5 6 7 8 D’ D D a b a b c a b b 0 1 2 3 4 5 6 7 8 c 1 1 2 3 4 4 5 6 7 a b a b c a b b -1 0 0 0 0 1 1 1 1 証明 補題2 Ch(i, j) がとり得る値は min{ Ch(i1, j1), Ch(i1, j), Ch(i, j1) } から max{ Ch(i1, j1), Ch(i1, j), Ch(i, j1) } の範囲である。 (i1, j1) (i1, j) (i, j1) (i, j) 補題2 証明 DとD’の関係から直接的にChの範囲を調べる. D(i, j +1) = min{ D(i 1, j)+ i, j+1 , D(i 1, j +1)+1, D(i, j)+1} ・・・(2) D(i 1, j) + Ch(i 1, j 1) +i, j+1 D’(i, j) = min D(i 1, j + 1) + Ch(i 1, j) +1 ・・・(3) D(i, j) + Ch(i, j1) +1 (2)の1が最小と仮定する. i) (3)の1 が最小→ Ch(i, j ) = Ch(i 1, j 1). ii) (3)の2 が最小→ Ch(i, j ) min{Ch(i 1, j 1), Ch(i 1, j ), Ch(i, j 1)}, Ch(i, j ) max{Ch(i 1, j 1), Ch(i 1, j ), Ch(i, j 1)}. iii) (3)の3 が最小→ ii)と同様. 証明 補題3と4 補題3 0 i m について, f (i) = j と定義する. ただし, j は Ch(i, j) = 1 を満たす最小の値である. このときすべての f (i) j’ n について Ch(i, j’ ) = 1 が成り立つ.また 1 i m について f (i) f (i1) . 補題4 0 j n について, g( j ) = i と定義する. ただし, i は Ch(i, j) = 1 を満たす最小の値である. このときすべての g( j ) i’ m について Ch(i’, j ) = 1 が成り立つ.また 1 j n について g( j ) g( j 1) . 補題3および補題4 証明 補題1と補題2から帰納法によって証明される. -1 0 1 1 1 O(mn) Ch -1 0 0 1 1 -1 -1 0 1 1 -1 -1 0 -1 1 等価な情報 を保持 -1 -1 -1 -1 0 -1 0 -1 -1 -1 f g O(m+n) 証明 補題5 •Ch(i1, j1), Ch(i1, j), Ch(i, j1) が異なるとき Ch(i, j) は affected という. •Ch(i, j) が affected のとき DR’(i, j) は affected という. 補題5 DR’(i, j) が affected でないならば, DR’(i, j) = DR(i, j + 1) が成り立つ. Affected な(更新されうる)DR(i, j )のエントリ数は O(m+n) 補題5 証明 DR’(i, j) が affected でないならば, Ch(i1, j1), Ch(i1, j), Ch(i, j1) は等しい.よって, DR’(i, j).U = D’(i, j) D’(i 1, j) = D(i, j + 1) + Ch(i, j) ( D(i 1, j + 1) + Ch(i 1, j) ) = DR(i, j + 1).U 同様に, DR’(i, j).L = DR(i, j + 1).L 証明 補題6 DR(i, j + 1).UL + Ch(i1, j1) +i, j+1 Ch(i, j) = min DR(i, j + 1).U + Ch(i1, j) +1 DR(i, j + 1).L + Ch(i, j1) +1 Chテーブル (i1, j1) (i1, j) (i, j1) (i, j) こいつらと DR(i, j+1) が必要! 補題6 証明 Ch(i, j) = D’(i, j) D(i, j + 1) = min{ D’(i 1, j 1)+ ’i, j , D’(i 1, j )+1, D(i, j 1)+1} D(i, j + 1) = min D(i1, j) + Ch(i1, j1) +i, j+1 D(i, j +1) D(i1, j + 1) + Ch(i1, j) +1 D(i, j + 1) D(i, j) + Ch(i, j1) +1 D(i, j + 1) = min DR(i, j + 1).UL + Ch(i1, j1) +i, j+1 DR(i, j + 1).U + Ch(i1, j) +1 DR(i, j + 1).L + Ch(i, j1) +1 証明 隠れ補題 DR’(i, j) が affected ならば, DR’(i, j).U = DR(i, j + 1).U + Ch(i, j) Ch(i 1, j) DR’(i, j).L = DR(i, j + 1).L + Ch(i, j) Ch(i, j 1) 証明 補題5の証明より明らか. 隠れ補題 アルゴリズム Chテーブル (i1, j1) (i1, j) (i, j1) (i, j) f と g から求まる! アルゴリズム
© Copyright 2024 ExpyDoc