Graph 如何在图形中合并节点?

Graph 如何在图形中合并节点?,graph,graphviz,graph-algorithm,Graph,Graphviz,Graph Algorithm,我想合并应用程序中语义相同的节点。有没有工具或算法可以用来处理我的图表 输入示例:应合并节点a和b digraph g { a -> {b;c;d;e}; b -> {a;c;d;e};

我想合并应用程序中语义相同的节点。有没有工具或算法可以用来处理我的图表

输入示例:应合并节点ab

digraph g {                                                                     
  a -> {b;c;d;e};                                                               
  b -> {a;c;d;e};                                                               
}
使用
点的图形图像

输出示例:节点ab已合并为节点ab

digraph g {                                                                     
  ab -> {c;d;e};                                                                
}

草图算法:

# XE = a set of nodes, represent a directed edge (x,_)
# YE = a set of nodes, representing a directed edge (y,_)
# XE \ y = XE except y
# YE \ x = YE except x

For each pair of nodes x,y
  If (edges (x,y) and (y,x) exists) AND (XE \ y == YE \ x)
    create new node xy -> xedges\y
    delete nodes x and y and their edges

Graphviz中没有内置这样的功能,但是您可以借助一个工具对图形进行预处理。有一个工具叫它,它代表图形模式扫描和处理语言

从链接的pdf:

gvpr是一款受awk启发的图形流编辑器。它将输入图形复制到输出,可能会转换它们的结构和特性 属性、创建新图形或打印任意信息

我相信你可以通过创建gvpr计划来实现你所需要的


我没有时间创建有效的解决方案,但您可以查看gvpr计划示例和其他信息。

嗨,Martin,我知道这已经是一个很长的时间了,但您是否成功地实现了这一点?