设 N=顶点数 M=有向图 G 的边数。我们以邻接表的形式存储边。为了清楚起见,我们假设 Oi 是顶点 i 的出度,Ii 是顶点 i 的入度。
算法如下:
for each vertex i
for each vertex j in i's adj.list
//do some work
for each vertex k in j's adj.list
//do some work
“做一些工作”基本上是在恒定时间内完成的(O(1))。我无法得出 N,M 中运行时间的一般表达式。有人可以解释如何做到这一点吗?
顺便说一句:为了防止“我不会做你的作业”的评论,我正在练习 CLRS 的文本问题(这个是 22.1-5)。我这样做是为了学习如何估计图算法的时间复杂度.