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