GraphViz点文件是确定性的吗?

GraphViz点文件是确定性的吗?,graphviz,dot,Graphviz,Dot,我正在使用Doxygen在源代码中制作一些GraphViz点图 问题:由特定点文件生成的图形是否保证始终生成相同的输出 对于不同的计算机,在一天中的不同时间,在不同的体系结构上,等等,情况是否如此 我正在考虑使用指南针点来完善我的图表,使它看起来更好 我想知道图形布局的初始种子是否存在任何“随机性”,或者布局引擎是否存在任何“实现定义”部分。如果我的系统在其他系统上看起来不一样,我不想花太多精力来优化我的系统的输出。这将由Windows和Mac用户使用。TIA我已经在不同的渲染环境(如onlin

我正在使用Doxygen在源代码中制作一些GraphViz点图

问题:由特定点文件生成的图形是否保证始终生成相同的输出

对于不同的计算机,在一天中的不同时间,在不同的体系结构上,等等,情况是否如此

我正在考虑使用指南针点来完善我的图表,使它看起来更好


我想知道图形布局的初始种子是否存在任何“随机性”,或者布局引擎是否存在任何“实现定义”部分。如果我的系统在其他系统上看起来不一样,我不想花太多精力来优化我的系统的输出。这将由Windows和Mac用户使用。TIA

我已经在不同的渲染环境(如online/cli)上做了很多实验

如果使用不同的graphviz版本,则很有可能得到不同的结果。在同一版本中,我从未遇到过点图中的非确定性问题

另一个主题可能是,如果您使用特殊的utf字体,可以在不同的系统上呈现。例如,在windows与mac/unix上呈现表情符号

也许包装器/调用工具(如doxygen/understand/pygraph/jgraph/gograph等)可以作为不同系统上不同点文件的来源


我想说点图本身在同一版本中是非常确定的

我认为,默认情况下,由graphviz生成的图形是确定性的,因为初始节点位置和解算器是这样的。要生成不同的图像,图形属性“开始”设置为rand


参考:

afaik点引擎是确定性的,用便携式C实现。但保证是一个强有力的词,我想你不能指望有人可靠地保证软件中的任何东西,免费使用数字…到目前为止,我从未见过任何随机性,但我只使用点。其他一些引擎依赖于迭代随机计算,但在统计意义上,因此在收敛性上具有“确定性”。HTH不同版本的dot可能会产生不同的输出。鉴于您的doxygen实例可能没有完全同步,因此有可能输出不匹配。在其他一些布局引擎的情况下,还有其他选项可以随机为布局设定种子,但这不适用于dot。表示您可以为
neato
twopi
fdp
布局设置RNG种子;然而,它并没有说明点的布局。对于点引擎GV 2.38,如果涉及集群,我会经历不确定的行为。水平聚类顺序是随机的。