Skip to content

Releases: SiriLee/GraphViz

GraphViz v1.3.0

Choose a tag to compare

@SiriLee SiriLee released this 01 Jul 10:31

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

Choose a tag to compare

@SiriLee SiriLee released this 20 Jun 08:25

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->BA<-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

Choose a tag to compare

@SiriLee SiriLee released this 17 Jun 12:30

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

Choose a tag to compare

@SiriLee SiriLee released this 17 Jun 09:47

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

Choose a tag to compare

@SiriLee SiriLee released this 17 Jun 08:12

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 变更日志

新增功能

孤立点支持

一行仅包含一个顶点名(不含边操作符)时创建孤立点(无边顶点)。支持两种格式:

  • 无引号名:不含空格和 - 的字符串,如 Av1
  • 引号名:"..." 包裹任意内容,支持 \" 转义,如 "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

Choose a tag to compare

@SiriLee SiriLee released this 15 Jun 14:37

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)---52(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

Choose a tag to compare

@SiriLee SiriLee released this 09 Jun 11:24

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

Choose a tag to compare

@SiriLee SiriLee released this 09 Jun 08:52

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

Choose a tag to compare

@SiriLee SiriLee released this 09 Jun 08:47

GraphViz v1.0.2 发行说明

发布日期: 2026-06-09
版本: v1.0.2
仓库: https://github.com/SiriLee/GraphViz


v1.0.2 变更日志

新增

  • 自环支持:支持 A-->A(有向自环)和 A---A(无向自环),以弧线方式渲染
  • 灵活解析器:重写输入解析器,现在支持:
    • 空格间隔:a --- ba --> 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

快速开始

  1. 下载 GraphViz-v1.0.2-portable.zip
  2. 解压到任意目录
  3. 双击 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

Choose a tag to compare

@SiriLee SiriLee released this 08 Jun 12:48

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 版已包含所有依赖

快速开始

  1. 下载 GraphViz-v1.0.1-portable.zip
  2. 解压到任意目录
  3. 双击 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)
  • 顶点拖动交互
  • 有向边箭头和权重标签绘制
  • 连通分量多色高亮
  • 文件加载、保存支持