Chemins dans un raphe

cs_osta Messages postés 27 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 10 octobre 2006 - 25 avril 2004 à 23:10
cs_osta Messages postés 27 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 10 octobre 2006 - 25 avril 2004 à 23:39
J'ai fait un code permettant de calcumer tous les chemins entre deux noeuds donnés d'un graphe

Function roadmap(ByVal chem As String, ByVal ext As Variant, destination As String)

Dim successeurs As New Collection 'Contient les successeurs d'un noeud du graphe
Dim noeuds As New Collection 'contien tous les noeuds du graphe
Dim k, nod As Variant
Dim adj(10, 10) As Variant

For k = 1 To 4 'remplir les noeuds
noeuds.Add Item:=k
Next k

'matrice des adjacents : si est adjacent à j alors adj(i,j)=1
adj(1, 2) = 1
adj(1, 1) = 0
adj(2, 4) = 1
adj(2, 2) = 0
adj(2, 3) = 0
adj(1, 3) = 1
adj(3, 3) = 0
adj(3, 4) = 1
adj(4, 4) = 0
adj(1, 4) = 0
adj(2, 1) = 1
adj(3, 1) = 1
adj(4, 3) = 1
adj(4, 1) = 0
adj(4, 2) = 1
adj(3, 2) = 0

For Each k In noeuds 'calcul des successeurs d'un noeud
If adj(ext, k) = 1 Then
successeurs.Add Item:=k
End If
Next k

If ext = destination Then 'Si on arrive à destination alors on écrit la solution et on passe au successeur suivant
Debug.Print chem
Else
For Each nod In successeurs
If InStr(1, chem, nod, vbTextCompare) = 0 Then
chem = chem & nod
Call roadmap(chem, nod, destination)
End If
Next nod
End If

End Function

Toutefois j'obtiens les chemins suivants "124" et "1234" au lieu de "124" et "134"

je ne réussis pas à comprendre mon erreur

Vous seriez gentils si vous m'aidez !

1 réponse

cs_osta Messages postés 27 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 10 octobre 2006
25 avril 2004 à 23:39
Merci les gars. Ne vous dérangez pas outre mesure, j'ai trouvé mon erreur.

Il a fallu que je mette ici une question pour que je la découvre par mes propres moyens :)
0
Rejoignez-nous