3

私はgraphvizに次のグラフを持っています:

収束パスのある元のグラフ

次のようなツリーのような画像を取得できるように、graphvizにグラフ内のノードを繰り返させるにはどうすればよいですか?

ラベルが繰り返された派生ツリー

4

1 に答える 1

1

私はあなたがgraphviz内でグラフのこの変更を行うことができるとは思わない。必要な構造で、graphvizに別のグラフをフィードする必要があります。このグラフは、次のようなプロセスで取得できます(擬似コード)。

function visit(path: a list of nodes):
  let n be the last node on the path
  for every child c of n:
    write (a copy of) c to output
    if c is not in path:
      visit(path + [c])
write root to output
visit([root])

このリストの代わりに、再帰呼び出しの前にpathノードをマークvisitedし、呼び出し後にそのフラグを削除することもできます。

function visit(n: a node):
  mark n as visited
  for every child c of n:
    write (a copy of) c to output
    if c is not marked as visited:
      visit(c)
  mark n as not visited
write root to output
visit(root)
于 2012-12-04T13:22:49.707 に答える