Transformer une matrice en graphe [Résolu]

Messages postés
17
Date d'inscription
lundi 15 mai 2006
Dernière intervention
6 décembre 2006
- - Dernière réponse : Ro3090
Messages postés
17
Date d'inscription
lundi 15 mai 2006
Dernière intervention
6 décembre 2006
- 8 sept. 2006 à 03:24
Voila je débute en C# et je dois faire une petite application qui consiste à transformer (ou convertir)  une matrice en un graphe.

Ma matrice est de la forme:
          Ecole Etudiant Professeur
Ecole    1        0,7         0,3
Etudiant            1            0,4
Professeur                        1

et comme résultat je veux avoir un graphe de ce type:

                    Ecole--------0,3 Professeur
                    |      
                    |
        0,7 Etudiant         
                    |
        0,4 Professeur
                            
Mon idée c'est de décomposer ma matrice de référence en ligne, et pour chaque ligne créer le graphe qui lui est propre, et enfin en dernier connecter les graphes entre eux.
           Ecole Etudiant Professeur
Ecole    1        0,7         0,3

devient 
  Ecole--------0,3 Professeur
                    |      
                    |
        0,7 Etudiant   

et ainsi de suite.

Je sais déjà utiliser les matrices en C sharp. J'ai juste à déclarer des tableaux de plusieurs dimensions. Mais j'ai un petit problème de structure de données. Ma matrice ne comporte que les informations chiffrées et pas les mots (Ecole ...), hors j'en ai besoin.

J'aimerais passer par l'intermédiaire d'une liste de ce type comme cela ce fait en langage Lisp:
(Ecole (Etudiant 0,7) (Professeur 0,3))       1ère ligne de ma matrice
Ensuite, faire un petit algorithme pour créer le graphe associé serait pas trop compliqué.

Mais je sais pour arriver à ce premier résultat je ne sais pas trop comment m'y prendre.
Créer une structure spécifique ne me semble pas une bonne idée, je pencherais plutôt pour la création d'un objet générique et l'utilisation de deux tableaux: un avec les mots, l'autre avec les chiffres; mais j'y vois pas trop clair dans la manière d'agencer tout ça.

Voilà, j'espère que j'ai pas été trop confus dans mon blabla mais si vous voyez une méthode plus habile à mon problème ou si vous avez un début de réponse à mon sujet je suis preneur.

En vous remerciant

Sanji   
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
17
Date d'inscription
lundi 15 mai 2006
Dernière intervention
6 décembre 2006
3
Merci
Exact pour les remarques du schéma, j'ai tapé trop vite.


J'ai eu la même idée pour l'histoire du tableau de nom et du tableau de chiffre et ça commence à prendre forme tout doucement. Je code mes méthodes petit à petit.


J'ai désormais 3 classes:_ DivMatrix avec des méthodes qui créent ma matrice, le tableau de mots et le tableau de chiffres


                                    _LineTerm avec une méthode qui pioche dans les deux tableaux selon l'indice i et crée un objet LineTerm avec un index (le i), un nom (le mot), et une liste de nombre (les nombres de la matrice)...


                                    _Term qui correspond au plus petit élément (il pourrait effectivement s'appelait Node).

Merci pour les informations de conception, ça se débloque gentiment. Je vous tiendrais au courant de la suite des événements.

Merci Ro3090 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de Ro3090
Messages postés
21
Date d'inscription
vendredi 24 juin 2005
Dernière intervention
8 novembre 2006
0
Merci
Pour la transformation de la première ligne du tableau   Ecole--------0,3 Professeur
                                                                                                               |      
                                                                                                               |
                                                                                                        0,7 Etudiant  
Je dirais que c'est plutôt ça   Professeur 0,3-------- Ecole
                                                                                |      
                                                                                |
                                                                        0,7 Etudiant  
Je pense que le mieux est de créer des classes spécifiques pour tes structures de données. par exemple une classe Node qui aura deux membre un pour le nom (Professeur) et l'autre pour le poids (0,3), ensuite si t'es matrices sont toutes de taille 3 tu peux faire une classe Matrix qui a 3 memebres qui sont des ArrayList d'objets de type Node et donc tu stockera toute ta matrice ligne par ligne, sinon si la taille de tes matrice est dynamique tu peux faire un membre pour stocker la taille de la matrice et un ArrayList de ArrayList d'objets de type Node. ensuite tu feras les méthodes qui vont te retourner un élément a_i_j de ta matrice ...
Si tu veux toujours utiliser deux tableaux l'un pour les mots et l'autre pour les chiffres, tu peux les agencer en utilisant l'indice des tableau (le mot numéro i du premeir correspond au chiffre numéro i du second).
Je ne sais pas si j'ai répondu à ta question
Commenter la réponse de byphantom
Messages postés
21
Date d'inscription
vendredi 24 juin 2005
Dernière intervention
8 novembre 2006
0
Merci
le schéma n'est pas bien sorti. Etudiant est attaché à Ecole
Commenter la réponse de byphantom

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.