Meilleur auteur de réponses
parcourir les arcs d'un graphe de donnees

Question
-
Bonjour à tous
J'utilise visual Basic express 2010 en dilettante.
Par malchance mes donnees de personnes s'organisent sous forme d' une struture en graphe. J'ai lu quelques articles sur la théorie des graphes en mathématiques. Je n'ai ni le niveau ni les competences pour reussir seul. Je cherche donc un algorithme ou un exemple en Visual basic.
Je suis conscient de la difficulte du sujet mais aussi très curieux.
Je remercie par avance tous ceux qui s'interresseront à mon problème.
Réponses
-
Cela parait assez simple. Je dirais une liste qui liste les arcs (éventuellement explicitement le sens inverse également). Puis il suffit de parcourir la liste pour extraite les amis de niveau1 et en se basant sur ceux que l'on vient de trouver ceux du niveau n+1 jusqu'à ne plus rien trouver. A priori aucune compétence particulière en math n'est nécessaire...
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
- Proposé comme réponse Ciprian Duduiala lundi 23 avril 2012 07:07
- Marqué comme réponse Ciprian Duduiala jeudi 26 avril 2012 06:48
Toutes les réponses
-
Humm. Mes souvenirs d'étudiant commencent à dater un peu mais à tout hasard... Déjà, quelle serait la nature de ce graphe et l'objectif de son parcours ? Le but est de trouver quel serait l'algorithme à appliquer.
Il doit existe aussi probablement des bibliothèques qui pourraient aider à résoudre le problème (mais quel est le problème ?) Une petite recherche me donne par exemple http://quickgraph.codeplex.com/ ou http://nodexl.codeplex.com/
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
-
Re bonjour
C'est un simple graphe ni orienté , ni gradué. Au début j'ai un ensemble de personnes, certains ont des amis d'autres pas. Je dois ajouter d'autres personnes, amies avec certaines et pas avec d'autres. Je veux parcourir le graphe et ajouter les arcs nouveaux (genre matrice d'ajacence à compléter).
A......C
B......E......G
C......D
E......A.......F
F....
- Modifié limougeau samedi 21 avril 2012 12:40
-
Cela parait assez simple. Je dirais une liste qui liste les arcs (éventuellement explicitement le sens inverse également). Puis il suffit de parcourir la liste pour extraite les amis de niveau1 et en se basant sur ceux que l'on vient de trouver ceux du niveau n+1 jusqu'à ne plus rien trouver. A priori aucune compétence particulière en math n'est nécessaire...
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
- Proposé comme réponse Ciprian Duduiala lundi 23 avril 2012 07:07
- Marqué comme réponse Ciprian Duduiala jeudi 26 avril 2012 06:48
-
-
Bonjour,
Pouvez-vous nous montrer le code qui pose problème ? (La création du tableau + l'algorithme).
Cordialement
Gilles TOURREAU - MVP C#
Architecte logiciel/Consultant/Formateur Freelance
Blog : http://gilles.tourreau.fr
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 -
Cela doit être plutôt NullReferenceException qui indique que l'objet n'a pas été initialisé. Sur la ligne où se trouve l'erreur vérifier qu'aucun des objets utilisés n'est resté à "nothing"...
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
-
dans un module je declare:
Public tableau as string(,)
Ensuite dans Form1 je le redimensionne et je l'utilise dans des procedures:
redim preserve tableau(100,10)
Puis je l'initialise:
For i=0 to NbElements
tableau(i,0)=Nom
next i
Malgré plusieurs essais différents je reçois toujours les mêmes messages d'erreur: " la référence d'objet n'est pas......." ou NullReferenceException ou " la variable n'est pas declaree et est inaccessible" ou "utiliser new...".
Je ne trouve pas la solution.
-
Bonjour,
Il faut aussi initialiser votre tableau. Quelque chose comme : tableau = New string(100,10). Notez que ReDim Preserve va seulement redimensionner le tableau sans perdre les éléments existants, mais si le tableau n’est pas initialisé, il n’y a rien à redimensionner.
Bonne journée,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
Quelle est la situation actuelle ? Cela sera plus facile de vous aider sur une situation précise que généralement sur tous les essais que vous avez fait...
Attention aussi à une confusion possible entre le nombre d'éléments et le dernier indice (le dernier indice est 100 mais on a 101 éléments. De préférence utiliser une constante ou UBound pour s'assurer que vous êtes toujours cohérent :
ReDim Preserve Tableau(100, 10) For i = 0 To UBound(Tableau) Tableau(i, 0) = "A" Next
doit marcher sans problème (et donc si vous changer le nombre de dimensions, le tableau sera toujours parcouru intégralement sans que le code ou la variable nbElements ait à être modifiée).
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
-
-
Bonjour,
Non, il n’est pas nécessaire modifier tous les éléments de votre tableau.
Bonne journée,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
Merci de vos conseils.
En fait je construit mon graphe à la demande et je vérifie la présence des nouveaux pour éviter les répétitions et là j' ai l'impression que je boucle mais conditions d'arrêt n'étant pas bonne. Je vais arreter ces essais et réfléchir à autre exercice plus facile.