一、Day1 图的基础知识+SNAP初体验
1、图的基础知识
1.图的表示:
对于图G=(V, E),V为结点,E为边,一般可以用邻接链表和邻接矩阵表示。
邻接链表是每个结点相邻的节点链接而成链表的集合;邻接矩阵中用1表示结点之间相邻,用0表示不相邻。
图可以分为有向图和无向图,无向图如下所示:
(a)图为一个含有5个节点,7条边的无向图G;(b)为G的邻接链表表示;(c)为G的邻接矩阵表示
有向图如下所示:
(a)图为一个含有6个节点,8条边的有向图G;(b)为G的邻接链表表示;(c)为G的邻接矩阵表示
2.图的遍历--DFS(深度优先搜索)、BFS(广度优先搜索)
DFS:从图的某一个结点出发,找一个相邻的结点,以这个相邻的结点为准,再找下一个未被遍历的相邻的结点,直到结点没有未被遍历的相邻结点时,返回上一个结点,继续寻找未被遍历的相邻的结点,直到所有的结点被遍历。
BFS:从图的某一个结点出发,找距离该结点距离为1的结点,然后找与该结点距离为2的结点,直到遍历所有的结点。
3.二分图(Bipartite graph)
二分图简单来说是一种将节点分为两组,并且图中所有的边都跨越这两组的图。
具体定义为:把一个图的顶点划分为两个不相交集和,并且使得每一条边都分别连接这两个集合中的顶点。如果存在这样的划分,则此图为一个二分图。