素なセグメントの可視性の問題に対するアルゴリズム


7

我々は考える互いに素なセグメントと点任意のセグメントではありません。アルゴリズムを見つけて、どのセグメントがから見えるかを確認したい。セグメントから見えるがから見える点がある場合。nPO(nlogn)PPP

私のアイデアは、 1つのエンドポイントがあるスイープハーフラインを使用し、ポイントを時計回りに次数で並べ替え、最も近い可視セグメント(見つけ方はわかりません)のエンドポイントから開始し、回転します一度に1つの可視セグメントと一部の可能な非可視セグメントを検出します。今のところしか考えられません。誰でもアルゴリズムを提案できますか?PO(n2)O(nlogn)

回答:


3

Wolg は、が原点と想定できます。P(0,0)

  1. すべてのセグメントの端点をリストし、それらを極座標で表し、次数で並べ替えます。 (θ,ρ)[0,2π)×[0,)
  2. から右を指す光線があると想像してください。1ラウンド掃引します(その方向を0から徐々に変更します)。ましょうからの光線を表す方向に。私たちは、セグメント何だろのヒット、そしてどのように自分のためだ。 Pα2πR(α)PαR(α)R(α)
  3. 見つけるすべてのセグメントはヒット、およびソートそれらに彼らの順序により、。それらをバランスのとれた二分探索木(たとえば、赤黒木)に格納します。R(0)R(0)
  4. 手順1で見つけた(および並べ替えた)ポイントを反復処理します。各ポイントは、が増加したときに、セグメントが光線に当たるのを開始/停止することを示します。それに応じてバイナリ検索ツリーを更新します。(θ,ρ)R(α)αθ
  5. 二分探索木でかつて最小であった要素は、から見えるセグメントです。P

上記のアルゴリズムのランタイムがことを確認するのは簡単です。O(nlogn)


解決策をありがとう。私は3番目と4番目のステップについて疑問があります。すべてのポイントを反復処理し、との交差をチェックする方法を教えてください。R(α)O(nlogn)
VahidM 2016年

3番目のステップでは、セグメントを列挙してにヒットするかどうかを確認できます(これには時間かかります)。それらを上の交点でソートします(これには時間かかり)。R(0)O(n)R(0)O(nlogn)
Tianren Liu 2016

@VahidM 4番目のステップ。誰がと交差するかを見つけるためにすべてのポイントを反復するわけではありません。たとえば、がセグメントの1つの端点であると仮定します。非公式に、私たちは()をよりわずかに大きい(小さい)次数を表すとします。次に、交差するセグメントは、交差するセグメントとほぼ同じであることを知っています。関連するセグメントのみが異なります。セグメントのセットがヒットしたことがわかったので、時間で変更して、ヒットしたセグメントのセットになるようにしR(α)(θ,ρ)θ+θθR(θ+)R(θ)(θ,ρ)R(θ)O(logn)R(θ+)
Tianren Liu 2016

1

ラジアルラインスイープを実行して問題を解決できます-

ソート線分の端点は、角を結ぶ線WRT、エンドポイントブレークタイからの距離をWRT、メークを。放射状に(時計回りに)スイープすると、新しいラインセグメントの開閉に対応する2つのタイプのイベント「open」と「close」が維持されます。常に「アクティブ」なラインセグメントの数を追跡します(「アクティブ」とは、ラインセグメントの「オープン」イベントに対応するエンドポイントに到達したが、まだスイープ)。任意の時点で「アクティブな」ラインセグメントが1つしかない場合、このセグメントはから表示されます。PQPP

スイープを開始するときは、常に「オープン」イベントから開始するように注意する必要があります。

そのようなイベントはあり、アクティブセグメントの数の追跡は、セグメントごとに一定の時間で実行できます(バランスのとれたBSTを使用して、ハッシュテーブルまたは対数時間を介して)。したがって、そのときのアルゴリズムの支配的なステップは、必要に応じて時間を要するソートです。2nO(n)

すべての計算ジオメトリの問題と同様に、見落としているいくつかのコーナーケースがあるかもしれませんが、ラジアルラインスイープ中のある時点で、アクティブなラインセグメントが1つしかない場合、から見えるという一般的な考えはこの問題を解決する核心。P

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.