愛知工業大学研究報告 第
40
号B
平成1
7
年 ノート 263計算クラスタ上で文字列の類似度を計算するための
並列アノレゴリズム
A
P
a
r
a
l
l
e
l
A
l
g
o
r
i
t
h
m
t
o
C
a
l
c
u
l
a
t
e
t
h
e
S
i
m
i
l
a
r
i
t
y
o
f
Two S
t
r
i
n
g
s
o
n
a
C
l
u
s
t
色ro
f
C
o
m
p
u
t
e
r
s
鈴 木 晋 *
Susumu Suzuki*
水 野 勝 教 *
石 井 直 宏 牢
N
aohiro I
s
h
i
i
*
Katsunori Mizuno
ヰAbstract We
p
r
e
s
e
n
t
a
p
a
r
a
l
l
e
l
a
l
g
o
r
i
t
h
m
t
o
c
a
l
c
u
l
a
t
e
t
h
e
s
i
m
i
l
a
r
i
t
y
o
f
もwos
七r
I
n
g
son c
o
m
p
u
t
e
r
s
c
o
n
n
e
c
もedby a
l
o
c
a
l
a
r
e
a
n
e
t
w
o
r
k
,
c
a
l
l
e
d
a
c
l
u
s
t
e
r
o
f
c
o
m
p
u
t
e
r
s
.
L
e
t
t
h
e
l
e
n
g
t
h
o
f
e
a
c
h
s
七r
i
n
gbe
n
and t
h
e
number o
f
t
h
e
c
o
m
p
u
t
e
r
s
p.We
show t
h
a
t
t
h
e
p
a
r
a
l
l
e
l
a
l
g
o
r
i
t
h
m
c
a
n
s
o
l
v
e
t
h
e
p
r
o
b
l
e
m
i
n
t
i
m
e
O(
手
)
w
h
e
n
p
:
:
:
;
ぽ
(2
S)
,
azMerefo
,
間
t
h
a
t
t
h
e
a
l
g
o
r
i
t
h
…
nd
由oi
比ti
担n
吋七抗出ime
児eO(
岬ゾ
.
J
B
昂
h
耐同
'
n
均
.
!
尚
!
3
訂
)
(e:ご::
O(
仰
1
叩Oη2
勾
)
リ
)
句e
s
叩pe
伺c
i
叫a
l
l
除
yw
袖hen
word
七h
llrO'立叩.刀ough
七hene
目七wo
町r
止k
)
/
(
p
h
戸y
戸y
s
i
c
叫a
1
討七imef
o
r
七hecompute
l't
o
e
x
e
c
u
t
e
one i
n
s
t
n
同i
o
non CPU)
(e:::
1
0
0
)
.
S
i
n
c
e
t
h
e
t
i
m
e
c
o
m
p
l
e
x
i
t
y
o
f
t
h
e
s
e
q
u
e
n
t
i
a
l
a
l
g
o
r
i
t
h
m
i
s
O
(
η
2
)
,t
h
e
p
a
r
a
l
l
e
l
a
l
g
o
r
i
t
h
m
i
s
f
a
s
t
e
r
七h
i
l
nt
h
e
s
e
q
u
e
n
t
i
a
l
乱1
9
o
r
i
t
h
m
.
1
はじめに
遺伝子工学の進展にともない大量の遺伝情報が蓄積 されるようになり,それらを計算機を使って高速に処理 することが急務となっている.DNA
の塩基配列の類似 度の計算やタンパク質のアミノ酸配列の類似度の計算 はそのようなものの1
つである.これらの計算は2
つ の文字列の類似度の計算と見なすことができる[
1
,2
]
.
ところで,計算機工学の世界では,1
9
9
0
年代から多数 のワークステーションやパソコンをLAN
で接続したシ ステム上で並列処理を行う研究が盛んに行われるよう になり,現在では,MPI (
M
e
s
s
a
g
e
P
a
s
s
i
n
g
I
n
t
e
r
f
a
c
e
)
やSCore
等の並列処理のための基盤ソフトが無償で提 供されている.このように構成される並列計算システ ムは計算クラスタと呼ばれる[
3
,4
]
.
計算クラスタを 使って問題を高速に解くためには,問題を並列的に処 理する並列アノレゴリズムが必要である.特に計算クラ スタではB =(1語の転送時間)
/
(
1
命令あたりのCPU
時間)がかなり大きい(約1
0
0
)
ため,通信時聞が爆発 しないように適切な粒度で問題を並列処理することが できる並列アノレゴリズムが重要である. 本稿では,文字列類似度問題を計算クラスタを使っ て高速に解くことを目的として並列アノレゴリズムを提 * 愛 知 工 業 大 学 経 営 情 報 科 学 部 情 報 科 学 科 コ ン ビュータシステム専攻(豊田市) 案し,その速さを評価する.文字列の長さをn
,
計算 機の台数をp とする.提案する並列アノレゴリズムが,(
1
)
p三
v
?
i
i
(e:::妥)のとき,時間量O
(
手)で問題 を解けること,故に特に,(
2
)
p=
v
志のとき,時間 量O(JEn2)(20(10n3))
で問題を解けることを示 す.1
台の計算機を使って問題を解く逐次アルゴリズ ムの時間量はO
(
η
2
)
であるので,(
1
)
より,計算機が そ子台以下のときは,並列アルゴリズムは逐次アルゴリ ズムより高速で、あり,その速さは使用できる計算機の 台数に比例して速くなる また,(
2
)
よ り , 妥 台 程 度 の計算機が使用できるときは,並列アルゴリズムは逐 次アルゴリズムより大幅に高速である.2
文字列類似度問題
2つの文字列,例えば, "eαs
t
"
と"ωe
s
t
"
をギャッ プを挿入しながら並べたときに,同じ位置にある 2つ の文字からなる文字対で両文字が一致するような文 字対(一致文字対と呼ぶ)を最大何個作れるかを考え る.この例の文字列の場合,-easE
we-s のようにギャップ "'C (に?と記す)を挿入して並べると,全文字対('-',ヲぜ) , ('e',
'e'),
('α' ,'-')~ ('s',
γ)
,(
'
t
'
,
'
t
'
)
のうち,3
つの文 字対 ('e',
'e'),
(
ヲs',
's'),
(
'
t
'
,
'
t
'
)
が一致文字対になる. また,どのようにギャップを挿入しでも,一致文字対 を3
つより多く作ることはできない.故にJ"
e
αs
t
"
と ηωe
s
t
"
に対しては,一致文字対の最大数は3
である.264 愛知工業大学研究報告,第40号B,平成17年,Vo1.40・B,Mar, 2005 w e S t (=S2)
。 。 。 。
Voo時 V01 → V02 →'
0
3→ V04 E 10、
。
↓
0もI ! 0、
010、
。
↓
0 100110V12ー0+V13O 14 G 10、
o!o、
。
畢
。
、
o!O、
。
↓
o 0 " 0 .. 0.. 0 V20 → V21 → V22→h
→ ν24 S↓
o、
。
↓
。
、
o !Oもl↓
o。
↓
、
0 V,~ 30→Q
.
v" '31→.
Q
.
v"'32→'3.
Q
.
v" 3→.
Q
34 10、
o↓o、
o!O泊↓o~歯1 10 0.. 0.. 0.. 0 V ー 今 V 40 ~ '41 ' '42-, '43 ~ '44 (=S1) 図1. コスト付・きグラフG 文字列類似度問題は,上の例のように,2
つ文字列が 与えられて,ギャッブを挿入してそれらの文字列を並 べたときの,ある目標関数f
(上の例では一致文字対の 数)の最大値(上の例では3
)
,および,その値を与え る文字列の並べ方(上の例では高三:)を求める問題 である.最大値を文字列の類似度,文字列の並べ方を アライメント,特に,最大値を与える文字列の並べ方を 最適アライメントという.目標関数f
は,上の例ではf
= 1x
(一致文字対の個数)であったが,一般にはf
= C[ x (一致文字対の個数) + C H X (不一致文字対の個数) 十 CKX (ギャップ文字対の個数) と表される.ここで,
c['CH,
C Kは応用に適したある重 みであり,不一致文字対は ('αに'グ)のように異なる文 字からなる対,ギャップ文字対は(
'
a
'
,
'-')のように文 字とギャップからなる対である. 本稿では,説明の簡単のため,文字列の類似度のみを 求める(最適アライメントを求めるように拡張するこ とは容易である).また,2
つの文字列の長さは等しい とする (1節で述べたようにη と記す).3
逐次アルゴリズムの紹介
文字列類似度問題はグラフ上の経路探索問題とし て解くことができる [1,2]. 2節の問題例(文字列が 81=
"eα
st"と82="ω
est",目標関数f
の中の係 数がC[=
1,
cH=
0ぅCK二 0)を使って説明する.問 題例に対して図1
のコスト付きグラフG
を考える. Gでは, (jS1j + 1)(jS2j + 1) = (4 + 1)(4 + 1)個の 節 点 的j,
i
,
j = 0,
.
.
.
,
4,
が格子状に並んでおり,横 方向,縦方向3 斜め方向に規則正しく枝が出ている. 文字列S
のi
番目の文字を S(i)と記す. Gの各枝 にはコストがついており,横方向および縦方向の枝 のコストは CK=
0
,斜め方向の枝 (Vij,
Vi+l,
Hl
)
の コストは ,Sl(i+
1
)
= S2(
j
+
1
)
のとき C[= ,1 Sl(i+
1
)
=
j
:
.
S2(j+
1
)
のとき CH=0
である.G
上 の路のコストを路に現れる枝のコストの和と定義する. 例えば,図1
の太い枝からなる路VOOVOIV12V22V33V44 のコストは0+1+0+1+1=3である.このよう にGおよび路のコストを定めると,G
の左上の節点 VOOから右下の節点り44へ至るすべての路のコストの 中の最大値が文字列81= 九αst"とS2="ω
est"の 類似度になる.最大値を与える路を最適路と呼ぶ.路 VOOVOl V12V22V33V44は最適路になっており,この路のコ スト 3が文字列の類似度になる (2節で述べた類似度 3 lこ一致する).G
の最適路のコスト(文字列の類似度)の計算は図2
の動的計画法により行うことができる.ここで,叫jは斜め方向の枝(Vi-l
,
j-l,
Vij)のコスト,
D ijは節点VOOから節点的jへの最適路のコストであり ,Dnnが求め る最適路のコスト(文字列の類似度)である.動的計画 法の時間量はO(η2)である. Doo =0 DOj = D O,j-l
+
CK,
1s
:
j三
η DiO= D←1.0十 CK,
l:
S
i
:
S
n D ij=
皿ax{D←
1,
j十 cK,
Di-l,
j-l+
ω
ij,
D i,
j-l+
CK},
1
:
S
i,
j
:
S
n
.
図2.動的計画法4
並列ア
jレ
ニ
ゴ
1).
ズ
ム
計算機クラスタは1
台のマスタ計算機とp
台のス レーブ計算機(スレーブ#1
,.・.,スレーブ、#p
と記す)を パス型LANで接続して構成されるa ただし,マスタの 仕事は少ないため,マスタとスレーブ#1
は物理的に同 一の計算機とする.送信,受信とも,通信はすべて同期 型とする .Dnn (文字列の類似度)を計算する並列ア ノレゴリズムを次に示す. [マスタ計算機]s
t
e
p
l
:
すべてのスレーブに文字列データを送信する.s
t
e
p
2
:
スレーブ#p
から Dnn(文字列の類似度)を受 信したら,それを表示して終了する.口 [スレーブ計算機]
1
*
スレーブ#k
とする.*
/
s
t
e
p
l
:
マスタから文字列データを受信する.s
t
e
p
2
:
k
=1
ならばs
t
e
p
3
へ,2
壬
k:
Sp-l
ならばs
t
e
p
4
へ,
k=pならばs
t
e
p
5
へ.計算クラスタ上で文字列の類似度を計算するための並列アノレゴリズム
s
t
e
p
3
・1
*
スレーブ#1
における処理*
j
f
o
r
(
i
=
1;i
三
p
;p+
+
)
{
Bliを計算する.C
1iをスレ}ブ#2
に送信する.}
終了する.s
t
e
p
4
:
j
*
スレーブ#k
(
2
壬k
孟p-
1
)
における処 理*
j
f
o
r
(
i
= 1;i
三p
;p+
+
)
{
スレ}ブ子学(
k-1
)
から Ck-1,iを受信する. Bkiを計算する. Ckiをスレ}ブ#(k
+
1
)
に送信する.}
終了する.s
t
叩5
:
j
*
スレーブ'#p
における処理*
j
f
o
r
(
i
=
1;i
三p
;p+
+){
スレーブ#(p
-1)から Cp-1,iを受信する. Bpiを計算する.}
Dnnをマスターに送信する. 終了する,口 ここで,Bki,
Ckiは次式で表されるDifjfの集合である. 、 、 ‘ Z E E , J 1 i , f t、, 、
! ? J、
lfJllLfil 円 円 、nd
寸 t -9 噌 E ムK
E
t
﹃ E E E E E E E E E B ﹁ , , B E E t -1 -1 1 i -t i 一 十 一P+
一p
n
一
η一
r f l i l e e m i l l i -rtJ、
ttr13 ミ 11、
n
n
m
m
<一く一 ・ 0b , u g d <一<一 、, ノ l 噌i、
1/ 噌i 叩 J一
一
h
k
t
E
(
(
riJIL--JIll--J ー ー 1 1 一 1 占 同=
+
一
P十
一
p
l
M
n
一
n
一
TF ﹄ ﹁ 2 3 3 1 1 s t a z r t B ' B E l l tC
ki ={
D
印I
i
'
=r
ヂ
l
k
-1,
同o
{
,
r
千
l
(iード
l:::;k三p
-1,
1:::;i三p
.
並列処理の流れを p=
3,
n
二8
の例を使って説明 する.図3に示すように,η
(
十 1)x
η
(
十1)=
9x
9 の行列として表された全ての Difjfをpxp=3x3
個のブロックに分け,
B l1ド ー ・,
B33と記す(式(
1
)
のBki) .また ,BkiとBk+1,iの境界付近にある Di'j'を C11ド 園 川C23と記す(式(2)のCki).初め,スレーブ