J'ai écrit un algorithme pour déterminer "si un graphe non orienté est un arbre"
Hypothèses: le graphe G est représenté comme une liste d'adjacence, où l'on connaît déjà le nombre de sommets qui est ndéterminer si un graphe non orienté est un arbre
Is_graph_a_tree(G,1,n) /* using BFS */
{
-->Q={1} //is a Queue
-->An array M[1:n], such that for all i, M[i]=0 /* to mark visited vertices*/
-->M[1]=1
-->edgecount=0 // to determine the number of edges visited
-->While((Q is not empty) and (edgecount<=n-1))
{
-->i=dequeue(Q)
-->for each edge (i,j) and M[j] =0 and edgecount<=n-1
{
-->M[j]=1
-->Q=Q U {j}
-->edgecount++
}
}
If(edgecount != n-1)
--> print “G is not a tree”
Else
{
-->If there exists i such that M[i]==0
Print “ G is not a tree”
Else
Print “G is tree”
}
}
Est-il vrai?
La complexité temporelle de cet algorithme Big0h (n) ??
Thnx pour le commentaire seviyor .., je pense que nous pourrions également compter les arêtes pour lesquelles M [j] = 1 mais la condition "edgecount <= n-1" doit être changé ... mais je ne vois pas où l'algorithme réel échoue .. pourriez-vous donner un contre-exemple – rakesh
Eh bien, je pense que la sortie est vraie pour tout graphique d'entrée qui est connecté (même si ce n'est pas un arbre). – seviyor
hmmm ... oui vous avez raison ... thnx – rakesh