1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
class Classe
{
private ArrayList<String> points;
protected Classe()
{
points=new ArrayList<String>();
}
protected Classe(String ch)
{
points=new ArrayList<String>();
points.add(ch);
}
protected void addPoint(String ch)
{
points.add(ch);
}
protected String getPoint(int i)
{
return points.get(i);
}
protected int getSize()
{
return points.size();
}
}
public ArrayList Test(ArrayList<Classe> classes,float [][]matriceDisDoc, ArrayList globale)
{
ArrayList<List<Classe>> regroupement = new ArrayList<List<Classe>>();//permet d'enregistrer tous les regropement
int i=0;
int j=0;
int imax=-1;// pour la suppresion de elements regrouper dans le vecteur
int jmax=-1;// pour la suppresion de elements regrouper dans le vecteur
float dismax=0;
float []tabdis=new float[4];
float Inertie_Intra=0;
float Inertie_Inter=0;
float InertieTotale=0;
// boolean trouve=false;
float[][] matricedistanceclasse=new float[classes.size()][classes.size()];
for(i=0;i<classes.size()-1;i++)
{
for(j=i+1;j<classes.size();j++)
{
tabdis=distanceEntreDeuxClasses(classes.get(i),classes.get(j),matriceDisDoc,globale);
float d=tabdis[0];
matricedistanceclasse[i][j]=d;//distance entre deux classe
// calcul de l'inerite
if(d>dismax)
{
dismax=d;
imax=i;
jmax=j;
}
}
}
if(jmax!=-1)
{
Classe dc = classes.get(jmax);
// regrouper jmax a imax et supprimmer jmax
for(int h1=0;h1<dc.getSize();h1++)
classes.get(imax).addPoint(dc.getPoint(h1));
classes.remove(jmax);
regroupement.add(classes);//Pb: dans le vecteur Regroupement je trouve toujous la mise ajour de classes
}
if(classes.size()>1)
Test(classes,matriceDisDoc,globale);
return classes;
} |
Partager