タグ付けされた質問 「algorithms」

アルゴリズムは、問題に対する抽象的な解決策を定義する明確に定義された一連のステップです。このタグは、問題がアルゴリズムの設計と分析に関連している場合に使用します。

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 飛行機?

2
既約多項式を法として多項式を減らすIntelのアルゴリズムを理解する
キャリーレス乗算に関するこのIntelホワイトペーパーを読んでいます。の多項式の乗算について説明し。高レベルでは、これは2つのステップで実行されます:(1)上の多項式の乗算、および(2)既約多項式を法として結果を削減します。多項式の「標準」ビット文字列表現、つまります。GF (2ん)GF(2ん)\text{GF}(2^n)GF (2 )GF(2)\text{GF}(2)バツ3+ x + 1 = [ 1011 ]バツ3+バツ+1=[1011]x^3+x+1 = [1011] この論文では、アルゴリズム3の16ページの剰余多項式の計算アルゴリズムを示しています。しかし、16〜17ページの削減アルゴリズム(アルゴリズム4)を理解できません。基本的に、私たちの結果または部分的な結果が128ビットに適合しない場合、より大きなフィールドにはアルゴリズム4が必要だと思います。の2つの多項式の乗算の例を示し。GF (2128)GF(2128)\text{GF}(2^{128}) 右シフトの「マジック定数」63、62、57と、左シフトの「マジック定数」1、2、7はどこから来るのですか? たとえば、\ text {GF}(2 ^ {32})のように、より小さなフィールドのアルゴリズムを一般化するにはどうすればよいGF (232)GF(232)\text{GF}(2^{32})ですか?次に、対応するシフト値は15、14、9および1、2、7になりますか? 最後のステップ4で、アルゴリズムは「XOR [E1:E0][E1:E0][E_1:E_0]、[F1:F0][F1:F0][F_1:F_0]、および[G1:G0][G1:G0][G_1:G_0]と[X_3:D]との相互関係[バツ3:D ][バツ3:D][X_3:D]」を示します。 なぜこれを行うのですか?私の知る限り、このXOR演算の結果はどこにも保存されず、どこでも使用されません。[H_1:H_0]の計算に何らかの形で使用されてい[H1:H0][H1:H0][H_1 : H_0]ますか?

2
無料の昼食の定理とは何ですか?
私は無料ランチの定理について読んでいますが、それが何であるかはよくわかりません。この定理が「汎用のユニバーサルオプティマイザは存在しない」という主張として他の場所で説明されているのを聞いたことがあります。一方、ウィキペディアの記事では、「1つずつ評価される」「候補ソリューション」について説明しています。特定の形式のアルゴリズムのみを検討すると、それははるかに限定的な主張になります。 この定理が実際に主張していることを誰かが説明できますか?

2
サブリストがかなりのメモリを占有しているのに、なぜクイックソートが「インプレース」と記述されるのですか?確かにバブルソートのようなものだけが配置されていますか?
クイックソートは「インプレース」と説明されていますが、次のような実装を使用しています。 def sort(array): less = [] equal = [] greater = [] if len(array) > 1: pivot = array[0] for x in array: if x < pivot: less.append(x) if x == pivot: equal.append(x) if x > pivot: greater.append(x) return sort(less) + equal + sort(greater) else: return array 再帰ごとにリストのコピーを作成する必要があります。最初の戻りまでに、メモリには次のようになります。 アレイ 大きい+等しい+小さい …

2
配列の最小限の説明を見つける方法は?
次の配列は、メモリ内の10000スロットを占有します。 a = [0,1,2,3,4,5,6,7,8,9,10,...,10000] しかし、同じ配列を次のように簡単に表すことができます。 a = {len:10000, get: λ idx -> idx} はるかにコンパクトです。同様に、コンパクトに表現できる配列がいくつかあります。 a = {a:1000, get: λ idx -> idx * 2} Is a description for [0,2,4,6,8,10,...,2000] a = {a:1000, get λ idx -> idx ^ 2} Is a description for [0,1,2,4,9,...1000000] And so on... 非常に多くの配列を提供すると、各要素をメモリに格納するよりもはるかに短い方法で表現できます。 この現象に名前はありますか? 特定の配列の最小表現を見つける方法はありますか? …

1
列ごとおよび行ごとに並べ替えられた行列の対角線の最大値
ましょうと非負整数の配列非減少です。{ai}{ai}\{a_i\}{bi}{bi}\{b_i\} すべてのをどれだけ速く見つけることができ ますか?cj=max0≤i&lt;j{ai+bj−i−1}cj=max0≤i&lt;j{ai+bj−i−1}c_j=\max_{0 \leq i< j}\{a_i+b_{j-i-1}\}0≤j≤n−10≤j≤n−10\leq j\leq n-1 単純に、時間かかりますが、単調性がここで役立つことを願っています。O(n2)O(n2)O(n^2) も減少していないことが簡単にわかります。我々は行列考えると、それが行と列の方向の両方にソートされ、我々はすべての対角の最大要素を探している行列です。{ci}{ci}\{c_i\}MMMMi,j=ai+bjMi,j=ai+bjM_{i,j} = a_i+b_j ただし、任意の列単位および行単位で並べ替えられた行列の場合、この問題はΩ(n2)Ω(n2)\Omega(n^2)時間を必要とします。 証明:主対角線の下のすべての数値を∞∞\inftyます。kkk番目の対角の要素は、(k、k + 1)からランダムに数えられ(k,k+1)(k,k+1)(k,k+1)ます。エントリを読み取っても、他のエントリの情報は提供されません。 編集:この問題は、私が予想していたよりもはるかに困難です。この問題をセミリング(\ min、+)のたたみ込み問題としてモデル化し(min,+)(min,+)(\min,+)(双対を取り、maxではなくminを検索する)、O(\ frac {n ^ 2} {\ log nで解決できます。})O(n2logn)O(n2log⁡n)O(\frac{n^2}{\log n})時間に応じてmathoverflow上のライアン・ウィリアムズの答え。ただし、シーケンスが減少していないという情報は使用しません。

1
フィードバックアークセットの近似アルゴリズム
有向グラフ与えられた場合、フィードバックアークセットは、その除去によって非循環グラフが残るアークのセットです。問題は、そのようなセットの最小カーディナリティを見つけることです。G=(V,A)G=(V,A)G = (V,A) 私はこの問題の周りにいくつかの近似アルゴリズムがあることを知りたいです。

1
特定の間隔と重複するすべての間隔を検索します
注:私はこの質問をstackoverflow.comから移動しました よりも上で解決できるかどうかを確認したいアルゴリズムの問​​題があります。O(n)O(n)O(n) Iは、テーブル与えているの各要素はタプル要素用いてと各タプルは、間隔のいくつかの種類、すなわち、。指定された間隔と重複するすべての間隔を見つける必要がありますおよびです。さらに、それぞれのエントリを指すインデックスとともに、値または値をそれぞれ含む、2つの並べ替えられたリストおよびがあります。リストは次でソートされますTTTnnn(si,ei)(si,ei)(s_i, e_i)si,ei∈Nsi,ei∈Ns_i, e_i \in \mathbb{N}si&lt;eisi&lt;eis_i < e_i[t0,t1][t0,t1][t_0, t_1]t0,t1∈Nt0,t1∈Nt_0, t_1 \in \mathbb{N}t0&lt;t1t0&lt;t1t_0 < t_1SSSEEEssseeeiiiTTTsss値、または値。(と両方の値が一意であると仮定しましょう。)eeessseee 問題: 各間隔/タプルを見つける必要があります。ここでおよびe_i \ geqslant t_0です。(si,ei)∈T(si,ei)∈T(s_i, e_i) \in Tsi⩽t1si⩽t1s_i \leqslant t_1ei⩾t0ei⩾t0e_i \geqslant t_0 これまでの私の考え: 私たちは、いずれかの適用区間の境界の1、すなわち検索でいくつかの要素を除外することができt1t1t_1でSSSまたはt0t0t_0でEEE。これにより、残りの要素のリストLLLが得られます L←{e∈E∣e⩾t0} or L←{s∈S∣s⩽t1}L←{e∈E∣e⩾t0} or L←{s∈S∣s⩽t1} L \leftarrow \{e \in E \mid e \geqslant t_0\} \text{ or } L \leftarrow \{s \in …

1
時間前処理による時間でのツリーの到達可能性クエリ
通常のグラフ理論的な意味で無向木が与えられます。頂点所与及びエッジに入射、Iは、フォームのクエリに答える必要があるリターンを任意の葉から到達可能であるを含む経路で、およびno他のエッジに入射します?より非公式には、制限は、エッジが指定された場合、その方向にのみ進むことができるということです。TTTvvv(v,u)(v,u)(v,u)vvvTTTvvv(u,v)(u,v)(u,v)vvv DFSを実行して、見つかったリーフを返すだけです。これには時間かかると思いますはの直径です。ただし、クエリは時間で回答したいと思います。さらに、線形前処理時間のみを許可したいと思います。これを実現するための私のアイデアは、DFSを使用し、葉にラベルを付け、検索が逆戻りしたときにエッジにラベルを付けることでした。このアイデアは追加の努力でうまくいくかもしれませんが、詳細については本当にわかりません。O(d)O(d)O(d)dddTTTO(1)O(1)O(1) 「グラフ到達可能性」はいくつかの結果を出しましたが、おそらくより複雑な問題を扱っています。前処理時間を使用し、時間でクエリに応答する方法に満足しています。O(n+m)O(n+m)O(n+m)O(1)O(1)O(1)

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 誰かヒントがありますか?私は現在ボロノイ図を使って試しています。


2
障害のある通信のアルゴリズム
分散アルゴリズム、特にネットワークに障害が発生した場合の通信に興味があります。 障害のあるネットワークでの次のランダム化された通信アルゴリズムの証明を探します。私にとっては、コミュニケーションの非常に一般的な結果のように思えますが、それでもまだ証拠を見つけていません。 アルゴリズム:最初は頂点のみにメッセージがあり、アルゴリズムの最後にネットワークのすべての頂点にメッセージがなければなりません。v0v0v_0 すべてのラウンドで、メッセージを選択したすべての頂点がランダムにネイバーを選択し、メッセージを送信します。 仮定:頂点間のエッジで発生する障害はのみで可能性があります。 -時間の複雑性。ネットワーク全体は、場合に高い確率でメッセージを認識します。ここで、n-頂点の数。fffT= O (ログn )T=O(ログ⁡ん)T = O(\log n)f&lt; n / 3f&lt;ん/3f<n/3 論文へのリンクや参照をお願いします。

1
緩和されたビンパッキング問題
私が抱えている問題はこのビンのパッキング問題のようなものですが、代わりにビンと離散した質量を持つアイテムのコレクションがあります。各ビンに少なくとも kgものを入れる必要があります。nnnmmm これを行う効率的な方法はありますか?各ビンにほぼ同じ量があることを保証する方法はありますか?質量の確率分布を推測することは役に立ちますか? より明確に: 私はオブジェクトを、各サイズ持つ。qqq{o1...oq}{o1...oq}\{o_1...o_q\}w(oi)∈Nw(oi)∈Nw(o_i) \in \mathbb{N} 次のようなオブジェクトを含むばらばらのビンコレクションを見つける必要がありますnnnB={b1...bn}B={b1...bn}B = \{b_1...b_n\} ∀bi∈B:∑o∈biw(o)&gt;m∀bi∈B:∑o∈biw(o)&gt;m\forall b_i \in B: \sum_{o \in b_i}w(o) > m いくつかのために。それが可能な場合です。mmm

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