Сложность времени для транспонирования графа

0

Я хотел бы получить некоторую помощь для анализа временной сложности следующей функции.

Графы сохраняют все вершины в списке векторов. Каждая вершина имеет вектор, который хранит края вершин. Этот вектор называется соседи.

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).

Правильно ли мой анализ?

  • 1
    Какова временная сложность insert_vertex и insert_edge ?
  • 0
    Оба метода работают в постоянном времени.
Теги:
graph
time-complexity

1 ответ

1

Я бы сказал, что O (| V | ^ 2), поскольку существует двойное: для внешнего выполняется | V | раз, а внутренняя - максимум | V | раз.

  • 0
    Это правда. Но это также можно выразить, используя E, я думаю. +1
  • 0
    Ты понял. Верно
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню