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 :

Decoupage d'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
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Par défaut Decoupage d'un graphe
    Bonjour,

    Soit un graphe (connexe) avec une valeur numérique associée a chaque noeud.
    Je veux séparer ce graphe en 2 composantes connexes (chaque composante aura pour valeur la somme des valeurs des noeuds la composant), telle que la différence entre les 2 valeurs des 2 composantes soit MAXIMALE.

    J'ai essaye plusieurs choses :
    ----------------------------
    1) utiliser des algorithmes de découpage de graphe (ratio_cut_partition et FM), mais ils cherchent
    plutôt a séparer en 2 régions equilibrées (et encore avec plusieurs composantes connexes).

    2) C++ direct en partant :
    a) soit d'une frontière initiale et en affinant progressivement.
    Il y donc 2 composantes connexes au départ (la différence est a maximiser).
    PERFS : BOF !!!

    b) soit en affectant tous les départements dont le numéro est élevé (supérieur a la
    médiane) a la région FORTE, et les autres a la région FAIBLE.
    Il y donc plus de 2 composantes connexes au départ (la différence est par contre
    MAXIMALE)
    PERFS : ca a l'air mieux qu'en a) mais BOF !!!

    Voila si vous avez des idées, je suis preneur.

    Cordialement,
    Eric

  2. #2
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Tu prends le noeud dont la valeur numérique associée est la plus faible. Ca constitue ta 1ère composante connexe.

    La 2e composante est constituée de tous les autres noeuds.

    Ton problème est mal posé.

  3. #3
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    Citation Envoyé par davcha Voir le message
    Tu prends le noeud dont la valeur numérique associée est la plus faible. Ca constitue ta 1ère composante connexe.

    La 2e composante est constituée de tous les autres noeuds.
    Rien ne garanti que la deuxième composante soit connexe une fois que tu as enlevé la première.

    Cela dit, je pense qu'il manque une hypothèse du style : que les deux composantes aient le même nombre de noeuds à +/-1. Mais ça, c'est à ericc35 de nous le dire.

  4. #4
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Citation Envoyé par davcha Voir le message
    Tu prends le noeud dont la valeur numérique associée est la plus faible. Ca constitue ta 1ère composante connexe.
    SI
    Citation Envoyé par davcha Voir le message
    La 2e composante est constituée de tous les autres noeuds.
    est une composante connexe alors OK, sinon tu backtrace et tu prends la deuxième noeud ayant la deuxième plus petite valeur (et ainsi de suite).

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Par défaut
    Déjà merci à tous d'avoir répondu.

    C'est vrai que les 2 composantes connexes doivent comporter le même nombre de noeuds (j'aurai du l'écrire).

    Mes 2 solutions a) et b) fonctionnent mais LENTEMENT (b/ est mieux quand même je crois).

    Pour résumer :
    a) cherche à maximiser la différence en faisant bouger la frontière
    b) cherche à réduire le nombre de composantes connexes

    NB je n'ai pas réussi à utiliser dans ce cas très précis les algorithmes de partionnement de graphe dont j'avais parlé dans le premier message (librairie GTL, çà aurait été l'idéal).

    Cordialement,
    Eric

Discussions similaires

  1. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  2. [Turbo Pascal] [Windows XP] Problème avec l'unité GRAPH
    Par themofleur dans le forum Turbo Pascal
    Réponses: 22
    Dernier message: 29/03/2003, 22h43
  3. Perl & Graphes
    Par makram9999 dans le forum Modules
    Réponses: 4
    Dernier message: 24/03/2003, 11h24
  4. [] [Excel] Exporter un graphe MSChart vers Excel
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 17h49
  5. Concerne les graphes
    Par mcr dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 12/11/2002, 11h02

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