转置图形的时间复杂度

Time complexity for transposing a graph

本文关键字:时间复杂度 图形 转置      更新时间:2023-10-16

我想得到一些帮助来分析以下函数的时间复杂度。

图形将所有顶点存储在矢量列表中。每个顶点都有一个存储顶点边的向量。这个向量称为邻居。

Graph
Graph::transpose() const
{
   Graph Graph_T;
   for( auto& vertex : list )
   {
      Graph_T.insert_vertex( vertex -> get_name() );
   }
   for( auto& vertex : list )
   {
      for( auto& edges : vertex -> neighbours )
      {
         Graph_T.insert_edge(edges,vertex );
      }
   }
   return Graph_T;  
}

第一个 for 循环显然是 |V|,其中 |V|是顶点的数量。

第二个 for 循环也是 |V|但里面有第三个环路。我的猜测是第三个循环时间复杂度是 |E|,其中 |E|是图形中的边数。

总和:时间复杂度为/theta ( V+V+E) =/theta (E+V)。

我的分析正确吗?

我会说 O(|V|^2) 因为有一个双精度:外部的完成 |V|次数和内部最多完成 |V|次。