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

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

1
最大の3クリークのない誘導サブグラフを見つける
この問題を考えてみましょう: 無向グラフを前提として、次のようなG ′ = (V ′、E ′)を求めます。G = (V、E)G=(V,E)G = (V, E)G′=(V′,E′)G′=(V′,E′)G' = (V', E') の誘発部分グラフである GG′G′G'GGG は3クリークがありませんG′G′G' 最大です|V′||V′||V'| そのため、3クリークが除去されるように、最小数の頂点をから除去する必要があります。GGG 同等の問題は、 2色を見つけて、(v 1、v 2、GGG及び((V 1、V 2)、(V 2、V 3)、(V 3、V 1))∈ V、(v1,v2,v3)∈V(v1,v2,v3)∈V(v_1, v_2, v_3) \in V((v1,v2),(v2,v3),(v3,v1))∈V((v1,v2),(v2,v3),(v3,v1))∈V((v_1, v_2), (v_2, v_3), (v_3, v_1)) \in V (v1.color==v2.color∧v2.color==v3.color∧v3.color==v1.color)=False(v1.color==v2.color∧v2.color==v3.color∧v3.color==v1.color)=False(v_1.color == v_2.color \wedge v_2.color == v_3.color \wedge …

2
それがために解決する方法は困難であるで?
グラフ同型から、ような置換行列Pがある場合、2つのグラフAとBは同型であることがわかります A=P×B×P−1A=P×B×P−1A = P \times B \times P^{-1} したがって、問題を解決するには、2つのグラフが同型である場合、そのような置換行列Pを見つける必要があります。問題はNP(およびサブグラフ同型の場合はNP完全)であると考えられています。しかし、私はPを解決する例を見つけました。これは私にとって有望であるように思われ、 http ://en.wikipedia.org/wiki/Permutation_matrixのセクション:Pの解決にあります。 私が今混乱しているのは、それがより大きな行列で機能するかどうかです。非常に大きい?上記の方程式は解くのが難しく、暗号システムの候補になり得ますか?

2
有向グラフの強く接続されたコンポーネントアルゴリズムの正確性
私は有向グラフ強連結成分を見つけるためのアルゴリズムについて読んでいます。2つのDFS検索を考慮し、2番目のステップは元のグラフG Tを転置します。G=(V,E)G=(V,E)G=(V,E)GTGTG^T アルゴリズムは次のとおりです。 DFSを実行し(任意の開始頂点から開始)、すべての頂点の終了時間を追跡します。GGG 転置を計算し、 でDFSを実行し、最後の終了時刻の頂点から開始して、その頂点をルートとするツリーを形成します。ツリーが完成したら、次の最新の終了時刻で未訪問の頂点に移動し、DFSを使用して別のツリーを形成し、G Tのすべての頂点が訪問されるまで繰り返します。GTGTG^TGTGTG^T 2番目のDFSによって形成された各ツリーの頂点を、個別に強く接続されたコンポーネントとして出力します。 私の質問は: 転置計算のこの中間ステップの背後にある直感は何ですか?

1
グラフ内のすべての2ホップ近傍リストを見つけるアルゴリズム
グラフ場合、| V | = n。Vのすべてのノードのすべての2ホップ近傍リストのコレクションを生成するための高速アルゴリズムとは何ですか。G = (V、E)G=(V,E)G = (V,E)| V| =n|V|=n|V| = nVVV 簡単に言えば、でそれを行うことができます。行列のべき乗では、Strassenアルゴリズムを使用してO (n 2.8)でそれを行うことができます。別の行列乗算アルゴリズムを使用すると、これよりも優れた処理を行うことができます。より良い方法はありますか?ラスベガスのアルゴリズムはありますか?O (n3)O(n3)O(n^3)O (n2.8)O(n2.8)O(n^{2.8})

4
フローネットワークにおけるXORのような動作
XORは正しい名前ではありませんが、ある種の排他的な動作を探しています。 現在、フローネットワークをモデル化し、min-cost-max-flowアルゴリズムを実行することで、さまざまな(割り当て)問題のセットを解決しています。フローネットワークは、多くの問題を簡単かつ理解可能な方法でそれらに削減できるため、非常に便利です。私の場合、これらはいくつかの追加の制約との一致です。これらの制約がより複雑になるにつれて、特定の動作をモデル化するための既存の構造があるかどうか疑問に思っていました。 この場合、ノードの発信フローを単一のエッジに制限します。 グラフ場合、積分容量とコスト。任意のノードをと呼びます。直接の隣人はと呼ばれます。エッジ(赤)をいくつかの構成に置き換えて、1つのエッジのみがフローを受け取ることができるようにできますか?つまり、がフロー(例:)を取得した場合、他の(赤い)エッジはフローを受信できません。C (U 、V )、K (U 、V )A B 1、。。B N A B 1、。。。A B nG=(V,E)G=(V,E)G=(V, E)c(u,v)c(u,v)c(u,v)k(u,v)k(u,v)k(u,v)AAAB1,..BnB1,..BnB_1, ..B_nAB1,...ABnAB1,...ABnAB_1,...AB_n 5 / 10AB1AB1AB_15/105/105/10 中間ノード/エッジを追加して、コストと容量を試すことができます。私たちの新しい建設の総容量は同じままでなければならず、さまざまな代替案のコストは何らかの形で比例し続けなければなりません。 だから私の質問は: このような構造は一般にありますか?(任意のキーワード、リンク、論文) 私の特定の問題の解決策を提案できますか?

1
サンタは公平かつ効率的でありえますか?
常緑樹の「The Physics of Santa」が確立すると、サンタが地球上のすべての子供に贈り物を受け取ることは物理的に不可能になります。ルート計画は、あまりそこ助けにはなりませんが、サンタがいる間、すべての子供はたまに贈り物を取得していることを確認して少なくともメイクが得意な計画アルゴリズムをすることができますまた、毎年、できるだけ多くの子供として機能しますか? 実際の正の重みと定数を持つ完全なグラフを考えます。巡回営業担当者の問題の変形を解決したいと思います。kkk 超えるノードに対応する最大での長さの循環ルートはありますか?kkkmmm 最適化バージョンは次のようになります。 最大での長さの循環ルートでサービスを提供できるノードの数を最大化します。kkk これは、ルートに対する現実の制限によって動機付けられています。サンタは1泊でできるだけ多くのプレゼントを届ける、営業担当者は1日のルートに8時間かかる、などです。 最後ではないが、最初の質問は、この問題はどれほど難しいかです。どのノードからでも開始できると仮定しましょう。ただし、それほど大きな違いはないはずです。 ここで、公平性をモデル化するために、ノードがあり、ツアーごとに最大でを訪問でき​​ると仮定します。理想的には、我々はすべてのノードが訪問されることを望む渡っ回効率的なツアー。ルートが多くのノードを確実に訪問するために、より頻繁にアクセスする必要のあるボトルネックノードが存在する可能性があるため、一部のノードは必然的に頻繁にアクセスする必要がなくなります。また、一度訪問したノードをすべて訪問するまで削除することは簡単ではありません。NNNMMMt⋅MNt⋅MNt\cdot\frac{M}{N}ttt では、最後の質問です。してみましょうすべてのノードがが訪れされるまでに必要なツアーの数で効率的な -tours。の最小値(および必要なすべてのルート)をアルゴリズムでどのように決定できますか?この問題はどのくらい複雑ですか?TTT kkkTTT これは本当に複数の基準を持つ問題だと思います。ツアーをできるだけばらばらにしたい間、各ツアーはできるだけ多くのノードを訪問する必要があります。

2
有向グラフで指定された2つの頂点間の単純なパスで頂点を見つける方法
有向グラフと2つの異なる頂点SおよびTが与えられた場合、SからTへの少なくとも1つの単純なパス上にあるすべての頂点を見つける多項式時間アルゴリズムはありますか? Sの後継でありTの先行でもあるすべての頂点を見つけることは難しくありませんが、これは上記のセットのスーパーセットにすぎません。たとえば、次のグラフについて考えてみます。S-> a; a-> b; b-> c; b-> T; c-> a a、b、cはすべてSの後継でTの前身ですが、SからTへcを通過する単純なパスはありません(cを経由するSからTへのすべてのパスには2回のaとbが含まれるため)。 密接に関連する問題は次のとおりです。有向グラフと3つの異なる頂点SおよびTとIが与えられた場合、SからTへの単純なパスがIを通過するかどうかを決定する多項式時間アルゴリズムがあります。 この後者の問題に対する多項式時間アルゴリズムは、前者に多項式アルゴリズムを構築するために使用できます。これは、Iをグラフ内のすべてのノードで置き換えることによって連続的に適用できるため(または、Sの後続ノードであるすべてのノードに対してより効率的にTの前身)。

1
インクリメンタルな強連結コンポーネント
変化する有向グラフについて、強く接続されたコンポーネントに関する情報を維持したいと思います。グラフ操作はインクリメンタルです。頂点の追加とエッジの追加のみです。これらの操作で最もよく知られている償却済みの複雑さを実現するデータ構造はどれですか。 グラフが無向の場合、答えはunion-find構造になります。また、無向グラフは有向グラフの特殊なケースと見なすことができるので、(少しでも)超定数の下限が引き継がれます。 線形の上限の場合、強連結成分は、データをまったくリサイクルせずに、エッジを追加するたびに最初から計算できます。もっと上手にできる方法があるのか​​な。 これが必要な状況では、どういうわけか、重要なSCCはルールではなく例外であることを期待しています。そして、サイクルの不在の中で、私は合計で線形時間を達成することができます(つまり、操作ごとの一定時間の償却)[編集:]どういう意味かを明確にしましょう。もちろん、不在のサイクルでは、SCCを追跡する必要はまったくありません。償却された一定の時間は、SCCを心配する以外に、私の設定で行うことです。 したがって、一般的には、上記の上限よりは良くないが、グラフがDAGのままである限り、操作ごとに一定の償却時間を使用するデータ構造にも関心があります。

3
アルゴリズム:ゲーム内のダンジョンを通る最短経路を見つける
バックグラウンド 最近PCゲーム「ダーケストダンジョン」をプレイしていた。ゲームでは、下の図に示すように、部屋がつながったダンジョンを探索する必要があります。 ルールは次のとおりです。 固定の部屋(入り口)から始めます。開始する場所を選択することはできません。 目標は、すべての部屋を少なくとも1回訪問することです 隣接する部屋間の距離は、すべての部屋で同じです。 部屋や散歩道は何度でも訪れることができます 質問 少なくとも一度はすべての部屋を訪れる入り口からの最短経路は何ですか? サブ質問: この問題を解決するために使用できるアルゴリズムは何ですか? 私のような人が自由に(そしてかなり簡単に)使用できる実装はありますか? 私が試したこと 私はこれまたはこれのような他の質問を答えを見つけることなく見つけました。(基本的な)TSPに精通しており、簡単なTSPをコーディングして解決できます。ハミルトニアンパスは複数回の訪問を許可しないため、私の問題を解決しませんでした。中国の郵便配達の問題は、私はすべてのエッジを訪問する必要はありませんので、また、その基本的な形で、ここでは適用されません。 更新 コメントで述べたように、私はコンピュータサイエンティストではなく、数学的なステートメントを証明することにも興味がありません(おそらく、この質問を後でスタックオーバーフローに投稿します)。また、私はプログラマーではないため、自分でソリューションをコーディングできる可能性は非常に低くなっています。しかし、私はその性質の問題を扱う最初の人ではないと思います。 @Shreeshおよび@Dibによると、次の手順を適用できます。 すべての部屋でペアワイズ距離行列を作成し、すべての部屋の間にエッジを追加します。 標準ソルバー(例:concorde)を使用してTSPを解く 入り口から始めて、解決策に従ってすべての部屋を訪れます。隣接していない部屋の場合は、それらの部屋の間の最短距離に置き換えます。 この手順は問題の答えを提供しますか?

1
ランダムな幾何学的グラフのアルゴリズム
ランダムな幾何学的グラフ(https://en.wikipedia.org/wiki/Random_geometric_graph)は、点を分布に従ってランダムに選択し、場合にを設定することで作成されます、一部のパラメータr。幾何学的なグラフは、実際のネットワークのモデリングに使用されます。nnnRdRd\mathbb{R}^dpi∼pjpi∼pjp_i \sim p_j∥pi−pj∥&lt;r‖pi−pj‖&lt;r\|p_i - p_j\|<rrrr たとえば、[0,1] ^ 2の一様分布を使用して交通マップをモデル化でき[0,1]2[0,1]2[0,1]^2ます。 これらのグラフを処理するための優れたグラフ理論アルゴリズムがあるかどうかに興味があります。たとえば、2つの頂点間の最短パスを見つけるためのアルゴリズムはありますか?明らかに、このようなアルゴリズムはGPSメーカーにとって有用です。 このような研究はありますか?

1
ノードにポートがあるグラフの用語
グラフは、数学、コンピュータサイエンス、エンジニアリングの分野で明確に定義された概念であり、それらに依存しています。ただし、特定のドメインまたはアプリケーションで(有向)グラフを実際に実装するには、エッジが頂点を接続するだけでなく、これらの頂点に存在するポートを接続する必要がある場合があります。有向グラフでは、これは入力ポートと出力ポートの分離を意味します。通常、エッジは出力ポートから始まり、入力ポートに到達します。 例は簡単に見つけることができます:シェーダーデザインツール、コンパイラ理論のシグナルフローグラフ、電子スキーマ、高レベルETLスクリプト...これらのツールはすべて、頂点に名前付きまたは異なる入力と出力が必要です。 さて、私の質問です。これらの種類のグラフに理論と命名法はありますか、またはこれは工学科学の「実装問題」と見なされていますか?私の質問からお気づきのように、私はこのようなもの(「ノードポート付きのグラフ」)が何であるかを正確に特定することはできません。その答えが知りたいです。

2
特定のノードを通過する最短経路
私は自分の問題の効率的な解決策を見つけようとしています。G100個のノード(各ノードに番号が付けられています)を含む正の重み付きグラフがあり、それが非循環グラフであると仮定しましょう。したがって、2、2、2、1などのエッジは存在できません。ノードのリストを取得しましたG。グラフから10としましょう。これらの各ノードも配列にあるとしましょう。そのリストから、ノード1から100までの、それらのノードの少なくとも特定の(5つとしましょう)を通過する最短パスの総重みを見つける方法を探しています。 簡略化するために、0 ... 5の6つのノードを持つグラフを考えます。ノード1と4は、通過するように指定できるポイントとしてマークされています。既存のパスが0-1-2-5、0-3-4-5、および1-4であるとしましょう。ここで、3から4を除くすべてのエッジが5として重み付けされているとします。3から4は1として重み付けされます。最短パスアルゴリズムを実行すると、基本的にパス0-3-4-5が検出されます。指定されたポイントの最小量を指定して、量2を試してください。その後、アルゴリズムは15として重み付けされた0-1-4-5で実行されます。 私はこのように書きました shortestPath(destinationNode, minAmount) if(destinationNode == srcNode &amp;&amp; minAmount &lt; 1) return 0 else if(destinationNode == srcNode &amp;&amp; minAmount &gt; 1) return INFINITY int destNo = destinationNode get number int cost = INFINITY for (int i = 0; i &lt; destNo; i++) if (d[i][destNo] != null) int …

1
いくつかのノード間の有向グラフで指定された長さ未満のすべてのパス
有向グラフまたは無向グラフ内のいくつかのノード間のすべての可能なパス、または指定された長さのすべての可能なパスをカウントすることは、古典的な問題です。可能性のサイクルにより、すべての意味に注意を払う必要があります。 この質問は少し異なる、または少なくとも私は思います。 INPUT: してG有向グラフ。Gは、サイクルと自己接続ノードを持つことができます。してみましょうA(G)はの隣接行列もG(中1とG I、J Iからjに行くリンクとそうでない場合は0があります場合)。Gのノードの2つのサブセットであるTとBを定義します。 結果:Tの 1つのノードからBの 1 つのノードに向かう、最大で k のすべてのパスのリスト。パスは、ソースノードからターゲットノードに厳密にk + 1ステップ未満で進む限り、同じエッジを複数回含むことができます。 質問:このタスクで最適なアルゴリズムを知りたいのですが。隣接行列のn乗がシンボリックに計算された場合(1の代わりに各エントリに異なる変数を使用)、このすべてのパス(およびエントリに1を使用して数値で計算された場合、パスのカウントに減少します)。しかし、これがタスクを実行する最も速い方法であるかどうかは本当にわかりません(おそらくそうではありません)。 警告:私はカウントの問題や最短のパスを求めているのではありません。パスの長さは、使用されるエッジの数として定義されています(繰り返しをカウントしています)。私はRを使用していますが、他の言語で考えたい場合は、質問がすでに提起され、解決されていたら本当に申し訳ありません。親切に助けてくれてありがとう! 追加情報:行列べき級数アプローチ(A ^ 3は3つの長いパスをすべて提供します...)とdfs / bfsを試しました。後者の2つは、ソースとターゲットのセットで作業していることを考慮に入れておらず、したがって多くの冗長な作業を行うため、最適性には程遠いと思います...

1
青い頂点よりも赤い頂点の多いパスを見つけることはNP困難ですか?
接続された有向グラフを考える G = (V、E)G=(V,E)G=(V,E)、頂点 S 、T ∈ Vs,t∈Vs,t \in V と着色、セント sss そして tttは黒で、他のすべての頂点は赤または青のいずれかです。sss に ttt 多項式時間で青の頂点よりも赤が多い? それは可能だと思いますが、私たちのTAはこれはNP難しいと述べました。 解決策のアイデア: から GGG つくる G′=(V′,E′)G′=(V′,E′)G'=(V',E') 次のように: すべてを分割 v∈V∖{s,t}v∈V∖{s,t}v \in V\setminus \{s,t\} 2つの頂点 vinvinv_{in} そして voutvoutv_{out}。 V′V′V' 分割された頂点ペアで構成され、 sss そして ttt。 すべてのために e=(u,v)∈Ee=(u,v)∈Ee=(u,v) \in E エッジを導入する (uout,vin)(uout,vin)(u_{out},v_{in})。(エッジ用(x,v)(x,v)(x,v) または (u,x)(u,x)(u,x) どこ x∈{s,t}x∈{s,t}x \in \{s,t\} …

4
ノードxとyの間のグラフに単純なパスが1つだけあるかどうかを確認します `
単純な無向グラフを与えたとしましょう GGG有するノードと双方向のエッジを。与えられたとについて、グラフの間に単純なパスが1つしかないかどうかを確認します。NNNMMMxバツxyyy 私が考えていたのは、グラフ内のすべてのサイクルを見つけて、から bfsを実行する必要があるということです。パスがあるサイクルの頂点を通過しない場合、パスは1つだけで、それ以外の場合はそこにあります。以上です。xバツxyyy これを確認する他の方法はありますか?

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