首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将图表中的节点合并?

如何将图表中的节点合并?
EN

Stack Overflow用户
提问于 2013-02-19 19:52:54
回答 2查看 4.1K关注 0票数 5

我希望合并在我的应用程序中语义相同的节点。是否有一个工具或算法可以用来处理我的图形?

输入示例:应该合并节点、a、b

代码语言:javascript
运行
复制
digraph g {                                                                     
  a -> {b;c;d;e};                                                               
  b -> {a;c;d;e};                                                               
}

利用dot实现图形图像

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

代码语言:javascript
运行
复制
digraph g {                                                                     
  ab -> {c;d;e};                                                                
}

粗素描算法:

代码语言:javascript
运行
复制
# 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
EN

回答 2

Stack Overflow用户

发布于 2013-02-19 21:46:26

有一个工具:它叫做gvpr,代表图形、模式、扫描和处理语言。

摘自连结的pdf:

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

我相信你可以通过创建一个gvpr程序来实现你所需要的。

我没有时间创建一个有效的解决方案,但您可以查看这个答案的示例gvpr程序和其他信息。

票数 2
EN

Stack Overflow用户

发布于 2013-02-19 20:55:59

Graphviz中没有内置这样的函数,但是您可以借助不相交集数据结构对图形进行预处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14966157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档