🎯 一个功能完整的寻路算法可视化工具,支持A*、Dijkstra、BFS等多种算法的实时动画演示
🔥 版本 2.0 重磅更新:新增AI算法生成功能!
🚀 实时可视化 · 多种算法 · 交互式界面 · 动画演示
本项目是一个完整的可视化教学工具,专门用于演示和比较不同的寻路算法。相比于普通的算法实现,本项目更侧重于直观的视觉效果和交互式学习体验。
v2.0版本现已支持AI智能算法生成,用户可以使用自然语言描述算法,由AI自动生成可执行的寻路算法代码,为算法学习和研究提供了更多可能性。
- ✅ 实时动画: 逐步展示算法搜索过程,直观理解算法原理
- ✅ 多算法支持: A*、Dijkstra、BFS三种经典寻路算法
- ✅ 交互式编辑: 可自由设置障碍物、起点和终点
- ✅ 性能优化: 支持大场地渲染和速度调节
- ✅ 响应式设计: 适配桌面和移动设备
- 🆕 LLM算法生成: 🤖 支持通过AI生成自定义寻路算法(v2.0新功能)
- 🆕 多API支持: 集成魔搭社区、硅基流动、DeepSeek、OpenRouter四大平台(v2.0新功能)
- A 算法* ⭐ - 启发式搜索,效率最优
- Dijkstra 算法 - 经典最短路径算法
- 广度优先搜索 (BFS) - 简单直观的搜索策略
- 小场地 (20x20) 🎯 - 默认推荐,快速测试
- 中场地 (30x30) 📐 - 适中复杂度,平衡演示效果
- 大场地 (40x40) 🏗️ - 挑战级别,测试算法性能
- 最快 🚀 - 基本无延迟,快速查看结果
- 中等 ⏱️ - 适中的动画速度,便于观察
- 最慢 🐌 - 详细动画,清楚展示每一步搜索
- 对角线移动选项支持
- 多种启发式函数(曼哈顿距离、欧几里得距离、对角距离)
- 实时可视化搜索过程
- 交互式网格编辑(设置障碍物、起点、终点)
- 动画效果展示寻路过程
- 智能算法生成: 使用自然语言描述算法,AI自动生成可执行代码
- 多平台API支持: 支持魔搭社区、硅基流动、DeepSeek、OpenRouter四大平台
- 实时执行测试: 生成后立即在当前网格中测试运行
- 安全代码执行: 带有沙箱保护的代码执行环境
- 算法管理: 支持多个自定义算法的保存、删除和选择
| 提供商 | 推荐模型 | 特点 |
|---|---|---|
| 🏗️ 魔搭社区 | deepseekV3.1-chat | 中文支持优秀,适合算法理解 |
| ⚡ 硅基流动 | deepseekV3.1-chat | 性价比高,响应速度快 |
| 🧠 DeepSeek | deepseek-chat | 代码生成能力强,逻辑推理优秀 |
| 🌐 OpenRouter | anthropic/claude-3.5-sonnet | 多模型支持,选择灵活 |
- 操作系统: Windows 10/11, macOS, Linux
- Python版本: 3.6 或更高版本
- 内存: 至少512MB RAM
- 浏览器: 现代Web浏览器(Chrome、Firefox、Safari、Edge)
# 克隆项目
git clone https://github.com/LimbusSpace/pathfinding-visualizer.git
cd pathfinding-visualizer
# 安装Python依赖
pip install -r requirements.txt如果需要使用LLM算法生成功能,请按以下步骤配置:
选择一个或多个LLM提供商并注册账号获取API密钥:
- 魔搭社区: https://modelscope.cn
- 硅基流动: https://siliconflow.cn
- DeepSeek: https://platform.deepseek.com
- OpenRouter: https://openrouter.ai
- 启动应用后,点击"设置 LLM"按钮
- 选择你使用的API提供商
- 输入对应的API密钥
- 点击"测试连接"验证配置
- 配置成功后即可使用AI算法生成功能
详细的LLM功能使用说明请参考:LLM使用指南.md
python app.py# Windows用户双击运行
启动寻路可视化.bat打开浏览器访问:http://localhost:5000
浏览器将自动打开,如果没有请手动输入上述地址。
- 📍 选择场地大小:从"场地大小"下拉菜单选择小、中、大场地
- ⚡ 选择探路速度:从"探路速度"下拉菜单选择最快、中等、最慢
- 🔄 初始化网格:点击"初始化网格"按钮
- 🚩 设置起点:右键点击网格中的任意位置
- 🎯 设置终点:中键点击网格中的任意位置
- 🧱 绘制障碍物:左键点击和拖拽绘制障碍物
- 🧮 选择算法:从"算法选择"下拉菜单选择寻路算法
▶️ 开始寻路:点击"开始寻路"按钮观看算法执行过程
- 🤖 配置LLM:点击"设置 LLM"按钮,选择提供商并输入API密钥
- 📝 描述算法:在"算法描述"中用自然语言描述你想要的算法
- 🏷️ 命名算法:为你的算法起一个名字
- 🚀 生成算法:点击"生成算法"按钮,等待AI生成代码
- 🧪 测试执行:从"自定义算法"下拉菜单选择算法并点击"执行"
| 操作 | 功能 | 图标 |
|---|---|---|
| 左键点击/拖拽 | 绘制/擦除障碍物 | 🧱 |
| 右键点击 | 设置起点 | 🚩 |
| 中键点击 | 设置终点 | 🎯 |
- 快速选择:预设三种常用尺寸,一键切换
- 自定义支持:也可手动输入具体的宽度和高度
- 性能优化:大场地模式下自动优化渲染性能
- 最快模式: 适合快速验证算法正确性
- 中等模式: 平衡了演示效果和观看体验
- 最慢模式: 教学演示最佳选择,每一步都清晰可见
特点: 使用启发式函数指导搜索
# 核心思想:f(n) = g(n) + h(n)
# g(n) = 从起点到当前节点的实际代价
# h(n) = 从当前节点到终点的估计代价(启发式)优势:
- ✅ 保证找到最优路径
- ✅ 效率较高,适用于大多数场景
- ✅ 可通过不同启发式函数调优
适用场景: 路径规划、游戏NPC寻路、导航系统
特点: 不使用启发式函数,纯贪心搜索
# 核心思想:每次选择距离起点最近的未访问节点
# 逐步扩展搜索范围,直到到达终点优势:
- ✅ 保证找到最优路径
- ✅ 适用于边权重不同的图
- ✅ 算法简单,容易理解和实现
适用场景: 网络路由、地图导航、资源分配
特点: 逐层搜索,优先访问邻近节点
# 核心思想:使用队列,先访问距离起点近的节点
# 一层一层向外扩展搜索优势:
- ✅ 在无权图中保证找到最短路径
- ✅ 简单直观,易于实现
- ✅ 内存占用相对较少
适用场景: 社交网络关系查找、迷宫求解、状态空间搜索
寻路算法可视化/
├── 🚀 app.py # Flask后端服务器
├── 🧮 pathfinding.py # 寻路算法实现
├── 🤖 llm_integration.py # LLM算法生成集成
├── 📦 requirements.txt # 依赖包列表
├── 🖱️ 启动寻路可视化.bat # Windows启动脚本
├── 📚 README.md # 项目说明文档(本文件)
├── 📖 LLM使用指南.md # LLM功能详细使用指南
├── 📄 LICENSE # MIT许可证
├── 🚫 .gitignore # Git忽略文件
├── 🔧 .env.example # 环境变量配置示例
├── 📖 GITHUB_UPLOAD_GUIDE.md # GitHub上传指南
├── 🎨 templates/
│ └── index.html # 主页面HTML
└── 💻 static/
├── 🎨 style.css # 样式文件
└── ⚙️ script.js # 前端JavaScript逻辑
- 编程语言: Python 3.6+ 🐍
- Web框架: Flask 2.3.3 🌶️
- 算法: 自实现的寻路算法库 🧮
- 数据结构: 优先队列、堆、图论算法 📊
- 标记语言: HTML5 📄
- 样式技术: CSS3 🎨
- 交互逻辑: JavaScript ES6+ ⚡
- 响应式设计: Flexbox + Grid 📱
- 实时动画: 异步渲染引擎 🎬
- 交互式编辑: 事件驱动的网格系统 🖱️
- 性能优化: 批次处理和节流技术 ⚡
- 跨平台: 响应式设计适配多设备 🌐
- LLM集成: 多平台AI算法生成系统 🤖
- 代码执行: 安全沙箱环境和动态类加载 🔒
- API管理: 多服务商密钥管理和连接测试 🔑
- 🚫 寻路过程中不能编辑网格
- ✅ 务必设置起点和终点再开始寻路
- 📱 支持响应式设计,可在移动设备上使用
- 💪 大场地模式建议使用性能较好的设备
- ⚡ 如遇性能问题,可选择较快的动画速度
- 🔐 API密钥安全: 不要在不安全的环境中使用API密钥,定期更换
- 📝 算法描述: 尽量使用具体和技术性的语言描述算法
- 🧪 算法测试: 先在简单场景中测试生成的算法,再尝试复杂场景
- 💰 成本控制: 注意API调用的token消耗,避免频繁生成和测试
- 🌐 网络要求: LLM功能需要稳定的网络连接,建议在网络环境良好时使用
- 学习算法: 建议使用慢速模式,仔细观察搜索过程
- 性能测试: 使用大场地 + 快速模式测试算法效率
- 算法比较: 相同场景下切换不同算法对比效果
- 复杂场景: 多设置一些障碍物,观察算法绕障能力
- 从简单开始: 先尝试生成基础算法如贪心搜索、随机寻路等
- 逐步复杂: 掌握基本操作后再尝试生成复杂算法
- 对比验证: 将AI生成的算法与经典算法在同一场景下对比
- 详细描述: 使用专业的算法术语和数据结构描述要求
- 错误处理: 如果生成的代码有问题,重新调整描述再次生成
欢迎对这个项目进行完善和改进!
- 🍴 Fork 这个项目
- 🌿 创建 你的功能分支 (
git checkout -b feature/new-feature) - 💾 提交 你的更改 (
git commit -m 'Add new feature') - 📤 推送 到分支 (
git push origin feature/new-feature) - 🔄 创建 一个Pull Request
- 🐛 Bug修复: 修复合法性问题
- ✨ 新功能: 添加新的算法或功能
- 📚 文档改进: 完善使用说明和文档
- 🎨 界面优化: 改进用户体验和视觉效果
- ⚡ 性能优化: 提升运行效率
- 🧪 测试覆盖: 增加单元测试或集成测试
- 遵循PEP 8 Python代码规范
- 提交信息清晰明了
- 新功能需要包含相应的文档说明
- 确保所有功能在不同环境下正常工作
- 算法可视化: 将抽象算法转化为直观动画
- 对比学习: 不同算法在同一场景下的表现对比
- 交互式体验: 手动设置场景,加深理解
- 实时反馈: 立即看到参数调整的效果
- 完整示例: Flask + 前端全栈项目
- 算法实现: 经典算法的实际应用
- 性能优化: 大规模数据的处理优化
- 用户体验: 交互式设计的最佳实践
- 算法教学: 计算机科学课程辅助工具
- 技术面试: 算法理解的可视化演示
- 游戏开发: 寻路算法的原型验证
- 路径规划: 导航算法的参考实现
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
💡 MIT许可证简介:
- ✅ 商业使用
- ✅ 修改和分发
- ✅ 私人使用
- ❗ 需要包含许可证和版权声明
- ❗ 软件按"原样"提供,不提供任何担保
- 🏠 项目主页: https://github.com/LimbusSpace/pathfinding-visualizer
- 🐛 问题反馈: 通过GitHub Issues提交
- 💬 功能建议: 欢迎在Issues中提出新功能建议
- 📧 联系作者: 在项目主页查看联系方式
感谢所有为这个项目做出贡献的开发者,以及开源社区提供的技术支持:
- Python社区 🐍 - 提供了强大的编程语言和丰富的库
- Flask框架 🌶️ - 轻量级Web框架,让开发变得简单
- 开源社区 🌍 - 共享知识,共同进步的精神
- 算法研究者 🧮 - 为我们提供了这些经典的寻路算法
- 🏷️ 文档版本: 2.0
- 📅 最后更新: 2025-10-06
- 👤 作者: LimbusSpace
- 🔧 维护状态: 🟢 活跃维护,欢迎贡献
- 🎯 项目状态: 🟢 功能完整,稳定可用
- 🚀 v2.0重大更新: 新增LLM AI算法生成功能,支持四大平台API集成
- 添加更多寻路算法(如Jump Point Search、Theta*)
- 支持导入/导出地图配置
- 添加算法性能统计和对比图表
- 支持更大规模的地图渲染
- 添加LLM生成算法的模板和预设方案
- 支持LLM算法代码的编辑和优化功能
- 开发移动端APP版本
- 添加3D地形寻路支持
- 实现多人协作编辑功能
- 支持实时算法竞赛模式
- 集成更多LLM提供商和算法优化建议
- 开发算法学习和教学功能模块
🚀 开始你的寻路算法可视化之旅吧!
💪 编程小贴士: 理解算法最好的方式就是实现它,可视化它,然后教给别人!