• 検索結果がありません。

Allenの時区間関係を条件とする時区間データの効率的な結合演算手法

N/A
N/A
Protected

Academic year: 2021

シェア "Allenの時区間関係を条件とする時区間データの効率的な結合演算手法"

Copied!
8
0
0

読み込み中.... (全文を見る)

全文

(1)

DEIM Forum 2016 D3-1

Allen の時区間関係を条件とする

時区間データの効率的な結合演算手法

山下 夏奈

猪口 明博

関西学院大学理工学部情報科学科

〒 669–1337 三田市学園 2 丁目 1 番地

E-mail:

†{

kana06,inokuchi

}

@kwansei.ac.jp

あらまし

Overlap Interval Partitioning (

OIP) は,交わりをもつ 2 つの時区間(タプル)の結合演算を効率良く解

くためのデータ構造である.しかしながら,このデータ構造を Allen の時区間関係の 1 つを満たす 2 つの時区間の結

合演算に用いると,結合の回数が増えたり,結合の必要のない 2 つのタプルに対して,条件節の真偽を確認する必要

があり,非効率である.そこで,本稿では 2 次配列型のデータ構造を持つ Partition Array を提案し,必要最低限の

結合を行い,効率的な結合演算を可能にする.提案手法 Partition Array と既存手法

OIP を実装し,実行時間の違い

について考察することにより,提案手法の有効性を評価・検証する.

キーワード

時制データベース,時区間データ,結合演算,索引,Allen の時区間関係

1.

は じ め に

近年,情報通信技術の発展により,様々なデータを半自動的

に収集できるようになった.例えば,スーパーマーケットやコ

ンビニエンスストアでは,店舗で商品を販売するごとに商品の

販売情報を記録する

POS

システムの導入により,商品名や価

格,数量などの購買データが蓄積される.また,インターネッ

トショピングを利用すると,商品の閲覧履歴や注文履歴,購入

日時などが記録される.多種多様なデータの中でも,市場の流

行や消費者の購買行動,購買意識の変化を調べるときには時区

間を持つデータの分析が重要である.ここで,時区間とは,始

点と終点を持つ時間領域のことである.先ほどの例では,顧客

の来店時間や商品の購入日時,注文日時などが時区間を持つ

データである.時区間を持つデータを分析することで,常に変

化し続ける市場を捉えることができ,顧客ごとのニーズに基づ

いた商品やサービスの提供が可能になる.

時区間データを持つ

2

つのリレーションがあるとき,データ

ベースから特定の時区間関係を持つデータを抽出して結合する

ために,全ての時区間の対の結合をとるのは効率が悪い.そこ

で本研究では,時区間を持つデータに対して時区間関係を取り

入れた演算手法を提案する.具体的には,

Allen

13

種の時

区間関係

[5]

をサポートするデータ構造を持つ演算手法を提案

する.これにより,時区間を持つデータの結合操作が効率的に

なる.

既存手法である

Overlap Interval Partitioning (

OIP)

では,

リレーションの時間範囲を

k

個の等しい長さの最少構成区間

に分割する.また,

1

つ以上の隣接した最少構成区間の集合で

パーティションを構成する.リレーションに格納されている各

タプルは,タプルの区間を完全に覆うパーティションの中で最

小のものに割り当てられる.そして,各パーティションを

Lazy

Partition List

と呼ばれる木構造で保持する.各パーティショ

ンを木構造で保持することで,抽出したいタプルが格納され

ている可能性があるパーティションを深さ優先探索して得るこ

とができ,効率的である.

OIP

では,

Allen

の時区間関係の

af ter(A, B)

bef ore(A, B)

以外の

11

個の時区間関係の論理

和をサポートできる.しかしながら,論理和でなく,各時区間

関係を条件とする結合演算に適しているとは言えない.そこで

本稿では,各時区間関係を条件とする結合演算に対して効率的

な結合演算を可能にするデータ構造と,それに対する探索手法

を提案する.

2.

区間の結合演算とその既存手法

2. 1

問 題 定 義

本稿では,離散時間領域

T

は線形に並んだタイムポイント

の集合で構成されているものとする.区間

T

はタイムポイント

の対であり,

[T

S

, T

E

]

で表される.ここで,

T

S

T

E

はそれぞ

T

の始点と終点である.タイムポイントと区間に対して,以

下に記す演算を用いる.

タイムポイント

x

が区間

T

に含まれている,つまり

T

S

<

= x <

= T

E

ならば,

x

∈ T

と記す.

区間

Q

T

が交わっている,つまり

x

∈ Q ∧ x ∈ T

満たすタイムポイント

x

が存在するならば,

Q

∩ T |= ∅

と記す.

区間

T

が区間

U

に含まれている,つまり

∀x ∈ T ⇒ x ∈

U

を満たすタイムポイント

x

が存在するならば,

T

=

U

と記す.

• T

E

− T

S

T

S

T

E

のタイムポイントの差を意味する.

• T

S

− x

は,タイムポイント

T

S

x

だけ過去にずらすこ

とを意味し,

T

E

− T

S

= x

⇒ T

S

+ x = T

E

が成り立つ.

• | T |= (T

E

− T

S

) + 1

は,区間

T

の存続時間を意味する.

時制リレーションスキーマを

R = (A

1

,

· · · , A

m

, T )

と表す.

ここで,

1 <

= i <

= m

に対して,

A

i

は領域

i

に属し,区間

T

領域

T

× Ω

T

に属する.スキーマ

R

における時制リレーショ

r

は,

R

におけるタプルの有限集合である.もし

r

のタプル

の中で最小の始点が

U

S

であり,

r

のタプルの中で最大の終点

U

E

であるならば,

r

の時間範囲は

U = [U

S

, U

E

]

である.

(2)

   

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

D 7ULDQJXODU*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

に対して適用することで最終的に

(3)

Algorithm 1:

OIPJ

OIN

Data: Lazy partition lists

L

r

and

L

s

,

OIP

Configurations (r, k

r

) and (s, k

s

)

Result: z =

{r ◦ s | r ∈ r ∧ s ∈ s ∧ r.T ∩ s.T |= ∅}

1

z :=

∅;

2

[U

S

r

, U

E

r

] := r

の有効区間

;

3

[U

S

s

, U

E

s

] := s

の有効区間

;

4

d

s

:=

U

E

s

−U

S

s

+1

k

s

⌉ ;

5

d

r

:=

U

r

E

−U

S

r

+1

k

r

⌉ ;

6

for node c

r

in

L

r

do

7

Q

S

:= U

S

r

+ c

r

.i

· d

r

;

8

Q

E

:= U

S

r

+ (c

r

.j + 1)

· d

r

− 1;

9

if Q

E

>

= U

S

s

∧ Q

S

< U

S

s

+ k

· d

s

then

10

s :=

Q

S

−U

s

S

d

s

⌋;

11

e :=

Q

E

−U

s

S

d

s

⌋;

12

c

s

:=

L

s

.head;

13

while c

s

|= null ∧ c

s

.j >

= s do

14

x := c

s

;

15

while x

|= null ∧ x.i <

= e do

16

z := z

∪ { joined tuples from c

r

and x

};

17

x := x.right;

18

c

s

:= c

s

.down;

19

return z;

z =

{r

3

◦s

4

, r

3

◦s

6

, r

3

◦s

7

, r

1

◦s

3

, r

1

◦s

4

, r

1

◦s

5

, r

2

◦s

4

, r

2

◦s

6

}

が出力される.

3.

OIP

の課題

OIPJ

OIN

のアルゴリズムは,

L

r

の各パーティション

c

r

結合可能なパーティション

x

L

s

から探しだす.そして,タ

プル

r

∈ c

r

と交わりを持つタプル

s

∈ x

があればそれらを結

合する.結合の条件が

2

つの区間

A

B

の交わりがあれば,

このアルゴリズムは,重複なく,かつ漏れなく結合可能なパー

ティションの対を探し探し出すことができるが,

Allen

の時区

間関係

[5]

1

つである

contains

を条件とする結合演算に適し

ているとは言えない.その具体例を次に示す.

[例

3.1

] 時区間関係

contains(A, B)

の条件を満たすタプル

A

B

の結合を取るときの例を示す.ここで

contains(A, B)

A.T

S

< B.T

S

∧ B.T

E

< A.T

E

を満たす場合に真を返す

1

階述語である.時間範囲

U = [2012-1, 2012-12]

であるリレー

ション

r

s

,および

k = 4

を入力とする.このときの

Lazy

Partition List

L

s

は図

2

となる.この時区間関係に関して

L

r

のパーティション

p

1,1

に含まれるタプルと結合可能なタプル

を含む

L

s

のパーティションは

p

1,1

である.この節点は,

L

s

の根ではないので,

L

s

を全探索する必要がある.したがって,

Algorithm 1

に示される既存手法では,非効率である.

このように,既存手法では各リレーションのパーティションを

木構造で保持しているため,必要最低限のパーティションのみ

ϮϬϭϮͲϭ

ϮϬϭϮͲϮ

ϮϬϭϮͲϯ

ϮϬϭϮͲϰ

ϮϬϭϮͲϱ

ϮϬϭϮͲϲ

ϮϬϭϮͲϳ

ϮϬϭϮͲϴ

ϮϬϭϮͲϵ

ϮϬϭϮͲϭϬ ϮϬϭϮͲϭϭ

ϮϬϭϮͲϭϮ

ϮϬϭϮͲϭ

ϮϬϭϮͲϮ

ϮϬϭϮͲϯ

ϮϬϭϮͲϰ

ϮϬϭϮͲϱ

ϮϬϭϮͲϳ

ϮϬϭϮͲϴ

ϮϬϭϮͲϵ

ϮϬϭϮͲϭϬ ϮϬϭϮͲϭϭ

ϮϬϭϮͲϭϮ

U

V

S

Ϭ͕Ϭ

S

ϭ͕ϭ

S

Ϯ͕Ϯ

ϮϬϭϮͲϲ

S

Ϭ͕Ϭ

S

ϭ͕ϭ

S

Ϯ͕Ϯ

図 4 contains(A, B)

表 1 Allen の時区間関係

Allen

の時区間関係

2

つの時区間の始点,終点の条件

bef ore(A, B)

A.T

E

< B.T

S

meets(A, B)

A.T

E

= B.T

S

overlaps(A, B)

A.T

S

< B.T

S

< A.T

E

< B.T

E

during(A, B)

B.T

S

< A.T

S

∧ A.T

E

< B.T

E

starts(A, B)

A.T

S

= B.T

S

∧ A.T

E

< B.T

E

af ter(A, B)

B.T

E

< A.T

S

met-by(A, B)

A.T

S

= B.T

E

overlapped-by(A, B) B.T

S

< A.T

S

< B.T

E

< A.T

E

f inishes(A, B)

B.T

S

< A.T

S

∧ A.T

E

= B.T

E

equal(A, B)

A.T

S

= B.T

S

∧ A.T

E

= B.T

E

f inished-by(A, B)

A.T

S

< B.T

S

∧ A.T

E

= B.T

E

started-by(A, B)

A.T

S

= B.T

S

∧ B.T

E

< A.T

E

contains(A, B)

A.T

S

< B.T

S

∧ B.T

E

< A.T

E

を辿ることができない.

Allen

の時区間関係は

13

個の関係で

構成されているが,そのうち

12

個に対しても同様である.

[例

3.2

] 時間範囲

[2012-1, 2012-12]

であるリレーション

r

と,

[2012-2, 2012-12]

であるリレーション

s

を入力とする.各

OIP

Configuration

(r, 3)

(s, 3)

とする.このとき

r

s

のパー

ティションの一部とタプルの一部を図

4

に示す.

r

のパーティ

ション

p

1,1

に存在するタプル

r

と,

contains(A, B)

の関係に

あるタプル

s

が格納されている可能性がある

s

のパーティショ

ンは,

p

0,0

p

1,1

である.よって,

2

回結合演算をする必要が

ある.

このように,既存手法では

r

k

により

Configuration

が決ま

るため,結合対象となるパーティションの数が増えて効率的な

演算ができない場合がある.

そこで本研究では,これらの課題を解決するため,

Allen

時区間関係を条件とする結合演算に対して,効率的な計算を可

能にするデータ構造とそれに対するアルゴリズムを提案する.

4.

提 案 手 法

本稿で扱う

Allen

13

個の時区間関係を表

1

に示す.この

13

個の関係の集合を

Θ =

{before, meets, overlaps, during,

starts, af ter, met-by, overlapped-by, f inishes, equal,

f inished-by, started-by, contains}

とする.本稿が対象とする

問題は,

2

つのリレーション

r

s

,及び関係

θ

∈ Θ

が入力とし

て与えられたとき,

{r ◦ s | r ∈ r ∧ s ∈ s ∧ θ(r.T, s.T ) = true}

を効率良く求めることである.

前節で述べた課題を克服するために,パーティションを構

成するための設定を改良する.リレーション

r

に対する

OIP

(4)

表 2 q

i

,j

と結合演算が可能なパーティションの集合

θ

S(r, q

i

,j

, θ)

bef ore

{p

i,j

∈ P (r) | j

<

= i <

= j <

= k − 1}

meets

{p

i,j

∈ P (r) | i = j

<

= j <

= k − 1}

overlaps

{p

i,j

∈ P (r) | i

<

= i <

= j

<

= j <

= k − 1}

during

{p

i,j

∈ P (r) | 0 <

= i <

= i

∧ j

<

= j <

= k − 1}

starts

{p

i,j

∈ P (r) | i = i

∧ j

<

= j <

= k − 1}

af ter

{p

i,j

∈ P (r) | 0 <

= i <

= j <

= i

}

met-by

{p

i,j

∈ P (r) | 0 <

= i <

= i

= j

}

overlapped-by

{p

i,j

∈ P (r) | 0 <

= i <

= i

<

= j <

= j

}

f inishes

{p

i,j

∈ P (r) | 0 <

= i <

= i

∧ j = j

}

equal

{p

i,j

∈ P (r) | i = i

∧ j = j

}

f inished-by

{p

i,j

∈ P (r) | i

<

= i <

= j

= j

}

started-by

{p

i,j

∈ P (r) | i = i

<

= j <

= j

}

contains

{p

i,j

∈ P (r) | i

<

= i <

= j <

= j

}

Configuration

は,

(r, k)

で表される.これに対して,提案手法

では,

(r, d, o)

を入力として与える.ここで

d

はパーティショ

ンの最少構成区間の長さであり,

o

はある時刻である.パーティ

ションへの分割数は

k =

U

E

−o

d

で決められる.ここで

r

の時

間範囲

U

の始点

U

S

o

は,必ずしも一致するとは限らないこ

とに注意されたい.提案手法では,

2

つのリレーション

r

s

が与えられたとき,各リレーションに対して

(r, d, o)

(s, d, o)

によりパーティションの最少構成区間を構成する.ここで,

2

つのリレーションに対する

d

,及び

o

は同一の値が用いられる.

これにより,

r

のあるパーティション

p

r

i,j

r

のあるパーティ

ション

p

s

i,j

は等しくなるので,前節で述べた

2

つ目の課題を克

服することができる.

P (r)

r

のパーティションの集合とする.

i

番目から

j

目のパーティションに跨るパーティション

q

i

,j

と時区間関係

θ

∈ Θ

が与えられたとき,

θ(q

i

,j

, p

i,j

)

を満たす

r

のパーティ

ションの集合を

S(r, q

i

,j

, θ)

とする.すなわち

S(r, q

i

,j

, θ) =

{p

i,j

∈ P (r) | θ(q

i

,j

, p

i,j

) = true

} (1)

である.

θ = equal

のとき,式

(1)

S(r, q

i

,j

, equal) =

{p

i,j

∈ P (r) | i = i

∧ j = j

}

となる.これは

θ

として

equal

が指定されたとき,

q

i

,j

に含ま

れるタプルと結合可能なタプルを含むパーティションが

p

i

,j

のみであることを意味している.同様にして,

Θ

の各要素に対

して,

S(r, q

i

,j

, θ)

をまとめたものが表

2

である.ここで,す

べての

θ

∈ Θ

に対して

S(r, q

i

,j

, θ)

o

d

に依存しないこ

とに注意されたい.これに対して,既存手法では, 補題

2.4

示されたように,クエリ区間と結合可能なタプルを含むパー

ティションを求めるには,パーティションの最少構成区間の長

さと

r

の時間範囲の始点が必要になる.

5

S(r, q

i

,j

, θ)

が返すパーティション

p

i,j

に相当する点

(i, j)

の集合が存在する領域を図示したものである.いずれの領

域も連続する

1

つの凸領域である.この領域の点

(i, j)

を効率

ĞƋƵĂů

ŬͲϭ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ŬͲϭ

ŝ͛

ũ͛

ŝ͛

ũ͛

ŝ

ũ

ĨŝŶŝƐŚĞĚͲďLJ

ƐƚĂƌƚĞĚͲďLJ

ĨŝŶŝƐŚĞƐ

ŽǀĞƌůĂƉƉĞĚͲďLJ

ŽǀĞƌůĂƉƐ

ŵĞƚͲďLJ

ŵĞĞƚƐ

ĂĨƚĞƌ

ĚƵƌŝŶŐ

ĐŽŶƚĂŝŶƐ

ďĞĨŽƌĞ

ƐƚĂƌƚƐ

ŬͲϭ

ŬͲϭ

ŬͲϭ

ŬͲϭ

ŬͲϭ

ŬͲϭ

ŬͲϭ

ŬͲϭ

ŬͲϭ

ŬͲϭ

ŬͲϭ

図 5 q

i

,j

と結合演算が可能な領域

良く返すために,図

6

に示す

Partition Array

を用いる.図

6

k = 4

の場合の

Partition Array

である.

Partition Array

2

次配列であり,その

(i, j)

要素がパーティション

p

i,j

に相

当する.全要素のうち,タプルが存在するパーティションに相

当する要素は青色で描かれている.また,パーティション

p

i,j

に対して

i <

= j

を満たすので,この図の右下三角領域は空と

なる.空のパーティションを辿ることなく,

S(r, q

i

,j

, θ)

を求

めるために,各要素は

down

right

のリンクをもつ.また,

p

0,j

p

i,k

−1

が空の場合もあるため,

H Index

V Index

いうリンクの配列をもち,各行,各列の要素のうち,空でない

先頭の要素に対するリンクを保持する.

Algorithm 2

は,

Allen

の時区間関係各

θ

2

つのリレーショ

r

s

が与えられたとき,

θ

にしたがい結合演算を行うため

の擬似コードである.

r

の各パーティション

q

に対して,表

2

にしたがい,

q

と結合可能な

s

のパーティション集合

S

を取得

する.その後,

q

S

の各要素

p

との結合を取り,その結果を

z

に追加する.

Algorithm 3

か ら

Algorithm 12

は 各

θ

∈ Θ

に 対 し

S(r, q

i

,j

, θ)

を 求 め る た め の 擬 似 コ ー ド で あ る .こ れ

を 互 い に 疎 な

3

つ の グ ル ー プ に 分 け る .

1

つ 目 は ,図

5

の 結 合 演 算 が 可 能 な 領 域 が

j

= k

− 1

と 接 し て い る

時区間関係

Θ

1

=

{before, meets, overlaps, during, starts}

で あ る .

2

つ 目 は ,そ れ 以 外 の 時 区 間 関 係 で ,結

合 演 算 が 可 能 な 領 域 が

i

=

0

に 接 し て い る 時

区 間 関 係

Θ

2

=

{after, met-by, overlapped-by, finishes}

で あ る .

3

つ 目 は ,そ れ 以 外 の 時 区 間 関 係

Θ

3

=

{equal, finished-by, started-by, contains}

である.グループ

図 3 OIP with Configuration (r,     4)     q = [2012-5, 2012-5] が与えられているとする.クエリと交わり をもつ可能性があるタプルは, i &lt; = ⌊ 2012-5−2012-13 ⌋ = ⌊ 43 ⌋ = 1 かつ j &gt; = ⌊ 2012-5 − 3 2012-1 ⌋ = ⌊ 43 ⌋ = 1 であるパーティション p i,j にある.これを満たすパーティションは灰色に塗られている p 0,3 , p 0,2 , p 0,1 , p
表 2 q i ′ ,j ′ と結合演算が可能なパーティションの集合 θ S(r, q i ′ ,j ′ , θ)

参照

関連したドキュメント

しかしながら,式 (8) の Courant 条件による時間増分

 処分の違法を主張したとしても、処分の効力あるいは法効果を争うことに

従って、こ こでは「嬉 しい」と「 楽しい」の 間にも差が あると考え られる。こ のような差 は語を区別 するために 決しておざ

 介護問題研究は、介護者の負担軽減を目的とし、負担 に影響する要因やストレスを追究するが、普遍的結論を

不変量 意味論 何らかの構造を保存する関手を与えること..

定理 ( 長谷川 ) 直積を持つ圏と、トレース付きモノイダル圏の間のモ ノイダル随伴関手から、 dinaturality

このため、都は2021年度に「都政とICTをつなぎ、課題解決を 図る人材」として新たに ICT職

その後、時計の MODE ボタン(C)を約 2 秒間 押し続けて時刻モードにしてから、時計の CONNECT ボタン(D)を約 2 秒間押し続けて