ダイアグラムを描くためにqtノードを作成しました。ダイアグラムを配置したいと思います。でも道がわからない:(図の流れが私の問題を解決していると思うので、流れを見つける解決策を見つけたい。上の図で、そのようなリストを取得したい
[A, B]
[A, C, D]
[A, C, E]
各ノードには親と子のリンクがあるので、それらを見つけることができます。再帰関数で答えを見つけることができますか?どのアルゴリズムを使用する必要がありますか?
ダイアグラムを描くためにqtノードを作成しました。ダイアグラムを配置したいと思います。でも道がわからない:(図の流れが私の問題を解決していると思うので、流れを見つける解決策を見つけたい。上の図で、そのようなリストを取得したい
[A, B]
[A, C, D]
[A, C, E]
各ノードには親と子のリンクがあるので、それらを見つけることができます。再帰関数で答えを見つけることができますか?どのアルゴリズムを使用する必要がありますか?
ここにあるのはグラフです(棒グラフなどではなく、グラフ理論から)。この場合、それはツリーですが、たとえばBからDへのリンクがあった場合、それはもはやツリーではありません。
したがって、「フローを見つける」には、「トポロジカルソート」を実行する必要があります。ツリーの場合は、「BFS」実行でもかまいません。
このようにして、ダイアグラムの左から右への順序である「レイヤー」を取得し、これをx座標にマッピングできます。グラフがツリーの場合は適切なy座標を見つけるのが簡単で、一般的なグラフの場合はより困難です。前者の場合、各ノードのサブツリー(つまり、その右側のすべての要素)を配置することにより、場所を再帰的に(「ボトムアップ」)決定できます。
構造がグラフの場合、杉山のアルゴリズムを見ることができますが、これはもっと複雑です。その場合はグラフライブラリを使用することをお勧めします。
後者のアルゴリズムは、以下で遊ぶためにここに実装されています。
次に、上部のコンボボックスを「2動的バインディング」に切り替え、右側のテキストボックスを次のように変更します。
ノードソース:
['A','B','C','D','E']
エッジソース:
['AB', 'AC', 'CD', 'CE']