Supponiamo di avere un grafo non orientato G con vertici v1 ... vn e spigoli. In questo momento è nella rappresentazione della lista di adiacenza.
Per ogni momento ho come input alcuni sottoinsiemi di vertici che sono "attivi" in questo momento. E ho bisogno di trovare tutti i componenti collegati in questo sottoinsieme di vertici per quel momento.
In questo momento l'ho implementato utilizzando la struttura di dati union-find come questa:
initialize sets for every active vertex so that every vertex has itself as "representative" (also called "parent")
for every active vertex v
for all neighbours of v in G v_neighbour
if v_neighbour is active
union set of v and set of v_neighbour
Dovrebbe funzionare bene, ma voglio sapere se esiste un approccio più ottimale? E qual è il tempo di esecuzione di tale algoritmo? O (N * M)?