Bonjour,
j'ai un problemme de mise a jour a chaque iteration:
mon programme permet de parcourir un vecteur des documents(chaque document est un composant du vectuer): j'appelle ce vecteur vecteur classes dans mon programme.
je fais une classification hierarchique entre ces document. chaque document au depart est une classeune classe est definie par un ensemble de documents: 1 ou plusieurs documents)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 class Classe
{
     Vector  points;   
     public Classe() 
        {}
    public Classe(String ch) 
        {
 
            points=new Vector();
            points.addElement(ch);
         }    
}
Principe de classification :
- a chaque iteration je regroupe les deux classes qui ont la distance maximale :imax et jmax les deux classes a regrouper.
- ensuite je copie le vecteur points de la classes jmax dans le vecteur points de la classe imax
- et je supprime la classe jmax.
ce principe et retirer jusqu'a que toutes les classses sont reuni dans une seule classe;

jusqu'a ici le programme fonctionne correctement: Voici le code
.
.......
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 Vector Regroupement=new Vector();//permet d'enregistrer tous les regropement
public Vector Test(Vector classes,float [][]matriceDisDoc, Vector globale)
    {
 
     Vector  regroupement=new Vector();
            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;  
            matricedistanceclasse=new float[classes.size()][classes.size()];            
            for(i=0;i<classes.size()-1;i++)
            {        
             for(j=i+1;j<classes.size();j++)
              {
                  Classe e1=new Classe();
                  e1=(Classe)classes.elementAt(i);
                  Classe e2=new Classe();
                  e2=(Classe)classes.elementAt(j);                    
                  tabdis=distanceEntreDeuxClasses(e1,e2,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;                  }           
                }
            }
 
            System.out.println(); 
            if(jmax!=-1)
            {
 
             Classe dc=new Classe();
             dc=(Classe)(classes.elementAt(jmax));
//regrouper jmax a imax et supprimmer jmax
             for(int h1=0;h1<dc.points.size();h1++)
 
             ((Classe)(classes.elementAt(imax))).points.add(((Classe)       (classes.elementAt(jmax))).points.elementAt(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;
    }
MOn problemme c'est tous les composantes du vecteur regroupement ont les memes: Le truc c'est que la modofication sefait sur la le vecteur classes et classes toujours prend la derniere modification: Est ce qu'il une solution.
Merci