Skip to content

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