タグ付けされた質問 「computational-geometry」

幾何学的問題のアルゴリズム解、または幾何学を利用する他のアルゴリズムに関する質問。

2
クワッドツリーに大きな幾何学的オブジェクトを保存するのにどの方法が適していますか?
幾何学的オブジェクトを四分木(または八分木)に配置する場合、いくつかの方法で単一ノードよりも大きなオブジェクトを配置できます。 オブジェクトの参照を、それが含まれるすべての葉に配置する オブジェクトの参照を、それが完全に含まれる最も深いノードに配置する #1と#2の両方 例えば: この画像では、4つのリーフノードすべてに(方法#1)、ルートノードのみに(方法#2)、または両方に(方法#3)円を配置できます。 クワッドツリーを照会するために、どの方法がより一般的で、なぜですか?

6
間隔内の2つの数値の最大XORを見つける:二次式よりも良いことはできますか?
lllrrr L ≤ I 、最大(I ⊕ J )最大(私⊕j)\max{(i\oplus j)}L ≤ I 、J ≤ Rl≤私、j≤rl\le i,\,j\le r ナイーブアルゴリズムは、考えられるすべてのペアを単純にチェックします。たとえば、ルビーでは次のようになります。 def max_xor(l, r) max = 0 (l..r).each do |i| (i..r).each do |j| if (i ^ j > max) max = i ^ j end end end max end 私感私たちはより良い次より行うことができます。この問題のためのより良いアルゴリズムはありますか?

1
カバレッジの問題(送信機と受信機)
次のカバレッジ問題を解決しようとします。 あり 1キロとのカバレッジエリアと送信機の受信機は。、すべての受信機が任意の送信機でカバーされることを決定し。すべての受信者と送信者は、座標と座標で表されます。nnnnnnO (n ログn )O(nログ⁡n)O(n\log n)バツバツxyyy 私が提供できる最も高度なソリューションはを取り。すべての受信機について、この現在の受信機までの距離ですべての送信機をソートし、最短距離で送信機を使用します。この最短距離は0.5 km以内でなければなりません。O (n2ログn )O(n2ログ⁡n)O(n^2\log n) しかし、単純なアプローチは、時間の複雑さはるかに優れているように見えます。送信機と受信機のすべてのペア間のすべての距離を計算するだけです。O (n2)O(n2)O(n^2) この問題に範囲検索アルゴリズムを適用できるかどうかはわかりません。たとえば、kdツリーを使用すると、このような範囲を見つけることができますが、例を見たことはなく、円の範囲検索の種類があるかどうかはわかりません。 与えられた複雑さは、ソリューションが何らかの方法でソートに類似していると仮定しています。O (n ログn )O(nログ⁡n)O(n\log n)

1
ポイントのセットをカバーするために最小数の直線を見つけることの使用は何ですか?
コンピュータサイエンスには、2Dの特定のポイントセットをカバーする最小数の直線を見つけるという一般的な問題[1] [2]があります。 私は多くの論文をスキャンしましたが、それらのどれも問題の明確な動機を持っていません。 この問題を解決するための用途は何ですか?これを説明する論文はありますか?

2
正方形の直交ポリゴンをタイリングする
直交多角形(辺が軸に平行な多角形)が与えられた場合、和集合が多角形に等しい内部で分離した正方形の最小セットを見つけたいです。 次のようなわずかに異なる問題への参照をいくつか見つけました。 カバー正方形直交ポリゴン-私の問題と同様に、しかし被覆正方形は重複させます。この問題には多項式解があります(Aupperle、Conn、Keil and O'Rourke、1988 ; Bar-Yehuda and Ben-Hanoch、1996)。 直交ポリゴンを長方形にタイル化/分解/分割します。この問題には多項式解があります(Keil、2000 ; Eppstein、2009)。 長方形で直交ポリゴンをカバーする-この問題はNP完全であることが知られています(Culberson and Reckhow、1988)。 私は、最小限のアルゴリズムを探していますタイリングと正方形。

2
2Dの2つのセット間で最も近いポイントのペア
2次元平面に2セットのポイントあります。私はポイントの最も近いペアを見つけるしたいなど、、との間のユークリッド距離極力小さくなります。これはどのくらい効率的に行うことができますか?時間で実行できますか、?、S 、T 、S ∈ S T ∈ T S 、T O (N ログN )N = | S | + | T |S,TS,TS,Ts,ts,ts,ts∈Ss∈Ss \in St∈Tt∈Tt \in Ts,ts,ts,tO(nlogn)O(nlog⁡n)O(n \log n)n=|S|+|T|n=|S|+|T|n = |S|+|T| 単一のセットが与えられた場合、標準の分割統治アルゴリズムを使用して時間で最も近い点ペアを見つけることが可能であることはわかっています。ただし、または内の最も近い2つのポイント間の距離と、これらのセット全体の最も近い2つのポイント間の距離との間には関係がないため、そのアルゴリズムは2つのセットの場合に一般化していないようです。、S 、S ' ∈ S O (N ログN )SSSs,s′∈Ss,s′∈Ss,s' \in SO(nlogn)O(nlog⁡n)O(n \log n)SSSTTT セットを -dツリーに格納し、次にについて、最近傍クエリを使用して最も近い点を見つけることを考えました。ただし、これの最悪の場合の実行時間は、時間と同じくらい悪い場合があります。点あればという結果がありますランダムに分布している場合、クエリごとに予想される実行している時間は私たちが期待ランニングタイムとアルゴリズム得ると思いますので、我々場合は、ポイントがランダムに分布していることが保証されていました-しかし、ポイントのコレクション(必ずしもランダムに分布しているとは限りません)で機能するアルゴリズムを探しています。TTTkkks∈Ss∈Ss \in STTTsssO(n2)O(n2)O(n^2)TTTO(logn)O(log⁡n)O(\log n)O(nlogn)O(nlog⁡n)O(n \log n) …

1
絞り込みタイプの推測
職場では、動的言語に関する型情報を推論する必要があります。次のように、ステートメントのシーケンスをネストされたlet式に書き換えます。 return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

1
オブジェクトを互いに最大距離に配置するようにオブジェクトを立方体に配置します
カラーカメラを使用して、空間内の複数のオブジェクトを追跡しようとしています。各オブジェクトには異なる色があり、各オブジェクトを適切に区別できるようにするために、オブジェクトに割り当てられた各色が他のオブジェクトの色とできるだけ異なるようにしています。 RGB空間において、我々は、このキューブの3つの平面、0と255の間の値を持つすべてを持っている、私が配布したいn個の限りがあるように色を可能な限り他の人との距離。追加の制限は、である(0 、0 、0 )と(255 、255 、255 )(又は可能な限りそれらの近くには)に含まれるべきであるn個(0 、0 、0 )/(255 、255 、255 )(0,0,0)/(255,255,255)(0,0,0) / (255,255,255)んnn(0 、0 、0 )(0,0,0)(0, 0, 0)(255 、255 、255 )(255,255,255)(255, 255, 255)んnn私のオブジェクトがいずれも色を取らないようにしたいので、背景はおそらくこれらの色の1つになるでしょう。(n − 2 )(n−2)(n-2) おそらく、(黒と白を含む)は約14以下です。んnn これらの色を取得する方法についてのヒントを事前にありがとう。

2
そこにあるポイントの数を最大にするボールを見つけるための複雑さ
x1,…,xn∈R2x1,…,xn∈R2x_1, \ldots, x_n \in \mathbb{R}^2rrrrrr∑ni=11∥x−xi∥≤r∑i=1n1‖x−xi‖≤r\sum_{i=1}^n \mathbb{1}_{\|x - x_i\| \leq r} ブルートフォースアルゴリズムは、すべてのポイントを調べて、よりも小さい距離にあるポイントの数を数えることです。それは複雑さを与えます。rrrO(n2)O(n2)\mathcal{O}(n^2) より良いアプローチはありますか?

4
ポイント距離で重み付けされたエッジを持つグラフからポイント埋め込みを復元する
重み付けされたエッジを持つ無向グラフを提供し、各ノードが3D空間内のポイントに対応していることを伝えたとします。2つのノード間にエッジがある場合は常に、エッジの重みがポイント間の距離になります。 目標は、使用可能な距離(エッジの重みで表される)のみを指定して、ポイントの相対位置を再構築することです。私はあなたが得られた場合、例えば、、あなたは点は四面体の頂点である知ります。原点との相対的な位置や方向、またはミラーリングされているかどうかはわかりませんが、四面体であることがわかります。d0 、1= d0 、2= d0 、3= d1 、2= d1 、3= d2 、3= 1d0,1=d0,2=d0,3=d1,2=d1,3=d2,3=1d_{0,1} = d_{0,2} = d_{0,3} = d_{1,2} = d_{1,3} = d_{2,3} = 1 一般に、すべてのエッジ長を指定すると問題は簡単です。ちょうど任意点ピックであることを(0 、0 、0 )、次に隣接点の選択、P 1とでそれを置く(D 0 、1、0 、0 )、共通の隣接、P 2は上三角ますXY平面、最後の共通の近傍p 3は、半空間z > 0に三角形分割されます。p0p0p_0(0 、0 、0 )(0,0,0)(0,0,0)p1p1p_1(d0 、1、0 、0 )(d0,1,0,0)(d_{0,1},0,0)p2p2p_2p3p3p_3z> 0z>0z > 0残りの対称性を壊します(縮退点を選択しなかった場合)。これら4つの点を使用して、残りのすべての点を三角形分割できます。 一方、一部のエッジ長が欠落している場合、埋め込みを復元できない可能性があります。たとえば、カット時にグラフを切断する頂点がある場合、削除すると分離する2つのコンポーネントは、互いに対して揺れ動く可能性があります。 これは問題を提起します: …

2
ポリゴンがラインに関して単調かどうかをテストするにはどうすればよいですか?
モノトーンポリゴンがポリゴンの三角形分割で重要な役割を果たすことはよく知られています。 定義: Aポリゴン平面では直線に関して単調と呼ばれるへのすべての行が直交する場合は、Lと交差P最も二回で。PPPLLLLLLPPP ラインLLLとポリゴンPが与えられたPPP場合、ポリゴンPPPがLに関して単調かどうかを判断する効率的なアルゴリズムはありLLLますか?

1
Appelの隠線消去アルゴリズムの等高線を見つける方法
楽しみのために、私はDCPU-16のワイヤーフレームビューアーを作成しようとしています。ワイヤーフレームで非表示になっている線を非表示にする方法を除いて、すべての方法を理解しています。SOに関するすべての質問は、OpenGLへのアクセス権があることを前提としていますが、残念ながら、DCPU-16(またはあらゆる種類のハードウェアアクセラレーション)のようなものにはアクセスできません。 GoogleブックスでAppelのアルゴリズムについてかなり良い説明を見つけました。しかし、私が理解するのに苦労している1つの問題があります。 Appelは、前面と背面のポリゴンで共有されるエッジ、または閉じた多面体の一部ではない前面のポリゴンの共有されていないエッジとして輪郭線を定義しました。2つの前面ポリゴンで共有されるエッジは、可視性に変化を与えないため、等高線ではありません。図8.4では、エッジAB、EF、PC、GK、CHは等高線ですが、エッジED、DC、GIは等高線ではありません。 アルゴリズムのルールと、等高線が作成された後のアルゴリズムのしくみを理解していますが、エッジが「前向きポリゴンと後ろ向きポリゴンで共有されているかどうかを判断するために何をする必要があるかわかりません。コーディングの観点からは、閉じた多面体の一部ではない、正面を向いたポリゴンの共有されていないエッジ。私は形状を見ることができ、頭の中でどの線が等高線であるかを知ることができますが、その「理解」をコード化されたアルゴリズムに転送する方法についての手がかりはありません。 更新 等高線の決定にある程度の進歩がありました。コンピューターグラフィックスに関するバッファロー大学のクラスからのこれら 2つの講義ノートを見つけました。 エッジを考慮してください。これらは3つのカテゴリに分類されます。 2つの見えない面をつなぐエッジは、それ自体は見えません。これはリストから削除され、無視されます。 表示される可能性のある2つの面をつなぐエッジは「マテリアルエッジ」と呼ばれ、さらに処理する必要があります。 表示される可能性のある面と表示されない面を結ぶエッジは、「マテリアルエッジ」の特別なケースであり、「輪郭エッジ」とも呼ばれます。 上記の2つの情報を使用すると、これをコードとして書き出すことができるようになりますが、まだ長い道のりがあります。

1
一連の線分が与えられたときに、二重に接続されたエッジリストを作成するにはどうすればよいですか
一連の線分によって定義される、平面に埋め込まれた特定の平面グラフ場合、各セグメントはその端点表されます。平面サブディビジョンのDCELデータ構造を構築し、アルゴリズムを記述し、それが正確であることを証明し、複雑さを示します。G(V,E)G(V,E)G(V,E)E={e1,...,em}E={e1,...,em}E= \left \{ e_1,...,e_m \right \} eieie_i{Li,Ri}{Li,Ri}\left \{ L_i,R_i \right \} DCELデータ構造のこの説明によれば、DCELの異なるオブジェクト(つまり、頂点、エッジ、面)の間には多くの接続があります。したがって、DCELの構築と保守は難しいようです。 DCELデータ構造を構築するために使用できる効率的なアルゴリズムを知っていますか?

1
シンプルなポリゴンのユニークな三角形分割双対
単純なポリゴン(Steinerポイントのない)三角形分割を考えると、この三角形分割の双対を考えることができます。これは次のように定義されます。三角形分割のすべての三角形の頂点を作成し、対応する三角形がエッジを共有している場合は2つの頂点を接続します。二重グラフは最大次数3のツリーであることが知られています。PPP 私のアプリケーションでは、次のことに興味があります。ツリーの所与の最大次数3と、単純なポリゴン常に存在するの(スタイナー点なし)すべての三角測量のデュアルように等しい。ここで、の三角形分割は一意ではない可能性がありますが、二重グラフは一意である必要があります。P P T PTTTPPPPPPTTTPPP これは、がパスの場合は確かに当てはまりますが、3次の頂点がある場合は不明確になります。TTT

2
未満の距離空間の点集合の中心点を見つけますか?
メトリック空間で定義されたポイントのセットがあるので、ポイント間の「距離」を測定できますが、それ以外は測定できません。このセット内で最も中心的なポイントを見つけたいと思います。これを、他のすべてのポイントまでの距離の合計が最小になるポイントとして定義します。メトリックの計算は遅いため、可能な限り回避する必要があります。nんn このポイントを見つける明白な方法は、メトリック距離計算を使用します。これは、(a)各ポイントについて、他のすべてのポイントまでの距離の合計を計算し、(b)最小ポイントを取るためです。n2ん2n^2 未満の距離比較でこれを行う方法はありますか?(おそらく、三角形の不等式を何らかの方法で利用していますが、これは私の測定基準に当てはまるはずです。)O(n2)O(ん2)O(n^2) 正確な方法が存在しない場合は、適切な近似で十分です。

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