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
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
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; }
Remarque : Un graphe est un ensemble d'arbre, et un arbre est un ensemble de noeud.
Vous l'aurez peut etre remarqués, je cherche un affichage du type
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";
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![]()
Partager