今天刷leetcode算法题时,发现出现一个关于图的“边缘列表”的说法,搜索后发现找到的不多,而且解释也不是很好,在这儿记录下:
关于图是啥,这里就不多讲了
大家知道比较多的,应该是邻接表表示法:
例如一个如下图的“图”:
这个的邻接表的表示可以是这样的:
这个图什么意思呢?我来解释一下,第一列是代表着节点,后面每一行跟着的,是与这个节点相连的点,比如说,与 0 相连的有节点 5 和节点 6 ,所以 0 后面跟着的就是 5 和 6 。
如果用二维数组表示的话,那么第一列的数字就可以是行下标,连接着的点就可以放到对应的行中进行保存。
那么,对于同一张“图”,如果使用边缘表示的话,就可以写成这种:
稍加分析我们可以知道,第一列表示的是标号,后面的呢就是每一条线段的起始位置。如果使用二维数组表示的话,就可以是一个 n 行 2 列的数组,对应的,第一列就可以直接作为行下标进行索引了。
上面是关于无向图。下面来看有向图:
对应邻接表中保存的就是由该节点指向的节点的列表
而边缘表示图里呢,是从线段的出发点指向终止点。