在有向图中,节点邻居的定义是什么?更具体地说,在下面的图中,哪些节点被认为是节点0的邻居? 《破解程序员面试》似乎暗示0的邻居是1和2,但没有明确说明,我找不到一个合适的定义。在邻接矩阵表示中,需要遍历所有节点才能确定节点的邻居。这似乎意味着2被认为是0的邻居,否则你只需要遍历0的行来查找它的邻居。但它从未清楚地说明这一点。
在有向图中,“邻居”一词很少被使用,通常需要加上限定词(如果没有限定词,至少有些人会认为这可能是一个错误)。通常你会说出度邻居(或者叫做出边邻居)—— 有从一个顶点指向其他顶点的边,和入度邻居(或者叫做入边邻居)—— 有从其他顶点指向该顶点的边。同样,在无向图中你可以谈论到一个邻域,而在有向图中你需要谈论出度邻域或入度邻域。
在有向图中,每个有向边都有一个尾部和一个头部,分别表示边离开的地方和到达的地方,从而形成节点N的入邻居和出邻居。所有边到达N的节点都是出邻居。所有离开N的边到达的节点都是入邻居。节点N的出邻居是指在定义图的ALR(邻接表表示)的数组(或哈希映射)中属于该元素N的单链表中的所有节点。在邻接矩阵中,必须决定将尾节点放在行中,将头节点放在列中,还是反之。矩阵的正文部分包含定义入邻居或出邻居的相关值(通常是非对称的)。