Alcuni pseudocode qui (ignorare il mio stile)Perché la complessità di BFS O (V + E) invece di O (V * E)?
A partire da v1 (accodato):
function BFS(queue Q)
v2 = dequeue Q
enqueue all unvisited connected nodes of v2 into Q
BFS(Q)
end // maybe minor problems here
Poiché ci sono V vertici nel grafico, e questi vertici V sono collegati ai bordi E, e visitare sempre i nodi connessi (equivalenti ai bordi connessi alla visita) si trovano nel ciclo interno (il ciclo esterno è la ricorsione stessa), mi sembra che la complessità debba essere O (V * E) piuttosto che O (V + E). Qualcuno può spiegarlo per me?
Molto semplificato senza troppe formalità: ogni spigolo viene considerato esattamente due volte e ogni nodo viene elaborato esattamente una volta, quindi la complessità deve essere un multiplo costante del numero di spigoli nonché il numero di vertici. –
Questo include un meccanismo per evitare i cicli –