Releases: SiriLee/GraphViz
Release list
GraphViz v1.3.0
v1.3.0 变更日志
新功能
- 顶点着色算法 (#17):Welsh-Powell 贪心 + 回溯精确求解。≤30 顶点精确求色数,>30 顶点使用近似。GUI 按色类高亮顶点。
- Dijkstra 多解支持 (#13):通过前驱 DAG + DFS 回溯枚举所有权重相等的最短路径(上限 50 条),GUI 提供上一条/下一条导航。
- Help 菜单问题反馈入口:新增"提交问题反馈"菜单项,方便用户从应用内跳转 GitHub Issues。
修复
- 符号输入 BUG (#18):
"A"---"B"等引号顶点名 + 无向边组合不再被误判为引号权重。parseOperator()新增前瞻探测区分引号权重与引号右顶点。 - 中文路径/文件名支持 (#12):所有文件 I/O 统一使用
QFile+QString路径(Windows 宽字符 API),替换原有的窄字符串流。中文路径和文件名均可正常读写。 - 更新检查器优化:新增频率限制守卫 + 每日自动检查上限,防止 GitHub API 限流。
改进
- 顶点圆圈自适应大小 (#14):通过
QFontMetrics测量标签文本宽度动态调整半径(20–80px 区间),长标签不再溢出圆圈。 - 移除冗余底部按钮:Open/Undo/Redo 按钮已从底部栏移除(菜单和快捷键仍可用),界面更简洁。
文档
- LLM 提示词模板 (#9):合并到
MANUAL.html,便携包内可直接查看。提示词覆盖完整图数据格式规范,支持多图输出(各自独立代码块)。 - README & MANUAL 同步 v1.3.0:算法计数更新(10→11),补充顶点着色、Dijkstra 多解、自适应圆圈、问题反馈入口等文档说明。
测试方案
| 功能 | 操作 | 预期 |
|---|---|---|
| 顶点着色 | 打开无向图 → 选择"顶点着色" → 执行 | 顶点按色类着色,状态栏显示色数 |
| Dijkstra 多解 | 输入含等权多路径的图 → Dijkstra → 上一条/下一条 | 导航切换不同等权路径 |
| 引号顶点 + 无向边 | 输入 "A"---"B" → 解析 |
正常解析,不报错 |
| 中文路径 | 将 .graph 文件放在中文路径下 → 打开/保存 |
正常读写 |
| 长节点名 | 创建顶点名 20+ 字符 → 解析 | 圆圈自动放大,文字不溢出 |
| LLM 提示词 | 便携包内打开 MANUAL.html → LLM 提示词模板章节 | 内容完整,可直接复制 |
| 便携版 | 解压 GraphViz-v1.3.0-portable.zip → 运行 |
功能完整,无需安装 Qt |
修改文件
CMakeLists.txt # 版本 1.3.0
CMakePresets.json # 启用 CMAKE_EXPORT_COMPILE_COMMANDS
README.md # v1.3.0 功能文档同步
include/GraphAlgorithm.h # ColoringResult 结构体 + PathResult 多解字段
src/GraphAlgorithm.cpp # 顶点着色 + Dijkstra 多解前驱 DAG + DFS 回溯
src/GraphParser.cpp # parseOperator 前瞻探测修复引号权重误判
src/gui/GraphWidget.cpp # 顶点圆圈自适应大小 + 着色高亮支持
src/gui/GraphWidget.h # computeRadii + m_vertexRadii + 组件着色边开关
src/gui/MainWindow.cpp # 顶点着色调度 + Dijkstra 多解导航 + 问题反馈菜单 + 移除冗余按钮
src/gui/MainWindow.h # m_hasPathResult 字段
src/gui/UpdateChecker.cpp # 频率限制守卫 + 每日检查上限
src/gui/UpdateChecker.h # 新增限流成员变量
docs/MANUAL.html # LLM 提示词模板 + v1.3.0 功能文档同步
GraphViz v1.2.2
GraphViz v1.2.2 发行说明
发布日期: 2026-06-20
版本: v1.2.2
仓库: https://github.com/SiriLee/GraphViz
下载: https://github.com/SiriLee/GraphViz/releases/tag/v1.2.2
v1.2.2 变更日志
拖拽跟随修复(核心修复)
v1.2.1 默认图从 11 顶点改为 4 顶点紧簇后,拖拽漂移问题变得明显。根因:拖拽时鼠标跟踪与画面渲染使用不同视图变换(缩放因子随包围盒变化而偏离)。
- 排除变换方案:拖拽时包围盒排除被拖顶点,使缩放因子恒定
- 全局对齐:按下瞬间所有顶点数据位置统一重映射,消除视图跳变
- 松手自动适配:释放后触发正常变换重绘,视图自动缩放包含被拖顶点新位置
- 边界卡死、出界冻结问题同步解决
解析器严格化
- 结构化 x-W-y 解析:6 阶段操作符解析,
<>各至多一次且位置受限 - 权重校验强化:非法浮点数权重 → 报错(不再静默回退为 1.0)
- 尾部内容检测:
my-node---B正确报错(顶点名含-须加引号) - 新增有效格式:
A->B、A<-B(最简有向边) - 引号规则扩展:无引号顶点名遇
-<>即停,强制引号包裹
文档更新
- 输入格式文档同步更新(README.md、MANUAL.html)
- 错误拒绝表扩充(新增 5 个错误示例)
- 解析器设计章节重写(6 阶段结构化描述)
测试方案
| 功能 | 操作 | 预期 |
|---|---|---|
| 拖拽跟随 | 拖拽默认图 A-D 任意顶点 | 严格跟随鼠标,松手视图适配 |
| 按下无跳变 | 点击边缘附近的顶点 | 按下瞬间画面不变 |
| 边界拖拽 | 拖至窗口外 | 不卡死,松手后自动恢复 |
| 新语法 | 输入 A->B, A<-B |
正常解析为有向边 |
| 非法权重 | 输入 A-"abc"->B |
行号报错 |
| 尾部检查 | 输入 my-node---B |
报错提示引号 |
| 便携版 | 解压即用 | 功能完整,MANUAL.html 可打开 |
修改文件
CMakeLists.txt # 版本 1.2.2
include/GraphParser.h # 文档注释更新为严格边语法
src/GraphParser.cpp # 6 阶段 x-W-y 解析 + 尾部校验 + needsQuoting 扩展
src/gui/GraphWidget.cpp # 排除变换重载 + 全局对齐 + paintEvent 冻结变换
README.md # 输入格式/解析器/错误拒绝表更新
docs/MANUAL.html # 输入格式/错误拒绝表更新
.gitignore # 新增 dist/
CLAUDE.md # 发布流程精简至 CLAUDE.local.md
系统要求
- Windows 10/11 (64-bit)
- 无需安装 Qt — Portable 版解压即用
技术栈
C++17 · Qt 6 (Widgets + Network) · CMake · MinGW-w64 · GitHub Releases API
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
GraphViz v1.2.0
GraphViz v1.2.0 发行说明
发布日期: 2026-06-17
版本: v1.2.0
仓库: https://github.com/SiriLee/GraphViz
下载: https://github.com/SiriLee/GraphViz/releases/tag/v1.2.0
v1.2.0 变更日志
新增功能
帮助菜单
新增"帮助(&H)"菜单,包含三项功能:
- 检查更新:异步查询 GitHub Releases API,比较本地版本与最新 Release。启动后自动检查(延迟 2s,非阻塞),菜单项支持手动触发。发现新版本时状态栏持久提示;已是最新或网络异常时 5s 后自动消失。
- 打开下载页:调用系统默认浏览器打开 GitHub Releases 页面。
- 关于:显示版本号、项目简介、Qt 运行时版本、GitHub 链接和 MIT 许可证。
更新检查器 (UpdateChecker)
- 独立的 QObject 子类,封装
QNetworkAccessManager异步 HTTP 请求 - 语义化版本比较:去除
v前缀,按major.minor.patch字典序比较,解析失败 fail-closed - 支持系统代理:调用
QNetworkProxyFactory::setUseSystemConfiguration(true),VPN 智能/全局模式均可正常访问 GitHub API
工程修复
main.cpp硬编码版本号"1.1.0"改为GRAPHVIZ_VERSION宏,与 CMake 版本自动同步
测试方案
| 功能 | 操作 | 预期 |
|---|---|---|
| 启动自动检查 | 启动应用,等待 2s | 状态栏:"正在检查更新..." → "已是最新版本" → 5s 后恢复 |
| 手动检查 | 帮助 → 检查更新 | 同上 |
| 发现新版本 | 创建更高版本 Release 后启动 | 状态栏持久显示"发现新版本 vX.Y.Z — ..." |
| 打开下载页 | 帮助 → 打开下载页 | 默认浏览器打开 GitHub Releases |
| 关于对话框 | 帮助 → 关于 | 显示版本号、Qt 版本、GitHub、MIT License |
| 智能代理 | VPN 智能模式 + 检查更新 | 正常获取更新(系统代理生效) |
| 断网 | 断网 + 检查更新 | "检查更新失败: ..." → 5s 后恢复 |
| 窗口标题 | 启动 | 显示 GraphViz v1.2.0 — 图可视化工具 |
修改文件
CMakeLists.txt # 版本 1.2.0 + Qt6::Network
README.md # 新增 v1.2.0 帮助菜单文档
src/main.cpp # 系统代理 + 版本号修复
src/gui/MainWindow.h/cpp # 帮助菜单 + UpdateChecker 集成
src/gui/UpdateChecker.h # 新增 — 更新检查器头文件
src/gui/UpdateChecker.cpp # 新增 — GitHub API + 版本比较实现
系统要求
- Windows 10/11 (64-bit)
- 无需安装 Qt — Portable 版解压即用
技术栈
C++17 · Qt 6 (Widgets + Network) · CMake · MinGW-w64 · GitHub Releases API
GraphViz v1.1.1
GraphViz v1.1.1 发行说明
发布日期: 2026-06-17
版本: v1.1.1
仓库: https://github.com/SiriLee/GraphViz
下载: https://github.com/SiriLee/GraphViz/releases/tag/v1.1.1
v1.1.1 变更日志
新增功能
孤立点支持
一行仅包含一个顶点名(不含边操作符)时创建孤立点(无边顶点)。支持两种格式:
- 无引号名:不含空格和
-的字符串,如A、v1 - 引号名:
"..."包裹任意内容,支持\"转义,如"Node A"、"A-B" - 序列化 (
serialize) 同步输出孤立点,保存/加载不丢失 - 力导向布局正确渲染孤立点(排斥力推向外围)
算法修复
平面性检测
- 阈值判断改用非孤立顶点数 (
nNonIsolated),避免孤立点膨胀顶点总数导致 K5/K3,3 暴力搜索被跳过 - Euler 公式界同步修正
哈密顿回路/通路
- 回溯门限 (
>20顶点跳过) 改用非孤立顶点数,避免含孤立点时误拒
工程
- 新增
CLAUDE.md— 项目架构、构建设置与发布流程文档
测试方案
| 功能 | 操作 | 预期 |
|---|---|---|
| 孤立点输入 | 编辑器输入 A---B + C + "孤立节点" |
解析 → 画布出现 4 个顶点 |
| 孤立点保存 | 保存 → 重新加载 | 孤立点不丢失 |
| 平面图 + 孤立点 | K5 图加 6 个孤立点 | 平面性检测 → ✗ K5 subgraph found |
| Hamilton + 孤立点 | 15 顶点连通图加 6 个孤立点 | 正常运行(不被阈值拒绝) |
| Euler + 孤立点 | 欧拉图加孤立点 | 欧拉回路结果不变 |
修改文件
CMakeLists.txt, CLAUDE.md (新增)
src/GraphParser.cpp, src/GraphAlgorithm.cpp
系统要求
- Windows 10/11 (64-bit)
- 无需安装 Qt — Portable 版解压即用
技术栈
C++17 · Qt 6 · CMake · MinGW-w64 · Fruchterman-Reingold Layout
GraphViz v1.1.0
GraphViz v1.1.0 发行说明
发布日期: 2026-06-15
版本: v1.1.0
仓库: https://github.com/SiriLee/GraphViz
下载: https://github.com/SiriLee/GraphViz/releases/tag/v1.1.0
v1.1.0 变更日志
新增功能
1. 同名节点支持 (Issue #4)
name(N)语法:2(1)---5和2(2)---3创建两个不同的顶点,画布均显示 "2"- 内部标识
name#N,渲染用display_name - 引号名不触发后缀解析,
\(\)转义表示字面括号 - 序列化自适应:同名时加后缀,否则省略
2. 平面图判断 (Issue #6)
- 10 种算法 → 新增「平面性检测」
- 三级检测:Euler 公式快速否定 → K5/K3,3 子图暴力搜索 (n≤10) → 条件判定
- 使用去重边数 (m_unique),平行边不导致误判
- 状态栏显示 ✓ 平面图 / ✗ 非平面图 + 原因
3. Hamilton 多解 (Issue #5)
- 回溯不再首解即停,收集所有哈密顿回路/通路(上限 100)
- UI 新增「< 上一解」「下一解 >」按钮,循环切换
- 状态栏显示 "解 1/N"
4. Euler 多解 + 指定起点
- Euler 回路/通路支持多解搜索(小图 n≤15 且 m≤30 时回溯,上限 50)
- 大图回退到贪心 Hierholzer 单解
- Hamilton 回路/通路、Euler 回路/通路均支持指定起点(复用 from 输入框)
5. 数据分离
test_data/:综合测试数据 (10 个文件),gitignored,不入包samples/:程序展示数据 (6 个文件),入包
优化
- 默认示例图重新设计,更紧凑美观
- 力导向布局通过增加连接边减少离散
测试方案
| 功能 | 测试文件 | 操作 |
|---|---|---|
| 同名节点 | 编辑器输入 2(1)---C + 2(2)---F |
解析 → 画布出现两个 "2" |
| 平面图正例 | samples/planar-cube.graph |
平面性检测 → ✓ 平面图 |
| 非平面图 | samples/nonplanar-k5.graph |
平面性检测 → ✗ K5 subgraph |
| Hamilton 多解 | samples/hamilton-multi.graph |
哈密顿回路 → 上一解/下一解切换 |
| Euler 多解 | test_data/euler.graph |
欧拉回路 → 多解切换 |
| 指定起点 | 任意图,from 填顶点名 | Euler/Hamilton 从指定顶点开始 |
修改文件
.gitignore, CMakeLists.txt, README.md
include/GraphTypes.h, Graph.h, GraphAlgorithm.h
src/Graph.cpp, GraphParser.cpp, GraphAlgorithm.cpp
src/gui/GraphWidget.cpp, MainWindow.h, MainWindow.cpp
src/main.cpp
samples/ (新增 6 文件)
系统要求
- Windows 10/11 (64-bit)
- 无需安装 Qt — Portable 版解压即用
技术栈
C++17 · Qt 6.11.1 · CMake · MinGW-w64 GCC 13.1.0 · Fruchterman-Reingold Layout
GraphViz v1.0.4
GraphViz v1.0.4 发行说明
发布日期: 2026-06-09
版本: v1.0.4
仓库: https://github.com/SiriLee/GraphViz
下载: https://github.com/SiriLee/GraphViz/releases/tag/v1.0.4
v1.0.4 变更日志
新增
- 负权重支持:
a-"-2"->b引号包裹负权;序列化自动加引号 - 平行边(重边):Edge 添加唯一
id,同端点同方向多条边并存;渲染自动垂直偏移 - 权重显示策略:任意边显式提供权重 → 全局显示所有权重;否则全部隐藏
<---格式:左向箭头,有向 B→A(<在开头 = 反向)- 操作符结构校验:
<仅可在开头,>仅可在末尾;a>-<b等明确报错 - 力导向大幅优化:乘法降温 150 次、排斥力 1.5×、软边界、小图间距放大、平行边吸引力去重
- 完善 README:项目架构、组件职责表、输入格式全览、算法详解、解析器设计
- 6 张截图 + 5 个专用测试图:欧拉回路、分量、平行边、自环、最短路径
修复
- 平行边渲染:paintEvent 改用
getAllEdges()按 id 去重 - 权重标签重叠:沿统一方向分散(25%/50%/75%)
- 标签贴边:垂直距离从 12px 缩至 3px
- 反向边 perp 相消:同组边使用统一垂直基准方向
- 序列化:自环不再用怪异格式,统一输出标准紧凑格式
- 清除确认:移除无法生效的 Ctrl+Z 提示
自 v1.0.1 以来累积
- 自环支持(弧线 + 度数修正)
- 灵活解析器(空格、引号名、
<-->、a-2-b) - Shift+Tab 前向缩进(GraphTextEdit 子类)
- 无控制台窗口(WIN32 子系统)
- 环形初始布局 + 乘法降温
系统要求
- Windows 10/11 (64-bit)
- 无需安装 Qt — Portable 版解压即用
支持的图论算法 (9 种)
| # | 算法 | 方法 |
|---|---|---|
| 1 | 最短路径 | Dijkstra |
| 2 | 最小生成树 | Kruskal |
| 3 | 关节点 & 桥 | Tarjan DFS |
| 4 | 欧拉回路 | Hierholzer |
| 5 | 欧拉通路 | Hierholzer |
| 6 | 哈密顿回路 | 回溯 + 剪枝 |
| 7 | 哈密顿通路 | 回溯 + 剪枝 |
| 8 | 连通分量 | BFS |
| 9 | 强连通分量 | Kosaraju |
技术栈
C++17 · Qt 6.11.1 · CMake · MinGW-w64 GCC 13.1.0 · Fruchterman-Reingold Layout
GraphViz v1.0.3
GraphViz v1.0.3 发行说明
发布日期: 2026-06-09
版本: v1.0.3
仓库: https://github.com/SiriLee/GraphViz
v1.0.3 变更日志
修复
- Shift+Tab 前向缩进:子类化
GraphTextEdit直接处理Key_Backtab,编辑体验与记事本一致 - 自环被算法忽略:
degree()对自环正确计 2,欧拉回路等算法现在正确处理含自环的图 - 操作符贪婪匹配:修复
1.000-->001等右顶点以数字开头时被错误解析的问题 - 序列化格式:自环不再使用怪异格式,统一为标准
-->/---紧凑输出 - 清除确认对话框:移除无法生效的 Ctrl+Z 提示
改进
- 力导向布局:初始位置从随机散布改为环形均匀分布 + 小幅抖动,迭代次数增至 100,顶点分布更均匀,减少边重合
- 无控制台窗口:链接 Windows GUI 子系统,启动不弹命令行
新增 (自 v1.0.1)
- 自环支持(弧线渲染)
- 灵活解析器:空格、引号名、
<-->、多余-、a-2-b、#注释 - 重叠边自动偏移绘制
- 撤销/重做按钮 + 编辑菜单
输入格式全览
| 格式 | 结果 |
|---|---|
a-->b |
有向无权 |
a-2.5->b |
有向, 权重 2.5 |
a---b |
无向无权 |
a-3--b |
无向, 权重 3 |
a --- b |
无向无权(含空格) |
a-2-b |
无向, 权重 2 |
a<-->b |
无向无权(双向箭头) |
"abc"---"ab cd" |
引号名(含空格) |
A---A |
无向自环 |
A-->A |
有向自环 |
快捷键
| 快捷键 | 功能 |
|---|---|
| Ctrl+Z | 撤销 |
| Ctrl+Y | 重做 |
| Shift+Tab | 减少缩进 |
| Ctrl+O | 打开文件 |
| Ctrl+S | 保存文件 |
系统要求
- Windows 10/11 (64-bit)
- 无需安装 Qt — 解压即用
支持的图论算法 (9 种)
| # | 算法 | 方法 |
|---|---|---|
| 1 | 最短路径 | Dijkstra |
| 2 | 最小生成树 | Kruskal |
| 3 | 关节点 & 桥 | Tarjan DFS |
| 4 | 欧拉回路 | Hierholzer |
| 5 | 欧拉通路 | Hierholzer |
| 6 | 哈密顿回路 | 回溯 + 剪枝 |
| 7 | 哈密顿通路 | 回溯 + 剪枝 |
| 8 | 连通分量 | BFS |
| 9 | 强连通分量 | Kosaraju |
技术栈
C++17 · Qt 6.11.1 · CMake · MinGW-w64 GCC 13.1.0 · Fruchterman-Reingold Layout
GraphViz v1.0.2
GraphViz v1.0.2 发行说明
发布日期: 2026-06-09
版本: v1.0.2
仓库: https://github.com/SiriLee/GraphViz
v1.0.2 变更日志
新增
- 自环支持:支持
A-->A(有向自环)和A---A(无向自环),以弧线方式渲染 - 灵活解析器:重写输入解析器,现在支持:
- 空格间隔:
a --- b、a --> b - 多余连字符:
a-----b(无向) - 双向箭头:
a<-->b(视作无向) - 加权单连字符:
a-2-b(无向, weight=2) - 引号顶点名:
"abc"---"ab cd"(含空格名) - 转义引号:
"\"a\""---"\"b\""→ 顶点名"a"和"b" - 行内注释:
#后的内容被忽略
- 空格间隔:
- Shift+Tab 前向缩进:编辑器中支持选中多行 Shift+Tab 减少缩进
- 清除确认:点击「清除全部」弹出确认对话框
修复
- 无控制台窗口:启动时不再弹出命令行窗口(链接 Windows GUI 子系统)
- 重叠边渲染:两顶点间多条边(如
A-->B+B-->A)现在自动偏移绘制,不再重叠 - 自环邻接表:修复自环造成邻接表重复条目的问题
输入格式全览
| 格式 | 结果 |
|---|---|
a-->b |
有向无权 |
a-2.5->b |
有向, 权重 2.5 |
a---b |
无向无权 |
a-3--b |
无向, 权重 3 |
a --- b |
无向无权(含空格) |
a-2-b |
无向, 权重 2 |
a<-->b |
无向无权(双向箭头) |
a-----b |
无向无权(多余 -) |
"abc"---"ab cd" |
引号名(含空格) |
A---A |
无向自环 |
A-->A |
有向自环 |
系统要求
- Windows 10/11 (64-bit)
- 无需安装 Qt
快速开始
- 下载
GraphViz-v1.0.2-portable.zip - 解压到任意目录
- 双击
GraphViz.exe运行
快捷键
| 快捷键 | 功能 |
|---|---|
| Ctrl+Z | 撤销文本编辑 |
| Ctrl+Y | 重做文本编辑 |
| Shift+Tab | 减少缩进 |
| Ctrl+O | 打开文件 |
| Ctrl+S | 保存文件 |
支持的图论算法 (9 种)
| # | 算法 | 方法 |
|---|---|---|
| 1 | 最短路径 | Dijkstra |
| 2 | 最小生成树 | Kruskal |
| 3 | 关节点 & 桥 | Tarjan DFS |
| 4 | 欧拉回路 | Hierholzer |
| 5 | 欧拉通路 | Hierholzer |
| 6 | 哈密顿回路 | 回溯 + 剪枝 |
| 7 | 哈密顿通路 | 回溯 + 剪枝 |
| 8 | 连通分量 | BFS |
| 9 | 强连通分量 | Kosaraju |
技术栈
C++17 · Qt 6.11.1 · CMake · MinGW-w64 GCC 13.1.0 · Fruchterman-Reingold Layout
GraphViz v1.0.1
GraphViz v1.0.1 发行说明
发布日期: 2026-06-08
版本: v1.0.1
仓库: https://github.com/SiriLee/GraphViz
v1.0.1 变更日志
修复
- 拖动灵敏度漂移:修复了将顶点拖向视图边缘时灵敏度异常增高的问题。现在拖动过程中使用按下鼠标瞬间的固定坐标变换,而非每帧重新计算。
- 单顶点图渲染:修复了只有单个顶点时图无法渲染的问题,现在会居中显示。
新增
- 撤销/重做:新增「↩ 撤销」和「↪ 重做」按钮,支持 Ctrl+Z / Ctrl+Y 快捷键,可恢复文本编辑操作。
- 编辑菜单:菜单栏新增「编辑」菜单,包含撤销、重做项(附快捷键提示)。
- 清除确认:点击「清除全部」时弹出确认对话框,防止误操作。同时提示可通过 Ctrl+Z 恢复文本。
系统要求
- Windows 10/11 (64-bit)
- 无需安装 Qt — Portable 版已包含所有依赖
快速开始
- 下载
GraphViz-v1.0.1-portable.zip - 解压到任意目录
- 双击
GraphViz.exe运行
支持的图论算法 (9 种)
| # | 算法 | 方法 | 高亮颜色 |
|---|---|---|---|
| 1 | 最短路径 | Dijkstra | 绿色 |
| 2 | 最小生成树 | Kruskal | 橙色 |
| 3 | 关节点 & 桥 | Tarjan DFS | 红色节点 / 紫色边 |
| 4 | 欧拉回路 | Hierholzer | 蓝色 |
| 5 | 欧拉通路 | Hierholzer 变体 | 蓝色 |
| 6 | 哈密顿回路 | 回溯 + 剪枝 | 青色 |
| 7 | 哈密顿通路 | 回溯 + 剪枝 | 青色 |
| 8 | 连通分量 | BFS | 多色 |
| 9 | 强连通分量 | Kosaraju | 多色 |
技术栈
C++17 · Qt 6.11.1 · CMake · MinGW-w64 GCC 13.1.0 · Fruchterman-Reingold Layout
v1.0.0 (上一版本)
新增
- 图数据模型:有向/无向边、带权/不带权边混合存储
- 文本格式解析器:支持 4 种边格式 + 注释 + 空行
- 9 种图论算法
- Qt6 图形界面:文本输入面板 + QPainter 自绘渲染 + 算法控制栏
- 力导向布局 (Fruchterman-Reingold)
- 顶点拖动交互
- 有向边箭头和权重标签绘制
- 连通分量多色高亮
- 文件加载、保存支持