Skip to content

caixuf/QWeight_demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QWeight Demo - Qt哈密顿路径计算可视化工具

项目截图

项目简介

QWeight Demo 是一个基于Qt框架开发的高性能路径计算可视化工具,专注于哈密顿路径的搜索和展示。该项目采用多线程异步架构,提供了直观的网格界面用于复杂路径算法的演示和分析,支持高达5000条哈密顿路径的并发计算。

主要特性

🎯 核心功能

  • 哈密顿路径计算: 专业的哈密顿路径搜索算法,找到访问所有可通行节点的路径
  • 异步多线程架构: 采用QThread和队列机制实现真正的异步计算,UI响应流畅
  • 高性能计算: 支持最多5000条哈密顿路径的并行计算和实时显示
  • 可视化网格界面: 直观的矩形网格显示,支持动态调整网格大小(最大50x50)
  • 美化箭头显示: 采用一笔画风格的精美箭头,直观展示路径方向和顺序
  • 实时计算进度: 显示计算进度和已找到的路径数量

💾 数据管理

  • 多格式支持: 支持XML、SQLite、CSV三种数据格式的导入导出
  • 自动数据持久化: 计算结果自动保存,支持历史记录管理
  • 智能文件检测: 自动识别文件格式并加载数据
  • 选择性导出: 支持选中特定结果进行导出操作
  • 批量路径管理: 高效管理和显示大量路径计算结果

🎨 用户界面

  • 现代化设计: 清晰的布局和直观的操作界面
  • 路径可视化表格: 在结果列表中直接显示路径的视觉化预览
  • 颜色编码: 使用浅绿色箭头和专业配色提供最佳视觉体验
  • Qt布局管理演示: 集成了完整的Qt布局最佳实践演示模块
  • 响应式布局: 支持窗口缩放和自适应显示

⚡ 性能特性

  • 强制停止机制: 点击停止按钮立即终止线程并重新创建,避免卡死
  • 内存优化: 智能内存管理,支持大规模路径计算
  • 边缘计算显示: 实时显示计算过程中的路径发现
  • 线程安全: 完整的线程同步和数据保护机制

技术架构

开发环境

  • 框架: Qt 5.x/6.x
  • 语言: C++14/17
  • 构建工具: qmake / CMake
  • 编译器: 支持MSVC、MinGW、GCC

核心组件

src/
├── main.cpp                    # 程序入口
├── MainWindow.*                # 主窗口管理和异步协调
├── AsyncPathCalculator.*       # 异步路径计算器(多线程)
├── GridGraphicsView.*          # 网格视图组件
├── ControlPanel.*              # 控制面板(禁用暂停按钮)
├── ResultListWidget.*          # 结果列表展示
├── ArrowRenderer.*             # 美化箭头渲染器
├── ArrowGraphicsItem.*         # 箭头图形项
├── PathVisualWidget.*          # 路径可视化组件
├── DataManager.*               # 数据管理器
├── HistoryManager.*            # 历史记录管理
├── LayoutTestWindow.*          # Qt布局管理最佳实践演示
├── PathResult.*                # 路径结果数据结构
├── GridPoint.*                 # 网格点数据结构
└── Common.h                    # 公共定义和常量
├── HistoryManager.*         # 历史记录管理
├── PathResult.*             # 路径结果数据结构
├── GridPoint.*              # 网格点数据结构
└── Common.h                 # 公共定义

快速开始

编译要求

  • Qt 5.x/6.x 或更高版本
  • C++14/17 支持的编译器
  • CMake 3.16+ 或 qmake

编译步骤

使用 qmake

cd QWeight_demo
qmake QWeight_demo.pro
make

使用 CMake

cd QWeight_demo
mkdir build && cd build
cmake ..
make

运行程序

# Windows
./QWeight_demo.exe

# Linux/macOS
./QWeight_demo

使用指南

基本操作

  1. 设置网格: 在控制面板中调整网格大小(支持最大50x50)
  2. 设置起点: 点击"设置起点"按钮,然后在网格中点击设置起始点(绿色圆圈)
  3. 设置终点: 点击"设置终点"按钮,然后在网格中点击设置目标点(红色圆圈)
  4. 开始计算: 点击"开始计算"按钮执行哈密顿路径搜索
  5. 查看结果: 在右侧结果列表中实时查看找到的哈密顿路径
  6. 停止计算: 点击"停止"按钮立即终止计算并重置

高级功能

  • 异步计算: 最多支持5000条哈密顿路径的并发计算
  • 实时显示: 计算过程中实时显示找到的路径数量和进度
  • 数据持久化: 自动保存计算结果,支持XML、SQLite、CSV格式
  • 历史管理: 完整的计算历史记录和结果管理
  • 布局演示: 集成Qt布局管理最佳实践演示(工具菜单)
  • 路径可视化: 精美的箭头和颜色编码展示路径

特殊说明

  • 哈密顿路径: 程序专门计算哈密顿路径,即访问所有可通行节点恰好一次的路径
  • 性能优化: 采用多线程异步架构,大规模计算时UI保持响应
  • 强制停止: 停止按钮采用线程终止机制,确保不会出现卡死情况
  • Ctrl+S: 保存当前结果
  • Ctrl+N: 清空当前网格
  • F5: 重新计算路径

数据格式

XML格式示例

<?xml version="1.0" encoding="UTF-8"?>
<PathResults>
    <Result>
        <StartPoint x="0" y="0"/>
        <EndPoint x="5" y="5"/>
        <PathLength>10</PathLength>
        <CalculationTime>15</CalculationTime>
        <Path>
            <Point x="0" y="0"/>
            <Point x="1" y="0"/>
            <!-- 更多路径点 -->
        </Path>
    </Result>
</PathResults>

SQLite数据库结构

  • path_results: 主结果表
  • path_points: 路径点详细信息表

算法说明

深度优先搜索 (DFS)

项目实现了经典的深度优先搜索算法用于路径查找:

  • 时间复杂度: O(V + E),其中V是顶点数,E是边数
  • 空间复杂度: O(V)
  • 特点: 能够找到从起点到终点的路径,但不保证是最短路径
  • 适用场景: 适合探索所有可能路径或在稠密图中快速找到解

项目特色

🎨 美化箭头渲染

  • 采用参考专业图形库的箭头算法
  • 实现一笔画风格的流畅箭头
  • 箭头宽度为两点距离的1/7,视觉效果最佳
  • 支持抗锯齿渲染,显示效果平滑

技术亮点

🧠 哈密顿路径算法

  • 基于深度优先搜索(DFS)的哈密顿路径实现
  • 支持访问所有可通行节点恰好一次的路径计算
  • 最多可找到5000条不同的哈密顿路径
  • 智能回溯算法,确保计算效率

⚡ 异步多线程架构

  • QThread工作线程与主UI线程分离
  • QQueue队列机制实现线程安全的数据传递
  • 强制停止机制:线程terminate + 重新创建
  • 100ms定时器批处理优化UI响应

📊 智能数据管理

  • 自动检测并适配XML、SQLite、CSV格式
  • 支持增量数据保存和加载
  • 提供数据完整性验证
  • 智能的网格大小恢复功能

版本历史

v2.0.0 (当前版本)

  • ✅ 哈密顿路径专业算法实现
  • ✅ 异步多线程计算架构
  • ✅ 强制停止和线程重建机制
  • ✅ 5000条路径限制和实时显示
  • ✅ Qt布局管理最佳实践演示
  • ✅ 禁用暂停按钮,简化操作流程

v1.0.0 (历史版本)

  • ✅ 基础路径计算功能
  • ✅ 美化的箭头显示效果
  • ✅ 多格式数据持久化
  • ✅ 响应式用户界面

性能指标

计算能力

  • 网格规模: 支持最大50x50网格(2500个节点)
  • 并发路径: 最多计算5000条哈密顿路径
  • 计算速度: 实时显示计算进度和找到的路径
  • 内存使用: 优化的数据结构,支持大规模计算

响应性能

  • UI响应: 异步架构确保UI始终流畅
  • 停止响应: 强制停止机制,1秒内响应
  • 数据处理: 100ms批处理,平衡性能与响应

贡献指南

欢迎提交Issue和Pull Request来帮助改进项目!

开发环境设置

  1. 克隆仓库: git clone https://github.com/caixuf/QWeight_demo.git
  2. 安装Qt开发环境(Qt5.x或Qt6.x)
  3. 配置C++14/17编译环境
  4. 运行测试确保功能正常

提交规范

  • 遵循现有的代码风格和架构
  • 添加适当的注释和文档
  • 确保新功能有相应的测试
  • 提交前运行完整的编译测试
  • 多线程代码需要特别注意线程安全

许可证

本项目采用MIT许可证,详见 LICENSE 文件。

作者与致谢

  • 主要开发者: caixuf

  • 算法支持: 哈密顿路径算法基于经典图论实现

  • UI框架: 基于Qt框架的现代化界面设计

  • 特别致谢: 感谢Qt社区提供的丰富文档和示例

  • caixuf - 项目创建者和主要维护者

致谢

  • Qt框架提供的强大GUI支持
  • 参考了专业图形库中的箭头渲染算法
  • 感谢所有贡献者的支持和建议

如果这个项目对您有帮助,请给它一个⭐️!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages