Project-1:设计并实现求无向图两点间所有路径的算法

设计并实现求无向图两点间所有路径的算法

  • 实验原理

    • 无向图的深度优先搜索:
      假设一个图 G,图中所有顶点未曾被访问过,则深度优先搜索就是从图中某个顶点 v 出发,访问此顶点,然后再从 v 的未被访问的邻接点出发深度优先遍历图,直至图中所有和 v 有路径相通的顶点都被访问到;若图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
    • 利用深度优先搜索获取两点间路径的过程:
      给定一个图 G,起始节点 a 和目的节点 b,开始时将 a 加入到路径集合 path[],并将 a 加入到已经访问节点集合 visited[],然后以 a 为起点运用深度优先算法对图进行搜索,每搜索到一个节点就将其加入到 path 和 visited 中,当搜索到目的节点 b 的时候就把路径打印出来,然后把 b 从 path 和 visited 中移除然后对前一个节点中未被访问的邻接节点进行深度优先搜索,当搜索到一个节点 v 已经没有未访问的邻接节点时,说明已经“到底”了,那么此时也要把 v 从 path 和 visited 中移除,然后对其前一个节点的未访问邻接节点进行深度优先搜索直到所有的节点都被搜索到为止;
  • 实验步骤

    • 将图的数据保存到 Graph.txt 中
    • 设计一个 Graph 类(用邻接字典)
    • 设计并实现深度优先搜索找路径的代码
    • 读取 Graph.txt 创建一个 Graph 对象
    • 运行DFS观察结果
    • 根据所画的图验证结果
  • 代码实现

# 找路径
def find_path(graph, start_node, destination_node
  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值