1

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

面对这份工作有什么建议或任何其他可能的解决方案吗?

问候。

4

1 回答 1

3

给定两个.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的节点名称列表,将节点按顺序排序,然后用于查找差异。这种方法不会以图形方式显示差异,但在最好的情况下这是一件棘手的事情。.dotplaindotdiff

于 2013-05-27T22:38:03.117 回答