私はこのリンクを経由して隣接リストの表現を行っています。隣接リスト表現の時間の複雑さ?
http://www.geeksforgeeks.org/graph-and-its-representations/
次のように私は、コードの一部では、単純な疑問を持っている:
// 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
ためのループが実行される間、dはd
回言います各頂点の次数。
だから、私は時間の複雑さが
d0 + d1 + d2 + d3 ....... +dV where di is the degree of each vertex.
すべてこれはO(E)を合計するが、リンクは時間の複雑さがOであると言うようなものであると思います(| V | + | E |)
理解の問題は何か分かりません。いくつかの助けがここ
グラフにエッジがないとします。アルゴリズムはどれくらい時間がかかりますか? – user2357112
@ user2357112すべての頂点を一度チェックまたはスキャンする必要があります。しかし、それは入れ子にされたループなので、時間の複雑さはそうではありませんか? – Garrick