00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
ϮϬϭϮͲϭ
ϮϬϭϮͲϮ
ϮϬϭϮͲϯ
ϮϬϭϮͲϰ
ϮϬϭϮͲϱ
ϮϬϭϮͲϲ
ϮϬϭϮͲϳ
ϮϬϭϮͲϴ
ϮϬϭϮͲϵ
ϮϬϭϮͲϭϬ
ϮϬϭϮͲϭϭ
ϮϬϭϮͲϭϮ
G
G
G
G
S
ϭ͕ϭ
V
ϱ
S
Ϯ͕Ϯ
S
ϯ͕ϯ
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
S
Ϭ͕Ϭ
S
Ϯ͕ϯ
S
ϭ͕Ϯ
S
Ϭ͕ϭ
S
Ϭ͕Ϯ
S
Ϭ͕ϯ
V
ϭ
V
Ϯ
V
ϳ
V
ϯ
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
S
ϭ͕ϯ
V
ϰ
V
ϲ
4
図 1
OIP with Configuration (s, 4)
文献
[1]
で対象とされた問題は,
2
つのリレーション
r
と
s
が
入力として与えられたとき,時区間が交わりをもつタプルのペ
アを求める結合演算
{r ◦ s | r ∈ r ∧ s ∈ s ∧ r.T ∩ s.T |= ∅}
を
効率良く求めることである
[2, 3, 4, 6]
.
2. 2
パーティション
本節では,上記の問題を解く既存手法として
OIP [1]
を説明
する.
OIP
ではリレーション
r
の時間範囲
U = [U
S
, U
E
]
は
k
個の等しい長さの最少構成区間に分割される.
[定義
2.1
]
(
OIP Configuration
)
k
が与えられたとき,
r
の
OIP Configuration
は
(r, k)
で表される
(注 1)
.
■
パーティションは,
1
つ以上の隣接した最少構成区間の集合で
ある.各タプルは,タプルの区間を覆うパーティションの中で
最小のものに割り当てられる.
[定義
2.2
]
(
OIP Partition
)
OIP Configuration (r, k)
が与
えられ,最少構成区間に対して,時間順に
0
から
k
− 1
の
ID
が振られているものとする.
OIP
のパーティション
p
i,j
は
i
番 目 か ら
j
番 目 の 最 少 構 成 区 間 に 跨 り,そ の 区 間 は
[U
S
+ i
· d, U
S
+ (j + 1)
· d − 1]
である.ここで,
0 <
= i <
= j < k
,
d =
⌈
|U|
k
⌉
である.タプル
r
∈ r
は,
i =
⌊
r.T
S
−U
S
d
⌋
かつ
j =
⌊
r.T
E
−U
S
d
⌋
であるとき,
p
i,j
に割り当てられる.
■
存在する
OIP
のパーティションの数は,
k
2
+k
2
である.また,
c = p
i,j
のとき,
c.i
と
c.j
はそれぞれパーティションの始点の
ID
と終点の
ID
を表す.
[例
2.3
] 図
1
にあるリレーション
s
は
{s
1
,
· · · , s
7
}
の
7
つ
の タ プ ル を 含 み ,時 間 範 囲 は
U = [2012-1, 2012-12]
で あ
る .
k = 4
で あ る と き ,
d =
⌈
|U|
k
⌉ = ⌈
|12|
4
⌉ = 3
で あ
る.また,
p
0,1
の範囲は
[2012-1, 2012-6]
である.タプル
s
6
に つ い て ,
i =
⌊
s
6
.T
S
−o
d
⌋ = ⌊
2012-6
−2012-1
3
⌋ = ⌊
5
3
⌋ = 1
,
j =
⌊
s
6
.T
E
−o
d
⌋ = ⌊
2012-10
−2012-1
3
⌋ = ⌊
9
3
⌋ = 3
であることよ
り,
s
6
はパーティション
p
1,3
に割り当てられる.
10
個のうち
5
個のパーティションは空である.
□
[補題
2.4
]
OIP Configuration (r, k)
と ク エ リ 区 間
q =
[q.T
S
, q.T
E
]
が与えられているとする.
q
と交わりをもつ可
能性があるタプル
{r | r ∈ r, r ∩ q |= ∅}
は,
i <
= ⌊
q.T
E
−U
S
d
⌋
か
つ
j >
= ⌊
q.T
S
−U
S
d
⌋
を満たすパーティション
p
i,j
に存在する.
■
[例
2.5
] 図
1
に示す
OIP Configuration (s, 4)
とクエリ区間
(注1):文献 [1] では,
OIP Configuration は (k, d, U
S
) で表される.しか
し d や U
S
は k と r から導出できるので,本稿では (r, k) の表現を用いる.
S
S
S
S
S
S
S
S
S
S
S
S
S
S
S
M
L
4
4
D7ULDQJXODU*ULG*UDSK
E/D]\3DUWLWLRQ/LVW
図 2 Management of
OIP Partitions
ϮϬϭϮͲϭ
ϮϬϭϮͲϮ
ϮϬϭϮͲϯ
ϮϬϭϮͲϰ
ϮϬϭϮͲϱ
ϮϬϭϮͲϲ
ϮϬϭϮͲϳ
ϮϬϭϮͲϴ
ϮϬϭϮͲϵ
ϮϬϭϮͲϭϬ
ϮϬϭϮͲϭϭ
ϮϬϭϮͲϭϮ
G
G
G
G
S
Ϭ͕Ϭ
U
ϭ
U
Ϯ
S
ϭ͕ϯ
ƌ
ϯ
図 3
OIP with Configuration (r, 4)
q = [2012-5, 2012-5]
が与えられているとする.クエリと交わり
をもつ可能性があるタプルは,
i <
= ⌊
2012-5−2012-1
3
⌋ = ⌊
4
3
⌋ = 1
かつ
j >
= ⌊
2012-5
−2012-1
3
⌋ = ⌊
4
3
⌋ = 1
であるパーティション
p
i,j
にある.これを満たすパーティションは灰色に塗られている
p
0,3
, p
0,2
, p
0,1
, p
1,3
, p
1,2
, p
1,1
である.
□
2. 3
Lazy Partition List
図
2(a)
に,図
1
の
OIP
のデータ構造を示す.このグラフ
は
Triangular Grid Graph
と呼ばれ,インメモリで管理され
る.クエリ区間と結合可能な全ての適切なパーティション
p
i,j
は
j >
= ⌊
q.T
S
−U
S
d
⌋
かつ
i <
= ⌊
q.T
E
−U
S
d
⌋
を満たす.ここで
U
s
と
d
s
はそれぞれ
s
の時間範囲の始点とパーティションの最少構成
区間の長さである.これを満たすパーティションを見つけるた
めにグラフの左端最上部から探索を開始し,
j >
= ⌊
q.T
S
−U
S
d
⌋
で
ある間,
j
が減少する方向に移動する.そして
p
0,j
であるノー
ドから,
i <
= min(j, ⌊
q.T
E
−o
s
d
s
⌋)
である間,
i
が増加する方向に
移動する.例
2.5
に示したクエリ区間
q
と結合可能なパーティ
ションは,図
2(a)
の灰色で強調されている
6
個である.
一方,
Lazy Partition List
は,
Triangular Grid Graph
か
ら空のパーティションを除いたものであり,各節点は
right
と
down
の
2
つのリンクをもつ.図
2(b)
は図
1
の
Lazy Partition
List
を示している.この図に示されるように,クエリ区間と交
わりを持つタプルを含むパーティションは連結する部分グラフ
であり,必ず根を含む.したがって,根から探索することでこ
れらのパーティションに漏れなく,また無駄なく到達し,結合
演算を取ることができる.
2. 4
Lazy Partition List
を用いた
OIP
の実行
リレーション
r
と
s
に対する
OIPJ
OIN
アルゴリズムを
Algo-rithm 1
に示す.
Lazy Partition List
L
r
がもつ各パーティショ
ンの区間
c
r
と交わりともつパーティションを
L
s
から探索する.
L
s
の根から探索をはじめ,
right
のリンクを優先に深さ優先探索
する.もし,
c
r
と交わりを持つパーティション
x
に到達したら,
2
つのパーティションの結合演算をとり,結果を
z
に追加する.一
方,
c
r
交わりを持たない節点に到達したら,それ以降に
c
r
と交
わりをもつパーティションは存在しないので,バックトラックす
る.これを図
1
の
s
と図
3
の
r
に対して適用することで最終的に