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 :

Partition de poids minimum d'un ensemble


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut Partition de poids minimum d'un ensemble
    Bonjour,

    J'ai un ensemble E = {o1, o2, ..., oN} de N objets,
    ainsi que M couples (sous-ensemble, poids), par exemple
    ({o3, o7}, 10)
    ({o2, o3, o8}, 20)
    ...
    Je cherche quels couples choisir pour former une partition de E de poids minimum .

    Y'a t-il un algo connu pour faire ça ?
    Toute idée, pointeur sont les bienvenus, merci.

  2. #2
    Expert éminent
    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 : 38
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Ca ressemble très fortement à un problème d'arbre couvrant de poids minimum. Regardes du coté des algos de Prim et Kruskall.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Oui, je crois notamment avoir trouvé une bijection entre mon problème et la recherche du plus court chemin dans un graphe. Malheureusement, cela mène à un algorithme très peu efficace car le graphe en question a un trop grand nombre de sommets. Mais je vais quand même essayer de m'inspirer de ce genre d'algo.

  4. #4
    Expert éminent
    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 : 38
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Je ne vois pas trop le rapport entre les plus courts chemins et ce que tu demande, mais bon ... . Pour ce qui est des algos de plus court chemin, tu peux t'inspirer de Bellman Ford (ou Djikstra suivant certaines hypothèses)

    As-tu essayé de voir du coté des algos de que je t'ai proposé ?

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    ya un truc que je comprends pas..

    Si tu connais tes poids, ta somme est déterminée, non ??

    Ou alors c'est les poids que tu veux déterminer ??

    Si c'est le cas, un algo (physique ), consiste à faire une résolution par approximations successives (dychotomie).

    Une résolution mathématique consiste en une méthode du Simplex...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    En fait les sous-ensembles sont en très grand nombre et se chevauchent plus ou moins tous. Il faut que j'en choisisse quelques uns pour former exactement (sans chevauchement) l'ensemble E.

    Les algorithmes d'arbres couvrants ne m'aident pas beaucoup, ils construisent la solution par descente de gradient (meilleur choix local), ce qui ne fonctionne pas dans mon cas.

    Les algorithmes de plus court chemin (entre le noeud "ensemble vide" et le noeud "ensemble E") me permette de résoudre mon problème mais au prix d'un temps de calcul très élevé.

    J'ai pourtant l'intuition qu'il doit exister un algorithme assez peu couteux à ce problème.

  7. #7
    Expert éminent
    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 : 38
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    (meilleur choix local), ce qui ne fonctionne pas dans mon cas.
    Il me semble que tu si tu as un optimum local, ça te donne un optimum global. Tu as réellement essayé Kruskall ?

    mais au prix d'un temps de calcul très élevé.
    Quel algo de base à tu utilisé ?

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par PRomu@ld
    Il me semble que tu si tu as un optimum local, ça te donne un optimum global.
    Hélas non, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    E = {o1, o2, o3}
    C1 = ({o1}, 1)
    C2 = ({o2}, 3)
    C3 = ({o2, o3}, 10)
    C4 = ({o1, o3}, 4)
    Si je commence par choisir C1, ensuite mon seul choix possible c'est C3 qui coute 10. C2 + C4 est meilleur.

    Citation Envoyé par PRomu@ld
    Quel algo de base à tu utilisé ?
    Pour l'instant je parcours récursivement toutes les solutions, en essayant tous les choix possibles, ce qui explose dès que N ou M dépasse 100.

  9. #9
    Expert éminent
    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 : 38
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Si je commence par choisir C1, ensuite mon seul choix possible c'est C3
    En fait non, si tu pars de Kruskall (désolé, j'y tiens ), le choix s'effectue en prenant les arêtes de poids minimum.

    Tu commences par C1 puis C2 puis C4. Or, le problème est que tu ne dois pas avoir de recouvrement.

    Une méthode (je ne sais pas si elle est correcte), serait de ne pas considérer les singletons dans un premier temps, puis de les reprendre une fois que l'algorithme est terminé pour voir ce que l'on peut faire. L'idée serait en fait, de faire un arbre couvrant dans une première etape, et ensuite, à chaque commet où tu as plusieurs arrêtes, tu regardes, si tu ne peux pas éliminer les doublons par ces singletons.

    Une autre idée, qui me vient à l'esprit, serait peut-être de s'inspirer du problème du sac à dos (ton problème y ressemble en fait), et à l'aide de la programmation dynamique tu peux peut-être trouver une solution acceptable en terme de temps (si tes coefficients sont entiers)

  10. #10
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Je partirais plus sur Prim...

    Tu construis le graphes d'intersection de tes ensembles {o1,...,on}:

    - les noeuds sont o1,...,on
    - il y a une arrete entre op et oq ssi l'intersection d'op et oq est non vide

    A partir de là, tu peux dejà, avant de commencer les calculs, regarder la gueule de ce graphe: composantes connexes, racines éventuelles,....

    Ensuite, tu appliques Prim ou Kruskall... (cf par ex http://perso.ens-lyon.fr/eric.thierry/ALGO2/cours5.pdf

    Mais je paries que tes difficultés proviennent simplement du fait que tu parcours récursivement toutes les possibilités, sans tenir compte de la tête de ton graphe !
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  11. #11
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Merci, j'ai trouvé, mon problème fait parti des problèmes de "set cover". C'est un mélange du problème "weighted set cover" (chaque sous-ensemble à un poids) et "exact cover" (les sous-ensembles choisis doivent être disjoins).

    La mauvaise nouvelle c'est que c'est NP-complet (voire NP-hard).

  12. #12
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    NP-complet c'était sûr... C'est pourquoi il faut que tu regardes la tête de ton graphe d'intersection.

    Si maintenant tu cherchais de l'universel, t'es mal barré
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

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

Discussions similaires

  1. Arbre recouvrant de poids minimum
    Par helamal dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 02/01/2013, 19h46
  2. Réponses: 6
    Dernier message: 02/06/2009, 21h36
  3. Possibilités dans les arbres couvrant de poids minimum
    Par Lucas Panny dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 26/02/2008, 19h03
  4. partition d'un ensemble finie
    Par lachose dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 19/10/2006, 03h05
  5. [VB6] partitions d'un ensemble
    Par perduuu dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 13/09/2004, 16h21

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