残念ながら一人で練習できませんでした。
長方形のセットと長方形R 0。平面スイープアルゴリズムを使用して、R 0がR 1のセットで完全にカバーされているかどうかを判断します。。R n。
掃引ラインアルゴリズムの原理の詳細については、こちらを参照してください。
最初から始めましょう。最初は、2つのデータ構造を必要とするラインセグメントの交差を見つけるためのアルゴリズムとして、スイープラインアルゴリズムを知っています。
- イベントポイントのセット(セグメントのエンドポイントと交差ポイントを格納します)
- ステータス(スイープラインが交差する一連のセグメントの動的構造)
一般的な考え:スイープラインは、左から長方形のセットに近づき始める垂直線であると想定します。ソート全てのx矩形の座標とに格納Q昇順で-取るべきOを(N ログN )。最初のイベントポイントから開始し、すべてのポイントで特定のx座標で交差する長方形のセットを決定し、交差長方形の連続セグメントを識別し、それらが現在のx座標でR 0を完全にカバーしているかどうかを確認します。Tバイナリツリーとしてそれは取るつもりだO (ログを。R 0の一部が覆われていない場合、 R 0は完全には覆われていません。
詳細:セグメント交差アルゴリズムの考え方は、隣接するセグメントのみが交差するというものでした。この事実に基づいて、ステータスを作成し、アルゴリズム全体で維持しました。この場合も同様のアイデアを見つけようとしましたが、これまでのところ成功していません。唯一言えることは、2つの長方形が対応するx座標とy座標が重なっている場合に交差することです。
問題は、構築・維持する方法である、そしてどのような建物の複雑さと保守Tです。私はその前提とRの木が、この場合には非常に便利ですが、私は見られるように、R木を使用して最小の境界長方形を決定することは非常に困難です。
この問題を解決する方法、特にを構築する方法について何か考えがありますか?