Я хотел бы получить некоторую помощь для анализа временной сложности следующей функции.
Графы сохраняют все вершины в списке векторов. Каждая вершина имеет вектор, который хранит края вершин. Этот вектор называется соседи.
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;
}
Первый для цикла, очевидно, | V | , где | V | - число вершин.
Второй для цикла также | V | но имеет третью петлю, расположенную внутри. Моя догадка заключается в том, что третья сложность времени цикла равна | E |, где | E | - количество ребер в графе.
Суммирование. Сложность времени равна /theta (V + V + E) =/theta (E + V).
Правильно ли мой анализ?
Я бы сказал, что O (| V | ^ 2), поскольку существует двойное: для внешнего выполняется | V | раз, а внутренняя - максимум | V | раз.
insert_vertex
иinsert_edge
?