Graphviz .dot 节点排序

2024-02-10

我正在构建一个 epsilon NFA 来使用规范结构识别正则表达式。我使用子图对正则表达式的各个部分进行分组。 * 运算符给我带来了特别的麻烦,因为 dot 决定移动节点的顺序。我尝试添加边缘权重以强制特定边缘变短以保持边缘的顺序一致,但这似乎不起作用。

我想做的是强制子图中的节点按特定顺序放置,以便输出图可被识别为特定类型的(众所周知的)构造。在下面的示例中,我希望边 3、4、5 和 6 按该顺序放置,但是点将它们按 6、3、4、5 的顺序放置。任何指针都会受到赞赏。

请注意,当前权重参数与根本没有权重参数没有产生任何差异。

我有以下内容

digraph G {
    rankdir = LR;
    node [shape = none];
            0 [label = "start"];
    node [shape = circle];
            1 [label = "q1"];
            2 [label = "q2"];
            3 [label = "q3"];
            4 [label = "q4"];
            5 [label = "q5"];
    node [shape = doublecircle];
            6 [label = "q6"];
    subgraph re1 {
            rank = same;
            edge[label = "0"];
            1 -> 2;
    };
    subgraph re2 {
            rank = same;
            edge[label = "ε"];
                    3 -> 4 [weight = 10];
            edge[label = "1"];
                    4 -> 5 [weight = 10];
            edge[label = "ε"];
                    5 -> 6 [weight = 10];
                    5 -> 4 [weight = 1];
                    6 -> 3 [weight = 1];
    };
    edge[color=black];
            0 -> 1
    edge[label = "ε"];
            2 -> 3;
}

这是我编写该图的方式:

  • 首先,对我来说,这是一个从上到下的图表,而不是从左到右,因此我删除了rankdir=LR并添加了rank=same仅适用于节点 0/1 和节点 2/3。
  • 我去掉了所有的重量
  • 最重要的是我补充说constraint=false到与图的方向相反的边 - 从节点 4 到节点 5 的边,以及从节点 6 到节点 3 的边。

这里是来源:

digraph G {
    0 [label = "start", shape = none]; 
    node [shape = circle];
    1 [label = "q1"];
    2 [label = "q2"];
    3 [label = "q3"];
    4 [label = "q4"];
    5 [label = "q5"];
    6 [label = "q6", shape = doublecircle];

    {rank = same; 0 -> 1; }
    1 -> 2 [label = "0"];
    {rank = same; 2 -> 3 [label = "ε"]; }
    4 -> 5 [label = "1"];
    edge [label = "ε"];
    3 -> 4;
    5 -> 6;
    5 -> 4 [constraint = false];
    6 -> 3 [constraint = false];
}

结果如下:

现在,如果你愿意,你可以保留rankdir=LR,只需获取您发布的标记,删除权重并添加constraint=false与我一样的边缘,它也有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Graphviz .dot 节点排序 的相关文章

  • 如何从java调用GraphViz

    如何从java调用GraphViz以及如何使用java调用GraphViz函数 为了访问 GraphViz 库来构建点图 需要包含哪些必要的 jar 文件 有没有生成点图的示例程序 Check this http www loria fr
  • 如何在Mac上打开点[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 首先 我是MacOS新手 我想要的是能够看到输出llc view dag combine1 dags sum ll 在Mac上 llc h
  • 使用 C++ 代码中的 Windows 本机程序打开文件

    我的 C 程序创建 png 文件 我需要在创建后立即打开 查看 该文件 有没有办法打开它 以便在其中打开它Windows资源管理器 因此文件将使用用户首选的程序打开 并且如果没有与文件格式关联的程序 Windows 将显示对话框窗口 用户可
  • graphviz:记录带有粗体标题的节点

    我正在尝试使用 graphviz 来做一些类似于 UML 类图的事情 我想知道是否有一种方法可以使 register 样式的节点的第一个字段以粗体显示 以使其与其他字段不同 我的节点如下所示 digraph i node label
  • graphviz 中的自循环边缘太短且难看

    我用graphviz画了一张图 请参见FSM https i stack imgur com bsVUW png 我认为它很丑 因为自环边缘太短 边缘的属性 minlen 对我不起作用 我尝试了节点的几个端口 但除了我当前的实现之外 一切都
  • 在 Graphviz 中对齐排名

    这是一个后续问题如何实现graphviz dot的严格反向排名 https stackoverflow com questions 47396374 how can i achieve strict reverse ranking of g
  • Graphviz 和 Brew doctor - 意外的 dylibs 错误

    刚刚做了一个brew install graphviz在 Mountain Lion 上 这给了我这个错误 错误 执行失败 make install graphviz rb 47 以为我只是卸载它 所以跑了brew uninstall gr
  • order Graphviz - 固定子图

    我喜欢创建一个像这样的 3 柱形图 Code digraph g rankdir LR node shape circle fontsize 14 fontsize 18 labeljust l rank same edge style i
  • 增加子图之间的距离

    我有以下代码 digraph g graph rankdir LR compound true subgraph cluster0 graph label Ready n nAllowed Purchaser Operations nope
  • 使用点语言在 Graphviz 中压缩有向图

    我正在尝试实现特定图 对称排列群的凯莱图 的可视化 就像此处所做的那样 但使 用 Graphviz 2 28 和 Dot source euclideanspace com http www euclideanspace com maths
  • graphviz 绘图太宽

    我正在做练习 在 jupyter 笔记本中使用 graphviz 创建决策树 然而 决策树过于宽泛 这是代码 from sklearn tree import export graphviz export graphviz tree out
  • GraphViz:未使用新安装程序设置 Windows PATH,从 R 调用时出现问题

    在 R 库中 我使用dot程序 来自 GraphViz 来生成一些图形 通常为 png 格式 dot是一个通常的可执行文件 我通过systemR 命令 到目前为止 一切都运行良好 因为 GraphViz 安装程序正在添加dot到 PATH
  • 设置预定义的节点样式?

    在过去的 15 分钟里 我一直在谷歌上搜索 试图找到这个问题的答案 但我似乎无法弄清楚 我的任务是为我在工作中开发的一些应用程序构建一些小流程图 他们不需要任何花哨的东西 因为他们将在 vizio 中将其转换为他们喜欢的格式 他们甚至说我们
  • 用于生成交互式图的 Java 库

    我想将我们的 SOA 服务可视化为图表 我们有商业服务和领域服务 gt domain service 1 e g business service 1 gt domain service 2 gt domain service 3 我目前使
  • 在 GraphViz 中将多个短节点与单个高节点并行排列

    我想生成这样的东西 节点的对齐是重要的事情 而不是边缘的角度 V V lt alignment at top gt V gt lt alignment at
  • Theano导入错误

    我正在尝试在 CPU 机器上安装 Theano 运行 intel HD 显卡 没有 NVIDIA 在 python 中测试时出现以下导入错误 WARNING theano configdefaults g not detected Thea
  • 如何使用点将图表输出到 SVG 的标题居中?

    到目前为止 我尝试了这条线 但点不断将其推到一边 为我的节点腾出空间 将其推到右侧 diagram info shape plaintext label My Diagram l fontsize 13 有没有办法使用点按 pos 使标签居
  • 在 Graphviz 中从记录元素的中心开始绘制出边

    在 Graphviz 中 是否可以从子记录的中心而不是边界开始绘制出边 这张图 http www linuxjournal com files linuxjournal com linuxjournal articles 072 7275
  • 根据graphviz_layout中的权重设置边长

    我正在尝试使用networkx绘制加权图 我正在使用生成顶点的位置graphviz layout 我希望图中的边长与我使用的边权重成比例 以下是我实现此目的的代码片段 import networkx as nx from networkx
  • 使用 graphviz 绘制自定义 BGL 图表

    我是 Boost 图形库的新手 我尝试使用 graphviz 绘制图形 include

随机推荐

  • Expression.DebugInfo 如何标记表达式?

    所以我知道 Expression DebugInfo 的用途 并且创建了一个调试表达式 但如何使用此调试信息标记其他表达式 这是我正在尝试的一个非常基本的测试 using System using System Collections Ge
  • Python time.sleep() 与 event.wait()

    我想在我的多线程 Python 应用程序中定期执行一个操作 我见过两种不同的做法 exit False def thread func while not exit action time sleep DELAY or exit flag
  • ggplot 将标题的一部分斜体化并将文本分为两行

    我喜欢将以下标题添加到我的图表中 注 美国市场集中度平均值 王国和荷兰分别是1920年 1388年和1244年 其中 注 需要斜体 荷兰分别是1920年 1388年和1244年 应另起一行 使用paste函数 我无法将一部分斜体化 但使用
  • Eclipse 调试器不会在条件断点处停止

    我在 Eclipse 中有这段 Java 代码 我想对其进行调试 这是代码 public Double repulsion Node n1 Node n2 Double rep 0 0 rep Math pow K 2 distEuc n1
  • 使用 WinAPI 挂钩对程序进行沙箱处理

    我想对本机代码进行沙箱处理 并使用 WinAPI 和系统函数的挂钩来阻止或允许该程序执行某些操作 例如读 写文件 修改 Windows 注册表 使用 Internet 连接 这是一种良好且安全的方法吗 该程序绕过这样的安全层有多困难 我已经
  • StringReplace 的二进制版本

    我正在尝试在保存大量数据的 RawByteString 上运行 AnsiStrings StringReplace 其中一些数据需要替换 它会起作用 除了在 StringReplace 内部它将我的字符串转换为 PAnsiChar 因此搜索
  • 带有特定顺序和百分比注释的 ggplot2 饼图

    我有一个如下所示的数据框 make model cnt toyota camry 10 toyota corolla 4 honda city 8 honda accord 13 jeep compass 3 jeep wrangler 5
  • 事务可以在同一个 SQL Server 中跨多个数据库工作吗?如果是这样,这是分布式事务吗?

    事务可以在同一个 SQL Server 中跨多个数据库工作吗 如果是这样 这是分布式事务吗 或者会基本BEGIN TRANSACTION work 同一实例中跨多个DB的事务是本地事务 BEGIN TRANSACTION 会工作得很好
  • Java 8 Collectors.toMap SortedMap

    我正在使用 Java 8 lambda 并想使用Collectors toMap返回一个SortedMap 我能想到的最好的办法就是拨打以下电话Collectors toMap使用假人的方法mergeFunction and mapSupp
  • Javascript 将动态图像从 URL 绘制到画布元素上

    我正在尝试使用其 URL 将动态 PNG 图像 由 PHP 脚本生成的图像 绘制到 Canvas 元素上 我无法真正发布我正在测试的页面的确切 URL 因为您必须登录该网站 我正在使用的动态图像 URL 之一的示例是 http www we
  • 一个关于C++中类型强制的简单问题

    给定一个函数原型和一个类型定义 int my function unsigned short x typedef unsigned short blatherskite 标准定义了以下情况 int main int argc char ar
  • Heroku 上静态资产的重定向子域

    我希望 myapp com blog 重定向到 www myapp com blog 我已经安装了 Refraction 以在机架层执行子域重定向 这在 Heroku for blog 上不起作用 因为 blog 中的文件是静态资产 有什么
  • 简单分隔符之间的匹配,但分隔符本身不匹配

    我正在查看文本文件中的 JSON 数据 除了使用正则表达式来获取引号之间的值之外 我不想做任何事情 我只是用它作为帮助练习正则表达式的一种方法 并达到了这一点 看起来它应该很简单 但事实证明它不是 至少对我和办公室的其他一些人来说 我已经在
  • 用 Guice 代替抽象工厂?

    我是 Guice 的新手 我想知道我能走多远 我有一个界面UserInfo具有多个实现类GoogleUserInfo FacebookUserInfo TwitterUserInfo等等 这些类是使用工厂创建的 public class U
  • 使用 Python + Selenium 通过 while 循环点击下一页

    我正在尝试浏览名为 iens 的网站上的不同页面 我正在使用 selenium python 单击 volgende 荷兰语中的意思是 下一个 但我希望我的程序继续单击下一个 直到使用 while 循环没有剩余页面为止 所以在这种情况下 我
  • SQL Server MDF 文件 - 如何备份

    这是场景 我们有一个包含三个数据库的公司网站 它运行 SQL Server 2005 这三个数据库链接到 MDF 文件 有人试图直接复制 粘贴这些 MDF 文件之一 该文件对文件进行了某种锁定 从而导致只读错误 我们通过分离 重新连接来修复
  • PostgreSQL、pg_dump 和 pg_restore 以及对象依赖顺序

    我有个问题 有没有办法强制 PostgreSQL 9 3 备份 恢复模式以正确的依赖对象顺序 例如 在创建物化视图本身之前 我需要创建一个在物化视图中使用的函数 我在模式恢复时遇到错误 因为物化视图是在创建函数本身之前创建的 Thanks
  • pycharm 中的 matplotlib 外部文档

    如何在 pycharm 中添加 matplotlib 外部文档 到目前为止尝试添加 http matplotlib org api http matplotlib org api 模块 名称 api html matplotlib 模块 名
  • SignalR 和 IIS 回收

    我想创建一个使用 SignalR 向客户端发送通知的服务器 使用组 假设我的网站被回收 这些组会发生什么 因为它们不持久 您需要将您的组保存在外部永久存储中 在这里查找更多详细信息 http www asp net signalr over
  • Graphviz .dot 节点排序

    我正在构建一个 epsilon NFA 来使用规范结构识别正则表达式 我使用子图对正则表达式的各个部分进行分组 运算符给我带来了特别的麻烦 因为 dot 决定移动节点的顺序 我尝试添加边缘权重以强制特定边缘变短以保持边缘的顺序一致 但这似乎