深度和广度优先搜索:如何找出社交网络中的三度好友关系

本文介绍了深度优先搜索(DFS)和广度优先搜索(BFS)算法,并探讨如何利用BFS在社交网络中找出用户的三度好友关系。BFS先查找最近的好友层,逐步扩展到三度好友,而DFS则适用于非最短路径的搜索。
摘要由CSDN通过智能技术生成

深度和广度优先搜索:如何找出社交网络中的三度好友关系

什么是“搜索”算法?

深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构的,图这种数据结构表达能力很强,大部分设计搜索的场景都可以抽象成“图”

在图中找出从一个顶点出发,到另一个顶点的路径。方法有很多,比如深度优先、广度优先,还有A* , IDA*等启发式搜索算法,用邻接表来存储图

public class Graph{   //无向图
	private int v;    //顶点的个数
	private LinkedList<Integer> adj[];  //邻接表
	
	public Graph(int v){
		this.v = v;
		adj = new LinkedList[v];
		for(int i = 0 ; i < v ; ++i){
			adj[i] = new LinkedList<>();
		}
	}
	
	public void addEdge(int s ,int t){   //无向图一条边存两次
		adj[s] .add(t);
		adj[t].add(s);
	}
}

广度优先搜索 BFS

先查找离起始顶点最近的,然后是次近的,依次向外搜索

s表示起始顶点,t是终止顶点,搜索一条从s到t的路径,即就是从s到t的最短路径

visited是用来记录已经被访问的顶点,用来避免顶点被重复访问,如果顶点q被访问,相应的visited[q]被设置为true

quene是一个队列,用来存储已经被访问、但是相连的顶点还没有被访问的顶点。因为广度优先搜索是逐层访问

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值