一般性图搜索算法

图搜索算法是一类重要的基于图的算法。本文 给出一般化的图搜索算法的框架。

图搜索算法的核心任务是从一个初始节点s,尽可能多的找到其他的点v。注意通常对于一个n个点,m条边的图,我们希望搜索算法的复杂度为\mathcal{O}(m+n),换言之,我们希望每一个点与边都不重复搜索两次。

老规矩,图搜索算法的一般步骤如下:

1. 初始化开始点s为explored,其他点为unexplored

2. 循环直到找不到未被搜索的点

3.         选择边(u,v),其中u explored,v unexplored

4.         标记节点v explored

Lemma 1: 如果搜索算法终止时,节点v explored,那么图中存在一条路径从s 到v。

Proof: 从图搜索算法的循环步骤可以看出,s 与 v最后都explored,显然s存在一条路径到v点。

反之,我们假设算法结束时v explored,但是不存在s到v的路径。

显然存在一个中间节点w,即s - w -v,w并没有explored。但是从图搜索算法的步骤可以看到,每一个经历过的点都会被标记为explored,因此矛盾。证明完毕。

常见的图搜索算法有 广度优先(BFS)和深度优先(DFS), 不同的算法有不同的用途。下一篇博客我们继续讲 BFS和DFS算法以及他们的应用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值