Skip to content

buctzzp/MinRoad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

最短路径搜索可视化系统

🚀 本项目是一个基于 Python + PyQt5 + NetworkX 开发的最短路径搜索算法可视化系统,支持交互式图构建和五种经典算法的动态演示,适用于课程设计、教学演示和算法理解。


📌 项目特点

  • 支持 自定义图结构:添加节点、连接边、修改边权(包括负权)。
  • 提供 图形界面操作:基于 PyQt5 实现直观交互,支持节点拖动、权重标注。
  • 集成 五种搜索算法
    • 广度优先搜索(BFS)
    • 深度优先搜索(DFS)
    • Dijkstra 算法
    • A* 启发式算法
    • SPFA 算法(支持负权边)
  • 实现 动态动画演示:搜索过程中节点变色,路径高亮,清晰展示每一步。
  • 提供 图结构保存/加载 功能,支持 .json 文件读写。

📁 项目结构

├── main.py              # 主程序入口,包含图形界面与核心逻辑
├── Graph.json           # 示例图结构(可加载)
├── README.md            # 项目说明文档(本文件)

🖥️ 运行环境

  • Python 3.8+
  • PyQt5 >= 5.15
  • NetworkX >= 2.8

安装依赖:

pip install -r requirements.txt
# 或手动安装
pip install pyqt5 networkx

▶️ 如何运行

python main.py             # 启动图形界面
python main.py Graph.json  # (可选)加载已有图结构

🕹️ 使用说明

1. 图构建操作

  • 添加节点:点击左上角“添加节点”按钮,在画布任意位置点击创建。
  • 添加边:点击“添加边”按钮,依次点击起点和终点节点,会弹出对话框输入权重值(负数也支持)。
  • 修改边权:点击“编辑边权”,点击已有边,即可重新输入权重。
  • 删除边:点击“删除边”,点击目标边可删除。
  • 节点拖动:直接鼠标拖动节点以调整布局(当前版本暂未自动更新路径估计)。

2. 起点终点设置

  • 点击“设置起点/终点”按钮后,点击任意节点即可设为绿色(起点)或红色(终点)。

3. 算法选择与执行

  • 点击菜单栏中的算法(BFS、DFS、Dijkstra、A*、SPFA)进行选择。
  • 点击“开始搜索”按钮开始执行,界面动态显示搜索过程。

⚠️ 当图中存在负权边时,系统会自动禁用不兼容的算法,仅允许使用 SPFA。

4. 图结构保存与加载

  • “文件”菜单中可选择:
    • 保存图结构:保存当前图到 JSON 文件;
    • 加载图结构:加载已有 .json 图文件,快速复现实验。

📦 示例:Graph.json 文件结构说明

{
  "nodes": {
    "0": [100.0, 100.0],
    "1": [200.0, 100.0]
  },
  "edges": [
    ["0", "1", 3.0]
  ],
  "start_node": "0",
  "end_node": "1"
}

📌 已知限制与注意事项

  • 节点拖动后不会自动更新内部位置估值(A* 启发值仍用初始坐标计算)。
  • DFS 和 A* 中的启发排序效果可能因权重分布不规律而不稳定;
  • 不建议用于大型图或路径过长的演示(动画步骤可能过多)。

🧑‍💻 作者

ZZP(本科课程设计项目)


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages