A voir également:
- Graphe java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
3 réponses
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; }
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...

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