[B][U]fonction[/U][/B] testConnexiter(graphe G)
m // nombre d'arêtes
n // nombre de sommets
p // Pile
compteur := 0;
[B][U]début[/U][/B]
[B][U]Si[/U][/B] m >= n - 1 [B][U]alors[/U][/B]
|
| empilerPile(0); // 0 : sommet de départ
|
| [B][U]Tant que[/U][/B] pileNonVide(p) [B][U]faire[/U][/B]
| |
| | r := depilerPile(p);
| |
| | [B][U]Si[/U][/B] r n'est pas déjà traiter [B][U]alors[/U][/B]
| | |
| | | marquer r comme traiter; ++compteur;
| | |
| | | [B][U]Pour[/U][/B] tous les voisins de r [B][U]faire[/U][/B]
| | | |
| | | | empilerPile(voisin);
| | | |
| | | [B][U]fait[/U][/B]
| | |
| | [B][U]fsi[/U][/B]
| |
| [B][U]fait[/U][/B]
|
[B][U]fsi[/U][/B]
[B][U]return[/U][/B] (compteur == n);
[B][U]fin[/U][/B]Qu'est-ce qui définie le fait que le graphe soit connexe dans testConnexiter(graphe G).
ceci dit cela vos aussi pour les algo que j'ai posé Roy-Warshall , dans ce cas si j'ai bien compris : si la matrice M = A alors le graphe est connexe.
fatal_error a écrit:si le graphe est connexe, alors tous les noeuds doivent etre relies.
Si tu pars d'un noeud et que tu explores tous les voisins de proche en proche, et qu'au final tu as exploré m noeuds différent alors que le graphe en possède n, ca veut dire que tu as des noeuds isolés et que le graphe est pas connexe.
non c'est pas ca.
La matrice d'adjacence M te donne la relation entre deux noeuds. 1 dans la case (i,j) te dit il existe un chemin de i à j.
En l'occurrence pour tester la connexité, il faut s'assurer qu'il existe un chemin du noeud (par exemple 1) à tous les autres noeuds.
Le but d'élever M à la puissance n est de déterminer tous les chemins de longueur 1 à n. Bref la connexité est donnée par une matrice normalement remplie uniquement de 1.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 41 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :