web-dev-qa-db-fra.com

Complexité temporelle de l'algorithme graphique en profondeur d'abord

Je commence à apprendre la complexité temporelle, et j'ai regardé les exemples de complexité temporelle pour un tri simple.

Je voulais savoir comment calculer la complexité temporelle moyenne pour une recherche en profondeur d'abord dans un graphique avec |V|=n et |E|=m, que le nœud de début soit 'u' et le nœud de fin soit 'v'.

19
Learner

La complexité temporelle pour DFS est O (n + m). Nous obtenons cette complexité compte tenu du fait que nous visitons chaque nœud une seule fois et dans le cas d'un arbre (pas de cycles), nous traversons tous les bords une fois.

Par exemple, si le nœud de début est u et le nœud de fin est v, nous pensons au pire des cas où v sera le dernier nœud visité. Nous commençons donc à visiter chacun le premier voisin du composant connecté u, puis le second composant connecté du voisin, et ainsi de suite jusqu'au dernier composant connecté du voisin, où nous trouvons v. Nous n'avons visité chaque nœud qu'une seule fois, et nous n'avons pas traversé le même Edge plus d'une fois.

25
gabitzish

ce sera O (n + m) si le graphe est donné sous forme de liste d'adjacence mais si le graphe est sous forme de matrice d'adjacence alors la complexité est O (n * n), car il faut parcourir l'ensemble ligne jusqu'à ce que nous trouvons un bord.

19
piyush.mukati