slt, je suis un etudiant en informatique, j'ai deja travaillé en c++, en m'a demander de faire un programme qui modélise un probleme, en simulant les différants etats que peut prendre ce dernier par un graphe, voici les structures que j'ai utilisée
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
 
public class Tr {//represente les arbres du graphe
        private ArrayList <noeud> ens_noeud = new ArrayList <noeud> ();
        private ArrayList <SuccesseurTr> suivant = new ArrayList <SuccesseurTr> ();
}
//------------------------------------------------------------------------
public class SuccesseurTr {
    private String nom_transition_franchissable;
    private int indice_suivant;
    private String nom_marquage;
}
//------------------------------------------------------------------------
public class noeud {
        private String nom_marq;
        private int [] marq;
        private ArrayList <SuccesseurNoeud> successeur = new ArrayList <SuccesseurNoeud> ();
}
//------------------------------------------------------------------------
public class SuccesseurNoeud {
    private String nom_transition_franchissable;
    private int indice_suivant;
}
J'ai implémenté mon programme, il fonctionne, mais pour des probleme qui sont plus au moins grands, il prend une éternité avant de m'afficher un resultat, j'ai tenté de l’exécuter pas a pas, la generation du graphe ne prend que quelques milisecondes, le probleme est donc dans la méthode d'affichage du graphe qui est beaucoup trop lourde, voici une partie de la méthode
Remarque : Un graphe est un ensemble d'arbre, et un arbre est un ensemble de noeud.
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
55
56
57
58
59
60
61
62
63
 
        ArrayList <Tr> graphe;
        Tr t = this.graphe.get (0);
        int nb = this.graphe.size (), nbs = 0;
        this.texte_a_afficher = "e" + 0;
        ArrayList <noeud> ens = t.ens_noeud ();
        noeud nd = ens.get (0);
        affichage_marquage (nd.marquage ());
        ArrayList <Integer> pile = new ArrayList <Integer> ();
        ArrayList <String> pile1 = new ArrayList <String> ();
        ArrayList <SuccesseurTr> list_succ = t.liste_suivant ();
        ArrayList <SuccesseurNoeud> list_succ1;
        SuccesseurTr succ;
        SuccesseurNoeud succ1;
        int taille_succ = list_succ.size ();
        this.texte_a_afficher += "null,null]  Successeurs  : ";
        nbs += taille_succ;
        int i;
        for (i = 0; i < taille_succ; i++)
        {//for
            succ = list_succ.get (i);
            this.texte_a_afficher += "<" + succ.nom_marquage() + "," + succ.nom_transition_franchissable () + ",e" + succ.indice_suivant () + ">  ";
        }//for
        for (i = 1; i < nb; i++)
        {//for
            t = this.graphe.get (i);
            ens = t.ens_noeud ();
            this.texte_a_afficher += "\ne" + i;
            if (ens.size () == 0)
                this.texte_a_afficher += " = [vide]";
            else
            {//else
                pile.add (0, 0);
                pile1.add (0, null);
                while (!pile.isEmpty ())
                {//while
                    nd = ens.get (pile.get (0));
                    pile.remove (0);
                    affichage_marquage (nd.marquage ());
                    this.texte_a_afficher += pile1.get (0);
                    pile1.remove (0);
                    list_succ1 = nd.obtenir_liste_successeurs ();
                    taille_succ = list_succ1.size ();
                    nbs += taille_succ;
                    for (int z = 0; z < taille_succ; z++)
                    {//for
                        succ1 = list_succ1.get (z);
                        pile.add (0, succ1.indice_suivant ());
                        pile1.add (0, succ1.nom_transition_franchissable ());
                    }//for
                }//while
                this.texte_a_afficher += ",null]  Successeurs  : ";
                list_succ = t.liste_suivant ();
                for (int j = 0; j < list_succ.size (); j++)
                {//for
                    succ = list_succ.get (j);
                    this.texte_a_afficher += "<" + succ.nom_marquage() + "," + succ.nom_transition_franchissable () + ",e" + succ.indice_suivant () + ">  ";
                }//for
            }//else
       }//for
       pile = null;
       pile1 = null;
       this.texte_a_afficher += "\n\nStatistiques\n/-------------------------------------------/\n" + "Nombre de noeud etondu = " + nb + "\nNombre de transition = " + nbs + "\n";
Vous l'aurez peut etre remarqués, je cherche un affichage du type
ei , [<int []>, SuccesseurNoeud.nom_transition_franchissable, SuccesseurNoeud.indice_suivant..., null] SuccesseurTr : <...>
Es-que quelqu'un aurai une idée qui permetrai un affichage plus rapide (méthode plus optimisée), meme si elle est couteuse en memoire?
Mes remercimants d'avance