IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[JGraphT] Obtenir tous les chemin possibles


Sujet :

API standards et tierces Java

  1. #1
    Membre habitué Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Points : 126
    Points
    126
    Par défaut [JGraphT] Obtenir tous les chemin possibles
    Bonjour,

    J'utilise la librairie JGraphT pour gèrer un graphe orienté acyclique.

    Maintenant, je tente de trouver tous les chemins possibles à partir d'un sommet. Est-ce que quelqu'un peut me dire comment faire?

    Merci

  2. #2
    Membre averti Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut
    [Mode Algo Bourrin On] throw PriseDAspirineException
    Je pense que
    1- je créerais une classe chemin qui contiendrait une ArrayList de Vertex
    2- je maintiendrais une ArrayList de chemins dans la classe qui demande l'opération, et je l'initialise avec un chemin réduit au Vertex de départ v0
    Ensuite je créerais une méthode récursive genre getPaths(Chemin c) qui chercherais en arrivant sur un Vertex les Vertex qu'elle peut atteindre (soit à l'aide d'une méthode directe qui existe peut être mais que je ne connais pas, soit en récupérant les arêtes incidentes et en trouvant leur vertex cible) : exemple on est en v0 et on peut atteindre v1 et v2
    - j'ajouterais le chemin entré (c) à ma liste de chemins, je créerais autant de nouveaux chemins que de sommets à atteindre (c1= c+V1,c2= c+v2) et on relance récursivement la fonction sur tous ces chemins, tant qu'il y a des sommets à atteindre (condition d'arrêt obligatoirement remplie si ton graphe est bien orienté et acyclique !! )
    [Mode Algo Bourrin Off]
    La différence entre la théorie et la pratique est plus mince en théorie qu'en pratique

  3. #3
    Membre averti Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut
    bon allez, j'ai deux minutes...

    classe Test
    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
     
    import java.util.ArrayList;
     
    public class Test {
     
    	//liste des chemins
    	ArrayList<Path> aPathList;
     
    	public Test(){
    		aPathList=new ArrayList<Path>();
    	}
     
    	public void getPath(Path p,Object vertex){
     
    		//on ajoute le nouveau chemin à la liste des chemins
    		aPathList.add(p);
    		//on récupère les vertex qu'on peut atteindre
    		ArrayList<Object> aReachableVerticesList=getReachableVertices(vertex);
    		for(Object vert:aReachableVerticesList){
    			//on crée les nouveaux chemins
    			Path pi=new Path(p,vert);
    			//et c'est reparti pour un tour !!!
    			getPath(pi,vert);
    		}
    	}
     
     
    	private ArrayList<Object> getReachableVertices(Object vertex) {
    		/*
    		 *  A toi de remplir ce code !!!!! ;-)
    		 */
    		return null;
    	}
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
     
    		Path p=new Path();
    		//c'est pour le preier sommet dont on veut partir
    		Object SommetRoot=new Object();
    		p.add(SommetRoot);
    		Test test=new Test();
    		test.getPath(p,SommetRoot);
    	}
     
    }
    Classe Path
    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
     
    import java.util.ArrayList;
     
     
     
    public class Path {
     
    	ArrayList<Object> aVerticesList;
    	public Path(){
    	 aVerticesList=new ArrayList<Object>();
    	}
     
    	public Path(Path p,Object vertex){
    		aVerticesList=new ArrayList<Object>();
    		for (Object vert : p.aVerticesList){
    			this.aVerticesList.add(vert);
    		}
    		this.aVerticesList.add(vertex);
    	}
     
    	public void add(Object vertex){
    		aVerticesList.add(vertex);
    	}
    }
    Bon, voilà, j'ai pas fait de test, mais ça doit être à peu près dans ce genre là mon idée !!
    Le test d'arrêt, qui n'est pas mis ici, c'est quand la liste des vertex accessibles est vide....
    La différence entre la théorie et la pratique est plus mince en théorie qu'en pratique

  4. #4
    Membre habitué Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Points : 126
    Points
    126
    Par défaut
    merci

    j'essaye ca!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trouver tous les chemins possibles d'un trajet (d'un point A à un point B)
    Par chakirlbr dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 16/12/2014, 14h54
  2. Réponses: 2
    Dernier message: 01/06/2013, 01h47
  3. Collecte de tous les chemins possibles
    Par Erable dans le forum Mathématiques
    Réponses: 3
    Dernier message: 26/02/2010, 11h45
  4. Réponses: 0
    Dernier message: 26/05/2009, 01h06
  5. Parcours d'un arbre : examiner tous les chemins possibles
    Par Molos dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 06/04/2009, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo