graphviz - 比较图形树

时间:2013-05-20 17:38:56

标签: graphviz emf-compare

我必须用graphviz做一份工作。我需要可视化几棵树的图形表示,但无论如何我必须比较两棵树才能看到它们的差异:像这样的东西,我有树A和树B.在创建它们的表示并比较它们之后我只需要看到它没有共同点的节点。有人告诉我使用EMF比较但不幸的是我不知道如何使这个插件接受graphviz的扩展。

面对这项工作的任何建议或任何其他可能的解决方案?

问候。

1 个答案:

答案 0 :(得分:1)

鉴于两个.dot个文件,a1.dot

digraph g1 {
    A -> B -> D -> E
    A -> C -> E
    }

...和a2.dot

digraph g2 {
    A -> B -> F -> E
    A -> C -> F
    }

...您可以按如下方式找到它们之间不同的节点:

$ dot -Tplain a1.dot | sed -ne 's/^node \([^ ]\+\).*$/\1/p' | sort >a1.nodes
$ dot -Tplain a2.dot | sed -ne 's/^node \([^ ]\+\).*$/\1/p' | sort >a2.nodes
$ diff a1.nodes a2.nodes
4d3
< D
5a5
> F

我正在使用sed.dot的{​​{1}}输出中删除每个plain文件的节点名称列表,将节点排序为顺序,然后使用dot查找差异。这种方法没有以图形方式呈现差异,但在最好的时候这是一件棘手的事情。