图层次布局算法

2023-12-27

有许多工具和 SDK 可以布局图表。 ogdf、GraphViz、mxGraph、yEd...

有用的布局之一是“分层布局”。但没有纯粹的算法或伪代码来描述它。甚至,这种类型的布局还没有明确的定义。有人了解算法吗?


enter image description here
(source: yworks.com http://docs.yworks.com/yfiles/doc/developers-guide/figures/hier-style-explanation-thumb.png)

简单的层次布局算法是ASAP调度算法的可视化(查看这个讲座 [link] http://cas.ee.ic.ac.uk/people/gac1/Synthesis/Lecture9.pdf),所以我认为最好阅读它。

顺便说一句,您的图片并不完全正确 - 建议的可视化只是可能的可视化之一。

想象一下,您有节点列表并且您知道它们之间的依赖关系。

节点列表

node4
node2
node5
node1
node3
node6

依赖列表

node1 -> node2
node2 -> node4
node3 -> node5
node1 -> node3
node3 -> node6
  • 作为第一步,您应该找到没有依赖关系的节点 - 这 将是您的第 1 层节点。画它们。
  • 然后找到依赖于第 1 层节点的所有节点 - 这将是第 2 层节点。
  • 对于第 2 层等也是同样的事情。 最后,你会得到:

             node1
            /     \
          node2  node3
           /     /   \
        node4 node5 node6
    

这仅适用于非循环有向图。对于无向的,你应该稍微修改一下算法(以随机节点为根),但我认为主要思想是可以理解的。

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

图层次布局算法 的相关文章

随机推荐

  • AWS EventBridge - 读取事件档案

    有谁知道是否有一个 API 可以读取使用 EventBridge 归档功能归档的事件 我们的目标是进行事件重播 但开箱即用的事件重播功能对我们不起作用 因为我们需要保留事件的时间顺序 作为一种解决方法 我想知道是否有一个选项可以通过拖网事件
  • RxJava 在多个订阅者之间共享 Observable 的排放

    我有以下问题 我有一个可观察量正在做一些工作 但其他可观察量需要该可观察量的输出才能工作 我曾尝试多次订阅同一个可观察量 但在日志中我看到原始可观察量已启动多次 这就是我的观察结果 即创建对象 Observable create Obser
  • 仅当我激活工作表时,VBA 复制和粘贴才有效

    我正在工作表之间复制一些范围 但我不知道为什么只有在复制或粘贴工作表之前激活工作表时它才有效 这有效 s Activate s Range Cells 2 8 Cells lrow 8 Copy d Activate d Range Cel
  • Javascript 解析/评估顺序?

    这可能是一个棘手的问题 但我不明白为什么会这样 这会发出警报 function foo 但我希望在定义函数 foo 之前评估警报 有人可以解释我对解析 评估顺序的不理解 或者指出我不理解的资源吗 JavaScript 与 PHP 一样 跟踪
  • null 或empty 的更简单写法?

    我确信我在这里错过了一些东西 对于某个项目 我需要检查字符串是否为空或为空 有没有更简单的方法来写这个 if myString myString null 是的 有String IsNullOrEmpty https msdn micros
  • 字符串连接可以用于包含 SpEL 的应用程序 yml 值吗?

    我正在尝试定义一个 Spring 数据源 url 如下所示 spring datasource url jdbc vcap services compose for mysql credentials uri useSSL true req
  • 在 Rust 中逐行读取大文件[重复]

    这个问题在这里已经有答案了 我的 Rust 程序旨在逐行读取非常大 最多几 GB 的简单文本文件 问题是 这个文件太大 无法一次读取 或者将所有行传输到一个Vec
  • IntelliJ 自动完成替换函数名称

    我已经从 Eclipse 切换到 IntelliJ 但有一些东西我还没有找到 也没有在 google 上找到 How to get the autocomplete to replace the name of the function I
  • 无法销毁 Firebase 连接,导致热 Lambda 由于“Firebase 应用程序名称‘[DEFAULT]’已存在”而失败

    几个小时以来我一直在尝试我能想到的每一种方法 基本上 我正在运行一个 AWS Lambda 函数 它以客户端和服务器角色对我的 Firebase 应用程序执行一些工作 在 Lambda 上 我需要能够逆转firebase initializ
  • 多边形分解——去除凹点形成凸多边形

    我想解构以下以蓝色显示的多边形 从多边形中删除导致凹面的所有点 目前 我一直在尝试做的是 将每个点从多边形中取出 测试该点以查看它是否落在由该集合的其余部分创建的多边形内 如果为 true 则删除该点 如果为假 请保留要点 这在大多数情况下
  • 以“Managed”结尾的类名是什么意思 (C# .NET)?

    我对 C 比较陌生 所以请耐心等待 我了解托管代码和非托管代码之间的基本区别 但我仍然有点困惑何时使用某些方法 例如 某些类名称结尾中的 托管 一词意味着什么 这是否意味着他们受到管理 而其他所有人员则不受管理 例如 两者之间有什么区别Ae
  • iOS 12 iPad 拒绝启动请求 - Xcode

    直到昨天 我已经更新一个应用程序 5 年多了 没有出现任何问题 我将 iPad 更新到了 iOS 12 但是每次尝试运行它时 我都会收到以下消息 iPad 拒绝了发布请求 我在其他装有 iOS 11 的物理设备和模拟器上进行了测试 只有 i
  • 在 Ext.data 上下文中,JsonStore 和 JsonReader 之间的基本区别是什么?

    在 Ext data 上下文中 JsonStore 和 JsonReader 之间的基本区别是什么 我的意思是 当我应该使用 JsonStore 和当我应该使用 JsonReader 时 两者都提供相同的解决方案 实际上它们是两个不同的东西
  • 如何从 Firefox Add-on SDK 扩展启动正常下载

    我正在为 Firefox 开发附加 SDK 扩展 我发现我需要能够像用户请求一样启动下载 即显示正常的文件保存对话框或将文件保存到用户喜欢的任何位置 因为它可以在首选项 gt 内容下配置 有关下载的每一篇文章或文档似乎只考虑了我知道在哪里下
  • Express.js 服务器端渲染 - 请求'/json/version/

    我有一个正在运行的快速服务器来预渲染我的反应应用程序 我有一个将 HomeContainer 与基本路线相匹配的路线文件 并且所有其他路由都与未找到的页面匹配 import HomeContainer from containers hom
  • Android:带有自定义微调器下拉 xml 布局的自定义适配器出现错误

    我有一个带有自定义适配器的微调器 我用它来将微调器下拉中的第一个元素的高度设置为零 我这样做是为了在微调器 第一个元素 中显示默认消息 而用户无法单击它 因为它不可见 package org digitalhealthagency elaj
  • opencv中的solvePnP和calibrateCamera有什么区别?

    calibrateCamera 提供rvec tvec distCoeff and cameraMatrix然而solvePnP takes cameraMatrix distCoeff作为输入并提供rvec tvec作为输出 这两个函数有
  • Laravel 5 中的切换 - Blade

    如何在刀片模板中使用开关 当我使用时 switch login error case 1 E mail input is empty break case 2 Password input is empty break endswitch
  • 未初始化常量 ActionDispatch::Session::EncryptedCookieStore (NameError)

    我和乘客一起乘坐 4 号铁轨 一切都很顺利 直到我做了一个bundle现在 现在我遇到了以下错误 Web application could not be started uninitialized constant ActionDispa
  • 图层次布局算法

    有许多工具和 SDK 可以布局图表 ogdf GraphViz mxGraph yEd 有用的布局之一是 分层布局 但没有纯粹的算法或伪代码来描述它 甚至 这种类型的布局还没有明确的定义 有人了解算法吗 source yworks com