图搜索

对于图这个数据结构来说,最重要的操作莫过于搜索,以不同的策略(中间值的存储方式)遍历图会得到不同的结果,但是我们可以将搜索过程抽象出来,得到一个通用框架。具体代码如下:
Whatever-FIrst Search

WhateverFirstSearch(s):
	put s into the bag
	while the bag is not empty
		take v from the bag
		if v is unmarked
			mark v
			for each edge vw
				put w into the bag

这里具体实现的搜索策略是什么取决于采用什么样的bag。具体如下

  • bag为Stack:Depth-First

  • bag为Queue: Breadth-First

  • bag为Priority Queue:Best-First

    • 如果是无向图而且使用边的权值作为其优先级,best-first会构建此图的最小生成树,此算法为prim算法。
    • 如果我们将路径的长度定义为其边缘权重的总和。 我们还可以使用最佳搜索来计算加权图中的最短路径。每一个结点存储一个距离dist(v):代表s到v的距离。这个算法为Dijkstra算法
    • 将路径的宽度定义为路径中任何边缘的最小权重。我们得到“Dijkstra”的最佳搜索算法的简单修改计算从s到每个其他可到达顶点的最宽路径;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值