有向图中的源是没有边进入的节点。给出一个线性时间算法,它以邻接表格式的有向图作为输入,并输出其所有源。
解决方案:
寻找有向图的来源。我们将保留一个数组 in[u],其中包含每个节点的入度(传入边数)。对于源,此值为零。
function sources(G)
Input: Directed graph G = (V,E)
Output: A list of G's source nodes
for all u ∈ V : in[u] = 0
for all u ∈ V :
for all edges (u,w) ∈ E:
in[w] = in[w] + 1
L = empty linked list
for all u ∈ V :
if in[u] is 0: add u to L
return L
关于上面的代码,我特别不明白的是第一个代码块中最里面的 for 循环 in[w] = in[w]+1 到底是什么意思?我认为这意味着它计算每个节点的入度,但是我无法想象它到底是怎么做的,有人可以帮我想象一下这个方面吗