/** * Classe definissant des graphes au sens mathematiques * @author Luc Dartois * @version 1.0 */ public class Graphe{ /** * Le nombre de sommets du graphe, numerotes de 0 a ordre-1 */ private int ordre; /** * Ses aretes donnees sous forme de matrice carre d'adjacence (voir classe MatriceCarre) */ private MatriceCarre adj; /** * Indique si le graphe est oriente ou non */ private boolean oriente; /** * Construit un graphe vide *@param ord indique l'ordre du graphe *@param o indique s'il est oriente */ public Graphe(int ord,boolean o){ this.ordre=ord; this.adj=new MatriceCarre(ord); this.oriente=o; } /** * Getter pour l'ordre *@return L'ordre du graphe */ public int getOrdre(){ return this.ordre; } /** * Renvoit vrai s'il y a une arete de i a j *@param i,j Deux sommets du graphe *@return Vrai si le graphe possède une arete de i a j */ public boolean getArete(int i,int j){ return this.adj.getCoeff(i,j)==1; } /** * Ajoute une arete de i a j *@param i,j Deux sommets du graphe */ public void ajoutArete(int i,int j){ if(i>=this.ordre||j>=this.ordre||i<0||j<0){ throw new IllegalArgumentException("Erreur : Sommet inexistant."); } this.adj.setCoeff(i,j,1); if(!this.oriente){ this.adj.setCoeff(j,i,1); } } /** * Affiche la liste des voisins de i *@param i Un sommet du graphe */ public void voisinage(int i){ if(!this.oriente){ System.out.print("Voisins de "+i+" : "); for(int j=0;j