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

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

2
独立セットのプロパティテスト
グラフとパラメーターが与えられたとします。そこの値の範囲は、(またはそれがすべてのためになんとかである)はかどうかをテストすることが可能であるためである少なくとも大きさの独立したセットを有するから-far時間における?k 、ϵ k k G ϵ k O (n + poly (1 / ϵ ))GGGk 、ϵk,ϵk,\epsilonkkkkkkGGGεϵ\epsilonkkkO (n + ポリ(1 / ϵ ))O(n+poly(1/ϵ))O(n + \text{poly}(1/\epsilon)) -farの通常の概念を使用する場合(つまり、そのようなセットを取得するには、最大でエッジを変更する必要があります)、問題は。そうε 、N 2、K = O (N √εϵ\epsilonϵ n2ϵn2\epsilon n^2k = O (n ϵ√)k=O(nϵ)k = O(n\sqrt{\epsilon}) が大きければ、いくつかのサンプリングのアイデアが問題を解決するために機能するはずです。本当 ?kkk -farの他の概念(つまり、代わりにエッジ)がありますか?ϵ | E |εϵ\epsilonϵ | E|ϵ|E|\epsilon |E| この時点で基本的に参考文献を探しています。


4
継続的なクラスタリング
したがって、ライブで継続的にストリーミングするデータを使用したクラスタリングに関して、私が直面している問題があります。私は増え続けるデータセットを持っているので、効率的で効果的なクラスタリングを実行するための最良の方法は何なのかわかりません。私はいくつかの可能な解決策を考え出しました: 許可するデータポイントの数に制限を設定すると、別のデータポイントが最も古いポイントに到達するときに制限に達するたびに削除されます。本質的に、これは、古いデータは、私たちがそれを捨てることによって失うものを気にするほど私たちにとって十分に関連性がないことを示唆します。 適切なクラスタリングを行うのに十分なデータが揃ったら、すべてのデータを再クラスタリングするのではなく、この「セットアップ」を検討し、新しいポイントが発生したら、新しいポイントが最も近いクラスタ中心を見つけてそれに追加します。ここでの利点は、すべての新しいポイントで再クラスター化する必要がなくなり、他のすべてのポイントを格納する必要がなく、クラスター化を「十分」に考慮してクラスターセンターのみを格納する必要があることです。欠点は、最初からすべてのデータポイントを使用してアルゴリズムを再実行すると、より正確になる可能性があることです。 これらは私がブレインストーミングしたいくつかの潜在的な解決策ですが、この問題に直面するためのよりよく知られた手法があるかどうか知りたいです。私はGoogleのようなサイトが何らかの形でそれに対処しなければならなかったと思います(そして、「RAM、サーバー、プロセッサーをさらに追加する」または「データセンターを継続的に拡張する」が利用可能な唯一の答えではないことを願っています)。

5
FPT時間近似アルゴリズムのW [1] -hard問題
FPT時間で解決するのは難しいが、近似アルゴリズムがある問題を探しています。つまり、次のような問題があります。 R1。W [1]-ハード。 R2。FPT時間で(できれば一定の)近似アルゴリズムを許可します。 私がよく知っている問題は、グラフで長さ単純なパスの数を数えることです。これは#W [1] -hardであることが知られていますが、FPT時間での(近似を認めます定数)。(1 + ϵ ) ϵkkk(1 + ϵ )(1+ε)(1+\epsilon)εε\epsilon また、R1とR2を満たす問題も興味深いでしょう。 R3。が存在するため、問題は FPT時間で近似可能ではありません W [1] = FPTを除く)。(1 + ϵ )ϵ > 0ε>0\epsilon>0 (1 + ϵ )(1+ε)(1+\epsilon) R1とR2、そしておそらくR3を満たす他の問題は何ですか?

3
非直交ベクトル問題
次の問題を検討してください。 直交ベクトル問題 入力:Aセットは、SSSのnnnブールは、長さの各ベクトルddd。 質問:DOは明確なベクトルが存在しv1v1v_1及びv2∈Sv2∈Sv_2 \in Sそれは、このようなv1⋅v2=0v1⋅v2=0v_1 \cdot v_2 = 0? 非直交ベクトル問題 入力:Aセットは、SSSのnnnブールは、長さの各ベクトルdddと正の整数kkk。 質問:DOは明確なベクトルが存在しv1v1v_1及びv2∈Sv2∈Sv_2 \in S、このようなv1⋅v2≥kv1⋅v2≥kv_1 \cdot v_2 \geq k? これら2つの問題の関係は何ですか? 特に、ここで私が疑問に思っているいくつかのより具体的な質問を示します。 (1)これらの問題のどちらかが他よりも難しいように見えますか? (2)私は確かに芸術アルゴリズムの現在の状態がOVP何のためにあるのかが、これらの問題のいずれかのために、あなたは上限よりも良い得ることができていないよO(n2⋅d)O(n2⋅d)O(n^2 \cdot d)時間は? (3)kkkを修正することは、2番目の問題の複雑さに対して何か違いがありますか? 、Iは、の内積平均V 1及びV 2を超えるR dは。v1⋅v2v1⋅v2v_1 \cdot v_2v1v1v_1v2v2v_2RdRd\mathbb{R^d} 編集:が小さい場合、ほとんどの応答は本当に素晴らしい洞察を提供します。 ddd が大きい場合、何が言えるでしょうか。d = nまたはd = √と言いますdddd=nd=nd = n 又は少なくともD=Nαいくつかのためにα>0。d=n−−√d=nd = \sqrt{n}d=nαd=nαd = n^\alphaα>0α>0\alpha > 0

1
アーベル群同型は
あ O (ん2)O(n2)O(n^2)アーベル群同型の実行時アルゴリズムは見やすいです。2003年にこの問題に後で取り組んだVikasは、O (ん2)O(n2)O(n^2) 実行時間 O (n ログn )O(nlog⁡n)O(n \log n)。2007年に、Kavithaはアーベル群の同型が線形時間で実行できることを示しました。O (n )O(n)O(n) 時間。 グループが表表現で与えられたときのアーベル群同型は、 TC0TC0\mathsf{TC^0}。あることを示す研究論文や記事はありますかあC0AC0\mathsf{AC^0}?私はグーグルしようとしましたが、それが含まれている結果のみを取得しましたTC0TC0\mathsf{TC^0}。 質問:アーベル群同型(表形式で与えられた群)は あC0AC0\mathsf{AC^0}


3
並行データ構造を設計する方法は?
以前にProgrammers.SEでこの質問をしましたが、成功しませんでした。 並行データ構造を設計する方法について書かれた学習リソースを探しています。最終的な製品(完全なコードリスト)よりも、設計プロセス(たとえば、適切な不変条件の特定)に関心があります。 具体的な例として、Chris Okasakiの著書「Purely Functional Data Structures」は本当に参考になりました。これは単なる参考資料ではなく、データ構造とアルゴリズムの設計について読者をガイドするためです。多くの場合、この本は、最初によりナイーブなバージョンを提供し、次に、必要な時間の複雑さ(最悪の場合または償却)が達成されるまでそれを洗練することによって、トリッキーまたは非自明なデザインを動機付けます。これは私が探しているようなものです。 そう: 並行データ構造を設計するためにどのような手法またはヒューリスティックが存在しますか? これらのテクニックとヒューリスティックを説明する本、論文、ブログ投稿、チュートリアルなどはありますか?

3
バイナリ配列に対する時間隔和クエリは、線形空間と一定時間を使用して実行できないことを示す
サイズのバイナリ配列が与えられます。nnn どのアルゴリズムも次のことを実行できないことを示したいと思います(または驚いて、そのようなアルゴリズムが結局存在していることを知ってください): 1)無制限の時間を使用して、ただしビットのみを使用して、入力配列を前処理します。O(n)O(n)O(n) 2)クエリに一定の時間で応答します。クエリは、配列のインデックスとインデックス間のセットビット数を要求します。x y(x,y)(x,y)(x,y)xxxyyy クエリごとの一定時間は、設定されたビット数を計算するのに十分な情報をアルゴリズムが読み取れないようにする必要があります。 そのようなアルゴリズムが存在しないことをどのように証明できますか? より一般的な質問は、 アルゴリズムが空間の使用を許可されている場合、クエリ時間の下限はどのようにして導出できますか?f(n)f(n)f(n) 明らかに、スペースがある場合、すべての部分和を格納してクエリをに格納できが、が小さい場合はどうなりますか?O (1 )ff=Ω(nlogn)f=Ω(nlog⁡n)f=\Omega(n\log n)O(1)O(1)O(1)fff メモリワードのサイズがあり、インデックスを一定の時間で読み取ることができると想定する場合があり。xは、YΘ(logn)Θ(log⁡n)\Theta(\log n)x,yx,yx,y

1
エキスパートアルゴリズムで最適な加重多数との競合
専門家の問題では、人の専門家が毎日バイナリ予測を行い、明日雨が降るかどうかを予測する必要があります。んnn つまり、日では、エキスパートの過去の予測、1日目、2日目、… tの実際の天気、および明日の予測がわかり、翌日雨が降るかどうかを予測する必要があります。ttt1 、2 、... トン1,2,…t1,2,\ldots t 従来の加重マジョリティアルゴリズムでは、アルゴリズムは誤りを犯します。ここで、mは、最高の専門家の誤りの数です。O (ログn + m )O(log⁡n+m)O(\log n + m)メートルmm 私にとって、これは非常に弱い約束のように思われます。何人かの専門家の予測を組み合わせることからの利益は許されないからです。 各結果であると仮定、専門家の予測I日にTがあるP 、I 、T、及び日の結果tがあるoを、T。我々は、 ``最適重み付き多数決「」最適な重み関数として敵対定義することができ、W ∈ Δ ([ N ] )、日に敵によって判断するようtはとして定義されるS I G N (W ⋅ P T)を{ ± 1 }{±1}\{\pm 1\}私iitttp私、tpi,tp_{i,t}tttototo_tW ∈ Δ ([ N ] )w∈Δ([n])w\in\Delta([n])tttよ私グラムN (W ⋅ Pt)sign(w⋅pt)sign(w\cdot p_t)、すなわち、ベクトルに関する予測の重み付けされた過半数www。この表記を使用すると、以前の敵対者(最高の専門家)は単位ベクトルしか選択できませんでした。 次に、日目の最適誤差を1 、2 、... …

1
ユニバーサルインデックスは存在しますか?
非常に多数のの行を含み、各行に多数ののフィールドが含まれ、各フィールドに大きな固定ビット数が含まれるデータテーブルがある場合、「インデックス」構造を構築する方法はいくつかあります。次の操作は、テーブルとインデックスに対して時間で実行できます(および基準にして)。k O (k log N )N kNNNkkkO (k ログN)O(kログ⁡N)O(k\log N)NNNkkk 新しい要素をテーブルに挿入します。 テーブルから指定された要素を削除します。 フィールドの値のセットが与えられた場合、テーブルがフィールド1が最初、フィールド2が2のように辞書式順序にソートされたときに、指定されたフィールド値より大きいフィールド値を持つテーブル内の最初のレコードを取得します。 この構造を一般化して、操作3が完了すると、kフィールドの順序を指定して、テーブル内のレコードの順序を決定できます。k !k!k!kkk 明らかに、これはk!インデックス、フィールドの順序ごとに1つ。次に、操作には時間がかかります。O(k!klogN)O(k!kログ⁡N)O(k!k\log N) 演算が(比べて)はるかに速く、好ましくはO (k log k log N )時間であるアルゴリズムが必要です。kkkO(klogklogN)O(kログ⁡kログ⁡N)O(k\log k \log N) そのようなアルゴリズム/データ構造は存在しますか?もし存在していれば、誰かが今までにそれを公開して実装していたようですが、存在する兆候は見当たりません。逆に、おそらくそのようなアルゴリズムが存在しないことが証明できるでしょう。しかし、そのような証拠が存在するという兆候は見つかりませんでした。

2
この「ゲーム」(カウンターのリバランス)の価値は何ですか?
この質問は2週間前にCS.SEに投稿されましたが、満足のいく答えが得られませんでした。 次のゲームがあるとします。 無限に多くのカウンター、すべて0に初期化されています。{c1,c2,…}{c1,c2,…}\{c_1,c_2,\ldots\} 各ステップで、カウンターを選択し、その値を1増やします。cicic_i 残念ながら、ステップごとに、正の値を持つ各カウンターは1ずつ減少します。TTT また、カウンターの値はによって制限されているため、カウンターをこれ以上インクリメントすることはできません。MMM 1.好きなだけステップを与えられた場合、多くの正の値のカウンターに到達できますか? 2.ステップ後に、いくつの正の値のカウンターに到達できますか?T⋅M−1T⋅M−1T\cdot M - 1 質問(1)の場合、ここでは、正のカウンターの詳細なビルドを示します。≈Tlog(M)≈Tlog⁡(M)\approx T\log(M) 値カウンターが未満の場合: T−1T−1T-1MMM 値が厳密によりも小さい最小インデックスカウンターをインクリメントします。MMM (これは、カウンターの合計がステップごとに増加するようにバインドされているため、収束する必要があります。)TTT ましょ。r=Tr=Tr = T の間()c0&gt;1c0&gt;1c_0>1 a。while()c0&gt;crc0&gt;crc_0>c_r 増分crcrc_r b。r=r+1r=r+1r = r + 1 分析のために:最初の観察は、正のカウンターの数がです。rrr ここで、が到達した最大値とします。場合、ます。用我々得る、または一般にmrmrm_rcrcrc_{r}r=Tr=Tr=TM(1−1T)M(1−1T)M(1-\frac{1}{T})r=T+1r=T+1r=T+1mr(1−1T)=M(1−1T)2mr(1−1T)=M(1−1T)2m_r(1-\frac{1}{T})=M(1-\frac{1}{T})^2∀r≥T:mr=M(1−1T)r−T+1∀r≥T:mr=M(1−1T)r−T+1\forall r\geq T:m_r = M(1-\frac{1}{T})^{r-T+1} 次に、が達成されると、ます。これは、場合にループが停止することを意味します(積分またはゲーム終了戦略を与えるか、取る)。∀mr∀mr\forall m_rc0=mrc0=mrc_0=m_rmr&lt;1mr&lt;1m_r < 1 これにより、 M(1−1T)r−T+1&lt;1M(1−1T)r−T+1&lt;1M(1-\frac{1}{T})^{r-T+1} < 1 (1−1T)r−T+1&lt;M−1(1−1T)r−T+1&lt;M−1(1-\frac{1}{T})^{r-T+1} < M^{-1} (r−T+1)log(1−1T)&lt;−logM(r−T+1)log⁡(1−1T)&lt;−log⁡M({r-T+1}) \log (1-\frac{1}{T}) < -\log …

1
パターンを回避する順列のための階層的ソート戦略?
クラスの場合は順列の、我々はの順列並べ替えを期待することはできませんCを未満でO (ログ| C N |)の比較、慣例によりC、N:= C ∩ S N。CC\mathcal{C}CC\mathcal{C}O (ログ| Cん| )O(log⁡|Cn|)O(\log |\mathcal{C}_n|)Cん:= C∩ SんCn:=C∩Sn\mathcal{C}_n := \mathcal{C} \cap S_n 特に、がサブパターンによって閉じられている場合、Marcus-Tardosの定理(J. Foxによって洗練された)がそれに続きます。C n | ≤ C NここでCがあるスタンレー・Wilf定数のC。これは次の質問につながります。最大でO (n log C )の比較を使用してそのようなクラスをソートすることは可能ですか?この質問は、D。アーサーによる論文「高速ソートおよびパターン回避順列」の質問1を強化したものです。CC\mathcal{C}| Cん| ≤ Cん|Cn|≤Cn|\mathcal{C}_n| \leq C^nCCCCC\mathcal{C}O (n ログC)O(nlog⁡C)O(n \log C) このようなソート戦略は、本質的に「不均衡な」マージソートアルゴリズムを模倣するバイナリツリーで表すことができるようです。ここでの考え方は次のとおりです。順列与え、私たちは木を探しますT π葉標識のポイントによってπ、各ノードのためになるように、UのTがπ 2つのつの子サブツリー間の「オーバーラップが」だろうO (ログC )(最悪の場合または平均で)。ただし、この問題を解決するには、より複雑な構造が必要だと思います。それが肯定的な解決策を認めなければならない。ππ\piTπTπT_{\pi}ππ\piuuuTπTπT_{\pi}O(logC)O(log⁡C)O(\log C)

1
Goldberg&Tarjan:グラフでブロッキングフローを見つける方法
グラフでmaxflowを見つけるために、Goldberg&Raoアルゴリズムを実装したいと思います。私の問題は、すべての論文とレポートが「結果のグラフで、ブロッキングフローまたは値デルタのフローを見つける」と述べている更新手順です。彼らはすべて、ブロッキングフローを見つけるためにGoldberg&Tarjanを参照しています。理解できないことが2つあります。 デルタの価値の流れを見つけるにはどうすればよいですか? しかし、より重要なのは、どのようにしてブロッキングフローを見つけることができるかです。 質問2に関して、私は2つの論文(Goldberg&Tarjanによる「最大フロー問題への新しいアプローチ」と動的ツリーに関するもの)を読みました。どちらもそれほど難しくありませんでした。Goldberg&Raoに関するすべての論文/レポート/本は、Goldberg&Tarjanによる論文を参照しており、Goldberg&Raoはプッシュ/再ラベル付けアルゴリズムを使用せず、ブロッキングフローを見つけていることを強調しています。しかし、私の意見では、Tarjanはプッシュ/リラベルアルゴリズムのみを説明しており、フローのブロックについては何も見つかりません。 T.コーメン、「アルゴリズムの概要」、第3版 ゴールドバーグとラオによって最大フロー問題の日付に漸近最速アルゴリズム、時間に実行、ここでC = max c (u 、v )。このアルゴリズムは、push-relabelメソッドを使用しませんが、代わりにブロッキングフローの検出に基づいています。O (m i n (V2 / 3、E1 / 2)Elg(V2/ E+ 2 ) ∗lgC)O(min(V2/3,E1/2)Elg⁡(V2/E+2)∗lg⁡C)O(min(V^{2/3}, E^{1/2}) E \lg{(V^2/E + 2)} * \lg{C})C=maxc(u,v)C=maxc(u,v)C = \max c(u,v) A. Goldberg&S. Rao、「Beyond the Flow Decomposition Barrier」(オリジナルペーパー) O(Λmlog(n2/m)logU)O(Λmlog(n2/m)log⁡U)O (\Lambda m log(n^2/m)\log{U})

1
カーディナリティー制約付きの有向最小カットの近似アルゴリズム
有向グラフ上カーディナリティ制約付き最小 - -cut既知の近似結果があるかどうかを知りたいです。文献ではそのような結果を見つけることができませんでした。sssttt 問題は次のように定義されます。 インスタンス:有向グラフ、コスト関数、2つの頂点および整数。G=(V,E)G=(V,E)G=(V,E)w:E→R+0w:E→R0+w : E \to \mathbb{R_0^+}s,t∈Vs,t∈Vs,t \in Vkkk 溶液:アン -の留分、すなわちパーティション 2つのセットによう、とカットが最大である交差エッジの数、すなわち。ssstttVVVV1,V2V1,V2V_1, V_2s∈V1s∈V1s \in V_1t∈V2t∈V2t \in V_2kkk|{(u,v)∈E:u∈V1,v∈V2}|≤k|{(u,v)∈E:u∈V1,v∈V2}|≤k|\{ (u,v) \in E: u \in V_1, v \in V_2 \}| \le k 測定(最小化):カットのコスト:∑(u,v)∈E:u∈V1,v∈V2w(u,v)∑(u,v)∈E:u∈V1,v∈V2w(u,v) \sum_{ (u,v) \in E : u \in V_1, v \in V_2 } w(u,v) 「カーディナリティー制約および複数基準(マルチ)カットの問題」では、autorsは、この問題が無向グラフの場合でも強くNP困難であることを証明しています。 主に有向グラフの近似アルゴリズムに関心がありますが、無向の場合の近似結果も役立つ場合があります。 洞察をありがとう。

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