我正在通过此链接查看邻接列表表示。邻接列表表示的时间复杂度?
http://www.geeksforgeeks.org/graph-and-its-representations/
我有一个代码中的一些部分简单的疑问如下:在执行循环说d
倍,其中d是
// A utility function to print the adjacenncy list representation of graph
void printGraph(struct Graph* graph)
{
int v;
for (v = 0; v < graph->V; ++v)
{
struct AdjListNode* pCrawl = graph->array[v].head;
printf("\n Adjacency list of vertex %d\n head ", v);
while (pCrawl)
{
printf("-> %d", pCrawl->dest);
pCrawl = pCrawl->next;
}
printf("\n");
}
}
因为,在这里,每V
每个顶点的度数。
所以,我觉得时间复杂度为像
d0 + d1 + d2 + d3 ....... +dV where di is the degree of each vertex.
这一切都总结了O(E),但链接说,时间复杂度为O(| V | + | E |)
不知道理解有什么问题。一些帮助这里
假设图形没有边缘。算法需要多长时间? – user2357112
@ user2357112我们必须检查或扫描每个顶点,对吧?但它是一个嵌套的循环,所以不应该像这样的时间复杂性? – Garrick