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

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

1
スワップ数の最適なソートアルゴリズム
数字のシーケンスが与えられた場合、O (n ln n )比較およびO (n )スワップ/ムーブでソートできますか?その問題に関する出版物へのポインタまたはΩ (n ln n )の下限を示す反論が役立ちます。nnnO (n lnn )O(nln⁡n)O(n \ln n)O (n )O(n)O(n)Ω (n lnn )Ω(nln⁡n)\Omega(n \ln n)

4
効率的なグラフアルゴリズムの設計において、スパース性の最も重要な概念は何ですか?
「スパースグラフ」にはいくつかの競合する概念があります。たとえば、表面埋め込み可能なグラフはスパースと見なすことができます。または、エッジ密度が制限されたグラフ。または、高い胴回りのグラフ。大きな展開を持つグラフ。制限されたツリー幅を持つグラフ。(ランダムグラフのサブフィールド内であっても、スパースと呼ばれるものに関してはわずかにあいまいです。)など。 効率的なグラフアルゴリズムの設計に最も影響を与えた「スパースグラフ」の概念とその理由は何ですか。同様に、「高密度グラフ」の概念は何ですか?(注意:Karpinskiは、密なグラフの1つの標準モデルの近似結果に多大な努力をしてきました。) J. Nesetrilが(P. Ossona de Mendezと一緒に)統合された(漸近的な)フレームワーク内のグラフのスパース性の測定値をキャプチャするプログラムについての講演を見ました。私の質問-はい、多分かなり主観的であり、異なるキャンプを期待しています-は、アルゴリズムでのスパース性の使用に関する多面的な視点をキャッチしたいという欲求によって動機付けられています(そして、問題の私自身の理解のギャップを埋めます)。

2
ボトルネック最短パスの高速アルゴリズムのリファレンス
ボトルネックの最短パスの良いリファレンスを探しています。具体的には、エッジの重みを持つ無向グラフの頂点sとtを指定すると、sからtへの最短パスが必要になります。パスの長さはそのパスの最大エッジです。これは、エッジの重みの中央値を見つけ、(慎重に)エッジの半分を再帰的に削除することにより、O(n + m)時間で解決できます。 誰もこれの参照を知っていますか?

2
低次元でのユークリッド平方の最大カット
ましょうx1,…,xnx1,…,xnx_1, \ldots, x_n、平面内の点であるR2R2\mathbb{R}^2。点を頂点として、エッジの重みが完全なグラフを考えます。常に総重量の少なくとも\ frac 2 3の重量カットを見つけることができますか?そうでない場合、\ frac 2 3を置き換える定数はどれですか?∥xi−xj∥2‖xi−xj‖2\|x_i - x_j\|^22323\frac 2 32323\frac 2 3 私が見つけることができる最悪の例は、正三角形の3点で、\ frac 2 3を達成し2323\frac 2 3ます。ランダムな分割は\ frac 1 2を生成することに注意してください1212\frac 1 2。しかし、低次元では、ランダムよりも優れたクラスタリングができることは直感的に明らかです。 k> 2のmax-k-cutではどうなりますか?次元d> 2はどうですか?そのような質問に答える枠組みはありますか?Cheegerの不等式については知っていますが、それらはスパースカット(最大カットではない)に適用され、通常のグラフでのみ機能します。 (質問は、分散を最小限に抑えるためにコンピューターグラフィックスで光源をクラスタリングする問題に触発されています)。

1
akinatorまたは20qの背後にあるアルゴリズムは何ですか?
タイトルはそれ自体を物語っています。これがAkinatorと20Qです。 これらのゲームの原則は、ユーザーが選択したエンティティに関するいくつかの質問をユーザーに尋ねることです。そして、このエンティティが何であるかを見つけます。アルゴリズムの中核は、すべての質問に正しく答えられない可能性のあるユーザーに対処しながら、各ラウンドで「最も役立つ質問」を見つけることです。 「最も有用な質問」とは、最適な場合に候補エンティティの聴衆(または数?)を2つの等しい半分に分割する、最も多くの情報を与える質問として定義されます。 いくつかのアルゴリズムを説明した論文を見つけました(「アルゴリズム」という言葉は使われていませんでしたが、証明をアルゴリズムに変えることができました)。残念ながら、私はこの論文を再び見つけることはできません。

2
カーディナリティ述語を使用した有界クリーク幅のグラフに関するMSOL最適化問題
CMSOLは、モナド2次論理、つまり、ドメインが頂点とエッジのセットであるグラフのロジックをカウントし、頂点と頂点の隣接関係とエッジと頂点の入射の述語があり、エッジ、頂点、エッジセットと頂点の定量化がありますセットは、述語があるの大きさかどうかを表しあるモジュロ。Cardn,p(S)Cardn,p(S)\textrm{Card}_{n,p}(S)SSSnnnppp Courcelleの有名な定理の場合は、その状態グラフのプロパティがCMSOLで表現され、その後、すべてのグラフのためのG高々木幅のKかどうかを線形時間で決定することができるΠはの木分解することを提供保持し、Gが入力に与えられています。定理の以降のバージョンでは、ツリー分解が入力に与えられるという要件がなくなり(Bodlaenderのアルゴリズムで計算できるため)、決定だけでなく最適化も可能になりました。MSOL式所与すなわちφ (S )我々はまた、最大または最小のセットを計算することができS満たすφをΠΠ\PiGGGkkkΠΠ\PiGGGϕ(S)ϕ(S)\phi(S)SSS。ϕ(S)ϕ(S)\phi(S) 私の質問は、クールセルの定理を有界クリーク幅のグラフに適応させることに関するものです。同様の定理があり、頂点、エッジ、頂点セットを定量化できるが、エッジセットは定量化できないMSOL1がある場合、クリーク幅kのグラフ(所定のクリーク式)が与えられ、すべての固定kについて決定できるグラフか線形時間でGを満たすいくつかのMSOL1式φ。私が見たすべての参照が指すGGGkkkkkkGGGϕϕ\phi Courcelle、Makowsky and Rotics、Theory of Computing Systems、2000による有界クリーク幅のグラフに関する線形時間可解最適化問題。 私はこの論文を読み込もうとしましたが、MSOL1の正確な定義に関して自己完結型ではなく、率直に言って読みにくいです。入力にクリーク式が指定されている場合、グラフのクリーク幅によってパラメーター化されたFPTで正確に最適化できることに関して2つの質問があります。 MSOL1は、ある数を法とする集合のサイズをテストするための述語を許可しますか?Cardn,p(S)Cardn,p(S)\textrm{Card}_{n,p}(S) 式が与えられたときに、クリーク幅によってパラメーター化されたFPTのMSOL1式ϕ (S )を満たす最小/最大サイズセットを見つけることは可能ですか?SSSϕ(S)ϕ(S)\phi(S) これらの両方の質問について、これらの結果を主張するときに引用する正しい参照が何かを知りたいです。前もって感謝します!

2
2つのキューを使用したリストの反転
この質問は、スタック操作ごとに償却時間で2つのキューを使用してスタックをシミュレートできるかどうかに関する既存の質問に触発されています。答えは不明のようです。以下に、より具体的な質問を示します。これは、すべてのPUSH操作が最初に実行され、次にすべてのPOP操作が実行される特殊なケースに対応しています。最初に空の2つのキューを使用して、要素のリストをどれだけ効率的に逆にすることができますか?法的操作は次のとおりです。O(1)O(1)O(1)NNN 入力リストの次の要素をキューに入れます(どちらかのキューの末尾に)。 どちらかのキューの先頭にある要素をデキューし、再度(いずれかのキューの末尾に)エンキューします。 いずれかのキューの先頭にある要素をデキューし、出力リストに追加します。 入力リストが要素で構成されている場合、逆の出力リスト[N、N-1、...、2、 1]振る舞いますか?O(N)よりも速く成長するという証明は、元の質問を否定的に解決するため、特に興味深いでしょう。[1,2,...,N−1,N][1,2,...,N−1,N][1,2,...,N-1,N][N,N−1,...,2,1][N,N−1,...,2,1][N,N-1,...,2,1]O(N)O(N)O(N) 更新(2011年1月15日):提出された回答とそのコメントに示されているように、問題はO(NlogN)O(Nlog⁡N)O(N \log N)で解決できます。\ Omega(N)の下限Ω(N)Ω(N)\Omega(N)は自明です。これらの境界のいずれかを改善できますか?

2
LPの最小最大解
もちろん、今日では線形計画法はよく理解されています。実行可能なソリューションの構造と最適なソリューションの構造を特徴付ける多くの作業があります。強力な双対性、ポリタイムアルゴリズムなどがあります。 しかし、LPの最小最大解については何がわかっていますか?または、同等に、最大の最小解? (これは実際には研究の質問ではありませんが、休日にはあまり技術的でないものがあるかもしれません。ただ興味があり、グーグルで調べたところ、適切なキーワードが欠落している必要があると感じました。勉強すべき問題ですが、その問題について言及している散発的な論文をいくつか見つけました。 物事を単純にするために、LPのパッキングとカバーに焦点を当てましょう。パッキングLPでは、非負行列が与えられます。ベクトルxがある可能なら、X ≥ 0とA X ≤ 1。実行可能であればxは最大であり、貪欲に成分を増やすことはできないと言います。すなわち、場合Y ≥ 0とY ≠ 0は、その後、X + Yは不可能です。そして最後に、xはAAAバツバツxX ≥ 0バツ≥0x \ge 0A X ≤ 1Aバツ≤1Ax \le 1バツバツxy≥ 0y≥0y \ge 0y≠ 0y≠0y \ne 0x + yバツ+yx + yバツバツx最小最大のソリューション、それが目的関数最小化した場合にすべて最大のソリューションの中で。∑私バツ私∑私バツ私\sum_i x_i (同様の方法で、カバーLPの最大最小解を定義できます。) 最小最大ソリューションのスペースはどのように見えますか?どうすればそのような解決策を見つけることができますか?そのような解決策を見つけることはどれほど難しいですか?このようなソリューションをどのように近似できますか?誰がそのようなことを研究し、それに対する正しい用語は何ですか? これらの質問はもともとはエッジ支配セットと最小最大マッチングによって動機づけられました。最小の最大マッチングが最小のエッジ支配セットであることはよく知られています(かなり簡単にわかります)。逆に、最小エッジ支配セットが与えられると、最小最大マッチングを構築するのは簡単です。 つまり、本質的には同じ問題です。どちらの問題もNPハードとAPXハードです。些細な2近似アルゴリズムがあります:最大マッチング。 ただし、「自然な」LPリラクゼーションは非常に異なって見えます。エッジ支配セット問題を取り、自然なLPリラクゼーションを形成する場合、カバーLPを取得します。しかし、最小の最大一致を見つける問題を取り、LP緩和を考え出そうとすると、何が得られますか?もちろん、部分一致はパッキングLPの実行可能なソリューションです。その場合、最大の部分的マッチングはそのようなLPの最大の解であり、したがって最小の最大の部分的マッチングはそのようなLPの最小の最大解です。:)

1
樹木分解の典型的な硬さ?
最悪の場合、ツリーの分解は困難ですが、貪欲な方法は、小さな実生活のネットワークでは最適に近いようです。 あるクラスのグラフの「典型的な」インスタンスのツリー分解の困難さについて何か知られていますか? ツリー分解のための貪欲な方法がひどく機能するグラフのファミリーの例はありますか?

3
一様にランダムな解を返すアルゴリズムによって達成される最良の近似比の問題は何ですか?
一様にランダムな解を返すアルゴリズムによって達成される最も知られている近似比の問題は何ですか? 順列フローショップ問題そのような例を知っています。p e r m | CのMがX:紙の「順列フローショップスケジューリングのためのタイトな境界」Viswanath NagarajanとマキシムSviridenkoジョブのランダム配列が保証有する証明(個機械および現在最もよく知られているジョブの数)。F| p個の電子 r m | Cm、XがF|perm|CmaバツF|perm|C_{max}2 m i n { m 、n }−−−−−−−−−√2m私n{m、n}2\sqrt{min\{m,n\}}mmmnnn

3
マルチカットの問題
名前またはこの問題への参照を探しています。 重み付きグラフが与えられると、頂点のまでの分割を見つける セットそうカットエッジの値を最大化するように: 一部のセットは空にできることに注意してください。したがって、は入力の一部ではないことを除き、問題は本質的に最大kカットです。アルゴリズムは任意のを選択できますn = | V | S 1、... 、S N C (S 1、··· 、S N)= Σ I ≠ J(Σ (U 、V )∈ E :U ∈ S 、I、V ∈ SのJ W (U 、V )G = (V、E、w )G=(V、E、w)G = (V, E, w)n = | V|n=|V|n = |V|S1、… 、SnS1、…、SnS_1,\ldots,S_n S i …

1
3SAT-Satisfiabilityの扱いやすさの条件
私が具体的に不思議に思っているのは、そのような問題が扱いやすいことを保証するために、3SAT式を満たす割り当ての割合に興味深い条件があるかどうかです。 たとえば、2 nの可能な割り当てのうちがブール式を満たす3SAT問題のクラスがあるとします。満足できる割り当てを効率的に見つけることができますか?何のためεが Pになる問題がありますか?ϵ(n)2nϵ(n)2n\epsilon(n) 2^n2n2n2^nϵϵ\epsilon メモの編集:混乱を解消するために、をϵ (n )に置き換えました。ϵϵ\epsilonϵ(n)ϵ(n)\epsilon(n)

3
変化する無向グラフのコンポーネントを追跡するオンラインアルゴリズムはありますか?
問題 時間の経過とともに変化する無向グラフ(マルチエッジ)があり、ノードとエッジが挿入および削除される場合があります。グラフを変更するたびに、このグラフの接続コンポーネントを更新する必要があります。 プロパティ 追加のプロパティは、2つのコンポーネントが再接続されないことです。明らかに、グラフは任意の量のサイクルを持つことができます(そうでなければ、解は簡単になります)。エッジノードが含まれていない場合、そのノードは採用されません。ただし、、それが可能に変える。eeennnn∈en∈en \in en∉en∉en \notin e アプローチ 私はこれまでに2つの可能なアプローチを持っていますが、あなたが見るようにそれらは恐ろしいです: 遅い状態なし 毎回、変更された要素からグラフを検索(dfs / bfs)できます。これはスペースを節約しますが、変更ごとにO(n + m)があるため低速です。 ステートフルfast(-er)(?)アプローチ 各ノードのすべての可能なパスをすべての可能なノードに保存できますが、正しく表示された場合、O(n ^ 4)のメモリが必要になります。しかし、ランタイムの改善がどのようになっているのかわかりません(1つでもあれば、同じコンポーネント内のすべてのノードの情報を最新に保つ必要があるため)。 質問 その問題について、またはおそらく構築できるいくつかのアルゴリズムについて、どのように指針を持っていますか? 注意 ランタイム/メモリの大幅な改善があれば、2つのコンポーネントが1つであると時々言う非最適なソリューションで生きることができますが、もちろん最適なソリューションを好むでしょう。

2
前処理が可能な高速スパースブール行列積
2つの非常にまばらなブール行列を乗算するための最も実際的に効率的なアルゴリズムは何ですか(たとえば、N = 200で、100-200の非ゼロ要素がいくつかあります)。 実際、AにBを掛けると、Bが事前定義され、それらに対して任意の複雑な前処理を行うことができるという利点があります。また、製品の結果は常に元の行列と同じくらいまばらであることも知っています。 「かなり単純な」アルゴリズム(行ごとにAをスキャン、A行の各1ビット、または結果とBの対応する行)は、非常に効率的であり、単一の製品を計算するのに数千のCPU命令しか必要ありません。 、それを超えるのは簡単ではなく、一定の係数を超えるだけです(結果には数百の1ビットがあるため)。しかし、私は希望を失い、コミュニティに助けを求めているわけではありません:)

1
正のトポロジカル順序付け、テイク2
これは、David Eppsteinの最近の質問へのフォローアップであり、同じ問題に動機付けられています。 頂点に実数の重みを持つDAGがあるとします。最初は、すべての頂点にマークが付いていません。マークされた頂点のセットを変更するには、(1)マークされていない先行のない頂点をマークするか、(2)マークされた後続のない頂点をマーク解除します。(したがって、マークされた頂点のセットは常に半順序のプレフィックスです。)マークされた頂点の総重量が常に非負になるように、すべての頂点がマークされて終了する一連のマーク/マーク解除操作を見つけたい。 このような一連の操作を見つけるのはどれほど難しいですか?Davidの問題 とは異なり、この問題がNPにあるかどうかは明らかではありません。原則として(例はありませんが)、すべての有効なムーブシーケンスは指数関数的な長さを持ちます。私が証明できる最善のことは、問題がPSPACEにあることです。 マーク解除操作は実際には不要ですか? 有効な移動シーケンスがある場合、頂点のマークを解除しない有効な移動シーケンスが必要ですか?肯定的な答えは、この問題をデイビッドの問題と同一にします。一方、マーク解除が必要な場合は、それを証明する小さな(一定サイズの)例が必要です。

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