2018年12月14日
標準的なアプローチとヒューリスティックな代替
標準的なアプローチ-グラフと距離の積を使用
推移還元は推移閉包に還元可能であり、その逆も同様に、 O(n2)。次に、推移閉包をO(n2⋅polylog(n)) その後、Fischer / Meyer 1971に従って推移閉包(または推移縮約)に削減することにより、同様の時間で緩やかなブール行列乗算(MM)を解くことができます。緩やかなブールMMは、入力値が {0,1} そして、私たちはのセミリングを持っています (OR,AND)。標準の(プラス、時間)MMに削減することにより、緩やかなブールMMを解くことができます。これは、かなりサブキュービックな時間のアプローチでは、現在のところ推移的な削減にはなりそうにないことを意味します。トポロジーの順序付けとソースからの距離に反比例するサイズの形状により、ノードベースのDAG推移的削減を長方形包含ベースのDAG推移的削減に削減できます。四角形のアプリケーションの場合、もちろん、四角形が同一である場合に発生するサイクルはありません。その場合、重複を削除する必要があります。より直接的なアルゴリズムは、スパースグラフを仮定してリダクションを計算するためのものです。O(n3)時間。これらの時間は、最初のDAGを作成するために実行する必要があることも無視していますn2 封じ込め試験、それぞれに時間がかかります O(d)=O(2)=O(1)。
ヒューリスティックな代替案-Rツリーを使用
あるいは、次元があると仮定します d 適度に低く固定されており、 O(n)、サブキュービックであるように見える時間に到着できます n。私たちには2つのオプションがあります-どちらも、例えば、Leutenegger 1997を介したsort-tile-recursive(STR)アプローチを介した一括読み込みでRツリーバリアントを使用します。 2003)での挿入と削除をサポートするO(log2(n))時間。標準Rツリーの詳細については、Guttman 1984を参照してください。主な考え方は、それぞれに近い子孫を見つけることですn 合計で長方形を提供 n直系クエリ。サブクエリはオプション1の保証時間が十分であっても、最終的には存続しない近い子孫の中間ハンチが多数存在する可能性があるため、両方のオプションをヒューリスティックスを含むと見なします。
エンクロージャー/封じ込めを頻繁に伴わないペアワイズの長方形があり、オーバーラップがエンクロージャー/封じ込めと高い相関がある場合、アプローチの2つのオプションのいずれかでRツリーを使用してパフォーマンスを向上させることができると考えられます。四角形の囲みクエリは、それを含む指定されたクエリの四角形四角形を要求し、四角形包含クエリは、それに収まる指定されたクエリの四角形四角形を要求することに注意してください。近い子孫のクエリは、ヒューリスティックなアプローチを介して大まかに機能します。クエリの四角形に含まれるプリミティブな四角形を見つけ、補助クエリを使用して、返された四角形に元のクエリの四角形に含まれる親があるかどうかを確認します。私たちが「紛争」に保存している近い子孫の候補 候補の親が候補の終了の子孫を囲む(および失格にする)かどうかを決定する早期停止を伴うエンクロージャサブクエリの形式でチェックを高速化するためのセカンダリRツリー。この競合ツリーは、挿入と削除によって維持されます。同じ形の長方形に遭遇したとき、それらのうちの1つを任意に保持することを選択する場合があることに注意します。バウンディングボックスの考慮順序をガイドするために、最高優先度のキューを使用します。私たちは、包含されたバウンディングボックスを優先し、より大きなバウンディングボックス領域を優先することでタイブレークを行います(より大きな包含されたボックスに対して仲介者になるのは難しいためです)。それらの1つを任意に保持することを選択できます。バウンディングボックスの考慮順序をガイドするために、最高優先度のキューを使用します。私たちは、包含されたバウンディングボックスを優先し、より大きなバウンディングボックス領域を優先することでタイブレークを行います(より大きな包含されたボックスに対して仲介者になるのは難しいためです)。それらの1つを任意に保持することを選択できます。バウンディングボックスの考慮順序をガイドするために、最高優先度のキューを使用します。私たちは、包含されたバウンディングボックスを優先し、より大きなバウンディングボックス領域を優先することでタイブレークを行います(より大きな包含されたボックスに対して仲介者になるのは難しいためです)。
オプション#1-先読みを使用する
最初のオプションは、四角形の囲みや四角形の封じ込めなどのサブクエリに対して、コーナー変換と組み合わせて先読みを使用することです。近い子孫クエリは、先読みを直接使用しません。そのサブクエリは行います。次に、dエッジチェック用の先読みクエリの場合。先読みについては詳しく説明しませんが、兄弟には大まかにばらばらのバウンディングボックスが必要です(共有エッジは許可されます)と、2つのサブツリーから1つの子が確実に一致することを知ることに関連しています(これはコーナー変換も使用していると仮定すると、より簡単に気付くことができます)d各ノードのエッジチェック。先読みエンクロージャーと封じ込めがなければ、少なくとも少なくともdRツリーの各ノードの時間。エンクロージャサブクエリを変更して早期停止を使用します。これにより、このようなクエリがO(log(n)) の代わりに O(log2(n))。それぞれのクローズ子孫クエリの時間はO(k⋅log2(n))、 どこ k 直近の子孫の数st k にあります O(n)。これはn 私たちが時間を費やしている全体的な子孫クエリ O(k⋅n⋅log2(n)) = O(n2⋅log2(n))。これは立方体より少ないのでn (ただし、係数は省略していますが d適度に低く固定されていると仮定して)、このアプローチは実際のパフォーマンスを向上させるために使用できます。先読みを使用するエンクロージャー/コンテナーサブクエリの場合、一致がゼロであっても一定でない時間がかかる場合があることの詳細は省略しました。
オプション#2-先読みを使用しない
2番目のオプションは、先読みを使用しないことであり、(仮定をさらに単純化することなく)言えることは、最下位の各クエリについて、最悪のケースがあるということです。 n その後、それぞれが取るだろうハンチ O(log(n))見つける時間(ブランチを2度以上降りないため)。コーナー変換を使用しないことを前提としています。その結果、私たちは非常にルーズで悲観的な時間の限界を持っていますO(n⋅log(n))アーリーストップ付きのエンクロージャーサブクエリを介してhunch closeの子孫を失格にする試み。クローズ子孫クエリの時間は、O(k′⋅n⋅log(n))、 どこ k′ 最悪の場合のハンチ数です(つまり、 n)。時間n 近い子孫のクエリは、 O(k′⋅n2⋅log(n)) = O(n3⋅log(n))。この数字は立方体以上ですn (ここでも、要素を省略していることに注意してください d適度に低く固定されているため)、しかし、アプローチの時間はかなり悲観的であり、ブルートフォースに対して実際にうまく機能する可能性はまだあると私たちは信じています。以下で説明するいくつかの仮定を行うことで、これがもっともらしいことを示します。最初のオプションは、ハンチの数がより大幅に少なくなる可能性を利用していませんがn どちらも、ハンチクローズの子孫を失格させるための早期停止を伴うエンクロージャサブクエリが高速であることが保証される可能性を利用するため、理論上の境界は低くなります。
オプション#2-3つの仮定
仮定「ゼロオーバーラップ」は、(i)囲みクエリのクエリ四角形を囲むか、包含クエリのクエリ四角形に含まれない限り、境界ボックスがクエリ四角形と重複しないことを示しています。(ii)兄弟の境界ボックスは、境界にある場合を除いて、いずれの兄弟も他に含まれておらず、重複していない。たとえば、実際の四角形のコレクションには、囲むことができない最大の四角形と、含めることができない最小の四角形があるため、その仮定の一部はほとんど真実であることに注意してください。紹介しますb、ノードの子が失格試行サブクエリstの間に保証された一致に関連付けられていると信じるための平均偽陽性対実際陽性比率を説明します b にあります [0,1]。2番目のオプションのクローズ子孫クエリの時間は、2つの部分に分かれています。最初の部分では、直感を得ることについて説明します。2番目の部分では、各直感を失格にする試みについて説明します。3番目の部分は、競合ツリーの更新を処理することです。ハンチの数はk′′。最初の部分の時間はO(k′′⋅log(n))。第二部の時間はO(k′′⋅(b+1)log(n)⋅log(n))。第三部の時間はO(k′′⋅log2(n))。合計時間は緩やかです(仮定)b は1つです) O(k′′⋅n⋅log2(n))。の時間n 近い子孫のクエリは O(k′′⋅n2⋅log2(n)) = O(n3⋅log2(n)) もし k′′ にあります O(n)。これは総当たりよりも優れているようには見えません。「オーバーラップゼロ」の仮定をすると、b ゼロであり、 n クローズ子孫クエリ時間 O(k′′⋅n⋅log2(n)) = O(n2⋅log2(n)) もし k′′ にあります O(n)。の要因log2(n) (の代わりに log(n))hunch close子孫の競合ツリーの挿入/削除から来ています。この仮定は、非常に一貫性のある階層の長方形に当てはまる可能性があります。つまり、多くの実現されたエンクロージャ/封じ込め関係と、エンクロージャ/封じ込めを介して関連付けられていない長方形間の良好な分離があるものです。
他の2つの仮定-「均一スパース性」と「剪定なし」があります。これらはそれぞれ、定量的相関ルールマイニングの適用に関連する二次的な目的があります。子孫の近いクエリの2番目のオプションは非常に時間がかかる可能性があるため、これらを使用すると、作業を大幅に削減するように調整できます。具体的には、定量的属性のパーティションの平均数(カテゴリ属性を複数の2パーティションの定量的属性として扱う可能性がある)は次のようになります。p; 次に、各定量的属性について考慮される固体領域の数はp2-「剪定なし」の仮定がある場合、これらはすべて存続します。減らすのでp、可能なすべての多次元長方形のスペースが縮小し、固定の「均一スパース性」仮定を介して n より多くの衝突(つまり、より多くの囲み/包含関係)がありますが、長方形(異なる属性のソリッド領域の組み合わせで作られている)の数はより速く縮小します-これは、WRTの子孫クエリに必要な時間を大幅にクエリできることを意味しますパーティションの平均数を減らすことにより縮小 p 少し。
その他の共有詳細
オプション1を使用しないほうがよいと私たちが考える唯一の理由は、実装が少し難しいことです。レポートを実行し、一致ごとに1ではない時間の係数を持つ、提案されたアルゴリズムはあまり見かけません。それでも、私たちが持っている係数log(n) または log2(n) 結構です; logq(n) 低の q 多くの場合、どこにいても許容されます O(1)、たとえば、 n 私たちが見るところ O(1)。一般に、長方形の囲み/封じ込め/交差クエリまたはポイント支配クエリの場合、Rツリーはマルチレイヤーセグメントツリーよりも優れています。d よりも少ない logmax(d−1,1)(n) ために d≥1Rツリーの場合、格納された四角形のクローンは作成しません。オプション1とオプション2を前提にすると、省略が適切であることから、ブルートフォースよりも優れているように見えますd。
参考文献