Il y a beaucoup d'articles dans ce site concernant ma question. J'ai une matrice par exemple (10 x 10) qui représente 10 nœuds. La matrice appelée MyMat (9,9)Comment supprimer des cycles ou des boucles dans les graphiques en Visual basic?
Les lignes de cette matrice représentent le noeud de source (à partir du noeud) et les colonnes représentent noeud cible (To Node). Il a 14 liens qui sont distribués au hasard. Les valeurs non nulles représentent les connexions entre les nœuds.
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0
Ce que je veux est d'empêcher les boucles (cycles) pour chaque noeud dans le système. Par exemple: Noeud 1: No loop
Noeud 2: 2, 9, 7, 8, 10, 2. Ici, la boucle existe car elle a commencé par 2 et s'est terminée par 2. Ce que je veux empêcher les boucles ce réseau. Cela signifie que: MyMat (9,1) doit être 0 Nœud 2: 2, 9, 7, 8, 10, 3, 2. Cela signifie que MyMat (2,1) doit être 0
Nœud 3: Non boucle
Node 4: 4, 7, 8, 4. Cela signifie que MyMat (7,3) doit être 0
noeud 5: 5, 8, 10, 6, 5. Cela signifie que MyMat (5,4) doit être 0
Noeud 6: pas de boucle
Noeud 7: pas de boucle
Node 8: pas de boucle
noeud 9: pas de boucle
noeud 10: pas de boucle
4 connexions ci-dessus ont été supprimés de la matrice.
Je l'ai fait par une technique appelée profondeur première recherche, mais il est très lent et charge le temps d'exécution de mon programme surtout quand j'utilise 60 noeuds et 100 connexions !! Plusieurs exemples de programmation peuvent être trouvés si vous l'utilisez.
est-il un moyen plus facile (plus rapide) pour faire cela en Visual Basic ou C#?
HI Merci pour votre réponse. Voulez-vous s'il vous plaît montrer votre réponse avec mon exemple?-à-dire en utilisant une matrice d'arêtes et de noeuds comme je l'ai dans ma question. Merci –
j'ai essayé cela, mais ne fonctionnait pas, s'il vous plaît des conseils LinkToSource (0) GreyList.Add (0) Fonction publique LinkToSource (ByVal fromnode As Integer) As Double Pour i = 0 à 9 Si Matt (fromnode, i)> 0 Then Si GreyList.Contains (i) Puis Si Non BlackList.Contains (i) Alors Matt (fromnode, i) = 0 BlackList.Add (i) BlackList.Add (fromnode) Fin Si Sinon GreyList.Add (i) LinkToS ource (i) Fin Si Fin Si Suivant i Fin Fonction –