タグ付けされた質問 「graphs」

グラフ、エッジで接続されたノードの離散構造に関する質問。人気のフレーバーは、エッジキャパシティを持つツリーとネットワークです。

2
次数分布からグラフを再構築する
次数分布が与えられた場合、与えられた次数分布に従うグラフをどのくらい速く構築できますか?リンクまたはアルゴリズムのスケッチが良いでしょう。アルゴリズムは、グラフを作成できない場合は「no」を、複数のグラフを作成できる場合はいずれかの例を報告する必要があります。

1
重み付きユニパシーグラフで最短経路を見つける
有向グラフは、グラフ任意の2つの頂点とに対して、からへの単純なパスが最大1つである場合、ユニパシーであると言われます。uuuvvvG=(V,E)G=(V,E)G=(V,E)uuuvvv 各エッジに正または負の重みがあり、負の重みサイクルが含まれていないような、ユニパスグラフが与えられたとします。GGG これから、ソースノードからすべてのノードへのすべての最短パスを見つけるアルゴリズムを見つけたいです。O(|V|)O(|V|)O(|V|)sss 私はこの問題にどのように取り組むのか分かりません。負のウェイトサイクルが含まれていないという事実と、もちろんノードからまでの最大1つの単純なパスをどのように使用できるかを確認しようとしています。uuuvvv

3
幅優先検索での「幅」の意味は何ですか?
私は幅優先検索について学んでいて、なぜBFSがそう呼ばれるのかという疑問が頭に浮かびました。「CLRSによるアルゴリズムの紹介」の本で、私はこれについて次の理由を読みました。 幅優先探索は、発見された頂点と発見されていない頂点の間の境界を、境界の幅全体に均一に拡張するため、このように呼ばれています。 しかし、私はこの発言の意味を理解することができません。私はこの「フロンティア」という言葉とそのフロンティアの幅について混乱しています。 それで、私のような初心者にとって理解しやすい方法でこの質問に誰かが答えてもらえますか?

1
加重されていない二部グラフの最大マッチングのサイズをどれだけ速く計算できますか?
重み付けされていない2部グラフの最大マッチングのサイズを、最大マッチングの計算よりも効率的に(たとえば、より高速に)計算する方法はありますか? ロングショットですが、このような使い捨ての計算を回避することは、多くの場合興味深い問題です。 動機 私が解決しようとしている問題は 、2つのセットのサイズが異なるmatch-2です。小さいセットのすべての頂点をカバーするマッチングがあるかどうかを確認する必要があります。最大マッチングのサイズを知ることで、それが小さいセットのサイズ以下であるかどうかを確認できます(そのようなことが可能である場合、結果が「はい」の場合は常に、小さいセットをカバーするマッチングがあります「あなたはそのサイズが何であるかを効果的に知っていますが、その場合にのみです)、しかしそれは厳密に必要ではありません:サイズを計算せずに答えを計算する方法があるならば、それは私にとって良いことです。

1
Barabasi-Albertを使用してべき乗次数分布を持つスケールフリーネットワークを生成する
一部の論文に記載されている合成ネットワーク(グラフ)を再現しようとしています。 Barabasi-Albertモデルが「べき乗則の次数分布を持つスケールフリーネットワーク」を作成するために使用されたと述べられています。PA(k)∝k−λPA(k)∝k−λP_A(k) ∝ k^{-λ} PAPAP_Aは、次数ノードの確率を返す確率分布です。たとえば、は、ネットワークからノードをランダムに選択し、2次のノードを取得する確率を示します。P A(2 )kkkPA(2)PA(2)P_A(2) 1つの論文での平均次数ストロークは4であるように見え、最小は2 です。最大についての言葉はありません。他の論文では指定されていません。ネットワークを定義することはそれほど重要ではないようです。k kkkkkkkkkk ノードの数と同様に、ラムダλ値が与えられます。組み合わせはnnn n = 50000、λ= 3、2.7、2.3、論文あり 他の論文では、n = 4000およびλ= 2.5、またはn = 6000およびλ= 3 Barabasi-Albertアルゴリズムを実装するライブラリを探しましたが、それらにはラムダや平均次数とは異なるパラメーターが必要なようです。1つはNetworkXで、もう1つはGraphStreamです(ここでの実装)。彼らは同様の方法で働き、次のことを求めます: n:int-ノードの数 m:int-新しいノードから既存のノードに接続するエッジの数。各ステップで追加されるエッジの数 設定mを計算して比較可能なグラフを生成するにはどうすればよいですか? ここにいくつかの参照があります: 相互に依存するネットワークにおける故障の破滅的なカスケード、Buldyrev等。2010、別途提供される補足情報 サイバーフィジカルシステムの小さなクラスター、Huang et al。2014 相互依存ネットワークにおける破局的な障害のカスケード、ハブリン等。2010年、これはArxivに関するものであり、最初の これらの論文は、これらのグラフのいくつかの特性を分析的に研究するために「生成関数」を使用したことに注意してください。ただし、これらのモデルでシミュレーションを実行するため、何らかの方法でこれらのネットワークを生成している必要があります。 ありがとう。

3
ガソリンスタンドの問題のアルゴリズムを理解する
ガスステーションの問題我々が与えられているの都市とそれらの間の道路。各道路には長さがあり、各都市には燃料の価格が定義されています。道路の1つの単位は燃料の1つの単位を要します。私たちの目標は、できるだけ安価な方法でソースから目的地に行くことです。私たちのタンクはいくつかの値によって制限されています。{ 0 、… 、n − 1 }nnn{0,…,n−1}{0,…,n−1}\{ 0, \ldots, n-1 \} アルゴリズムを理解しようとするので、解決策を計算するための手順を手動で書き留めました。残念ながら私は行き詰まりました-ある時点で考慮すべきエッジがありません、理由がわかりません、おそらく何かが足りないのです。 例: 道路: 0 ----------- 1 ------------ 2 -------------- 3 (それはしません単純である必要があります。グラフは任意です。つまり、0-> 2、0-> 3、1-> 3などの道路が存在する可能性があります。) ソース:0、デスティネーション:3、タンク:10ユニット 燃料価格:0 :10ユニット、1:10ユニット、2:20ユニット、3:12ユニット 長さ:0-> 1:9ユニット、1-> 2:1ユニット、2-> 3:7ユニット 最適解: 0で9ユニット、1で8ユニットを入力します。合計コストは170ユニット(9 * 10 + 8 * 10)になります。 そこで、ここに示すように計算してみました(2.2項) GV[u] is defined as: GV[u] = { TankCapacity - …

1
これはNPハードですか?証明できません。
私は問題を抱えており、NP難しいと思いますが、それを証明することはできません。 レイヤーグラフは次のとおりです。ここで、レイヤー0が最も高いレイヤー、レイヤーLが最も低いレイヤーです。 レイヤー間にいくつかの有向エッジがあり、エッジ(A、B)はノードAがノードBをカバーできることを示します。AがBをカバーできる場合、AからBへのパス上のすべてのノードがBをカバーでき、Bがカバーできます。自体。 最後に、ノードSのセットがあります。別のノードANSのセットを選択し、Sの各ノードqに対して、ANSにノードpが存在し、pがqをカバーしていることを確認する必要があります。 すべてのノードにはコストがあり、ANSの設定の総コストを最小限に抑える必要があります。 これはNP難しい問題ですか?そう思いますが、証明できません。 私たちを手伝ってくれますか? どうもありがとうございました。
11 graphs  np 

1
有向グラフのst(単純)パスの平均長
事実、所与の -パス列挙には効率的な方法があるかもしれません、#はP完全問題である計算(または少なくとも近似)の平均長さ -パスそれらを列挙することなく?パスが頂点を再訪することが許可されている場合はどうなりますか?ssstttsssttt 特別なグラフの関連する結果も参考になります。

1
指示されたunion-find
エッジを動的に追加して特定のクエリを実行できる有向グラフについて考えGGGます。 例:分離セットフォレスト 次の一連のクエリについて考えてみます。 arrow(u, v) equiv(u, v) find(u) 最初のものは、矢印追加場合は、2番目の一方が決定し、グラフにしU ↔ * V、最後の一つはの同値クラスの正規代表見つけ↔ *を、すなわちA R (U )、その結果、U ↔ * V r (v )= r (u )を意味します。u→vu→vu→vu↔∗vu↔∗vu↔^*v↔∗↔∗↔^*r(u)r(u)r(u)u↔∗vu↔∗vu↔^*vr(v)=r(u)r(v)=r(u)r(v)=r(u) これらのクエリを準定数の償却済みの複雑さで実装する分離セットフォレストデータ構造を使用したよく知られたアルゴリズム、つまります。この場合、を使用して実装されていることに注意してください。O(α(n))O(α(n))O(α(n))equivfind より複雑なバリアント 今、私は方向が重要であるより複雑な問題に興味があります: arrow(u, v) confl(u, v) find(u) 最初は矢印追加し、秒はと両方から到達可能なノード、つまりがあるかどうかを決定します。最後のものは、が意味するようなオブジェクトを返す必要があり、は簡単に計算できるはずです。(たとえば、計算するために)。目標は、これらの操作が高速になるような適切なデータ構造を見つけることです。u→vu→vu→vwwwuuuvvvu→∗←∗vu→∗←∗vu→^*←^*vr(u)r(u)r(u)u→∗←∗vu→∗←∗vu→^*←^*vr(u)∙r(v)r(u)∙r(v)r(u) \bullet r(v)∙∙\bulletconfl サイクル グラフにはサイクルを含めることができます。 主要な問題のDAGのみを考慮するために、強連結成分を効率的かつ増分的に計算する方法があるかどうかはわかりません。 もちろん、DAGの解決策もありがたいです。これは、最も一般的でない祖先の増分計算に対応します。 素朴なアプローチ disjoint-setフォレストのデータ構造は、エッジの方向を無視するため、ここでは役に立ちません。そのノート、グラフがコンフルエントでない場合には、単一のノードにすることはできません。r(u)r(u)r(u) 一つは、定義することができと定義することがとして場合。しかし、これを段階的に計算する方法は?r(u)={v∣u→∗v}r(u)={v∣u→∗v}r(u)=\{v ∣ u→^*v\}∙∙\bulletS1∙S2S1∙S2S_1\bullet S_2S1∩S2≠∅S1∩S2≠∅S_1 ∩ S_2≠∅ おそらく、そのような大きなセットを計算することは役に立たないでしょうが、通常のunion-findアルゴリズムのように、小さなセットはより興味深いはずです。

1
DFSとBFSがまったく同じ順序でノードを処理するようにするグラフ
一部のグラフでは、DFSとBFSの検索アルゴリズムは、ノードが同じノードで開始する場合、まったく同じ順序でノードを処理します。2つの例は、パスであるグラフと星型のグラフ(任意の数の子を持つ深さ木)です。このプロパティを満たすグラフを分類する方法はありますか?111

1
絞り込みタイプの推測
職場では、動的言語に関する型情報を推論する必要があります。次のように、ステートメントのシーケンスをネストされたlet式に書き換えます。 return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

3
一般的なパスファインディングアルゴリズムとヒューマンプロセスの比較
これは計算認知科学と境界を接するかもしれませんが、一般的なパスファインディングアルゴリズム(A *など)がたどるプロセスが、さまざまなパスファインディング状況で人間が使用するプロセス(同じ情報が与えられた場合)とどのように比較されるかについて知りたいです。これらのプロセスは似ていますか?

2
すべての重みが正になるように定数を追加するだけでは、負の重みを持つ最短経路を見つけられないのはなぜですか?
私は現在、アルゴリズムの概要を読んでいて、すべてのパスが正であることを確認することに依存するジョンソンのアルゴリズムを採用しました。 アルゴは、すべてのエッジに対して正であり、最短経路関係の正確さを維持する新しい重み関数(w ')を見つけることに依存しています。 これは、w(s)、h(d)の値を計算して、wの元の値に追加します。 私の質問は、グラフの最小のwを見つけてすべてのエッジに追加しないのはなぜですか?これは両方の条件を満たすため、計算量が少なくて済みます。

3
DFTのクロスエッジとフォワードエッジの違い
深さ優先ツリーには、ツリーを定義するエッジがあります(つまり、トラバーサルで使用されたエッジ)。 他のノードのいくつかを接続するいくつかの残りのエッジがあります。クロスエッジとフォワードエッジの違いは何ですか? ウィキペディアから: このスパニングツリーに基づいて、元のグラフのエッジは3つのクラスに分けることができます。ツリーのノードからその子孫の1つを指す前方エッジ、ノードからその祖先の1つを指す後方エッジ、そしてどちらもしないクロスエッジ。時々、スパニングツリー自体に属するエッジであるツリーエッジは、フォワードエッジとは別に分類されます。元のグラフが無向の場合、そのエッジはすべてツリーエッジまたはバックエッジです。 あるノードから別のノードを指すトラバーサルで使用されていないエッジは、親子関係を確立しませんか?

2
DFSがスペースの複雑さを持っていると見なされるのはなぜですか?
これらのメモによると、DFSは空間の複雑さを持っていると見なされます。ここで、はツリーの分岐係数であり、は状態空間内のパスの最大長です。b mO (b m )O(bm)O(bm)bbbメートルmm 同じことが、Uninformed SearchのこのWikibookページでも述べられています。 現在、DFSに関するWikipediaの記事の「情報ボックス」は、アルゴリズムのスペースの複雑さについて次のことを示しています。 O ()O (| V| )O(|V|)O(|V|)、繰り返しなしでグラフ全体をトラバースする場合、重複ノードを排除せずに、暗黙的グラフの検索された最長経路長O (O(O())) これは、DFSのスペースの複雑さ、つまりであると私が考えたものにより似ています。ここで、はアルゴリズムが到達する最大長です。mO(m)O(m)O(m)mmm なぜこれが事実だと思いますか? まあ、基本的には、現在見ているパスのノード以外のノードを保存する必要はないので、Wikibookと私が紹介したメモの両方が提供する分析でを掛けても意味がありません。に。bbb さらに、Richard KorfによるIDA *に関するこの論文によると、DFSのスペースの複雑さはであり、は「深度カットオフ」と見なされます。dO(d)O(d)O(d)ddd では、DFSの正しいスペースの複雑さは何ですか? それは実装に依存すると思うので、異なる既知の実装のスペースの複雑さの説明をいただければ幸いです。

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