Skip to content

GraphViz v1.2.1

Choose a tag to compare

@SiriLee SiriLee released this 17 Jun 12:30
· 30 commits to main since this release

GraphViz v1.2.1 发行说明

发布日期: 2026-06-17
版本: v1.2.1
仓库: https://github.com/SiriLee/GraphViz
下载: https://github.com/SiriLee/GraphViz/releases/tag/v1.2.1


v1.2.1 变更日志

新增功能

用户说明书

  • 新增 docs/MANUAL.html:自包含 CSS 的 HTML 说明书,浏览器打开格式统一美观
  • 粘性导航目录,斑马纹表格,代码高亮,响应式布局,打印友好
  • 帮助菜单新增「使用说明」项(MainWindow::onOpenManual()

力导向布局重大改进

分量独立布局(核心修复)

  • 调用 GraphAlgorithm::connectedComponents() 检测连通分量
  • 多分量图:每个分量在自己的网格单元内独立运行 FR,分量间零干扰
  • 彻底解决多分量图所有顶点散落边缘形成矩形的问题(根因:分量间无吸引力)
  • 单分量图:走原逻辑,完全不变
  • 单顶点分量:跳过 FR,直接放在网格单元中心

参数优化

  • 理想边长引入紧凑度系数 k = 0.8 × sqrt(area / n)
  • 软边界边距 10% → 8%(释放可用空间)
  • 单分量图自然伸展余量从 -9%(压缩)提升至 +16%(舒适)

算法修复

关节点 & 桥检测(Tarjan)

  • 修复有向边桥检测漏报:预建无向化邻接表,将有向边展开为双向供 DFS 遍历
  • 使用 unordered_set 去重平行边,确保桥定义正确(所有平行边断开才判定为桥)
  • 修复前:sample.graph 中 A→G 未被识别为桥;修复后正确识别

细节优化

  • 默认示例图简化为 5 行基础用法,详细用法指向说明书
  • 默认窗口 1200×750(适合多数屏幕)
  • 清理 ForceLayout.cpp 死代码(未使用的 adj 局部变量)
  • 删除说明书中不完美的 ASCII GUI 布局图

测试方案

功能 操作 预期
单分量图 加载 sample.graph 布局紧凑,不贴边,A→G 为桥
多分量图 加载 components.graph 4 分量 2×2 网格排列
混合图 加载 showcase.graph 2 分量左右排列,不推挤
桥检测 运行 Tarjan 算法于 sample.graph A→G 紫色高亮
使用说明 帮助 → 使用说明 浏览器打开 MANUAL.html
便携版 解压即用 无缺失 DLL,功能完整

修改文件

CMakeLists.txt              # 版本 1.2.1
CLAUDE.md                   # 发布流程新增用户测试步骤 + MANUAL.html
README.md                   # 布局参数/帮助菜单/算法说明更新
docs/MANUAL.html            # 新增 — 自包含 HTML 说明书
docs/MANUAL.md              # 删除 — 由 HTML 替代
src/gui/ForceLayout.cpp     # 分量独立布局 + k×0.8 + margin 8%
src/gui/MainWindow.cpp      # 说明书路径更新 + 窗口尺寸 + 简化示例图
src/GraphAlgorithm.cpp      # Tarjan 桥检测有向边修复

系统要求

  • Windows 10/11 (64-bit)
  • 无需安装 Qt — Portable 版解压即用

技术栈

C++17 · Qt 6 (Widgets + Network) · CMake · MinGW-w64 · GitHub Releases API