Transformer une matrice en graphe

Résolu
Ro3090 Messages postés 17 Date d'inscription lundi 15 mai 2006 Statut Membre Dernière intervention 6 décembre 2006 - 7 sept. 2006 à 04:13
Ro3090 Messages postés 17 Date d'inscription lundi 15 mai 2006 Statut Membre 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   

3 réponses

Ro3090 Messages postés 17 Date d'inscription lundi 15 mai 2006 Statut Membre Dernière intervention 6 décembre 2006
8 sept. 2006 à 03:24
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.
3
byphantom Messages postés 21 Date d'inscription vendredi 24 juin 2005 Statut Membre Dernière intervention 8 novembre 2006
7 sept. 2006 à 09:51
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
0
byphantom Messages postés 21 Date d'inscription vendredi 24 juin 2005 Statut Membre Dernière intervention 8 novembre 2006
7 sept. 2006 à 09:52
le schéma n'est pas bien sorti. Etudiant est attaché à Ecole
0
Rejoignez-nous