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 :

Djikstra : implémentation avec une matrice d'adjacence


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 84
    Points : 69
    Points
    69
    Par défaut Djikstra : implémentation avec une matrice d'adjacence
    Bonjour,

    J'ai quelques questions sur l'implémentation de l'algorithme de Djikstra.
    Actuellement je représente mon graphe par une matrice adjacente (tableau a deux dimensions).
    Si j'ai un arc présent entre un sommet a et un sommet b, alors graph[a][b] est mis à 1 sinon la case contient 0.
    La distance entre chacun de mes arcs vaut également 1 (lorsque deux sommets sont reliés), le graph[a][b] == 1 représente donc également le poids (la distance) entre l'arc A et B.

    L'algorithme est le suivant :
    Relax( u , v , w )
    SI d[v] > d[u] + w(u,v) alors
    d[v] <- d[u] + w(u,v)
    pred(v) <- u
    FIN SI

    Dijkstra( G , s , w )
    Init(G,s)
    E <- Ensemble vide
    F <- tous les sommets de G
    TANT QUE F est non vide FAIRE
    u <- Extract( F )
    E <- Union( E , u )
    POUR tous les sommets v successeurs de u FAIRE
    Relax(u,v,w)
    FIN POUR
    FIN TANT QUE
    Ce que je fais :
    * Création de l'ensemble E (qui contient mon sommet de départ) puis création de l'ensemble F (F est une file qui contient tous mes sommets (sauf le start), non trié car la distance de chacun vaut 1, je n'ai donc pas de "priorité").
    * Je boucle tant que F n'est pas vide
    * Je boucle sur la 2 ème dimensions de mon tableau (indice i)
    * Je test si graph[u][i] == 1 (c'est que j'ai affaire a un point adjacent à u).

    Mon problème ce situe ici, ma prochaine condition n'est jamais valider (relachement des arcs):
    Si graph[u][i] > graph[u][u] + 1 alors grah[u][i] = graph[u][u] + 1.
    Chez moi ca donne 0 ou 1 selon la case > 1, donc ces normal que je ne rentre jamais dans cette condition...

    Il y a quelques chose que je ne comprend pas, quit sont pas logique dans ce que je fais, pourriez-vous me donner des pistes de reflexions s'il vous plait ?

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    Attention avec les notations :

    d[v], d[u]
    w(u, v)
    graph[u][v]

    regarde bien ce que tu as écrit.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 84
    Points : 69
    Points
    69
    Par défaut
    Effectivement, je m'en suis rendu compte dans la journée

    Ca fonctionne mieux maintenant.
    J'ai une petite question concernant F <- tous les sommets de G, généralement une file de priorité est utiliser cependant comment savoir à l'avance les sommets qui seront utiliser et donc les positionner en début de File afin de ne pas tous parcourir lors de la recherche du poids minimal ?

    Merci.

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

Discussions similaires

  1. Implémentation d'une matrice carré avec Vector
    Par tagsOf dans le forum Général Java
    Réponses: 6
    Dernier message: 24/04/2008, 17h20
  2. Théorie des graphes : Représentation GRAPHIQUE d'une matrice d'adjacence
    Par jm_gouy dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 03/05/2006, 16h53
  3. [numarray] Image convolué avec une matrice.
    Par parp1 dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 20/04/2006, 17h35
  4. [SWING] remplir une jtable avec une matrice de double
    Par Psykorel dans le forum Composants
    Réponses: 3
    Dernier message: 04/01/2006, 14h14
  5. [JTable] remplir avec une matrice
    Par ybdz dans le forum Composants
    Réponses: 3
    Dernier message: 08/12/2004, 21h03

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