1

グラフをそのコンポーネントに分割したい(例DAGのように)。コンポーネント)。画像のコンポーネントを見つけたら、そのコンポーネントのルートと最後の子を探したいと思います。 青のコンポーネントを取ると、ルートはE、最後の子はHになります。 緑色:ルートB - 最後の子HDirected Acyclic Graph(DAG)をコンポーネントに分割し、それらのコンポーネントのルートと最後の子を見つける

例のグラフ: Example Graph

あなたはEとの間の接続を見つけることができれば - コンポーネントにそれを分割せずにIからHBからEBからHAを。それが私の最終目標であることを私に教えてください。

コンポーネントのコンパイルについて。それが実際に私の最終目標です。私はちょうどあなたが私が達成しようとしているもののより良い理解を得るためにそれを含めるためにしたかった。これは一度これらの接続を見つけることはできません。

Iが役に立ったと評価していますが、私の質問答えていない質問:

(これらの答えは十分かもしれないが、私は実装する方法がわからないがそれ)

注:

  • (あなたがサンプルコードを投稿するつもりなら)これは私の最初の質問であるC++やC#で

  • をすべてのサンプルコードを投稿してください。私が何か間違ったことがあったなら、私に知らせてください。

//ビッグ編集: は、私が何をしたい、それがより明確にする質問を作り直しました。もっと役に立つと思うかもしれないコンポーネントを紹介しました。

+0

私はこの質問の2日前に回答を探し続けています。私が見つけたら明らかに回答を投稿します! – Glaze

+0

開始ノードの_all_親のLCAを計算しますか(これは複数の最小要素を持つグラフでは結果を生成しません)、開始ノードの少なくとも2つの親に対してLCAである_closest_ノードを検索しますか(これにはいくつかの解決策があります)。その違いを見るには、サンプル・グラフに '(C、H)、(D、H)'の辺を追加します - 希望の結果は開始ノード 'H'の' E'または 'B'でしょうか? – collapsar

+0

コメントありがとうございました!本当に良い点!グラフと質問をより複雑なグラフに更新して、私が望むものを正確に表示します。 – Glaze

答えて

0
コメントには長すぎる

が、私はあなたがすべての共通の祖先を見つけているとは思わない:wikipediaから

グラフ理論と計算機科学、最低の共通祖先(LCA)でツリーまたは有向非循環グラフ(DAG)内の2つのノードvおよびwは、子孫としてvおよびwの両方を持つ最も低い(すなわち最も深い)ノードであり、各ノードはそれ自身の子孫であると定義します。したがってvに直接接続wwは最も低い共通祖先です)。

あなたは両親のLCAを考慮した場合、4人のCある頂点Hの両親、DFG、あなたは両親のいずれかのペアの値であることがLCAを考慮することができますがあります。

は、
  • LCA(C, D) = B
  • LCA(C, F) = C
  • LCA(C, G) = C
  • LCA(D, F) = D
  • LCA(D, G) = D
  • LCA(F, G) = E

ので、Hの両親ののLCAはBCDEです。そうABCDE -

共通の祖先は、最も低い共通の祖先(S)とその祖先であろう。

なぜA,CおよびDが共通の祖先として除外されているのかを説明する必要があります。

+0

もあります。私の問題を解決するために時間をとってくれてありがとう。 あなたは何を知っています!私はあなたが間違っている方法を説明するように書いていました。しかし、あなたは正しい。私はF-E-CとG-E-Cを介して 'H 'から' C'への2つの接続を見つけることができます。つまり、彼らは「つながっている」ということです。もう一度グラフを更新します! – Glaze

+0

@Glazeあなたがやっていることは、有向非循環グラフの "biconnectedコンポーネント"を見つけているようです。したがって、BからHには、少なくとも2つの異なるパスB→C→Hがあります。パス間に共通のエッジがなく、共通の頂点だけが終点です。「B→D→H」です。 'A'から' H'までのすべてのパスには 'A - > B'と頂点' B'が含まれているため、 'H'から' H'までの2つの異なるパスはありません。 – MT0

+0

バイコンリンクのコンポーネントのためのグーグリング私はそれが私が欲しいものであることがわかった。グラフをバイコンリンクのコンポーネントに分割した後、私が探しているコネクションを簡単に見つけることができます。「あなたは実際にバイコネクテッド・コンポーネントを探しています」というような答えを書くことができます。そういう意味で、実際に質問していることです。 Btw、それは私が「サブシステム」に言及したときに話していたものでした。 – Glaze

関連する問題