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

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

1
図の交差するエッジの数を減らす方法は?
ダイアグラムエディターの作業をしています。ダイアグラムは、コネクター(エッジ)で接続された2D形状(ノード)を表示します。 ノードを選択して、それらを「解きほぐす」操作を追加したいと思います。可能であれば、交差するエッジの数を減らすためにノードを再配置します(また、エッジをベンドポイントで描画する必要がある場合は問題ありません)。 。 したがって、(トポロジ)グラフの埋め込みとそのノードのサブセットを前提として、交差するエッジの数を最小限に抑えるために、それらのノードのみの埋め込み(そのトポロジ)を変更するグラフアルゴリズムが必要です。 頂点グラフについて読んだり、CabelloとMohar(2013)を閲覧したりすると、この問題はNP困難であると思います。そのため、任意のパラメーター値に対して既知の多項式の時間複雑性を持つパラメーター化されたアルゴリズム(たとえば、交差するエッジの数)に満足します。これは実現可能に思えますが、自分でそのようなアルゴリズムを思いつくのは簡単ではありません。 質問: そのようなアルゴリズムはどこにありますか? 存在しますか? 既存のソフトウェアでは? そのような手術での重要な実務経験はありますか?(理論的には見た目が良いものは実際にはそれほど良くないかもしれませんし、逆もまた同様です。) (私はこの質問をするのに最適な場所がわかりません:ここ、StackOverflow、またはMathOverflowで?)

3
線形時間での有向非循環グラフのソースの検索
有向非巡回グラフ与えられた場合、頂点のは、その次数がゼロの場合のソースであり、出力アークのみを持つことを意味します。D = (V、A )D=(V、あ)D = (V,A)V ∈ Vv∈Vv \in V 与えられた有向非巡回グラフでソースを見つけるための線形時間アルゴリズムはありますか? 追加質問:線形時間ですべてのソースを見つけることができますか?

1
グラフに自明ではない自己同型があるかどうかを判断するための効率的なアルゴリズムはありますか?
私はラテン方格に関連する問題に取り組んでおり、本質的に決定問題に帰着する方法を求めています。 入力:有限の単純なグラフG。 出力:YESGが自明でない自己同型を持つNO場合、それ以外の場合。 したがって... 質問:グラフに自明でない自己同型があるかどうかを判断するための効率的なアルゴリズムはありますか? NautyまたはBliss(およびおそらく他のいくつかのパッケージ)を使用して、自己同型グループ全体を計算できますが、私はそれを必要としません。私が判断する必要があるのは、それが取るに​​足らないことかどうかです。 この決定問題は、理論的には「自己同型グループ全体を計算する」ことと理論的には同じくらい複雑である可能性があります。よく分かりません。 私の目的では、「効率的」とは基本的に「自己同型群全体を計算するよりも実際に速い」ことを意味しますが、その背後にある理論にも興味があります。

2
2部グラフが平面であり、頂点の周りにエッジがないエッジの条件
それは持っていないときに限り二部グラフは平面であるまたはK 5未成年者。K3,3K3,3K_{3, 3}K5K5K_5 頂点の「回り込み」エッジのない平面描画を可能にするために必要または十分な条件を探しています。これらは次の条件を満たす図面です。 1つのパーツのすべての頂点が単一の垂直線上に描画されます。他の部分の頂点は、平行なバーティクルライン上に描画されます。 エッジは頂点以外では交差しません。 エッジはすべて、ポイント1の2つの垂直線の間の無限ストリップにあります。 たとえば、右下以外のすべての図面は例ではありません。左下のグラフは、QとRの位置を入れ替えることにより、条件を満たすように再描画できます。上の2つのグラフは、条件を満たすために再描画することはできません。 上の2つのグラフは、私が見つけた唯一の障害物です。私の質問は: この問題に名前はありますか? 私が見逃した他の障害物はありますか? もちろん、未成年者としてのこれら2つの障害物(および私が見逃したもの)が未成年者であることを証明する方法についてのヒントは必要十分です。 この外側平面であることと同じではないことに留意されたい外側平面である(正方形として描画することができる)が、それは私は上記言及した条件を満たすように描くことができません。K2,2K2,2K_{2, 2}


1
最も重い平面サブグラフ
次の問題を考えてください。 与えられた:エッジに実際の非負の重みを持つ完全なグラフ。 タスク:最大重量の平面サブグラフを見つけます。(可能なすべての平面サブグラフの中で「最大」。) 注:最大重みサブグラフは三角形分割になります。完全なグラフが個の頂点にある場合、m = 3 n − 6のエッジになります。nnnm=3n−6m=3n−6m=3n-6 質問:この問題に最適なアルゴリズムは何ですか?その時間の複雑さは何ですか?

1
動的グラフの関連コンポーネント情報を維持するための最も効率的なアルゴリズムとデータ構造は何ですか?
無向有限スパースグラフがあり、次のクエリを効率的に実行できる必要があるとします。 私sCo n n e c te d(N1、N2)私sCoんんected(N1、N2)IsConnected(N_1, N_2) -戻るとの間の経路がある場合と、そうでなければN 1 N 2 FTTTN1N1N_1N2N2N_2FFF Co n n e c t e dNo de s (N)CoんんectedNodes(N)ConnectedNodes(N)から到達可能なノードのセットを返しますNNN これは、グラフの接続されたコンポーネントを事前に計算することで簡単に実行できます。どちらのクエリも時間で実行できます。O (1 )O(1)O(1) エッジを任意に追加できるようにする必要がある場合A ddEdge (N1、N2)あddEdge(N1、N2)AddEdge(N_1, N_2) -次に、コンポーネントを分離セットデータ構造に格納できます。エッジが追加されるたびに、異なるコンポーネントの2つのノードを接続する場合、それらのコンポーネントをマージします。これが追加されますO (1 )O(1)O(1)のコストA ddEdgeあddEdgeAddEdgeとO (私nverseAckermann(|Nodes|))O(InverseAckermann(|Nodes|))O(InverseAckermann(|Nodes|))へのコストIsConnectedIsConnectedIsConnectedとCo n n e ctedNode sCoんんectedNodesConnectedNodes(同様かもしれませんO (1 )O(1)O(1))。 エッジを任意に削除できるようにする必要がある場合、この状況を処理するのに最適なデータ構造は何ですか?知っていますか?要約すると、次の操作を効率的にサポートする必要があります。 私s Co n n e …


1
おそらく負の重みを持つ重み付き有向非循環グラフの最小stカット
私は次の問題に遭遇しました: 実際のエッジの重みと2つの頂点sとtを持つ有向非循環グラフが与えられた場合、最小stカットを計算します。 一般的なグラフの場合、これはNP困難です。エッジの重みを逆にするだけで、max-cutを簡単に減らすことができるためです(私が間違っている場合は修正してください)。 DAGの状況はどうですか?最小カット(または最大カット)は多項式時間で解決できますか?それはNPハードであり、そうであれば、既知の近似アルゴリズムはありますか? 私はこれについて仕事を見つけようとしましたが、できなかったので(たぶん、検索で間違ったキーワードを使用しているだけかもしれません)、誰かがこれについて何か知っている(または見つける)ことを望んでいました。


1
負のサイクルをキャンセルする
ジェネリックネガティブサイクルキャンセリングアルゴリズムを使用して、最小コストフローの問題を解決したいと考えています。つまり、ランダムな有効フローから始めて、最小平均コストサイクルなどの「良い」負のサイクルは選択せず、Bellman-Fordを使用して最小サイクルを発見し、発見されたサイクルに沿って拡張します。ましょうグラフ内のノードの数であり、Aのエッジの数、Uグラフにおけるエッジの最大容量、Wグラフにおけるエッジの最大コスト。次に、私の学習資料は次のように主張しています。VVVああAUUUWWW 最初の最大コストはA U W以下にする必要がありますA UWあUWAUW 1つの負のサイクルに沿った増加により、コストが少なくとも1ユニット削減されます 負のコストを許可しないため、最小コストの下限は0です。 負の各サイクルはO (VA )O(Vあ)O(VA) そして、アルゴリズムの複雑さはであると彼らは言う。私は各主張の背後にある論理を理解していますが、複雑さは異なると思います。具体的には、拡張の最大数は、拡張ごとに1単位のフローによって与えられ、A U Wからゼロまでのコストを取って、最大A U Wの拡張を提供します。それぞれについて負のサイクルを発見する必要があるので、増加の最大数にサイクルを発見するのに必要な時間(V A)を掛けてO (A 2 V UO (V2A UW)O(V2あUW)O(V^2AUW)A UWあUWAUWA UWあUWAUWVあVあVAアルゴリズム。O (A2VUW)O(あ2VUW)O(A^2VUW) これは学習教材の誤り(これは、コースからの学生のメモではなく、教授から提供されたテキストです)ですか、それとも私の論理は間違っていますか?

1
中国の郵便配達員の問題:奇数次ノード間の最良の接続を見つける
私はプログラムを書いて、無向ドラフで中国の郵便配達員問題(ルートインスペクション問題とも呼ばれます)を解決し、現在、奇数のノードを接続するための最適な追加エッジを見つけるために問題に直面しているため、オイラー回路を計算できます。 (解決したいグラフのサイズを考えると)計算して評価する必要のあるエッジの膨大な組み合わせがあるかもしれません。 例として、奇数次ノードます。最適な組み合わせは次のとおりです。A,B,C,D,E,F,G,HA,B,C,D,E,F,G,HA, B, C, D, E, F, G, H 、 C D、 E F、 G HABABABCDCDCDEFEFEFGHGHGH 、 B D、 E H、 F GACACACBDBDBDEHEHEHFGFGFG 、 B C、 E G、 F HADADADBCBCBCEGEGEGFHFHFH ....AEAEAE ABABABAAABBB したがって、私の質問は次のとおりです。その問題を純粋な総当たりよりも複雑に解決する既知のアルゴリズムはありますか(それらすべてを計算して評価します)? €:いくつかの調査の結果、「エドモンズの最小長マッチングアルゴリズム」について話しているこの記事を見つけましたが、このアルゴリズムの疑似コードや学習者記述は見つかりません(または少なくともGoogleとして認識していません) J. Edmondsによる一致アルゴリズムのヒット数が多い)


3
有向グラフの一意のパス
私は、有向グラフが頂点に対して一意であるかどうかを判別するクラスのアルゴリズムを設計しています。これにより、任意のu ≠ vに対して、vからuまでのパスが最大で1つ存在します。BFS(幅優先検索)を使用してvから別の頂点uへの最短パスを見つけ、次にBFSを再度実行して、vからuへの代替パスが見つかるかどうかを確認することから始めました。しかし、これは時間がかかりすぎると思います。より短い実行時間でソリューションを見つける方法についてのヒントはありますか?vvvu ≠ vあなた≠vu \ne vvvvあなたあなたu

3
サイクルキャンセルアルゴリズムの負のサイクルを見つける
最小コストのフロー問題の最適なソリューションを見つけるために、サイクルキャンセリングアルゴリズムを実装しています。残余ネットワークで負のコストサイクルを見つけて削除することにより、各ラウンドの総コストが削減されます。負のサイクルを見つけるために、私はベルマンフォードアルゴリズムを使用しています。 私の問題は、Bellman-fordはソースから到達可能なサイクルのみを検出しますが、到達不可能なサイクルも検出する必要があります。 例:次のネットワークでは、すでに最大フローを適用しています。エッジ(A,B)(A,B)(A, B)は非常に高価になります。残余ネットワークでは、容量負のコストサイクルがあります111。これを削除すると、エッジとを使用した安価なソリューションが得られますが、ソースからは到達できません。(C 、T )S(A 、C)(あ、C)(A, C)(C、T)(C、T)(C, T)SSS ラベル:フロー/容量、コスト もちろん、各ノードをソースとしてベルマンフォードを繰り返し実行することもできますが、それは良い解決策のようには思えません。私が読んだすべての論文がこのステップをスキップしているように見えるので、私は少し混乱しています。 ベルマンフォードを使用して、すべての負のサイクル(到達可能かどうか)を見つける方法を教えていただけますか?そしてそれが不可能な場合、他にどのアルゴリズムを提案しますか?

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