# dijkstra **Repository Path**: openwcs/dijkstra ## Basic Information - **Project Name**: dijkstra - **Description**: 这是一个使用 PyQt5 开发的炫酷 Dijkstra 算法可视化演示程序,具有漂亮的界面和丰富的功能。 - 🎯 **实时可视化**: 实时显示算法的搜索过程,包括当前节点、已访问节点、待访问节点 - 🗺️ **10 种预设地图**: 包含不同复杂度和特色的地图场景 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-05-29 - **Last Updated**: 2025-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🎯 Dijkstra 算法可视化演示程序 这是一个使用 PyQt5 开发的炫酷 Dijkstra 算法可视化演示程序,具有漂亮的界面和丰富的功能。 ![程序界面预览](https://img.shields.io/badge/Python-3.7+-blue.svg) ![PyQt5](https://img.shields.io/badge/PyQt5-5.15.9-green.svg) ![License](https://img.shields.io/badge/License-MIT-yellow.svg) ## ✨ 功能特点 - 🎯 **实时可视化**: 实时显示算法的搜索过程,包括当前节点、已访问节点、待访问节点 - 🗺️ **10 种预设地图**: 包含不同复杂度和特色的地图场景 - 空地图 - 基础演示 - 迷宫地图 - 经典迷宫结构 - 螺旋地图 - 螺旋形障碍 - 随机障碍 - 随机分布的障碍物 - 走廊地图 - 走廊和房间结构 - 十字地图 - 十字形障碍 - 对角线地图 - 对角线障碍 - 岛屿地图 - 岛屿形障碍 - 之字形地图 - 之字形路径 - 复杂迷宫 - 复杂的迷宫结构 - 🎨 **炫酷界面**: 深色主题,渐变效果,现代化 UI 设计 - ⚡ **速度控制**: 可调节动画播放速度(1-100级) - 🖱️ **交互式编辑**: 鼠标绘制墙壁、设置起点终点 - 📊 **详细信息**: 显示算法过程和结果统计 - 🎮 **实时控制**: 支持算法的开始、停止、重置操作 ![地图](images/001.png) ![地图](images/002.png) ![地图](images/003.png) ![地图](images/004.png) ## 🚀 快速开始 ### 环境要求 - Python 3.7 或更高版本 - PyQt5 5.15.9 ### 安装步骤 1. **克隆项目** ```bash git clone cd dijkstra ``` 2. **安装依赖** ```bash pip install -r requirements.txt ``` 3. **运行程序** **方法一:直接运行 Python 脚本** ```bash python main.py ``` **方法二:使用批处理文件(Windows)** ```bash run.bat ``` **方法三:运行演示脚本(无 GUI)** ```bash python demo.py ``` ## 🎮 使用说明 ### 基本操作 1. **选择地图**: 从下拉菜单中选择预设地图,或使用空地图自定义 2. **设置起点**: 点击"设置起点"按钮,然后在网格上点击设置绿色起点 3. **设置终点**: 点击"设置终点"按钮,然后在网格上点击设置红色终点 4. **绘制墙壁**: 点击"绘制墙壁"按钮,然后拖拽鼠标绘制障碍物 5. **橡皮擦**: 点击"橡皮擦"按钮,然后点击要清除的格子 6. **调节速度**: 使用滑块调节算法执行速度 7. **开始算法**: 点击"🚀 开始算法"按钮开始可视化 8. **停止算法**: 点击"⏹️ 停止"按钮中断执行 9. **清除结果**: 点击"🧹 清除结果"清除算法状态 10. **重置地图**: 点击"🔄 重置地图"清空整个网格 ### 颜色说明 - 🟢 **绿色**: 起点 - 🔴 **红色**: 终点 - ⬛ **深灰色**: 墙壁/障碍物 - 🔵 **蓝色**: 已访问的节点 - 🟡 **黄色**: 最短路径 - 💖 **粉色**: 当前正在处理的节点 - 💙 **浅蓝色**: 待访问的节点(前沿) ### 算法信息 程序会在信息面板中显示: - 算法执行状态 - 探索的节点数量 - 最短路径长度 - 路径总成本 - 操作日志 ## 🔧 技术实现 ### 核心算法 程序实现了经典的 Dijkstra 最短路径算法: 1. **初始化**: 设置起点距离为0,其他节点距离为无穷大 2. **选择节点**: 从未访问节点中选择距离最小的节点 3. **更新距离**: 更新该节点所有邻居的距离 4. **标记访问**: 将当前节点标记为已访问 5. **重复**: 重复步骤2-4直到到达终点或无路径 ### 技术栈 - **界面框架**: PyQt5 - **图形渲染**: QPainter with 抗锯齿 - **多线程**: QThread 用于算法执行 - **数据结构**: 优先队列(heapq)实现 - **样式设计**: CSS-like 样式表 ### 项目结构 ``` dijkstra/ ├── main.py # 主程序文件(GUI 界面) ├── demo.py # 演示脚本(命令行版本) ├── config.py # 配置文件(颜色、设置等) ├── requirements.txt # 依赖文件 ├── run.bat # Windows 启动脚本 ├── LICENSE # MIT 许可证 └── README.md # 项目说明 ``` ## 🎨 界面设计 程序采用现代化的深色主题设计: - **主色调**: 深蓝灰色背景 (#1e1e2e) - **强调色**: 青色 (#8be9fd) 用于标题 - **按钮**: 渐变蓝色 (#6272a4) 带悬停效果 - **文本**: 浅色 (#f8f8f2) 确保可读性 - **边框**: 统一的圆角设计 - **渐变**: 多处使用线性渐变增强视觉效果 ## 🔍 算法特性 ### Dijkstra 算法优势 - **最优性**: 保证找到最短路径 - **完备性**: 如果路径存在,一定能找到 - **可视化友好**: 搜索过程清晰可见 ### 实现细节 - **网格大小**: 30x30 格子 - **移动方向**: 支持上下左右四个方向 - **路径成本**: 每步移动成本为1 - **内存优化**: 使用集合和字典优化存储 - **线程安全**: 使用信号槽机制更新界面 ## 🚧 扩展功能 程序设计具有良好的扩展性,可以轻松添加: - **其他算法**: A*、BFS、DFS等 - **不同地形**: 不同移动成本的地形 - **对角移动**: 支持8方向移动 - **路径平滑**: 路径优化算法 - **统计图表**: 算法性能分析 - **地图导入**: 从文件加载地图 ## 📝 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📞 联系方式 如有问题或建议,请通过以下方式联系: - 联系人: UKIOT - 邮箱: ukiot1000@163.com - 项目地址: https://gitee.com/openwcs/dijkstra.git --- ⭐ 如果这个项目对您有帮助,请给它一个星标! --- **享受探索 Dijkstra 算法的乐趣!** 🎉