Я знаю, что для связного косвенного графа время выполнения для BFS равно O (V + E).Но что, если график не связан?Затем я предполагаю, что нам нужно запустить цикл, чтобы сначала проверить состояние каждой вершины (посещено или нет).
Вот простой qseudocode для моей идеи.Предположим, что каждая вершина имеет белый цвет как признак непосещения в начале.Серый, как посетил, черный, как принято.
// BFS для неподключенного косвенного графа
BFS(G):
for each v in G:
if (v.color is white) do:
v.color = gray;
enqueue(Q, v);
while Q is not empty do:
u = dequeue(Q);
while s is adjacent to u has color white
s.color = gray;
enqueue(Q,s);
u.color = black;
Это мое предположение qseudocode для неподключенного косвенного графа.У меня есть проблемы, чтобы выяснить время выполнения.Я думаю, что это все еще O (V + E), но я не могу дать разумное объяснение.
Могу ли я узнать, как уточнить время работы этого qseudocode?Или, если мой qseudocode неэффективен, пожалуйста, дайте мне знать эффективный.
Спасибо!