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

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

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, …

1
誰が最初にモンテカルロアルゴリズムを使用してPiを計算することを提案しましたか?
18世紀のBuffonの針の実験は誰もが知っていると思います。これはを計算する最初の確率的アルゴリズムの1つです。ππ\pi コンピューターでのアルゴリズムの実装では、通常または三角関数を使用する必要があります。これは、それらが切り捨てられたシリーズとして実装されている場合でも、目的を無効にします。ππ\pi この問題を回避するために、よく知られた拒否方法アルゴリズムがあります。単位正方形に座標を描き、それらが単位四分円に属しているかどうかを確認します。これは、2つの一様な実数とを(0,1)に描画し、それらを場合にのみカウントすることにあります。最終的に、保持されている座標の数を座標の総数で割ると、近似値になります。、Y 、X 2 + Y 2 &lt; 1個のπバツxxyyyバツ2+ y2&lt; 1x2+y2&lt;1x^2+y^2 < 1ππ\pi この2番目のアルゴリズムは通常、Buffonの針として渡されますが、かなり異なると考えられています。残念ながら、私はそれを誰が始めたのか追跡することができませんでした。誰が、いつ、このアイデアが生まれたのかについての情報(文書化されている、または最悪の場合は文書化されていない)を持っていますか?

4
通常の文法で受け入れられた単語を数える
通常の言語(NFA、DFA、文法、または正規表現)が与えられた場合、特定の言語で受け入れられる単語の数をどのようにカウントできますか?「ちょうどn文字」と「最大n文字」の両方が重要です。 Margareta Ackermanには、NFAによって受け入れられた単語を列挙するという関連するテーマに関する2つの論文がありますが、効率的に数えるためにそれらを修正することはできませんでした。 通常の言語の制限された性質がそれらを比較的簡単にカウントするように思えます-私はアルゴリズムよりも数式をほとんど期待しています残念ながら、これまでの検索では何も見つかりませんでしたので、間違った用語を使用する必要があります。

4
有向グラフで非共有エッジの最大数を一緒に含むサイクルを見つける方法は?
私はコンピューター科学の理論家ではありませんが、この現実の問題はここにあると思います。 問題 私の会社には、全国にいくつかのユニットがあります。 従業員に別のユニットで作業する可能性を提供しました。しかし、条件があります:ユニットの労働者の総数は変更できません。 つまり、誰かが自分の場所を望んでいる場合、従業員が自分の部署を離れることを許可します。 (架空の)リクエストデータの例: Name Origin Destination Maria 1 -&gt; 2 Marcos 2 -&gt; 3 Jones 3 -&gt; 4 Terry 4 -&gt; 5 Joe 5 -&gt; 6 Rodrigo 6 -&gt; 1 Barbara 6 -&gt; 1 Marylin 1 -&gt; 4 Brown 4 -&gt; 6 Benjamin 1 -&gt; 3 Lucas …

4
NP最適化問題の最良近似および硬度結果の概要
NP最適化問題に特化した最新のwikiを知っていますか? フィードバックに基づいて、そのようなリソースがないと仮定するのが安全であると思われます(2つの近いオプションについては、この質問の最後を参照してください)。-2月8日に追加。 過去20年間に導入された膨大な結果と問題があるため、専用のWikiの存在は、近似アルゴリズムと近似の難易度の問題に取り組んでいる学生や専門家にとって大きな助けになる可能性があります。 私は新しいウィキを始めることを提案されました。このアイデアは気に入っていますが、始める前にいくつかのフィードバックが必要 です。上記のテーマに特化したWikiに興味があり、何か貢献するつもりはありますか?このWikiの優先フォーマットは何ですか(コメントで優先フォーマットを参照)?ウィキファームまたはウィキエンジンを使用する必要がありますか?後者の場合、wikiエンジンの提案は何ですか?MediaWiki? 私が知っている最も近い2つのオプションは次のとおりです 。1-「NP最適化問題の大要」、Pierluigi CrescenziおよびViggo Kannによる編集:この大要は時代遅れのようです。現在の結果のボリュームは少数の人々によって管理することはできないと思います。最新のリストが必要な場合は、ウィキが必要です。 2- Wikipedia:このwikiは一般の読者向けであり、問​​題の説明、最良の近似および硬度の結果を含む短いページを作成することはできません。

3
#P = FPの結果
#P = FPの結果はどれですか? 私は実用的および理論的な結果に興味があります。 実用的な観点から、私は特に人工知能の結果に興味があります。 論文や本へのポインタは大歓迎です。 #P = FPがP = NPを意味するとは言わないでください、私はすでにそれを知っています。また、言わないでください「の時間におけるアルゴリズムの実行されている場合は実用的な影響が生じない、αは、宇宙での電子の数があるが、」Ω(nα)Ω(nα)\Omega(n^{\alpha})αα\alpha:それを前提とするために私を許可し、決定論的多項式時間アルゴリズムの場合#P-complete問題が存在する場合、その実行時間は "clement"(など)になります。O(n2)O(n2)O(n^2)

3
スライディングウィンドウの中央値を計算するための非自明なアルゴリズム
実行中の中央値を計算する必要があります: 入力: nnn、kkk、vector (x1,x2,…,xn)(x1,x2,…,xn)(x_1, x_2, \dotsc, x_n)。 出力: vector (y1,y2,…,yn−k+1)(y1,y2,…,yn−k+1)(y_1, y_2, \dotsc, y_{n-k+1})、ここでyiyiy_iはの中央値です(xi,xi+1,…,xi+k−1)(xi,xi+1,…,xi+k−1)(x_i, x_{i+1}, \dotsc, x_{i+k-1})。 (近似による不正行為はありません。正確な解を求めます。要素xixix_iは大きな整数です。) サイズ探索木を維持する簡単なアルゴリズムがありkkkます。合計実行時間はO(nlogk)O(nlog⁡k)O(n \log k)です。(ここで「検索ツリー」とは、対数時間での挿入、削除、および中央値クエリをサポートする効率的なデータ構造を指します。) しかし、これは私には少し愚かなようです。中央値だけでなく、サイズkのすべてのウィンドウ内のすべての順序統計を効果的に学習します。さらに、特にkが大きい場合、これは実際にはあまり魅力的ではありません(大きな検索ツリーが遅くなる傾向があり、メモリ消費のオーバーヘッドが自明ではなく、キャッシュ効率が悪いことが多いなど)。kkkkkk 大幅に改善できることはありますか? 下限はありますか(たとえば、単純なアルゴリズムは比較モデルに漸近的に最適ですか)。 編集:デビッドエップスタインは、比較モデルのための素敵な下限を与えました!それにもかかわらず、些細なアルゴリズムよりも少し賢いことをすることは可能だろうか? たとえば、これらの線に沿って何かを行うことができます。入力ベクトルをサイズ部分に分割します。各部分をソートします(各要素の元の位置を追跡します)。そして、区分的にソートされたベクトルを使用して、補助データ構造なしで実行中の中央値を効率的に見つけますか?もちろん、これはまだO (n log kkkkですが、実際には、配列のソートは検索ツリーを維持するよりもはるかに高速になる傾向があります。O(nlogk)O(nlog⁡k)O(n \log k) 編集2: Saeedは、検索ツリー操作よりもソートの方が速いと思う理由をいくつか見たいと思っていました。以下は、、n = 10 8の非常に簡単なベンチマークです。k=107k=107k = 10^7n=108n=108n = 10^8 ≈8s:それぞれk個の要素を持つベクトルをソートn/kn/kn/kkkk ≈10s:要素を持つベクトルの並べ替えnnn ≈80s:サイズkのハッシュテーブルでの挿入と削除nnnkkk ≈390s:サイズkのバランスの取れた検索ツリーでの挿入と削除nnnkkk ハッシュテーブルは比較のためだけにあります。このアプリケーションでは直接使用しません。 要約すると、ソートとバランスの取れた検索ツリー操作のパフォーマンスにはほぼ50倍の差があります。そして、を増やすと事態はさらに悪化します。kkk (技術的詳細:データ=ランダムな32ビット整数。コンピューター=典型的な最新のラップトップ。テストコードはC ++で記述され、標準ライブラリルーチン(std :: sort)とデータ構造(std :: …

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 …

2
SATソルバーに大きな違いがあるのはなぜですか?
SATソルバーは、代数攻撃、たとえばwalksatやminisatで非常に重要です。 ただし、ここで利用可能なベンチマークの問題を解決するとき、2つの間に大きなパフォーマンスの違いがあります。これらの問題では、Walksatはminisatよりもはるかに高速です。どうしてこれなの? この walksatの実装には、いくつかのパフォーマンスの改善があるようです- 国際SATコンテストに含まれなかった理由はありますか?

1
与えられた境界ボックス内のランダムな自己回避格子サイクル
Slither Linkパズルに関連して、私は疑問に思っていました:正方形のセルのグリッドがあり、すべての可能な単純なサイクルの中で均一にランダムにグリッドエッジの単純なサイクルを見つけたいとします。n×nn×nn\times n これを行う1つの方法は、状態が正方形の集合であるマルコフチェーンを使用することです。境界は単純なサイクルであり、遷移は、反転するランダムな正方形を選択し、修正された正方形のセットがその境界。この方法で、単純なサイクルから他のサイクルに到達することができます(砲撃の存在に関する標準的な結果を使用)。これにより、最終的に均一な分布に収束しますが、どのくらいの速さですか? または、より良いマルコフ連鎖、または単純なサイクルを選択するための直接的な方法がありますか? ETA:私が探しているサイクルの数を計算するコードと、これらの数のいくつかのOEISへのポインターについては、このブログ投稿を参照してください。私たちが知っているように、カウントはランダム生成とほぼ同じであり、これらの数値の因数分解に明らかなパターンがなく、OEISエントリに式が存在しないことから、既知の単純な直接法はありそうにないことを推測します。しかし、それでも、このチェーンが収束する速さや、より良いチェーンが広くオープンしているかどうかという疑問が残ります。

3
逆グラフスペクトル問題?
通常、グラフを作成してから、隣接行列(またはラプラシアンのような近親)固有値分解(グラフのスペクトルとも呼ばれます)について質問します。 しかし、逆の問題はどうですか?固有値が与えられた場合、このスペクトルを持つグラフを(効率的に)見つけることができますか?nnn 私は一般的にこれを行うのは難しいと思います(そしてGIと同等かもしれません)が、いくつかの条件を少し緩和するとどうなりますか?固有値の多重度がないという条件を作成するとどうなりますか?距離メトリックによって「近い」スペクトルを持つグラフを許可するのはどうですか? 任意の参照またはアイデアを歓迎します。 編集: Sureshが指摘しているように、自己ループを持つ無向の重み付きグラフを許可すると、この問題は非常に簡単になります。私は、無向、無加重の単純なグラフのセットで答えを得たいと思っていましたが、単純な無加重の有向グラフにも満足しています。

5
最小フリップ接続の問題
今日、GPSで遊んでいる間に次の問題を作成しました。ここにあります : LET、このような場合に有向グラフであり、次に、すなわち、、基礎となる無向グラフの向きです。次の操作を検討してください。E = (U 、V )∈ E (V 、U )∉ E GG (V、E)G(V,E)G(V,E)E = (U 、V )∈ Ee=(u,v)∈Ee=(u,v) \in E(V 、U )∉ E(v,u)∉E(v,u) \notin EGGG Fl i p (u 、v )Flip(あなたは、v)Flip(u,v):エッジをエッジ置き換えます(v 、u )(u 、v )(あなたは、v)(u,v)(v 、u )(v、あなたは)(v,u) U N Di r e c t (u 、v )あなたはnd私rect(あなたは、v)undirect(u,v):エッジ無向にします(u 、v )(あなたは、v)(u,v) …

3
ペアワイズ距離の誤差の合計を最小化する丸め
次の問題の複雑さについて知られていること: 与えられた:有理数x1&lt;x2&lt;…&lt;xnx1&lt;x2&lt;…&lt;xnx_1 < x_2 < \dotso < x_n。 出力:整数y1≤y2≤…≤yny1≤y2≤…≤yny_1 \le y_2 \le \dotso \le y_n。 目的:最小限E (I 、J )= | (y j − y i)− (x j − x i)| 。∑1≤i&lt;j≤ne(i,j),∑1≤i&lt;j≤ne(i,j),\sum_{1 \le i < j \le n} e(i,j),e(i,j)=|(yj−yi)−(xj−xi)|.e(i,j)=|(yj−yi)−(xj−xi)|.e(i,j) = | (y_j-y_i) - (x_j-x_i)|. すなわち、有理数を整数に丸めて、ペアワイズ距離の誤差の合計を最小化します。各ペアi,ji,ji, jについて、丸められた距離yj−yiyj−yiy_j-y_iを真の距離できるだけ近づけたいと思いxj−xixj−xix_j-x_iます。 動機:退屈な地下鉄旅行、および1分の移動時間の解像度で駅の「場所」を示すポスター。ここでは、ポスターを使用してステーションiiiと間の移動時間を検索する場合に発生するエラーを最小限に抑え、jjjすべてのペアで平均化しますi&lt;ji&lt;ji y_ji&lt;ji&lt;ji < j 元の質問は単調整数バージョンを考慮していますが、これらのバージョンのいずれかに関連する回答は大歓迎です。

1
このカバーの問題の複雑さは何ですか?
編集:最初に制約(2)を誤って公式化しましたが、現在は修正されています。さらに情報と例も追加しました。 他のアルゴリズムの質問を研究している同僚と一緒に、問題を次の興味深い問題にまで減らすことができましたが、その複雑さの問題を解決することはできませんでした。問題は次のとおりです。 インスタンス:整数、整数、および集合の組からペア。k &lt; n S = { { s 1、t 1 } 、… 、{ s n、t n } }nnnk &lt; nk&lt;nk<nS={{s1,t1},…,{sn,tn}}S={{s1,t1},…,{sn,tn}}S=\{\{s_1,t_1\},\ldots,\{s_n,t_n\}\}{ 1 、… 、n }nnn{1,…,n}{1,…,n}\{1,\ldots,n\} 質問:あるの集合サイズの各要素のためにそのようなの: (1)場合、間隔でありますペアで定義されるいくつかの区間含まれ、(2)、少なくとも1つがペアに属しますか? (2)はペアに属します。K I { 1 、... 、N } 、I &lt; N [ I 、I + 1 ] [ だI、tはIを】S′⊆SS′⊆SS'\subseteq Skkkiii{1,…,n}{1,…,n}\{1,\ldots,n\}i&lt;ni&lt;ni<n[i,i+1][i,i+1][i,i+1][si,ti][si,ti][s_i,t_i]i i + 1 …

4
SATソルバーペーパーの開始
最初のSATソルバーを作りたいです。私はSATコンペティションとSATコンファレンスを知っていますが、このテーマに関する論文はたくさんあります。私はスターターであり、圧倒的なスターターです。どこから始めればいいですか?最終的には、最先端をプッシュしたいと思います。開始方法について専門家のアドバイスが欲しいので、あまり重要ではないものに早すぎる時間を費やさないようにします。どうもありがとう。

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