3つの点が同一線上にある場合


7

セットを考える S ポイントの p1、。。、p2 セットの3点が同一線上にあるかどうかを判断するための最も効率的なアルゴリズムを提供します。

問題は、一般的な定義から始めましたが、実際に問題を解決し続けることができません。

同一線上の点、一般的には3つの点について何が言えるか a、b、c 距離が同一線上にある場合 d(a、c)=d(a、b)+d(b、c) 場合 b は間に a そして c。

素朴なアプローチには O(ん(ん−1)(ん−2))=O(ん3) 時間の複雑さ。

この問題を解決するには、次のステップは何ですか?

回答:


8

簡単な方法の1つは、ポイントを修正することです バツ、直線の傾きを計算する バツy 他のすべてのポイントのハッシュテーブルに保存します y。衝突がある場合、次を含む共線ポイントがあります。バツ。これにはO(ん) (ハッシュテーブル操作に O(1))。次に、すべてのポイントでこれを行いますバツ 間に合う O(ん2)。

また、ポイントラインの双対性を知っている場合(下記のArtiumのコメントを参照してください)、これは ん2 可能な交差 ん 行だけでなく、ハッシュテーブルも利用します。

また、この問題は3-SUM困難であるため、これが準二次時間で実行できるかどうかは明らかです。この回答を参照してください。


ここでのポイント・ラインの二重性の説明があります。
— Artium

完全な回答をありがとうございました!Artium、双対リンクをありがとう。
— com

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