gpt4 book ai didi

graphviz - 改进 graphviz 布局

转载 作者:行者123 更新时间:2023-12-02 16:35:00 25 4
gpt4 key购买 nike

在制作图形时,我有完美瘫痪。如果视觉的对称性没有被充分探索,我就很难理解正在发生的事情。我也是一个非常视觉化的学习者,我喜欢简化我刚刚学到的东西并将它们画在纸上。

Graphviz 是一个很好的自动绘制工具,但它还可以更好。让我们从一个好的图(而不是状态机)的示例开始。别介意质量(可以用更好的工具重新绘制),这个几乎是完美的,除了我将其逆时针旋转 45 度以使对称性明显。然后,读者应该花更少的时间来弄清楚状态 q1 和 q2 有何相似之处以及它们有何不同。我认为,考虑到旁边没有其他图形,有一种最好的方式来表示该图。

http://gallery.hd.org/_exhibits/maths/math-finite-state-machine-DHD.gif
(来源:gallery.hd.org)

现在让我们看一个不太完美的描述:

http://linux.softpedia.com/screenshots/Graphviz_1.png
(来源:softpedia.com)

这看起来像 graphviz 会生成的东西。是的,边缘很光滑,但是 GAAAAWWWD 这是不必要的困惑!它看起来像一张思维导图,而不是可供使用的成品图。我相信人眼渴望(同样)对称。是的,等级制度等也是重要因素。

令我惊讶的是没有更好的算法可用。有些人根本不是视觉学习者;他们可以通过阅读符号来掌握抽象概念。不是我!

那么,我的问题是什么?那么,有没有更好的免费软件可用于绘制中小型图形?也许

谢谢!

让我知道如何改进这篇文章。

附注我花了10分钟在dia中画出了一个足够相似的克隆体。它仍然不完美,但制作起来很方便,因为一切都捕捉到网格(我错过了一些小细节,但不想重新上传)。 LR_0需要一个来自上方的“开始--->”,让用户更快掌握开始状态。

Finate State Machine

最佳答案

在多次尝试绘制图表但未能获得您认为“最佳”的布局后,您在这里提出了问题:是否有“[b]更好的免费软件[用于]绘制小图-中等图表。”您为评估布局算法给出的唯一标准是它们与“表示该图表的单一最佳方式”的接近程度。当然是“最好”,由您决定。

这或多或少与尝试使用给定的编程语言解决问题失败,然后要求更好的编程语言相同。

图形绘制算法的核心是生成评估解决方案的优化例程(此处的“解决方案”是指共同构成布局的每个节点的坐标)。这些解决方案是根据单个标准或一系列排序标准的最小化(即图的一个或多个属性的最小化)进行评估的,例如,交叉边的总数或距离的总和节点之间(或两者的组合,或这两者的某种加权组合),或对称配置的接近程度。 Graphviz 由六种不同的布局算法组成(dot neato、fdp、sfdp、twopi 和 circo)。其中,看来您只使用了点;然而,twopi 和 circo 可能是更好的选择,因为它们具有严格的对称约束,这似乎符合您自己对正确绘制图形的想法。

其次,您的问题的文字是针对“图表”和图表绘制的,在阅读您的完整描述后,我认为您的问题与这两个概念都没有任何关系。

除了一般的图形绘制算法(如 graphviz)之外,还有许多特定于领域的布局算法,例如 Hasse 图(表示顺序理论中的部分有序集)、Barabasi-Albert 图(无标度网络) )和鄂尔多斯-仁义(随机图)。这些算法中的每一个都会根据域提供的标准和约束生成图形布局 - 这应该向您表明,在所有域中不存在单一的“最佳”布局。尽管您在问题中使用了术语“图形”,但您的描述表明您的问题与绘制状态机(一种高度特殊的图形类型)有关。一般的图形绘制算法通常不擅长绘制此类专门图形,因为该算法对域一无所知。事实上,我不知道任何状态图的布局算法——就像没有流程图的布局算法一样(不一样,但相似)。在工作流程方面,您可以在 graphviz 中绘制图形,然后将其导入 Omnigraffle 进行微调 - 在 Omnigraffle 中,您可以对节点和边的位置进行细粒度控制。

关于graphviz - 改进 graphviz 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2278030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com