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

avec Java Discussion :

algorithme de Kruskal


Sujet :

avec Java

  1. #1
    Membre expérimenté Avatar de infofree
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut algorithme de Kruskal
    bonjour
    j'ai un tableau a 2 dimensions contenant les différentes arêtes d'un graphe

    exemple : [(1,2) ; (1,3) ; (2,3) ; (2,4) ; (2,5) ; (3,1) ; (3,4)]

    j'ai aussi le tableau des sommets de ce graphe [1,2,3,4,5]

    je souhaite implémenter l'algorithme de Kruskal pour tester la connexité de ce graphe , mais je ne sais pas du tout comment procéder.
    je demande pas le programme entier, mais juste des pistes pour me guider
    merci

  2. #2
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    tu peux ecris l algorithme de Kruskal ici? ca te donneras les etapes a faire...
    et pour le code c est pas complique.

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 497
    Par défaut
    'lut,

    Algo de Kruskal

    KRUSKAL (G,w)
    1 E := ø
    2 pour chaque sommet v de G
    3 faire CRÉER-ENSEMBLE (v)
    4 trier les arêtes de G par ordre croissant de poids w
    5 pour chaque arête (u,v) de G prise par ordre de poids croissant
    6 faire si ENSEMBLE-REPRÉSENTATIF (u) ≠ ENSEMBLE-REPRÉSENTATIF (v)
    7 alors ajouter l'arête (u,v) à l'ensemble E
    8 UNION (u,v)
    9 retourner E


    w est une fonction qui associe à chaque arête du graphe G une valeur qui est son poids. La fonction ENSEMBLE-REPRÉSENTATIF(e) retourne un élément représentatif d'un ensemble. UNION(u,v) combine les arbres obtenus au fur et à mesure.

    La complexité de l'algorithme est Θ(A log S) avec A le nombre d'arêtes et S le nombre de sommets du graphe G. Lors du déroulement de l'algorithme, l'ACM n'est pas connexe, il ne le sera qu'à la fin.




  4. #4
    Membre expérimenté Avatar de infofree
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    bon je vois a peu pres l'algo
    sachant que maintenant j'ai une classe Arete qui contient le sommet de depart, le sommet d'arrivée, et le poids affecté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Arete
    	{ public Arete(int pointA, int pointB,int poids)
    		{
    		this.pointA=pointA; this.pointB=pointB; this.poids=poids;
    		}
    	 public void affiche()
    		{
    		System.out.print("arc du sommet : "+pointA + " au sommet : "+pointB+" " ) ;
    		}
     
    	private	int pointA, pointB, poids;
    	}
    je souhaite maintenant trier ces arcs par ordre croissant des "poids" , y'a t'il une methode simple pour le faire? j'ai pensé à "Arrays.sort" mais il me semble qu'il prend comme argument des tableaux, or là j'ai affaire à une classe (enfin, à un objet )

  5. #5
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, il fuat effectivement utiliser Arrays.sort(T[] a, Comparator<? super T> c).
    Cette méthode prendra en arguments un tableau d'Arete et un Comparateur d'Arete (une classe qui implémente l'interface Comparator).
    Dans ce comparateur tu dois implémenter les méthodes compare et equals, qui comparerons les poids des Arete.

Discussions similaires

  1. Formalisation graphique des algorithmes
    Par David R. dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 08/12/2012, 10h21
  2. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25
  3. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18
  4. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09
  5. Algorithme génétique
    Par Stephane.P_(dis Postef) dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/03/2002, 17h14

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