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

タスクを完了するための明確に定義された指示、および時間/メモリ/その他に関する関連分析に関する質問。

10
#SAT Solverのダウンロード
誰でも、#SATソルバーの実用的な実装をダウンロードできる1つ以上のWebサイトを指し示すことができますか?近似値ではなく、正確な解カウントを返すものに興味があります。

1
「ほぼ簡単な」NP完全問題
ほとんどすべての入力でを正しく決定する多項式時間アルゴリズムがある場合、言語はP密度に近いとしましょう。LLLLLL つまり、 Pがあり、が消滅します。つまり、 また、一様なランダム入力では、Aのポリタイムアルゴリズムが1に近い確率でLの正しい答えを与えることを意味します。したがって、Lを表示することはほとんど簡単です。A∈A∈A\in LΔALΔAL\Delta AALLlimn→∞|(LΔA)∩{0,1}n|2n=0.limn→∞|(LΔA)∩{0,1}n|2n=0.\lim_{n\rightarrow\infty} \frac{|(L\Delta A) \cap \{0,1\}^n|}{2^n}=0.AAALLLLLL ことを注意LΔALΔAL\Delta Aスパースである必要はありません。たとえば、 n2n/22n/22^{n/2} nnnビットの文字列がある場合、2 ^ {n / 2} / 2 ^ n = 2 ^ {-n / 2であるため、(指数関数的レートで)まだ消えています。}2n/2/2n=2−n/22n/2/2n=2−n/22^{n/2}/2^n=2^{-n/2}。 上記の定義に従って、P-密度に近いNP完全問題 を(人工的に)構築することは難しくありません。たとえば、Lを任意のNP完全言語とし、L ^ 2 = \ {xx \、| \、x \ in L \}を定義します。次に、L ^ 2はNP完全性を保持しますが、最大で2 ^ {n / 2} nビットのyesインスタンスを持ちます。したがって、すべての入力に対して「いいえ」と答える簡単なアルゴリズムは、ほぼすべての入力でL ^ 2を正しく決定します。nビット入力の\ …


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 …

2
n次元パターンマッチング
n次元配列内の正確なn次元部分配列を見つけるための既知の結果は何ですか? 1Dでは、これは単なる文字列マッチングの問題であり、KMPは線形時間でそれを行います。 この論文では、2Dで、余分なスペースをほとんど必要とせずに線形時間で実行できることを示しました。 この問題は、固定次元の線形時間最悪ケースで解決できますか?

1
2つの多項式(木で表される)間の距離を見つける
遺伝子プログラミングに携わっている同僚から次の質問がありました。私は最初に貪欲なアプローチに基づいてそれを解決しようとしましたが、考え直して、欲張りアルゴリズムの反例を見つけました。だから、ここで言及する価値があると思いました。 式ツリーで表される2つの多項式を考えます。たとえば、バツ3− 2 x + 1x3−2x+1x^3-2x+1およびバツ2+ 4x2+4x^2 + 4を以下に示します。 ルール: 各ノードは、変数名(x 、y、z、…x,y,z,…x, y, z, \ldots)、数値、または操作(+、-、×)のいずれかです。 ツリーの順序トラバーサルは、有効な多項式になるはずです。 操作ノードにはインディグリー2があります。他のノードにはインディグリー0があります。すべてのノードにはアウトディグリー1があります(アウトディグリーが0であるルートを除く)。 ツリーのノードNで、次のように基本操作を定義します。 バツxx××\times 基本的な操作では、Nの上に式ツリーを構築できます(以下の例を参照)。 タイプ1の基本操作のコストは1です。タイプ2のコストは、新しく構築された式ツリーの{+、-、×}操作の数に等しくなります。 タイプ2の例:ノードNの上に構築された式ツリーは2つの操作(-と×)を使用するため、次の基本操作のコストは2です。 T1とT2を多項式を表す2つの式ツリーとします。T1とT2の距離を次のように定義します。T1をT2に変換するための基本操作の最小コスト。変換されたツリーがT2と同じ構造を持つ必要はないことに注意してください。T2と同じ多項式を計算するだけです。(例についてはコメントを参照してください。) 問題: T1とT2が与えられた場合、それらの距離を計算するアルゴリズムを提示します。 例1: T1とT2を、この投稿の冒頭で示した2つのツリーとします。右のツリーを左のツリーに変換するには、×の上にコスト3のツリーを構築し、4を1に変更します(合計コストは4です)。 バツ4x4x^4バツ4+ 4 x3+ 6 x2+ 4 x + 1x4+4x3+6x2+4x+1x^4+4x^3+6x^2+4x+1バツxx(x + 1 )4(x+1)4(x+1)^4バツxx4 x34x34x^36 x26x26x^24x4x4x

5
一般的なグラフで完全に一致する決定論的並列アルゴリズム?
複雑度クラスには、クラスにはないと推測されるいくつかの問題、つまり決定論的並列アルゴリズムの問​​題があります。最大流量の問題はその一例です。そして、にあると思われる問題がありますが、証拠はまだ見つかりません。N C N CPP\mathsf{P}N CNC\mathsf{NC}N CNC\mathsf{NC} 完璧なマッチング問題はグラフ理論で育てられ、最も根本的な問題の一つである:グラフ与えられた、我々はのための完璧なマッチング見つけなければならないGを。エドモンズによる美しい多項式時間ブロッサムアルゴリズム、および1986年のKarp、Upfal、Wigdersonによるランダム化された並列アルゴリズムにもかかわらず、インターネット上で見つけることができたように、グラフのいくつかのサブクラスのみがN Cアルゴリズムを持つことが知られています。GGGGGGN CNC\mathsf{NC} 2005年1月に、ブログComputational Complexityに、Perfect Matchingがかどうかは公開されていると主張する投稿があります。私の質問は:N CNC\mathsf{NC} それ以降、ランダム化されたアルゴリズムを超えた進展はありますか?N CNC\mathsf{NC} 私の興味を明確にするために、GENERALグラフを扱うアルゴリズムはどれも素晴らしいです。グラフのサブクラスのアルゴリズムも大丈夫ですが、それは私の注意にないかもしれません。皆さん、ありがとうございました! 12/27に編集: すべての助けてくれてありがとう、私はすべての結果を1つの図に要約しようとしています: 最も低い既知のクラスには、次の問題が含まれます。 一般的なグラフでのマッチング: [ KUW86 ]、R N C 2 [ CRS93 ]R N CRNC\mathsf{RNC}R N C2RNC2\mathsf{RNC}^2 二部平面/定数属グラフでのマッチング: / S P L [ DKT10 ] / [ DKTV10 ]U LUL\mathsf{UL}S P LSPL\mathsf{SPL} 総数が多項式の場合のマッチング: [ …

3
線形代数のアルゴリズム/複雑さに関する調査
並列(階層)に重点を置いた線形代数のアルゴリズムと複雑さ(ランク、逆数、固有値などの演算、ブール、、整数/有理数行列など)の良い調査を探しています。およびポリタイムアルゴリズム。私は最近のものを見つけることができませんでした。 NCFpFp\mathbb{F}_pNCNCNC 線形代数の複雑さに関する最近の良い調査または本を知っていますか?

4
正のトポロジカル順序付け、テイク3
n行n列のマトリックスがあるとします。上三角行列を得るように行と列を並べ替えることは可能ですか? この問題は、この問題に動機付けられています。 肯定的なトポロジカル順序付け 元の決定問題は少なくともこの問題と同じくらい難しいので、NP完全性の結果もそれを解決します。 編集:Laszlo VeghとAndras Frankは、Gunter Roteが尋ねた同等の問題に注意を向けました:http : //lemon.cs.elte.hu/egres/open/Graphs_extendable_to_a_uniquely_matchable_bipartite_graph 編集:元の問題の削減は次のとおりです。DAGに2つのレベルしかない場合、これらはマトリックスの行と列に対応するとします。また、重みが+1の単一のノードがあります。下位レベルの他のすべての人の体重は-1で、上位レベルの人は+1です。

2
多項式時間での平均の推定
ましょう関数とすることが我々は、平均推定する。:つまり、。f:{0,1}n→(2−n,1]f:{0,1}n→(2−n,1]f \colon \lbrace 0,1 \rbrace ^ n \to (2^{-n},1]fffE[f(n)]=2−n∑x∈{0,1}nf(x)E[f(n)]=2−n∑x∈{0,1}nf(x)\mathbb{E}[f(n)]=2^{-n}\sum_{x\in \lbrace 0,1 \rbrace ^ n}f(x) NOTE: In the OP, the range of f was [0,1]. I changed this a bit for technical reasons. (This should simplify the problem; if not, forget it!) レッツ(ランダム化された)推定アルゴリズムで。はへのブラックボックスアクセスがあると仮定します。これをます。EEEEEEfffEfEfE^f 2つの条件があります。 1)推定器の実行時間:すべてのおよびすべてのについて、の実行時間がによって制限されるような単一の多項式が存在します。p(⋅)p(⋅)p(\cdot)nnnfffEf(1n)Ef(1n)E^f(1^n)p(n)E[f(n)]p(n)E[f(n)]\frac{p(n)}{\mathbb{E}[f(n)]} 自信を持って2)推定の精度:δδ\delta単一の多項式が存在する、全てのこのようなことはおよびすべての、我々が持っている少なくとも確率。q(⋅)q(⋅)q(\cdot)nnnfff1q(n)&lt;Ef(1n)E[f(n)]&lt;q(n)1q(n)&lt;Ef(1n)E[f(n)]&lt;q(n){1 \over {q(n)}} < \frac{E^f(1^n)}{\mathbb{E}[f(n)]} < …

1
準線形空間で距離を編集する
入力のサイズが線形でない作業スペースを使用して、同じ長さの2つの文字列間の正確な編集距離を計算するための最もよく知られている複雑さは何ですか?入力は何らかの読み取り専用形式で保存されていると思います。これは以前に研究された問題ですか? 質問をもう少し具体的にするために、スペース。nは各入力文字列の長さです。Θ(n−−√)Θ(n)\Theta(\sqrt{n})nnn 編集。David Eppsteinの答えに続いて、編集時間を多項式時間とスペース。下限も興味深いでしょう。Θ(n−−√)Θ(n)\Theta(\sqrt{n})

1
適切な誘導サブグラフを見つける
あなたはAグラフ与えられると、n個の頂点。必要に応じて、2つの部分に分かれることがあります。ありメートルのエッジの集合E 1、... 、E M ⊆ Eは(互いに素と言います)。Iは、サブセット求める問題に興味S ⊆ V誘起グラフように、可能な(またはさらに小さい)などの小さなように、G Sは各クラスからの少なくとも一つのエッジを有するE iがために、私は= 1 、... 、Mを。G = (V、E)G=(V,E)G = (V,E)nnnmmmE1、… 、Em⊆ EE1,…,Em⊆EE_1,\ldots, E_m \subseteq ES⊆ VS⊆VS \subseteq VGSGSG_SE私EiE_ii = 1 、 … 、mi=1,…,mi=1,\ldots, m 現在、私はこの問題がハードカバーされていることを知っています。また、完全には明らかではない(大まかに)近似。O (n−−√)O(n)O(\sqrt{n}) これは自然な問題のように思えます-誰でも関連する参照、またはより良いアルゴリズムを知っていますか?

4
順不同リストを与えられた未知の値
誰でも次の問題で私を助けることができますか? 私はいくつかの値を検索したいai,bjai,bja_i,b_j(MOD NNN)i=1,2,…,K,j=1,2,…,Ki=1,2,…,K,j=1,2,…,Ki=1,2,…,K, j=1,2,…,K (例えばK=6K=6K=6のリスト与え、)K2K2K^2という値具体的な対応関係を知らずに、差ai−bj(modN)ai−bj(modN)a_i-b_j\pmod N(たとえばN=251N=251N=251)に対応します。値以来ai,bj(modN)ai,bj(modN)a_i,b_j\pmod N一意に違い与え定義されていないai−bj(modN)ai−bj(modN)a_i-b_j\pmod N、我々は探して任意の 値の有効割り当て。 間違いなく、リスト内のK2K2K^2数の各順列を試して(合計K2!K2!K^2!場合)、変数としてai,bjai,bja_i,b_jを使用してモジュラー方程式を解くことは実行不可能です。 実際、この問題はNTRU署名スキームの初期バージョンへの暗号解読に関する論文(http://eprint.iacr.org/2001/005)で発生します。しかし、著者は「単純なバックトラックアルゴリズムが1つのソリューションを見つける」という文(3.3節)を1つだけ書いたので、だれかがさらに説明できますか?さらに、著者は「すべての循環シフト{((ai+M)modN,(bi+M)modN}Ki=1{((ai+M)modN,(bi+M)modN}i=1K\{((a_i+M)\mod N,(b_i+M)\mod N\}_{i=1}^Kまたはスワップ({(N−1−bi,N−1−ai)}Ki=1)({(N−1−bi,N−1−ai)}i=1K)(\{(N-1-b_i,N-1-a_i)\}_{i=1}^K)はa_i-b_j \ mod Nと同じパターンにai−bjmodNai−bjmodNa_i-b_j\mod Nなります。このステートメントは役に立ちますか?

2
Cheeger定数の計算:どのクラスに適していますか?
アイソペリメトリック定数とも呼ばれるグラフのチーガー定数の計算は(本質的に最小の面積/体積比であるため)、NP完全であることが知られています。一般的には近似値です。グラフの特別なクラスで正確な多項式アルゴリズムが知られているかどうかを知りたいです。たとえば、通常のグラフではまだNP完全ですか?以下のための距離正則グラフ?(既存のNP完全性の証明を調べて、それらの仮定を調べることはしませんでした。)文献へのポインタはありがたいです。ありがとう!

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

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