/** * Classe définissant des graphes au sens mathématiques * @author Luc Dartois * @version 1.0 */ public class Graphe{ /** * Le nombre de sommets du graphe, numérotés de 0 à ordre-1 */ private int ordre; /** * Ses arêtes données sous forme de matrice carré d'adjacence (voir classe MatriceCarre) */ private MatriceCarre adj; /** * Indique si le graphe est orienté ou non */ private boolean oriente; /** * Construit un graphe vide *@param ord indique l'ordre du graphe *@param o indique s'il est orienté */ 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 arête de i à j *@param i,j Deux sommets du graphe *@return Vrai si le graphe possède une arête de i à j */ public boolean getArete(int i,int j){ return this.adj.getCoeff(i,j)==1; } /** * Ajoute une arête de i à 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