图论(Graph Theory)是一门数学领域,研究图(Graph)以及与图相关的结构和性质。图是由节点(顶点)和边组成的集合,节点表示实体,边表示这些实体之间的关系。图论的研究范围涵盖了许多不同类型的图和与图相关的问题。
图论就像在抖音社交网络中的社交关系一样有趣!图中人物是点,他们之间的关系就是抖音的关注关系。我们一起用这个例子来学习和理解一些新的概念。学习了图论我们可以了解更多抖音关注关系的奥秘。用图论的思想,我们可以发现朋友之间的连接,预测热门视频、预测某个用户感兴趣的人或者视频。
图的基本概念
节点(Node)和边(Edge): 在抖音的社交网络中,我们将节点视为用户,这些节点也被称作顶点(Vertex),是社交网络的基本元素,通常用圆圈或点表示。边则代表用户之间的关系,如同抖音社交网络中用户与用户之间的直接关注关系。每个用户即为一个节点,而关注关系则通过边来连接。
权重(Weight): 在抖音的社交网络中,权重可表示用户之间的互动频率或亲密程度。例如,如果用户A对用户B的视频进行了频繁的互动,这可通过图中的边赋予一个较大的权重,反映了这两个用户之间的强烈关系。
有序对和有向图(Directed Graphs): 图中的一条边 E 或者两个节点 u、v 之间的连接由唯一的有序对 (u, v) 表示。这被称为有序对,因为在有向图的情况下,(u, v) 与 (v, u) 是两个不同的关系。在抖音社交网络中,这可理解为用户A关注了用户B和用户B关注了用户A是两个独立的关系表示,因为关注关系具有方向性。
无向图(Un-directed Graphs):无向图就像是我们日常生活中的朋友圈。想象你和你的朋友们,关系是相互的,没有明确的方向。你们之间的友谊就像无向图中的连接,没有谁是主动方,大家都是平等的。比如,如果你和朋友A是朋友,那朋友A也同样是你的朋友,就像无向图中的边没有箭头一样。
这就是一个简单的无向图和有向图:
图的高级概念
相邻节点(Adjacent node): 如果你和朋友A直接有关注关系,那么朋友A就是你的相邻节点。相邻节点就像是你在抖音中直接连接的朋友,彼此之间有了直接的关系。
度(Degree): 在无向图中,你的度表示有多少个直接关联的朋友。如果你关注了朋友A、B、C,那你的度就是3,因为你和三个朋友有直接关系。在有向图中,你的出度(Outdegree)表示你的关注人数,入度(Indegree)表示你的粉丝数。是不是很有意思,我们学习到了粉丝和关注的在图领域的另一种叫法。
路径(Path): 想象你在抖音中通过关注关系从朋友A找到了朋友C。这个从A到C的过程就是一条路径。这条路径上的节点就是你在寻找朋友的过程中经过的人。比如,从你(节点 u)到朋友C(节点 v)的路径可能是你关注了A,A关注了B,B关注了C。整个路径包含了你、A、B、C四个节点,其中经过了三条边。所以,你可以这么说节点 'u' 到节点 'v' 的长度为 'n' 的路径被定义为包含 n+1 个节点的序列。
P(u,v)=(v0,v1,v2,v3…….vn)
上面这个表达式表示从节点 u 到节点 v 的路径 P,被定义为一个节点序列 (v?, v?, v?, ..., v?),其中 v? 是起始节点 u,v? 是目标节点 v。这个序列中的每个节点都通过边连接,即 (v?, v?)、(v?, v?)、...、(v???, v?) 是路径上相邻的节点对。简单来说,P(u,v) 描述了一条从节点 u 到节点 v 的路径,其中节点按顺序连接在一起。
在抖音关系网中,如果你通过关注关系从自己出发到达某个朋友,这个路径是简单的。每个节点都是唯一的,除非路径的起点和终点相同,否则路径中不会有重复的节点。
但是在抖音关系网中,存在某些用户没有关注任何人,也没有被其他人关注,那么这个用户就是一个孤立节点(Isolated-Node)。这个用户的度(Degree)为0,因为没有直接的关联。通过宽度优先搜索(BFS-Breadth first search),我们可以找到所有的孤立节点。在抖音中,BFS可以用于检查是否有用户没有建立任何关系,也就是没有关注他人,也没有被他人关注。
在广度优先搜索(BFS)中,可以通过检查整个图是否被遍历来找到孤立节点。如果在BFS过程中有节点未被访问到,那么这些未访问到的节点就是孤立节点。
高级图概念的应用
假设抖音关系网中有用户 A、B、C、D、E,他们之间的关系如下:
A 关注了 B 和 C。
B 关注了 A 和 D。
C 关注了 D。
D 被用户 B 关注。
环(Cycle): 如果用户 A 关注了用户 B,用户 B 关注了用户 D,用户 D 又关注了用户 A,那么我们就形成了一个闭合路径 A -> B -> D -> A,这构成了一个环。
连通性(Connectivity): 在这个关系网中,任意两个用户之间都存在至少一条关注关系的路径。例如,用户 A 和用户 C 之间存在路径 A -> C。
子图(Subgraph): 如果我们只考虑用户 A、B 和 C,以及他们之间的关注关系,那么这构成了一个子图。这个子图是原始抖音关系网的一部分,包括一些用户和他们之间的关系。
树(Tree): 如果我们考虑整个抖音关系网,去掉用户 B 关注用户 A 的边、C 关注 B 的边、C 关注 D 的边,那么整个网络就变成了一棵树。这是因为去掉的边是环的一部分,去除后形成了无环图,如下图:
下图中我们增加了用户节点E,因为 E 它没有关注别人,也没有被其他人关注,也没有被其他人关注。,所以 E 是一个孤立节点。
1、有向图(Directed Graphs):没有环路的有向图。对于DAG中的一个顶点 'v',不存在以 'v' 为起点和终点的有向边。就像在抖音上分享视频一样,有向图是一种图,其中边的方向就像视频的播放方向一样,被定义为指向特定节点的图。
- 有向无环图(DAG-Directed Acyclic Graph):DAG就像一个抖音账号,是没有循环的有向图。对于DAG中的一个主播 'v',不存在以 'v' 的视频为起点和终点的有向边。这可以应用在关键游戏分析、表达树评估和游戏评估上,就像我们在抖音上喜欢关注和评估不同的视频。
- 树(Tree):树只是图的一种受限形式。简单来说,它是一个有向无环图,限制了每个子节点只能有一个父节点。树就像抖音上的一个简短的视频系列,是图的一种受限形式。简单来说,树是一个有向无环图,限制了每个视频(子节点)只能有一个发布者(父节点)。
2、无向图(Un-directed Graphs):在无向图中,边的方向未定义。因此,如果存在节点 'u' 和 'v' 之间的边,则存在从节点 'u' 到 'v' 以及从 'v' 到 'u' 的路径。就像在抖音上互相关注一样,边的方向未定义。如果我们有用户 'u' 和用户 'v' 之间的关注关系(边),那么用户 'u' 关注用户 'v' 的同时,用户 'v' 也会关注用户 'u'。
- 连通图(Connected graph):当每一对顶点之间都存在路径时,图是连通的。在连通图中,没有不可达的节点。抖音上的用户关系就是一个连通图,因为任意两个用户之间都可以通过关注关系找到一条路径。在连通图中,没有孤立的用户,每个人都能通过关注关系连接起来。
- 完全图(Complete graph):每一对图顶点都通过一条边相连的图。简而言之,图中的每个节点 'u' 都与图 'G' 中的每个其他节点 'v' 都相邻。完全图将有 n(n-1)/2 条边。如果每个用户都关注其他每个用户,就像所有人都关注所有人一样,那么这形成了一个完全图。具体来说,如果抖音上有 n 个用户,那么就会有 n(n-1)/2 条关注关系。
- 双连通图(Biconnected graph:):一个无法通过删除任何顶点进一步拆分的连通图。它是一个没有关节点的图。一个无法通过删除任何用户(顶点)而使得抖音社交网络进一步拆分的连通图。这是一个没有被孤立的用户的图,就像抖音上没有被忽略的内容创作者。
完全图求边公式的理解:
想象一下你有一个社交网络,里面有n个用户,每个用户都与其他每个用户相连接。每个用户都是这个网络的一部分。 现在,每个用户都与其他n-1个用户有关系(边),因为他们与社交网络中的每个人都有联系。如果我们把这些关系都算一遍,你会发现每条边都被计数两次。这是因为,比如,用户A与用户B有联系,这也意味着用户B与用户A有联系。
因为我们不想把每条边都计算两次,所以需要把总数除以2。这是因为每对用户之间的关系都被计算了两次,所以我们需要除以2来消除这种重复计数。
最终,我们得到的公式是n * (n-1) / 2,这表示完整图中的边的数量。这个公式可以帮助我们计算在一个社交网络中,如果每个用户都与其他每个用户相连,那么总共有多少关系存在。
结语
通过图论,我们可以更深入地理解抖音社交网络中用户之间的关系。图的概念如节点、边、路径等,以及高级概念如环、连通性等,为我们提供了分析和理解复杂网络结构的工具。在图计算中,使用工具如GraphScope能够更高效地处理大规模图数据,进行各种有趣的分析和预测。通过这个系列,我们将轻松入门图计算,探索图论的奥秘。
本文暂时没有评论,来添加一个吧(●'◡'●)