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

要素のシーケンスを指定して、要素が特定の順序になるような順列を見つけます。

1
各要素が
各要素が回比較されるように、ソートネットワークに縮小しない既知の比較ソートアルゴリズムはありますか?O (ログn )O(log⁡n)O(\log n) 私の知る限り、各要素で比較でソートする唯一の方法は、n個の入力に対してAKSソートネットワークを構築し、ソートネットワークで入力を実行することです。O (ログn )O(log⁡n)O(\log n)nnn AKSは実装が容易ではなく、実用的でない一定の要因があるため、他のアルゴリズムを検索する動機があります。 ソートネットワークを含意していないようなアイテムごとの比較を持つアルゴリズムがここに提示されます。(iirc、これは最初にStony BrookのアルゴリズムセミナーでRob Johnsonによって発表されました)。O (ログ2n )O(log2⁡n)O(\log^2 n)

2
Han's時間、線形空間、整数ソートアルゴリズム
Yijie Hanの、線形空間、整数ソートアルゴリズムに精通している人はいますか?この結果は、かなり短い論文(時間と線形空間での決定論的ソート。J. Alg。50:96–105、2004)に表示されます。適応。私の問題は、詳細に深く入り込むことなく、かなり手を振って書かれていることです。これは以前の論文に大きく依存しており、中でも特にHanによる別の論文(線形空間での高速整数ソートの改善)O(nloglogn)O(nlog⁡log⁡n)O(n \log\log n)O(nloglogn)O(nlog⁡log⁡n)O(n \log\log n)。Information and Computation 170(1):81–94)はほぼ同じスタイルで書かれています。私はこれらの2つの論文、特に以前の結果をどのように適合させて使用するかを理解するのに大きな困難を抱えています。助けていただければ幸いです。 もちろんこれはあまりに広範で曖昧すぎて適切な質問とは言えませんが、明確に定義されたいくつかの質問と回答にまたがって議論を展開したいと思っています。 先に進むために、ここに私の最初の具体的な質問があります。情報の補題2で。比較 論文には、それぞれが RAMワードにパックされた小さな整数のセットでm番目に小さい整数を見つけるための、再帰的な時間アルゴリズムがあります。アルゴリズムの説明では、ベースケース処理方法については言及していません。この場合、時間で選択を行う必要があり。これをどのように行うことができますか?O(n/klogk)O(n/klog⁡k)O(n/k \log k)nnnkkkk=O(n)k=O(n)k=O(n)O(logk)O(log⁡k)O(\log k)

3
アイテムを見つけるための比較ベースのデータ構造
アイテムの順序付けられていない配列を取り、O (n )で前処理を実行し、クエリに回答するデータ構造があります:リストに要素xがあり、各クエリは最悪の時間O (log n )ですか?nnnO (n )O(n)O(n)バツxxO (ログn )O(log⁡n)O(\log n) 私は本当に存在しないと思うので、存在しないという証拠も歓迎します。

2
次の問題で多項式時間にシーケンスが存在するかどうかを見つけることは可能ですか?
私はしばらくの間、次の問題について考えてきましたが、そのための多項式解を見つけていません。ブルートフォースのみ。私もNP-Completeの問題を無事に削減しようとしています。 問題は次のとおりです。 お持ちソート集合{(A1,B1),(A2,B2),…,(An,Bn)}{(A1,B1),(A2,B2),…,(An,Bn)}\{(A_1, B_1), (A_2, B_2), \ldots, (A_n, B_n)\}の正の整数のペアを。 (Ai,Bi)&lt;(Aj,Bj)⇔Ai&lt;Aj∨(Ai=Aj∧Bi&lt;Bj)(Ai,Bi)&lt;(Aj,Bj)⇔Ai&lt;Aj∨(Ai=Aj∧Bi&lt;Bj)(A_i, B_i) < (A_j, B_j) \Leftrightarrow A_i < A_j \lor (A_i = A_j \land B_i < B_j) (Ai,Bi)=(Aj,Bj)⇔Ai=Aj∧Bi=Bj(Ai,Bi)=(Aj,Bj)⇔Ai=Aj∧Bi=Bj(A_i, B_i) = (A_j, B_j) \Leftrightarrow A_i = A_j \land B_i = B_j 次の操作をペアに適用できますSwap(pair)。ペアの要素を交換するため、はになります(10,50)(10,50)(10, 50)(50,10)(50,10)(50, 10) セット内のペアがスワップされると、セットは自動的に再度ソートされます(スワップされたペアは適切ではなく、セット内の所定の場所に移動されます)。 問題は、あるペアで開始され、次の条件でセット全体をスワップするシーケンスがあるかどうかを確認することにあります。 ペアを交換した後、交換する次のペアは、セット内の後続または先行のペアでなければなりません。 この問題の多項式時間解を見つけるか、NP完全問題をそれに還元することは素晴らしいことです。 注: すでに決定の問題です。シーケンスが何であるかを知りたくない:シーケンスが存在する場合のみ。 ペアを交換した後のセットのソート方法の例 (6, …

2
中央値を計算するための正確な比較数
Knuthの体積III コンピュータプログラミングの技術(3.2節第5章)リスト次の表含む正確な比較の最小数を選択する必要サイズのソートされていないセットから番目に小さい要素nはすべてのために、1 ≤ T ≤ N ≤ 10。このよく知られた閉形式と共に表、V 1(N )= N - 1とV 2(N )= N - 2 + ⌈ N /tttnnn1≤t≤n≤101≤t≤n≤101\le t \le n\le 10V1(n)=n−1V1(n)=n−1V_1(n) = n-1、表し最も最先端技術の1976年のように。V2(n)=n−2+⌈n/2⌉V2(n)=n−2+⌈n/2⌉V_2(n) = n - 2 + \lceil n/2 \rceil 過去36年間にV t(n )のより正確な値が計算されましたか?私は、特に正確な値に興味がM (N )= V ⌈ N / 2 ⌉(N )、比較の最小数は、中央値を計算するために必要。Vt(n)Vt(n)V_t(n)M(n)=V⌈n/2⌉(n)M(n)=V⌈n/2⌉(n)M(n) = V_{\lceil …

1
線形比較による近似1d TSP?
1次元の巡回セールスマンパス問題は、明らかに、並べ替えと同じことなので、時間で比較することで正確に解決できますが、近似だけでなく正確にも定式化されますソリューションは理にかなっています。入力が実数であり、整数への丸めが可能な計算モデルでは、任意の定数について、時間因子内に近似するのは簡単です。:最小値と最大値を見つけ、元の値から距離以内の数値にすべてを丸めてから、基数ソートを使用します。しかし、丸めのあるモデルには複雑な理論があるため、計算の弱いモデルについてはどうでしょうか?O(nlogn)O(nlog⁡n)O(n\log n)1+O(n−c)1+O(n−c)1+O(n^{-c})cccO(n)O(n)O(n)(max−min)n−(c+1)(max−min)n−(c+1)(\max-\min)n^{-(c+1)} そのため、計算の線形比較ツリーモデル(各比較ノードは入力値の線形関数の符号をテスト)で、時間の複雑度がo(n \ logであるアルゴリズムによって、1次元TSPをどれだけ正確に近似できるかn)o(nlogn)o(nlog⁡n)o(n\log n)?同じ丸め方法により、n ^ {1-o(1)}の形式の近似比をn1−o(1)n1−o(1)n^{1-o(1)}実現できます(バイナリ検索を使用して丸めを行い、より粗く丸めて十分に高速化する)。しかし、いくつかの\ epsilon&gt; 0に対してO(n ^ {1- \ epsilon})のような近似比を達成することは可能ですか?O(n1−ϵ)O(n1−ϵ)O(n^{1-\epsilon})ϵ&gt;0ϵ&gt;0\epsilon>0

3
ブラックボックスを使用した並べ替え
私たちは、リストの並べ替えしたいと仮定のの実数を。実数を即座にソートできるブラックボックスが与えられたと仮定します。このブラックボックスを使用してどれだけの利点を得ることができますか?SSSnnnn−−√n\sqrt n たとえば、ブラックボックスへの呼び出しのみで数値を並べ替えることはできますか?私が見つけた最良のアルゴリズムは、ブラックボックスへの呼び出しを使用しています。しかし、私はそれをさらに改善することができませんでした。merge-sortに似たアルゴリズムを次に示します。O (n−−√)O(n)O(\sqrt n)nnn 最初にリストをリスト分割します。サイズは約です。次に、ブラックボックスへの呼び出しを使用して、これらのリストを並べ替えます。最後に、次のようにブラックボックスを使用して、ソートされたリストをマージします。SSSn−−√n\sqrt ns1、s2、。。。、sn√s1,s2,...,sns_1, s_2, ..., s_{\sqrt n}n−−√n\sqrt nn−−√n\sqrt n リストの最小要素を新しいリストに入れ、ブラックボックスを呼び出してソートします。で数(第1の最小要素)で最小の数であろう。出力リストの最初の場所にそれを置くことができます。 要素を想定することから選択された我々は交換、ソートリストの二番目に小さい要素で、再度の二番目に小さい部材計算するためにその上にブラックボックスを実行。 すべての要素がソートされるまで続けます。この部分のブラックボックスコールの総数はLLLL [ 1 ]L[1]L[1]LLLSSSsjsjs_jL [ 1 ]L[1]L[1]sjsjs_jSSSn − n−−√n−nn - \sqrt n。したがって、全体的な呼び出しの総数はます。nnn 一方、次のようにソートに必要な数の比較の下限を使用して下限を取得できるはずです:を使用してブラックボックスを実装できます比較。ブラックボックスへの呼び出しと線形時間のマージで問題を解決できる場合、比較で実数をソートできますが、これは不可能です。n−−√lgn−−√= 12n−−√lgnnlg⁡n=12nlg⁡n\sqrt n \lg \sqrt n = \frac{1}{2} \sqrt n \lg no (n−−√)o(n)o(\sqrt n)nnno (n lgn)o(nlg⁡n)o(n \lg n) ブラックボックスで使用する多くの比較が共有されるため、がブラックボックスへの呼び出し数の下限であることを証明できると思います。Ω (n )Ω(n)\Omega(n) 更新:他の投稿が示唆しているように、も実現可能です。n−−√lgnnlg⁡n\sqrt n …

1
壊れやすいオブジェクトのリストのマージ
背景: Chao Xuは先ほど次の質問を投稿しました:「各要素が回比較されるように、ソートネットワークに還元しない既知の比較ソートアルゴリズムはありますか?O(logn)O(log⁡n)O(\log n)」私たちは問題に少しこだわっているようです。2009年にValentin Polishchukと同じ問題について話し合いましたが、どこにも行き当たりませんでした。 新鮮なアイデアを得るために、私は同様のフレーバーを持ち、完全に些細ではない可能な限り単純な質問を考え出そうとしました。したがって、次の質問。 質問:ソートされたリストが2つあり、それぞれに要素があります。各要素がO (1 )回だけ比較されるようにリストをマージできますか?nnnO(1)O(1)O(1) 当然、出力はすべての要素を含むソートされたリストである必要があります。2n2n2n [これは些細なことが判明し、答えは「いいえ」です。] 質問2:ソートされたリストが2つあり、各リストには要素があります。少数の要素を破棄することが許可されている場合、各要素がO (1 )回だけ比較されるようにリストをマージできますか?nnnO(1)O(1)O(1) より正確には、出力が含まれてソートされたリストであるべきであるの要素を、そして「ごみ箱」が含まれているT (N )要素。値T (n )をどれだけ小さくできますか?T (n )= nを取得するのは簡単です。T (n )= n / 100のようなものは、簡単に実行できるはずです。しかし、T (n )= o (n2n−T(n)2n−T(n)2n-T(n)T(n)T(n)T(n)T(n)T(n)T(n)T(n)=nT(n)=nT(n) = nT(n)=n/100T(n)=n/100T(n) = n/100?T(n)=o(n)T(n)=o(n)T(n) = o(n) ノート: ここでは比較モデルを使用します。決定論的アルゴリズムのみ、最悪の場合の保証に興味があります。 両方のリストには正確に要素があることに注意してください。私たちが持つつのリストがあった場合n個の要素として、別の1つの要素を、答えは「ノー」、明らかです。ただし、両方のリストが長い場合、「ロードバランシング」を実行できる可能性があるようです。nnnnnn111 今回は、あらゆる種類のアルゴリズムが有効です。アルゴリズムが構築ネットワークとしてソートネットワークを使用している場合、それはまったく問題ありません。 開始点として、各要素を最大200回比較する単純なアルゴリズムを次に示します。標準のマージアルゴリズムを使用するだけで、リストの先頭のカウンターを維持します。200に達したら、要素を破棄します。これで、破棄する各要素について、出力配列に200個の要素が正常に配置されました。したがって、を達成しています。T(n)=n/100T(n)=n/100T(n) = n/100

5
計算可能な数が有理数か整数かをテストすることはできますか?
計算可能な数が有理数か整数かをアルゴリズムでテストすることはできますか?言い換えれば、それは道具計算数字は機能を提供するために、そのライブラリは可能でしょうisIntegerかisRational? 私はそれが不可能であると推測し、これは何らかの形で2つの数値が等しいかどうかをテストすることができないという事実に関連していると推測していますが、それを証明する方法はわかりません。 編集:計算数はxxxの関数で与えられるfx(ϵ)fx(ϵ)f_x(\epsilon)の合理的な近似値を返すことができxxx高精度でϵϵ\epsilon:|x−fx(ϵ)|≤ϵ|x−fx(ϵ)|≤ϵ|x - f_x(\epsilon)| \leq \epsilonいずれについても、ϵ&gt;0ϵ&gt;0\epsilon > 0。このような関数を考えると、それがあれば、テストすることが可能であるx∈Qx∈Qx \in \mathrm{Q}またはx∈Zx∈Zx \in \mathrm{Z}?
18 computability  computing-over-reals  lambda-calculus  graph-theory  co.combinatorics  cc.complexity-theory  reference-request  graph-theory  proofs  np-complete  cc.complexity-theory  machine-learning  boolean-functions  combinatory-logic  boolean-formulas  reference-request  approximation-algorithms  optimization  cc.complexity-theory  co.combinatorics  permutations  cc.complexity-theory  cc.complexity-theory  ai.artificial-intel  p-vs-np  relativization  co.combinatorics  permutations  ds.algorithms  algebra  automata-theory  dfa  lo.logic  temporal-logic  linear-temporal-logic  circuit-complexity  lower-bounds  permanent  arithmetic-circuits  determinant  dc.parallel-comp  asymptotics  ds.algorithms  graph-theory  planar-graphs  physics  max-flow  max-flow-min-cut  fl.formal-languages  automata-theory  finite-model-theory  dfa  language-design  soft-question  machine-learning  linear-algebra  db.databases  arithmetic-circuits  ds.algorithms  machine-learning  ds.data-structures  tree  soft-question  security  project-topic  approximation-algorithms  linear-programming  primal-dual  reference-request  graph-theory  graph-algorithms  cr.crypto-security  quantum-computing  gr.group-theory  graph-theory  time-complexity  lower-bounds  matrices  sorting  asymptotics  approximation-algorithms  linear-algebra  matrices  max-cut  graph-theory  graph-algorithms  time-complexity  circuit-complexity  regular-language  graph-algorithms  approximation-algorithms  set-cover  clique  graph-theory  graph-algorithms  approximation-algorithms  clustering  partition-problem  time-complexity  turing-machines  term-rewriting-systems  cc.complexity-theory  time-complexity  nondeterminism 

2
ユークリッド距離による並べ替え
は平面上の点の集合です。ランダム点 X ∉ Sは、同一平面上に与えられます。タスクは、すべてのソートすることである Y ∈ Sとの間のユークリッド距離で X及び Y。SSSx∉Sx∉Sx \notin Sy∈Sy∈Sy \in Sxxxyyy 無脳のアプローチは、間の距離を計算することでとYのすべてのためのy ∈ S、その後ソートそれらがどの高速アルゴリズムを使用します。xxxyyyy∈Sy∈Sy \in S を保存または前処理して、ソート処理を高速化する方法はありますか?SSS

2
線形時間で整数を「ほぼソート」する
私は、線形時間で正の整数値配列をソートすることに興味があります(均一なコスト尺度を持つRAMモデル、つまり、整数は対数サイズまで持つことができますが、それらの算術演算は単位時間)。もちろん、これは比較ベースのソートアルゴリズムでは不可能であるため、「近似」ソートの計算、つまり、順列計算に興味がありますは本当に一般的にソートされていないが、のソートバージョンの「良い近似」。続編の記述が少し楽になるので、整数を降順でソートしていると仮定しますが、もちろん問題を逆に表現することもできます。L=v1,…,vnL=v1,…,vnL = v_1, \ldots, v_nvσ(1),…,vσ(n)vσ(1),…,vσ(n)v_{\sigma(1)}, \ldots, v_{\sigma(n)}LLLLLL 近似ソートの1つの可能な基準は次のとおりです(*):をとし、ごとに、(つまり、 「準ソート済み」リストは、上から減少関数によって制限されます。実際のソートがこれを満たしていることは簡単にわかりますは以下でなければならないため、最大ではであり、一般には以下でなければなりませんであるNNN∑ivi∑ivi\sum_i v_i1≤i≤n1≤i≤n1 \leq i \leq nvσ(i)≤N/ivσ(i)≤N/iv_{\sigma(i)} \leq N/ii↦N/ii↦N/ii \mapsto N/ivσ(2)vσ(2)v_{\sigma(2)}vσ(1)vσ(1)v_{\sigma(1)}(vσ(1)+vσ(2))/2(vσ(1)+vσ(2))/2(v_{\sigma(1)} + v_{\sigma(2)})/2≤N/2≤N/2\leq N/2vσ(i)vσ(i)v_{\sigma(i)}(∑j≤ivσ(i))/i(∑j≤ivσ(i))/i(\sum_{j \leq i} v_{\sigma(i)})/i≤N/i≤N/i\leq N/i。 たとえば、要件(*)は、以下のアルゴリズムによって実現できます(@Louisが推奨)。私の質問は次のとおりです。実際のソートが満たす(*)などの要件を課すことにより、線形時間で整数を「ほぼソート」するこのタスクに関する既存の作業はありますか?以下のアルゴリズム、またはそのバリアントには、確立された名前がありますか? 編集:アルゴリズムを修正し、説明を追加しました アルゴリズム: INPUT: V an array of size n containing positive integers OUTPUT: T N = Σ_{i&lt;n} V[i] Create n buckets indexed by 1..n …

1
ソートネットワークの多項式で多数の0-1シーケンスをソートするのに十分ですか?
0-1の原則では、ソートネットワークがすべての0-1シーケンスで機能する場合、任意の数値セットで機能するということです。ある、ネットワークがSからのすべての0-1シーケンスを並べ替えた場合、それはすべての0-1配列とのサイズソートするような多項式である? S NS⊂{0,1}nS⊂{0,1}nS\subset \{0,1\}^nSSSnnn たとえば、最大であるすべてのシーケンスで構成さの1の実行(間隔)、その後、ソーティングネットワークNとのすべてのメンバーならばNによって順序付けされていないシーケンスがあり N順に並んでいますか?2 SSSS222SSS 回答:回答とそのコメントからわかるように、答えは、ソートされていないすべての文字列に対して、他のすべてのストリングをソートするソートネットワークがあるということです。これの簡単な証明は次のとおりです。文字列、が常におよびます。以来ソートされていないで、ソート後する必要があります。をすべてのと比較します。次に、とようにすべてのペア比較しますs i = 0 i &lt; k s k = 1 s s k 0 k i s i = 1 (i 、j )i ≠ k j ≠ ks=s1…sns=s1…sns=s_1\ldots s_nsi=0si=0s_i=0i&lt;ki&lt;ki<ksk=1sk=1s_k=1ssssksks_k000kkkiiisi=1si=1s_i=1(i,j)(i,j)(i,j)i≠ki≠ki\ne kj≠kj≠kj\ne k何度も。この葉全体の文字列は、のために、おそらく除いて、ソートための未ソートである、、そしてより多くの持っているその他の特定の文字列を以上の。今すぐ比較するためにとdownto位以外に行くべき。これはを除くすべてをソートします。 s 1 s s k i = n 1 s k …

2
部分的に順序付けられた一連の要素のどの永続データ構造ですか?
タイプaの要素セットを保存する必要があります。タイプaは部分的に順序付けられているため、と比較すると、より小さい、大きい、等しい、または比較できない値が返される可能性があります。a1a1a_1a2a2a_2 ハッシュテーブルの問題の1つは、2つの等しい要素を別々に表現できることです。また、私は、等しいと一致するハッシュ関数にアクセスできません。 2つの要素の比較には時間がかかるため、比較を最小限に抑えることは興味深いでしょう。必要に応じて、比較演算子への呼び出しをメモすることができます。アンチチェーンを保存するだけでよいことを理解しました(または、そうすることを想定しましょう)。より正確には、実行する必要がある操作は次のとおりです。 アンチチェーンから要素を削除します。 要素を追加してみてください。要素がメンバーよりも小さい場合は追加しないでください。そうでない場合は、要素を追加して、それより小さい要素をすべて削除してください。 すべての要素を2つの整数でバインドすることもできます。そのため、およびであることがわかっている場合、知るとすぐにます。もちろん、は意味わけではありません...整数の境界を見つけることは、完全な要素比較に比べて比較的安価な操作です。私1&lt; a &lt; i2私1&lt;a&lt;私2i_1 < a < i_2私3&lt; b &lt; i4私3&lt;b&lt;私4i_3 < b < i_4私2&lt; 私3私2&lt;私3i_2 < i_3a &lt; ba&lt;ba < b私2≮ 私3私2≮私3i_2 \not< i_3≮ Ba≮ba \not < b

2
リストをソートするための転置の最小数
独自の並べ替えアルゴリズムを考案する際に、比較できる最適なベンチマークを探しています。要素Aの並べ替えられていない順序と並べ替えられた順序Bの場合、AからBへの最適な転置数を計算する効率的な方法は何ですか? 転置は、リスト内の2つの要素の位置を切り替えることとして定義されるため、たとえば 1 2 4 3 それを作るために1つの転置(転置4と3)を持っています 1 2 3 4 何かのようなもの 1 7 2 5 9 6 4つの転置(7、2)、(7、6)、(6,5)、(9、7)が必要 更新(9/7/11):質問は、「交換」ではなく「転置」を使用して、隣接していない交換を参照するように変更されました。

3
位置が制約されたトポロジカルソートの複雑さ
Iは入力DAGとして与えられていの各頂点の頂点さらにいくつかで標識されている。GGGnnnxxxS(x)⊆{1,…,n}S(x)⊆{1,…,n}S(x) \subseteq \{1, \ldots, n\} トポロジカルソート全単射であるの頂点からへようにすべてのため、、からパスがある場合ににおける次に、。すべてのに対してようなトポロジカルなが存在するかどうかを判断したいと思います。GGGfffGGG{1,…,n}{1,…,n}\{1, \ldots, n\}xxxyyyxxxyyyGGGf(x)≤f(y)f(x)≤f(y)f(x) \leq f(y)GGGxxxf(x)∈S(x)f(x)∈S(x)f(x) \in S(x) この決定問題の複雑さは何ですか? [注:明らかにこれはNPにあります。許可された頂点/位置のペアのグラフを見ると、順序に違反するためにペアリング間の無向エッジが競合しているため、クリークごとに最大1つのペア、最大で1つのペアを選択する、互いに素なクリークのグラフが表示されます位置と頂点ごとに最大1つのペア-それは3次元マッチングに関連しているように見えますが、この特定の問題の追加構造ではまだ難しいかどうかわかりません。]

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