亲密度

【算法笔记】图的表示

我的未来我决定 提交于 2019-12-23 21:01:33
图的表示 1 如何理解“图” 2 邻接矩阵存储方法 3 邻接表存储方法 4 如何存储微博、微信等社交网络中的好友关系? 5 总结 1 如何理解“图” 树中的元素我们称为节点,图中的元素我们就叫作 顶点 (vertex)。图中的一个顶点可以与任意其他顶点建立连接关系。我们把这种建立的关系叫作 边 (edge)。 拿微信举个例子。可以把每个用户看作一个顶点。如果两个用户之间互加好友,那就在两者之间建立一条边。所以,整个微信的好友关系就可以用一张图来表示。其中,每个用户有多少个好友,对应到图中,就叫作顶点的度(degree),就是跟顶点相连接的边的条数。 微博的社交关系跟微信还有点不一样,或者说更加复杂一点。微博允许单向关注,也就是说,用户 A 关注了用户 B,但用户 B 可以不关注用户 A;如果用户 A 关注了用户 B,我们就在图中画一条从 A 到 B 的带箭头的边,来表示边的方向。如果用户 A 和用户 B 互相关注了,那我们就画一条从 A 指向 B 的边,再画一条从 B 指向 A 的边。我们把这种边有方向的图叫作“有向图”。 在无向图中有“度”这个概念,表示一个顶点有多少条边。 在有向图中,我们把度分为入度(In-degree)和出度(Out-degree)。 顶点的入度,表示有多少条边指向这个顶点;顶点的出度,表示有多少条边是以这个顶点为起点指向其他顶点。对应到微博的例子