我正在通過此鏈接查看鄰接列表表示。鄰接列表表示的時間複雜度?
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