タグ付けされた質問 「graph-algorithms」

ヒューリスティックを除くグラフのアルゴリズム。

1
有界次数グラフでクリークを見つけるアルゴリズム
とグラフを考えます nnn 頂点と最大次数 ΔΔ\Delta。グラフに何かあるかどうかを知りたいsss クリーク、どこ s≤Δs≤Δs \leq \Delta そしてそれらの両方はに比べて小さいです nnn。私はそのようなクリークを1つだけ見つける必要があります(または存在しないことを証明します) これを行う簡単な方法があります:各頂点に対して vvv、すべてをテスト sss-の隣人のサブセット vvv。したがって、仕事は≈n(Δs−1)≈n(Δs−1)\approx n \binom{\Delta}{s-1}です。 これより効率的なアルゴリズムはありますか?指数関数的な高速化を達成することもできますか?

2
st max-flowからst min-cutを見つける最も速い方法は?
エッジに単位容量がある場合、Ford-Fulkersonは、フローのサイズとノードの数に線形で時間的にスパースstフローを見つけることができます。 スパース/低ボリュームの最大フローの場合、スパースstフローを使用して、フローのサイズとノード数に比例した時間のst最小カットをどのように見つけることができますか?

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困難であることを証明しています。 主に有向グラフの近似アルゴリズムに関心がありますが、無向の場合の近似結果も役立つ場合があります。 洞察をありがとう。

1
TCS /複雑性理論にモジュラーグラフ分解のアプリケーションはありますか?
TCS /複雑性理論におけるモジュール式グラフ分解のいくつかのアプリケーションは何ですか? 証明や上限/下限での使用に特に興味があります。 [1] モジュラーグラフ分解、ウィキペディア。 [2] Modular Decomposition、TCS.SEのリファレンス。

1
組み合わせ埋め込みでの高速削除/縮小
平面グラフの組み合わせの埋め込みで、エッジの削除または縮小を行うサブリニアアルゴリズムがあるのでしょうか。 組み合わせの埋め込みでは、GとG *の頂点を同時に維持する必要があるため、プライマルの収縮は双対の削除であることを考慮に入れて、削除を行い、双対に従って主の順列を更新するだけで十分です(逆も同様) 。しかし、それを行う明白な方法は、それらを再計算することです。もっと良いことはできますか? 2番目の質問:同じ頂点間の複数のエッジを取り除くのに役立つテクニックはありますか?(2番目の問題で私が目にする唯一の解決策は、たとえばm = 6nでグラフが表示されるまで、複数のエッジの削除を延期することです。ここで、m-エッジの数、n-頂点の数、これにより時間が償却されますO (1))おそらく、この時間を償却しないようにすることができるいくつかのテクニックがありますか?(私はまたo(n)ソリューションに興味があります、必ずしもO(1)ではありません) どうもありがとうございました!

1
グラフアルゴリズムの実行時間の下限
RAM / PRAM /計算モデルのグラフアルゴリズムの実行時間には、重要な下限がありますか?ここではNP硬度の結果を探していません。 以下は私が見つけた結果です[参考文献L92を参照]: nサイクルの3色分けには、時間必要です。Ω(log∗n)Ω(log∗⁡n)\Omega(\log^*{n}) 最短パス(負の重みあり/なし)、Mincut、st最大フロー、最大(カーディナリティ/加重)マッチングなどの問題の下限を取得する方向に進行/作業があるかどうか知りたいと思いました。これに関連する参照は非常に高く評価され、役に立ちます。 参照 [ L92 ] N. Linial、分散グラフアルゴリズムの局所性、SIAM Journal on Computing、1992、21(1)、pp。193-201 編集:コメントでロビンコタリによって示唆されたように、私は質問をより直接に向けています。

1
グラフの分割、サブセットエッジの重み内でのバランス
各サブセット内のエッジの重みの合計が(ほぼ)等しくなるようにグラフを2つのサブセットに分割しようとするアルゴリズム(近似アルゴリズムは問題ありません)へのポインターと、2つの間のエッジの重みの合計に興味があります。サブセットは(ほぼ)最小です。 どんなポインタでも大歓迎です。

2
マイナークローズドファミリの最大カット
よく禁止未成年者とクローズドファミリーから平面グラフことは知られてい、有界ツリー幅を持つグラフもないと閉じファミリーグラフであるHのKマイナーとして。K3 、3、K5K3,3,K5K_{3,3}, K_{5}HkHkH_{k} 制限付き最大カットのグラフは、閉じたファミリーグラフを形成すると想定しています。マイナーとしてHを含まない任意のグラフが与えられた場合、最大カットをおよそ見つける方法。GGGHHH ありがとう! 補遺: 関連トピックは、「最大カット問題の複雑さについて」の第6章制限付きツリー幅のグラフにあります。PTASは、ツリー幅を増やすことなくツリー分解を変更することから始まります。 1)は二分木です。TTT 2)もしノード 2人の子供ありのJ 1およびJ 2、その後、X I = X J 1 = X jの2を。i∈Ii∈Ii \in Ij1j1j_{1}j2j2j_{2}Xi=Xj1=Xj2Xi=Xj1=Xj2X_{i}=X_{j1}=X_{j2} 3)ノードならば一人の子供の持つjは、その後、いずれかのX J ⊂ X Iと| X i − X j | = 1、またはX I ⊂ X Jと| X j − X i | = 1。i∈Ii∈Ii \in IjjjXj⊂XiXj⊂XiX_{j} \subset …

3
グラフで三角形を見つける:プロパティテスト以外のアプローチ?
分散設定で三角形とネットワークモチーフ(一定サイズのサブグラフ、グラフレットとも呼ばれます)を見つけるためのアルゴリズムを紹介する論文に取り組んでいます。グラフ内の三角形の数と必要な通信負荷のトレードオフを特徴付けます。私は、集中型モデルでこの質問に対して行われた作業の参照を探しています。 問題は、私がこのトピックで見つけたほぼすべての理論的なフレーバーがプロパティテストのフレームワーク内にあったことです。違いを説明するために、個の頂点を持つグラフの場合を考えてみましょう。これは、すべてエッジ共有する三角形で構成されています。プロパティテストの観点から見ると、このグラフは三角形のないものに非常に近く(その重要なエッジを削除することで)、三角形の数は直線的になっています。これは、私たちの基準では多くのことです。、N - 2 (1 、2 )んんnn − 2ん−2n-2(1 、 2 )(1、2)\left(1,2\right) どんな参考文献でも評価されます。 編集:私は主に、グラフに三角形が含まれているかどうかをすばやく判断できるアルゴリズムに興味があります。三角形(または他のサブグラフ)リストアルゴリズムの場合、アルゴリズムはそれらをすべてリストする必要があるため、このようなインスタンスをある意味難しくするため、実行時間はグラフ内の三角形の数によって下から自然に制限されます。決定問題(「三角形なし」か「なし」)の観点から見ると、三角形が多数あると問題を簡単に見つけることができます。

1
自己回避ランダムウォークをどのようにシミュレートする必要がありますか?
確率的隣接行列をべき乗することにより、グラフ全体のランダムウォークをシミュレートする簡単な方法がありますが、ランダムウォークが自己回避であると尋ねると、問題はより困難になります。つまり、プロセスは、感染症などのパスを使用してグラフをトラバースする必要があります。 エッジ確率が大きい場合は、単純なモンテカルロアルゴリズムがあります。各試行で、確率1 − p eで各エッジを削除し、新しいグラフの接続されたコンポーネントを計算し、それぞれについて1の行列でカウント行列をインクリメントします。接触したコンポーネント。最後に試行回数で割ります。eee1 − pe1−pe1-p_e 確率が非常に小さいときに、この計算を行うためのアルゴリズムを知っている人はいますか? グラフの関連性が高すぎない場合は、いくつかの最小カットセットを見つけて、それらに包含/除外カウントを行うことができますが、そのようなアプローチは、カットセットのサイズが倍に指数関数的です。明白な計算を介してすべてのクリークサブグラフを個別に処理するなど、接続性の高い特定のケースにもさまざまな最適化があります。より一般的なアイデアはありますか?

1
リソースが制約された最短パス(RCSP)のNPハードなグラフのクラスはどれですか。
私が取り組んでいる問題を、既知のNPハード問題にリンクしようとしています。リソースに制約のある最短経路問題として問題をモデル化できると思います。ただし、グラフの構造は完全に恣意的ではありません。したがって、RCSPが困難になる時期を知ることは有用です。DAG、平面DAG、または次数に制限のあるDAGは難しいですか?どんな助けでも大歓迎です!

2
ディペンデンシーグラフからの冗長なエッジの削減
多くの冗長エッジを含む依存関係のDAGがあります(以下の例を参照)。最小限のサブグラフを見つける「クイック」アルゴリズム(つまり、数千のノード/エッジを持つグラフを処理できる)が必要です。 例えば: A -> B -> C A -> C つまり、AはBの前提条件であり、BはCの前提条件であり、AもCの前提条件です。この場合、A-> Cは冗長です(BはCに到達するためにすでに必要であり、AはBに到達するために必要なので) 。 アルゴリズムを研究してからしばらく経ちましたが、どこから始めればよいかわかりません。 ちなみに、アルゴリズムがグローバル最小値、ローカル最小値を見つけることが重要であることは重要ではありません(エッジ削減は、処理の次の段階のランタイム最適化にすぎません)。 また、これはプログラミングではなくCS QAであることに気づきましたが、私のプログラムはPythonで書かれているため、ご存知の場合に備えて、この削減を行うためのpythonモジュールまたはオープンソースについて学ぶことができれば幸いです。 前もって感謝します!

4
「チェスを解く」ことの計算の複雑さは何ですか?
後方誘導の基本的な考え方は、プレーヤーXが勝利するゲームのすべての可能な最終位置から始めることです。チェスについては、ホワイトがブラックをチェックメイトできるすべての方法を見てください。今度は、ホワイトがそれらの位置の1つに移動することを可能にするすべての可能な移動/位置に逆戻りします。ホワイトがそのような立場に自分自身を見つけた場合、彼女は関連するチェックメイトの動きに移動することで勝つことができます。次に、別のステップを逆方向に進めます。最終的に、私たちはホワイトが行うことができるすべての可能な最初の動きに戻ります。重要なのは、これを実行したら、ブラックが行うすべての動きに対してホワイトが最高の反応を示すことがわかったということです。 最近(過去5年ほど)、チェッカーはこのようにして「解決」されました。明らかに、Noughts and Crosses(植民地が「三目並べ」と呼ぶかもしれないもの)は古くから解決されています。少なくともこのxkcdからですが、おそらくずっと前に。 だから問題は:この種の手順はどの要素に依存するのですか?おそらく法的地位の数。しかし、おそらく、特定のノードでの合法的な移動の数...そして、これを考えると、この種の問題はどのくらい複雑ですか? おまけの質問:2000ドルのPCが1日でチェッカーを解決できるようになるまでどれくらいかかりますか?チェス?行く?(もちろん、このためには、家庭用コンピューターの増加する速度も考慮する必要があります...) これらのゲームをツリーとして表すことができるため、graph-algorithmsタグを追加しましたが、タグを悪用している場合は、より適切なものを追加してください

3
nペアのノード間のルートの存在
ノードの有向非循環グラフが与えられた場合、ノードの次のnペア(1 → n + 1 )、… 、(n → n + n )の間にパスがあるかどうかをどのように判断できますか?そこに簡単なアルゴリズムであり、O (nが⋅ (N + M ))各ノードからの検索実行することによって(mはエッジの数である)1 ... N、それはより良好に行うことができますか?2 n2n2n(1 → n + 1 )、… 、(n → n + n )(1→n+1),…,(n→n+n)(1 \rightarrow n+1), \ldots, (n \rightarrow n+n)O (N ⋅ (N + M ))O(n⋅(n+m))O(n \cdot (n + m))1 … n1…n1 \ldots …

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