/* *
* Retourne une cha ne contenant la liste des sommets , puis celle
des arcs .
*/
@Override
public String toString () ;
/* *
* Cherche l existence d un chemin entre deux sommets du graphe .
* @return true si un chemin existe
*/
27
;
28
Figure 1 Exemple de graphe orient construit dans TestGraphe.java. En gris les artes
ajoutes si lon considre un modle de multigraphe.
Il existe diffrentes faons de reprsenter des graphes en mmoire. Les graphes extensibles
reposent toujours sur des codages par successeurs, et non des tables dadjacences statiques. Ceci
signifie que le codage du graphe en mmoire va ressembler un peu au graphe lui-mme : un
sommet donn contient des liens (rfrences) vers chacun de ses sommets successeurs. Un tel
codage est avantageux pour implmenter des algorithmes de parcours vers lavant (recherche de
chemin, par exemple).
Cette reprsentation repose ici sur deux les deux classes suivantes :
un Sommet est dfini par son tiquette et ses successeurs ;
un GrapheSuccesseurs contient simplement lensemble des sommets du graphe. Cette
classe doit raliser linterface Graphe ci-dessus, et donc dfinir toutes ses mthodes.
Question 1 Dfinir les attributs des classes et crire les mthodes ajouteSommet et ajouteArc.
Bien entendu, vous devez ici utiliser les collections Java adquates (choix justifier !).
Question 2 Redfinir la mthode toString() de la classe Graphe pour afficher lensemble des
sommets du graphe, puis lensemble des arcs.
Question 3 Redfinir la mthode existeChemin qui cherche sil existe un chemin entre deux
sommets.
Cette recherche ncessite de rsoudre le problme de marquage des sommets, pour viter de
tourner en rond en cas de cycle... Pour savoir si un sommet a dj t trait, plusieurs approches
sont possibles :
garder une information au niveau de chaque sommet (qui doit tre initialise puis mise
jour)
maintenir une collection contenant les sommets dj parcourus.
A vous de tester une ou ces deux mthodes ; laquelle vous parat la plus intressante ?
2
Autre reprsentation
Une autre reprsentation possible est de dcrire entirement la structure au niveau du graphe
lui-mme. Celui-ci contient alors une association (cl, valeur) entre chaque sommet (la cl) et
lensemble de ses successeurs (la valeur).
Question 4 Implanter cette deuxime reprsentation dans une nouvelle classe ralisant elle
aussi linterface Graphe. Ainsi, vous pourrez la tester avec le mme programme de test que
prcdemment.
Quels sont les avantages/inconvnients par rapport la premire solution ?