平面での三角形の学習


13

私は私の学生の集まりと矛盾三角形見つける問題割り当てられたの点R 2で標識し、± 1。(A三角形Tは、ある一貫性の場合、標識試料とTが負のポイントの正およびなしの全てを含み、仮定により、試料は、少なくとも1つの一貫した三角形を認めています)。mR2±1TT

彼ら(または私)ができる最善の方法は、時間で実行されるアルゴリズムです。ここで、mはサンプルサイズです。誰もがもっとうまくできますか?Om6m


明確にするために、三角形の頂点はコレクションのポイントである必要はありませんよね?そして、境界上に負の点があることは許容できますか?
ex0du5

(1)問題を誤解していたため、質問を終了することに投票しました。システムでは投票をキャンセルすることはできませんが、事実上キャンセルします。(2)O(m log m)時間アルゴリズムはあると思いますが、今それを検証する時間はありません。アイデアは、正の例の凸包を計算し、この凸包の周りをスイープして、目的の三角形を形成する3本の線を見つけることです。
伊藤剛

@ ex0du5-実際、三角形の頂点はサンプルポイントで構成される必要はありません。境界の問題に関しては、これらは重要ではないため、ここでは無視できます。[境界が三角形の一部としてカウントされる場合、境界に負のポイントはありません。]
Aryeh

@TsuyoshiIto:私は同じように考えていましたが、三角形のエッジを凸包のエッジと同一線上に配置できない場合がありますが、三角形はまだ存在します。三角形にはまだ凸包が含まれていますが、それは単に船体の線を伸ばして三角形を見つけるだけではありません。負の点を避けるために、いくつかの頂点を中心に回転する線が必要になる場合があります。そのため、境界のネガについて質問し、船体の頂点からネガまでの線を選択する検索アルゴリズムを使用して、離散検索を維持できるようにしました。
ex0du5

@ ex0du5:まあ、私は三角形のエッジが正の例の凸包のいくつかのエッジに平行であると仮定しませんでした。
伊藤剛

回答:


14

@TsuyoshiItoが示唆しているように、この問題には時間アルゴリズムがあります。これはEdelsbrunnerとPreparataによるものです。実際、彼らのアルゴリズムは、2つのポイントセットを分離する可能な最小数のエッジを持つ凸ポリゴンを見つけます。また、代数的決定木モデルのより一般的な問題のΩ n log n 下限を証明します。ただし、この下限が三角形の場合に適用されるかどうかは明らかではありません。O(nlogn)Ω(nlogn)

アルゴリズムの完全な説明は長すぎてここに投稿できませんが、ここに基本的な考え方があります。してみましょう肯定的な点の凸包なります。各負の点qについてCに接するqを通る線を考慮します。これらの線は、平面を4つのくさびに分割します。くさびの1つにはCが含まれます。せW qはウェッジこと対向含むものCを。最後に、F(「禁止領域」)をすべてのウェッジW q )の結合とします。分離する三角形は、CFを分離する必要がありますCqqCCW(q)CFW(q)CF。両方C O n log n 時間で構築できます。FO(nlogn)

$ C $と$ F $の例

のエッジに時計回りと反時計回りに交互にラベルを付けます。EdelsbrunnerとPreparataはさらに、分離三角形が存在する場合、エッジがFの時計回りのエッジと同一直線上にある分離三角形があることを証明します。でO N 追加の時間、我々は(必ずしも時計回り方向)のエッジを見つけることができるFそれぞれ時計回りのエッジから光線が最初のヒットを電子FFOnFe、このエッジを「後継者」と呼びます。後続のポインターは、時計回りのエッジをサイクルに分割します。分離する三角形がある場合、これらの後続サイクルの1つは長さ3を持ちます(4つを超える長さを持つものはありません)。e

詳細については、元の論文を参照してください。

  • ハーバート・エデルスブルナーとフランコ・P・プレパラタ。 多角形の最小間隔情報と計算 77(3):218–232、1988。

3

の辺の候補として、「-1」点から「+1」点の凸包への接線を考慮することで十分であると思われます(「+1」点が内側になるとしましょう)T)。TT

残念なことに、ここでは画像を公開できません。しかし、これを想像してくださいは、「-1」ポイントを通過する凸包への接線です。Aは接点です。Btの極値(下記参照)であり、B CtABtBCは点からの接線です(Cは接線点です)。BC

したがって、アルゴリズムは次のとおりです。接線のすべての線に対して、それに基づいて三角形を構築することができます。t

  1. の他のすべての線との交点を計算します。t
  2. (から最も遠い極端を見つける)は、点B及び対応するラインT 'から右(又は左)A、ようpsuedotriangle A B C(= A 、BB 、Cとの間の凸包の部分A及びC) '-1'ポイントを含まない(つまり、ポイントを含まない)。ABtAABCABBCAC
  3. ラインで同じことを行うと私達ができるかどうかを確認し「閉じる」三角形。t

これは実行時間になるようです。おそらく、これはいくつかのデータ構造を使用することで改善できますか?O(m2)

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