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

Mathématiques Discussion :

Parcours de tous les chemins d'un graphe


Sujet :

Mathématiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut Parcours de tous les chemins d'un graphe
    J'ai un graphe, je veux aller d'un point A à un point B.
    Je veux alors dresser la liste de tous les chemins possibles entre ces deux sommets.
    J'imagine qu'il faut une fonction récursive mais la récursivité et moi ...

    Est ce que quelqu'un connaitrait - il un algo tout fait ?

    merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut
    tu peut utiliser l'algo de Dijkstra.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut
    Ok mais je ne veux pas trouver le plus court chemin, je veux juste parcourir tous les chemins possibles.

    Merci

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Tu peux calculer les puissance successives de la matrice d'adjacence, afin de connaitre le nombre de chemins de longueur 'n' entre 2 sommets donnés.

    Pour identifier précisement chaque chemin tu peux soit faire le calcul inverse, soit conserver les éléménts de la matrice qui ont servis aux calculs intermédiaires.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre expérimenté
    Inscrit en
    Décembre 2003
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 272
    Par défaut
    Citation Envoyé par piotrr Voir le message
    J'ai un graphe, je veux aller d'un point A à un point B.
    Je veux alors dresser la liste de tous les chemins possibles entre ces deux sommets.
    J'imagine qu'il faut une fonction récursive mais la récursivité et moi ...

    Est ce que quelqu'un connaitrait - il un algo tout fait ?

    merci
    Il va falloir préciser, parce que si il y a un cycle dans ton graphe, il y aura une infinité de chemins...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut Précisions sur ce que je cherche à faire
    J'ai un graphe non orienté avec des cycles.
    Je veux trouver tous les chemins d'un point A à un point B sans passer deux fois par le même sommet.
    je veux avoir à la fin une liste de tous les chemins possibles.

    merci

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par piotrr Voir le message
    J'ai un graphe non orienté avec des cycles.
    Je veux trouver tous les chemins d'un point A à un point B sans passer deux fois par le même sommet.
    je veux avoir à la fin une liste de tous les chemins possibles.

    merci
    Dans ce cas tu peux faire une exploration complète des chemins, avec une recherche taboo.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Dans ce cas tu peux faire une exploration complète des chemins, avec une recherche taboo.
    Qu'est ce que la recherche "taboo"?
    Je n'ai rien trouvé à ce propos.

    Merci

  9. #9
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par piotrr Voir le message
    Qu'est ce que la recherche "taboo"?
    Je n'ai rien trouvé à ce propos.
    Houla... c'est exxxxxtremement compliqué.

    Non, je plaisante. Ca consiste a poser des petits cailloux le long du chemin pour éviter de passer 2 fois au meme endroit. Un petit exemple:

    On modélise le graphe
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // nombre de sommets dans le graphe
    int n=5;
     
    // matrice d'adjacence du graphe 
    int[][] adjacencymatrix = new int[][] {
    	new int[] {1,1,1,0,0}, //    1
    	new int[] {1,1,1,1,0}, //  / | \
    	new int[] {1,1,1,1,0}, // 0  |  3 - 4
    	new int[] {0,1,1,1,1}, //  \ | /
    	new int[] {0,0,0,1,1}, //    2
    };

    On définit les quelques variables utilisées par notre algorithme:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // stockage du chemin pendant l'exploration recursive
    int[] path = new int[n];
     
    // verrou pour la recherche taboo (tous initialisés à "false" par défaut)
    boolean[] taboo = new boolean[n];
     
    // sommets de départ/arrivé souhaités
    int source=0;
    int target=4;

    Et enfin l'algorithme de parcours recursif:
    Code java : 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
    void explore(int position, int depth) {
    	path[depth]=position;
     
    	// on est sur le sommet d'arrivé -> fini
    	if (position==target) {
    		// affiche la solution
    		for(int i=0;i<=depth;i++) System.out.print(path[i]+" ");
    		System.out.print("\n");
    		return;
    	}
     
    	// sinon...
     
    	taboo[position]=true; // on pose un caillou
     
    	// on explore les chemins restants
    	for(int i=0;i<n;i++) {
    		if (adjacencymatrix[position][i]==0 || taboo[i]) continue;
    		explore(i,depth+1);
    	}
     
    	taboo[position]=false; // on retire le caillou
    }

    on appelle l'algorithme avec "explore(source,0);" pour lui dire de commencer à explorer à partir du noeud 'source'. Ce qui nous donne les 4 chemins possibles entre les sommets "0" et "4":

    0 1 2 3 4
    0 1 3 4
    0 2 1 3 4
    0 2 3 4
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

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

Discussions similaires

  1. Tous les chemins d'un graphe
    Par Raikyn dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 05/12/2013, 14h33
  2. tous les chemins dans un graphe
    Par tunnour dans le forum Mathématiques
    Réponses: 3
    Dernier message: 29/12/2009, 16h48
  3. 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
  4. graphe orienté : parcours de tous les noeuds
    Par Lily_ dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 03/10/2007, 11h48
  5. [Graphe] Extraire tous les chemins de toutes tailles.
    Par Choupi dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 10/05/2006, 15h47

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