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

Algorithmes et structures de données Discussion :

Chemin possible gans un graphe


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 17
    Par défaut Chemin possible gans un graphe
    salut
    j'ai developper un unprogramme en java qui permet de calculer les chemins possible de longeur 1 jusqu'a N-1 avec N nombre de noeuds de graphe. Mon problemme c'est qu'il es trop long en temp d'execution. je sais bien ce temps a cause au nombre d'iteration . Est ce que tu peut me donner d'autre truc pour passer ou minimiser le temps en trouvant les cas possibles entre les couples des noeuds dans un graphe complet
    Merci

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Quel algo a tu utilisés ?

    En fait la fermeture transitive doit pouvoir se calculer en n^3 avec Warshall.

    On peut l'optimiser un petit peu comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    M : matrice booléenne
     
    M <- Matrice d'adjacence du graphe.
     
    POUR k de 1 à n FAIRE
         POUR i de 1 à n FAIRE
              SI M[i,k] ALORS
                   POUR j de 1 à n FAIRE
                        M[i,j] <- M[i,j] OU M[k,j]
                   FIN POUR
              FIN SI
         FIN POUR
    FIN POUR
    En fait l'optimisation consiste à ne faire la boucle la plus imbriquée que dans le cas où M[i,k] est vrai. (car sinon ça revient à faire M[i,j] <- M[i,j] ). Tu peux faire une seconde optimisation en rajoutant un test lors de la deuxième boucle pour ne pas tester les valeurs sur la diagonale (rien ne sert de calculer si tu as un chemin de i à i).

  3. #3
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Tu cherches a determiner les noeuds accessibles ou a enumerer tous les chemins possibles? L'enumeration est potentiellement exponentielle en fonction du nombre de noeud simplement parce qu'il y a un nombre exponentiel de resultats a enumerer. Et ca prend effectivement du temps.

Discussions similaires

  1. Réponses: 15
    Dernier message: 21/12/2014, 00h27
  2. 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
  3. Calcul de distances et chemins possibles
    Par bonomsoleil dans le forum Prolog
    Réponses: 18
    Dernier message: 20/03/2008, 17h58
  4. [JGraphT] Obtenir tous les chemin possibles
    Par pmartin8 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 02/06/2006, 19h26
  5. chemin, arc dans un graphe
    Par semaj_james dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 29/11/2005, 16h45

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