none
parcourir les arcs d'un graphe de donnees RRS feed

  • 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.

    vendredi 20 avril 2012 18:30

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".

    samedi 21 avril 2012 17:22
    Modérateur

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".

    vendredi 20 avril 2012 20:57
    Modérateur
  • 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
    samedi 21 avril 2012 12:36
  • 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".

    samedi 21 avril 2012 17:22
    Modérateur
  • Merci

    J'y avais pensé mais je reçois un message d'erreur lors de la lecture de  mon tableau de stockage: la reference d'objet n'est pas une reference d'objet.....????

    dimanche 22 avril 2012 16:54
  • 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

    dimanche 22 avril 2012 17:15
    Modérateur
  • 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".

    lundi 23 avril 2012 08:50
    Modérateur
  • 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.

    lundi 23 avril 2012 21:57
  • 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


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    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.

    mardi 24 avril 2012 06:58
  • 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".

    mardi 24 avril 2012 08:12
    Modérateur
  • Je vous remercie de vos conseils. Je ne connaissais pas l'initialisation d'un tableau avec new. Puis-je laisser des cases à Nothing ou dois-je compléter avec des données ou "" ?

    mardi 24 avril 2012 21:47
  • Bonjour,

    Non, il n’est pas nécessaire modifier tous les éléments de votre tableau.

    Bonne journée,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    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.

    mercredi 25 avril 2012 06:03
  • 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.

    samedi 28 avril 2012 16:43