Niektóre Pseudokod tutaj (lekceważyć mój styl)Dlaczego złożoność BFS O (V + E) zamiast O (V * E)?
Zaczynając od V1 (skolejkowany):
function BFS(queue Q)
v2 = dequeue Q
enqueue all unvisited connected nodes of v2 into Q
BFS(Q)
end // maybe minor problems here
Ponieważ istnieją V wierzchołków w grafie, a te V wierzchołki są połączone krawędziami E i odwiedzając coraz połączone węzły (równoważne odwiedzeniu połączonych krawędzi) znajdują się w wewnętrznej pętli (zewnętrzna pętla jest samą rekursją), wydaje mi się, że złożoność powinna być O (V * E), a nie O (V + E). Czy ktoś może mi to wyjaśnić?
Bardzo uproszczona bez większego znaczenia: każdy edgy jest uważany dokładnie dwa razy, a każdy węzeł jest przetwarzany dokładnie jeden raz, więc złożoność musi być stałą wielokrotnością liczby krawędzi, a także liczbą wierzchołków. –
Obejmuje to mechanizm unikania cykli. –