Création d'un graphe
Fermé
charline159
Messages postés
208
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
22 juin 2022
-
Modifié le 30 mars 2021 à 18:51
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 - 7 oct. 2021 à 12:32
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 - 7 oct. 2021 à 12:32
A voir également:
- Création d'un graphe
- Creation compte gmail - Guide
- Création compte google - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création organigramme - Guide
- Création groupe whatsapp - Guide
3 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
31 mars 2021 à 08:03
31 mars 2021 à 08:03
Bonjour,
Ta structure de données est incorrecte :
Remarque : en Java on utilisera plutôt ArrayList pour manipuler une List, l'utilisation de LinkedList est assez rare, elle est davantage liée aux Queue qu'aux List.
Si on reprends la définition d'un graphe (Larousse)
Remarque : je t'encourage à te créer une classe Node, ce qui modifiera un peu ta classe Edge :
Ta structure de données est incorrecte :
public class Graph { private ArrayList<LinkedList<Edge>> vertices; private int nbEdges; }Je ne sais pas pourquoi tu as pensé à une liste imbriquée, mais c'est faux.
Remarque : en Java on utilisera plutôt ArrayList pour manipuler une List, l'utilisation de LinkedList est assez rare, elle est davantage liée aux Queue qu'aux List.
Si on reprends la définition d'un graphe (Larousse)
"Graphe simple ou non orienté, couple d'ensembles (X, C) où X est un ensemble d'éléments appelés sommets et C un ensemble d'éléments appelés arêtes."La structure de données correspondante serait donc :
public class Graph { private Set<Node> nodes; private Set<Edge> edges; }
Remarque : je t'encourage à te créer une classe Node, ce qui modifiera un peu ta classe Edge :
public class Edge { private Node u; private Node v; private int weight; }
charline159
Messages postés
208
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
22 juin 2022
1
Modifié le 5 avril 2021 à 23:04
Modifié le 5 avril 2021 à 23:04
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
6 avril 2021 à 12:38
6 avril 2021 à 12:38
Bonjour,
Cette représentation d'un graphe est incorrecte.
D'une part, elle permet d'avoir plusieurs représentations différentes d'un même graphe, ce qui va complexifier tes méthodes de manipulation car tu vas devoir gérer toutes les manières dont le graphe pourrait être représenté.
Exemple avec ce graphe que tu pourrais représenter avec 0 → 1 → 2 ou en deux lignes avec 0 → 1 et 1 → 2
D'autre part, elle ne permet pas de représenter certains graphes, ce qui est beaucoup plus gênant.
Exemple avec ce graphe dont tu pourras représenter soit 0 → 1, soit 0 → 2 mais pas les deux en même temps...
Cette représentation d'un graphe est incorrecte.
D'une part, elle permet d'avoir plusieurs représentations différentes d'un même graphe, ce qui va complexifier tes méthodes de manipulation car tu vas devoir gérer toutes les manières dont le graphe pourrait être représenté.
Exemple avec ce graphe que tu pourrais représenter avec 0 → 1 → 2 ou en deux lignes avec 0 → 1 et 1 → 2
D'autre part, elle ne permet pas de représenter certains graphes, ce qui est beaucoup plus gênant.
Exemple avec ce graphe dont tu pourras représenter soit 0 → 1, soit 0 → 2 mais pas les deux en même temps...
charline159
Messages postés
208
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
22 juin 2022
1
>
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
Modifié le 7 oct. 2021 à 12:34
Modifié le 7 oct. 2021 à 12:34
Je ne sais pas si ça servira à quelque chose de revenir après tant de temps, mais je laisse quand même ce message, sait-on jamais...
0 → 1 → 2 n'est pas équivalent à (0 → 1 et 1 → 2): ce sont deux représentations différentes.
0 → 1 → 2 signifie qu'il y a deux arcs partant de 0: on a donc un arc 0→1 ainsi qu'un arc 0→2
c'est donc différent de (0 → 1 et 1 → 2) dont le deuxième arc n'a aucun lien avec le sommet 0
le sommet que l'on regarde est le tout premier (index de l'arraylist), et tous les arcs qui s'en suivent (c'est-à-dire, ceux contenus dans la linkedlist) sont les arcs reliés à ce sommet en tout début de liste (autrement dit, à l'index de l'arraylist)
cette représentation de graphe est donc correcte, et il n'y a qu'une manière unique de représenter le graphe
d'ailleurs on continue à s'en servir en cours d'algorithmique en troisième année de licence informatique
voilà, c'était juste pour faire passer le message
0 → 1 → 2 n'est pas équivalent à (0 → 1 et 1 → 2): ce sont deux représentations différentes.
0 → 1 → 2 signifie qu'il y a deux arcs partant de 0: on a donc un arc 0→1 ainsi qu'un arc 0→2
c'est donc différent de (0 → 1 et 1 → 2) dont le deuxième arc n'a aucun lien avec le sommet 0
le sommet que l'on regarde est le tout premier (index de l'arraylist), et tous les arcs qui s'en suivent (c'est-à-dire, ceux contenus dans la linkedlist) sont les arcs reliés à ce sommet en tout début de liste (autrement dit, à l'index de l'arraylist)
cette représentation de graphe est donc correcte, et il n'y a qu'une manière unique de représenter le graphe
d'ailleurs on continue à s'en servir en cours d'algorithmique en troisième année de licence informatique
voilà, c'était juste pour faire passer le message
charline159
Messages postés
208
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
22 juin 2022
1
Modifié le 8 avril 2021 à 21:55
Modifié le 8 avril 2021 à 21:55
Je vois. Mais le truc c'est que ce n'est pas moi qui ai choisi cette implémentation: je suis forcée de la suivre...