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

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

1
グリッド内で動くボールが与えられた場合、ボールはどの正方形に到達しますか?
mxnグリッドが与えられます。無次元のボールがグリッドの1つの正方形の中心に配置され、4つの方向(北東、北西、南東、または南西)のいずれかで動き始めます。ボールはボードの端に到達するまで動き続け、その時点でボールは物理法則に従って跳ね返ります。 m、n、ボールの初期位置と方向(NE / NW / SE / SW)が与えられた場合、ボールが指定されたターゲットグリッドの正方形(x0、y0)に到達するかどうかを判断できますか? ボールの動きを徹底的にたどることによって質問に答えることは可能ですが、もっと簡単なより効率的な方法はありますか?関連文献へのポインタも大歓迎です。


2
3次元の最近傍の高速でスペース効率の良いデータ構造?
私は合理的にスペース効率が良い(つまり、最大で使用される)3Dの最近傍クエリに答えるためのデータ構造を探しています O (ん1 + ϵ)O(n1+ϵ)O(n^{1+\epsilon}) スペース)と高速(O (んε)O(nϵ)O(n^{\epsilon}) または O (l ogk(n ))O(logk(n))O(log^k(n)) 最悪の場合のクエリ時間)。 私がすでに知っていることの要約として: 1Dは簡単です(ポイントを並べ替えてバイナリ検索を使用するだけです)。 2Dは少しトリッキーですが、ポイント位置データ構造+ボロノイ図を使用すると、 O (n )O(n)O(n) スペースと O (l o g(n ))O(log(n))O(log(n)) クエリ時間。 3D以上では、一連の点のボロノイ図は O (んfl o o r (d/ 2))O(nfloor(d/2))O(n^{floor(d/2)})。 私はkdツリーまたはグリッドベースの方法に基づくおおよその手法を知っていますが、これらは点の均一な分布または最近傍への距離について何かを仮定することに依存しており、すべてのケースでそれほどうまく機能しません。私はこれらのランダム化または近似解には興味がありません-最悪の場合、どのデータセットでも機能するものが欲しいです。これを行うものはありますか、またはこのアイデアを水から吹き飛ばす下限がありますか?

4
与えられたペアワイズ距離による同一平面性の検出
無向加重グラフ考えます。ここで、はポイントが3Dであり、エッジの重みはその端点間の(ユークリッド)距離に等しくなります。Vでのポイントの座標が与えられていないことに注意してください。すべてのペアワイズ距離が与えられていない可能性もあるため、グラフは完全である必要はなく、まばらな場合もあります。G=(V,E)G=(V、E)G = (V,E)V⊂R3V⊂R3V \subset \mathbb{R}^3 が与えられて、すべての頂点がそれらの平面の少なくとも1つに属するような平面があると言ったとしましょう。追加の制限付きで、そのような平面を見つけたいと思います。kkkkkkkkk 4点がペアワイズ距離のみで同一平面上にあるかどうかを判断するには、最も簡単な方法はCayley-Menger行列式を使用することです。私たちの問題では、Cayley-Mengerを適用するためにペアワイズ距離のほとんどを知る必要があるため、グラフはかなり密集している必要があります。制限は、Cayley-Menger行列式を使用せずに平面を見つけることです。kkk これが不可能な場合、これが不可能であることを示す証拠を入手できますか?言い換えれば、そのようなグラフと与えられた場合、何らかの方法で平面を見つけるのに十分な情報があれば、Cayley-Mengerを使用して見つけるのに十分な情報があることを証明できますか?GGGkkkkkkGGGkkk 飛行機?

1
凸ポリゴンの定式化
ポリゴンの形成に使用できる辺の長さのソートされたリストがあります。このような値はあります()。nnnn≤1000n≤1000n \le 1000 次に、これらの値のいずれかを使用して非縮退凸多角形を形成できるかどうかを見つける必要があります。 これにどのように取り組みますか?のオーダーまでは許容されます。できればより良い。どのように進めるか、ここで利用できる凸多角形の特性などについての一般的な考えが必要です。O(n2logn)O(n2log⁡n)O(n^2 \log n)

1
ポイント数を均等に分割する線を見つけるアルゴリズム
私は最近、インタビューで、ポイントの半分がラインの片側にあり、残りのポイントが反対側になるように、座標系でポイントのセットを分割するアルゴリズムを考案するように依頼されました。 ポイントは不均等に配置され、ラインはどのポイントも通過してはなりません。 誰もが問題を解決するために何らかのアプローチをすることができますか?アルゴリズムの分析は高く評価されています。 ヒント:ポイントを数え、中央値を使用します。 ポイントの数は偶数と見なされます。

1
長方形を覆う円、それを確認する方法は?
これは一部の人にとっては基本的なことかもしれませんが、私のcompの経験がありません。ジオメトリ: 中心を持つ円のセットが あり、それぞれが半径を持っているとします。長方形も与えられます。すべてのオブジェクトは平面上にあります。長方形内のすべてのポイント(エッジを含む)が円で完全に覆われていることを確認する方法。つまり、長方形の各点は、少なくとも1つの円上にあります。nnn(xi,yi)(xi,yi)(x_i, y_i)1≤i≤n1≤i≤n1 \leq i \leq nrrr 誰かヒントがありますか?私は現在ボロノイ図を使って試しています。

1
データの均一性を維持するラインスムージングアルゴリズム
イントロ: 私はブラウザーでプロットする必要のある巨大なデータセットを使用しています。最大100万ポイントになる可能性があるため、私の考えは、異なるズームレベルに対して異なる表現を作成することでした。 100kポイントあるとしましょう。50kになるまで2つずつ平均し、500ポイント(任意のしきい値)未満になるまでそれを繰り返します。 したがって、最もズームアウトしたレベルでは、グラフのサイズに応じて500ポイントすべてまたはその一部を描画し、ズームインすると、次のズームレベルに切り替わります(ユーザーが選択範囲をドラッグするとデータをストリーミングしますl / r) )、そして最終的にユーザーが細かい細部を見たい場合は、0ズームレベルにズームしてすべての細部を見ることができます。 私は実際にこのプロトタイプを作成し、1つのことを除いて非常にうまく機能しています。これの副作用は、ご想像のとおり、平均化の反復でピークが失われることです。 Douglas-Peuckerアルゴリズムと、それがどのようにピークを維持できるかについていくつかの調査と発見を行い、いくつかのテストを行いましたが、それは非常にうまく機能しましたが、それに関する問題は、一連のデータ(y値)に遭遇した場合です[1 、1、1、1、5、6、1、1、1、1、1、1] [1,6,1,1]のようなものにスムーズにします。このようにズームレベルの比率を維持 n(元のデータの長さ)> n / 2> n / 4> n / 8> ..... 私はラインスムージングに関する論文をほとんど読んでいませんが、見つけたすべてのアルゴリズムは距離のしきい値を受け入れており、パラメーターとしてスムージングに使用しています。また、それらのどれも、目的の出力要素の数を受け入れることができません。行、彼らはこのようなシーケンス(y値)[1,1,1,1,1,1,1,1,1,1,1]を[1,1]に変換します だから、最後に、私の質問: 次のようなアルゴリズムはありますか? 通常の距離しきい値の代わりに、必要な数の出力要素を受け入れます (Douglas-Peuckerと同様に)ピークを保持しようとします (y値)[1,1,1,1,1,1]を取得し、3つの出力が必要だと言っても、理論的には[1,1]として平滑化することが正しい場合、イベントは均一にデータを平滑化します代わりに[1,1,1]を取得する必要があります また、すべてのデータは1からnまで1のステップで測定されるため、N / A値、空白のスポット、[1.3のような値はないため、X軸情報の欠如と混同しないでください。 、1.4、3] xは常に[1,2,3 .... n]です

1
3つの点が同一線上にある場合
セットを考える SSS ポイントの p1、。。、p2p1、。。、p2p_1,..,p_2 セットの3点が同一線上にあるかどうかを判断するための最も効率的なアルゴリズムを提供します。 問題は、一般的な定義から始めましたが、実際に問題を解決し続けることができません。 同一線上の点、一般的には3つの点について何が言えるか a 、b 、ca、b、ca,b,c 距離が同一線上にある場合 d(a 、c )= d(a 、b )+ d(b 、c )d(a、c)=d(a、b)+d(b、c)d(a,c) = d(a,b)+d(b,c) 場合 bbb は間に aaa そして ccc。 素朴なアプローチには O (n (n − 1 )(n − 2 ))= O (ん3)O(ん(ん−1)(ん−2))=O(ん3)O(n(n-1)(n-2))=O(n^3) 時間の複雑さ。 この問題を解決するには、次のステップは何ですか?

2
ポイントが凸包の頂点の場合
運動は 点と点セットが与えられます。場合、時間で決定しますSSSpppO(n)O(n)O(n)pppが次の点から形成される凸多角形の頂点であるSSS。 問題は、私が時間の複雑さと少し混乱していることです O(n)O(n)O(n)。より素朴な解決策は、O(nlogn)O(nlog⁡n)O(n\log n) そしてかどうかをテスト ppp 頂点の1つです。

2
行列乗算プログラムの入れ子ループの不変式
Hoareロジックを使用して2つの行列を乗算するためのプログラムの正確性を証明することについて、卒業論文を作成しています。これを行うには、このプログラムの入れ子ループの不変式を生成する必要があります。 for i = 1:n for j = 1:n for k = 1:n C(i,j) = A(i,k)*B(k,j) + C(i,j); end end end 私は最初に内部ループの不変式を見つけようとしましたが、今までは本当のものを見つけることができません。上記のプログラムの不変式を見つけるのを手伝ってくれる人はいますか?
7 algorithms  loop-invariants  correctness-proof  formal-languages  regular-languages  pumping-lemma  logic  logic  programming-languages  lambda-calculus  term-rewriting  operational-semantics  complexity-theory  time-complexity  computability  proof-techniques  reductions  digital-preservation  distributed-systems  storage  algorithms  dynamic-programming  check-my-algorithm  reference-request  cryptography  quantum-computing  formal-languages  regular-languages  context-free  formal-grammars  algorithms  graphs  network-flow  algorithms  data-structures  randomized-algorithms  lists  computability  proof-techniques  undecidability  terminology  distributed-systems  parallel-computing  artificial-intelligence  heuristics  search-problem  algorithms  computational-geometry  algorithm-analysis  asymptotics  recurrence-relation  mathematical-analysis  master-theorem  algorithms  algorithm-analysis  runtime-analysis  computability  reductions  turing-machines  formal-languages  context-free 

2
キャスタビリティとコンベクシティの関係
凸型ポリゴンとキャスタブルオブジェクトの間に何か関係があるのでしょうか。オブジェクトが凸多角形であることがわかっている場合、またはその逆であることがわかっている場合、オブジェクトのキャスト可能性についてどのように言えますか。 知っておくべき基本的なことをいくつか集めましょう。 型から取り外し可能な場合、オブジェクトはキャスタブルです。 多面体Pは、方向に平行移動することでモールドから削除できます d⃗ d→\vec{d} もしそうなら d⃗ d→\vec{d} 少なくとも角度を作る 90∘90∘90^{\circ} Pのすべての通常のファセットの外向きの法線。 任意のオブジェクトの場合、キャスタビリティーのテストには時間がかかります O(n2)O(n2)O(n^2)。私の意見では、凸状ポリゴンの場合、線形時間に改善できる場合、すべての新しいトップファセットについて、ベクトルがd⃗ d→\vec{d} 少なくとも角度を作る 90∘90∘90^{\circ} すべての外向き法線ではなく、Pの2つの隣接する通常のファセットのみ これが本当なら、少なくとも凸多角形の場合のキャスタビリティのテストで改善があります。 他に、キャスタビリティと凸性について述べることができます。キャスタビリティが凸性について何かを教えてくれるなら、特に興味深いことです。

1
ウィンドウが表示されている画面を表すための効率的なクエリ可能なデータ構造
(これは私の他の質問に関連しています、ここを参照してください) 3つのウィンドウがある画面を想像してください。 これらをサポートしながら、これを表す効率的なデータ構造を見つけたいのですが。 特定のウィンドウを他のウィンドウと重複せずに配置できる座標のリストを返します 上記の例で、サイズ2x2のウィンドウを挿入する場合、可能な位置は(8、6)、(8、7)、..になります。 アスペクト比を維持しながら、他のウィンドウと重ならないように画面上のウィンドウのサイズを変更する x、yの位置にウィンドウを挿入します(ウィンドウが重ならない場合) 今の私の素朴なアプローチは、ウィンドウの配列を維持し、画面上のすべてのポイントを調べて、ウィンドウのいずれかにあるかどうかをチェックすることです。これは、ここで、画面の幅、高さであり、それにウィンドウの数です。一般に、各ウィンドウが多くのスペースをとる場合、は小さくなります(たとえば、<10)。O (N ⋅ M ⋅ W )O(ん⋅メートル⋅w)O(n\cdot m\cdot w)n 、mん、メートルn, mwwwwww
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.