Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1024 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  parcourir une structure de graphe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

parcourir une structure de graphe

n°1552850
thierry_b
Posté le 03-05-2007 à 01:03:39  profilanswer
 

Bonjour,
 
J'ai une petite question algorithmique à vous poser, si cela ne vous dérange pas.
 
J'ai une structure de graphe représentant une méthode java en fait.
 
J'utilise une ArrayList dont les indices 0,1,... vont représenter les différents labels et pour chaque label (donc indice de mon tableau), j'associe un couple par exemple (inst, {2,4,8}) pour dire quaprès avoir executé l'instruction inst, on a plusieurs instructions potentielles à traiter: celles qui se trouvent au label, puis 4 et enfin 8 (donc en allant à l'indice 2 puis 4 et 8 de mon ArrayList).
La liste de labels est ouvent supérieure à 1 quand l'instruction est une conditionnelle par exemple...
 
Le pb c'est qu'après avoir traité l'instruction inst, je vais tout d'abbord aller au label 2, puis de ce label 2, j'aurais d'autres labels à traiter (pouvant être aussi par exemple ne liste de labels à plus d'un élement...)
 
Je sais que je termine un parcours quand j'arrive à l'instruction End, mais à ce moment là, faudrait réitérer sur ma liste du depart en allant ensuite au label 4...
 
Comment me conseillez-vous de faire ca algorithmiquement de facon la plus simple? sachant que forcement si je n'avais qu'un label possible à chaque fois par instruction, c'est facile, pq il suffit de parcourrir une seule fois la liste des différents labels, pour tomber sur le End, et là c'est définitivement fini...
 
Merci :-)
 
 
 
 

mood
Publicité
Posté le 03-05-2007 à 01:03:39  profilanswer
 

n°1552892
flo850
moi je
Posté le 03-05-2007 à 08:26:42  profilanswer
 

une fonction recursive est pas mal  
 
fonction  parcoursArbre(Noeud noeudCourant)
{
   
    execute(noeudCourant);
    Pour chaque noeud  dans la liste des fils de noeudCourant
           parcoursArbre(noeud);  
}

n°1552903
thierry_b
Posté le 03-05-2007 à 08:47:24  profilanswer
 

Re,
 
ok, mais par exemple, sans utiliser la récursion, c'est possible facilement?
 
Sinon, si y'a pas d'autres solutions, je le ferai en récursif, mais je préférerais eviter.
 
Merci :-)


Message édité par thierry_b le 03-05-2007 à 08:47:36
n°1552904
flo850
moi je
Posté le 03-05-2007 à 08:51:07  profilanswer
 

avec une pile c'est possible

 

pile.push(noeudRacine);
tant que ( taille(pile) > 0 )
{
   noeudCourant = pile.pop();
   Pour chaque noeud  dans la liste des fils de noeudCourant
           pile.push(noeud);
}

  

EDIT : ca marche aussi avec une file, ca depend du sens de parcours que tu veux


Message édité par flo850 le 03-05-2007 à 08:51:34
n°1552988
thierry_b
Posté le 03-05-2007 à 10:21:34  profilanswer
 

Re,
 
ok, pour la version recursive, mais pour la version itérative, j'aimerais qques précisions, si j'ai bien compris avec l'algo qui utilise une pile ca fera en ordre d'exec:
 
l0, l2, l21, l1, l11 et l2 si on suppose par ex, que l0 a pour successeur l1 et l2, et que l1 a pour successeur l11 et l12 et que l2 a pour successeur l21 et l22?
 
Tandis qu'avec une queue, ca fera: l0, l1, l2, l11, l12, l21.
 
C'est bien ca?
 
Merci :-)

n°1555136
thierry_b
Posté le 04-05-2007 à 08:07:39  profilanswer
 

Re,
 
Bon, je m'en suis bien sorti finalement :-)
 
Merci :-)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  parcourir une structure de graphe

 

Sujets relatifs
[oracle] vue sur plusieurs tables a la structure identique[C+GTK] Structure qui ne contient plus rien ???
[C] fonction de structureASP.NET structure table dataset
[Résolu] Pb modification structure table pr rajouter auto-incrementDemande d'approbation de votre part pour une structure XML...
Parcourir une liste de checkboxFonction renvoyant pointeur de structure [Résolu]
tableau et structure[C] popen, parcourir le resultat
Plus de sujets relatifs à : parcourir une structure de graphe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR