GraphViz v1.2.1
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