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 :

Création de sous-graphes de poids minimaux dans un graphe planaire


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 45
    Points : 17
    Points
    17
    Par défaut Création de sous-graphes de poids minimaux dans un graphe
    Bonjour à tous !

    Voila mon problème qui me taraude depuis très longtemps maintenant :

    Un directeur d'école veut séparer « n » élèves dans « k » classes. Le nombre d'élèves dans une classe doit être compris entre un « min » et un « max » fixé. Le directeur veut créer des classes où les élèves s'entendent le mieux possible.

    Si l'on résume cela sous forme de graphe, les sommets sont des élèves, tous reliés entre eux. Les arcs entre les sommets représentent la valeur de l'entente entre deux élèves. Cette valeur est proche de 0 si deux élèves s'entendent très bien. Cette valeur est très élevée si ces deux élèves se détestent.

    Donc, si je prend un exemple : j'ai 100 élèves ; je dois créer 3 classes entre 30 et 40 élèves qui s'entendent le mieux possible.

    1) Existe-il des heuristiques efficaces pour ce genre de problème ?

    Si j'inclus maintenant le directeur dans ce problème, c'est aussi un sommet qui est relié à tous les élèves avec une valeur d'entente. Le directeur souhaite en plus qu'il y ait un délégué par classe. Ce délégué sera l'élève de la classe qui s'entend le mieux avec le directeur.

    2) L'heuristique ici doit prendre en compte le directeur et cela complique le problème : doit-on d'abord choisir les classes et ensuite les délégués, ou choisir les délégués et les classes ensuite ?

    J'ai plusieurs idées sur ces questions mais je suis à court d'idées neuves…

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 402
    Points : 23 785
    Points
    23 785
    Par défaut
    Citation Envoyé par tomjr Voir le message
    Si l'on résume cela sous forme de graphe, on a un graphe planaire dont les sommets sont des éleves, tous reliés entre eux.
    Pardon, mais je ne vois pas du tout pourquoi ton graphe aurait besoin d'être planaire. En plus, s'ils sont tous reliés entre eux (c'est-à-dire que chaque élève des relations avec tous les autres), il est impossible d'obtenir un graphe planaire au delà de quatre élèves.

    J'ai plusieurs idées sur ces questions
    Par exemple ?

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Celà me fait penser au problème des mariages stables même s'il y a quelques différences. Peut-être une piste à creuser ? la programmation par contraintes, il y a des solveurs en Prolog.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 45
    Points : 17
    Points
    17
    Par défaut
    Pardon, mais je ne vois pas du tout pourquoi ton graphe aurait besoin d'être planaire. En plus, s'ils sont tous reliés entre eux (c'est-à-dire que chaque élève des relations avec tous les autres), il est impossible d'obtenir un graphe planaire au delà de quatre élèves.
    Désolé, une erreur de vocabulaire. Le graphe ne sera évidemment pas planaire tu as raison. J'ai édité mon message précédent.

    Pour ce qui est de mes idées les voici:

    A chaque itération, on prend l'arc de coût minimum et on colorie les deux sommets adjacents de la même couleur (en vérifiant tout de même si ces "colorations" respectent les contraintes de min et de max).

    Ce serait un peu long d'expliquer tout l'algo mais avec cette technique, j'obtiendrai au final mes classes d'élèves.

    Comme je pensais ramener ce problème à un problème d'arbre couvrant de poids minimal, je pense que j'appliquerai les algos de PRIM ou Kruskal sur ces "classes" pour obtenir des arbres et ainsi minimiser le poids des classes.

    J'ai du mal à être clair, pas facile d'expliquer tout ça par écrit...

    J'avais l'impression d'être face à un problème assez banal mais j'ai beaucoup de mal à trouver des problèmes similaires sur le net.


    Celà me fait penser au problème des mariages stables
    Je te remercie, je vais regarder ça de plus près.

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    J'ai retrouvé une discussion sur le groupe google Prolog qui aborde un sujet similaire. Je pense qu'il y a de bonnes choses à en tirer.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 45
    Points : 17
    Points
    17
    Par défaut
    J'ai quelques faibles notions en Prolog, je vais essayer de comprendre tout ça.

    Mais au final, mon projet sera codé en C!

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Evidement, ça risque d'être un peu différent !

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous!
    Moi aussi j'ai a peu près le même problème, mon but est de créer un réseau de télécommunication. Le directeur serait un satellite et les élèves des centres à regrouper. Je pensais utiliser PRIM pour faire un grand arbre et ensuite le "couper" en autant de groupes qu'on le souhaite. Qu'en pensez vous?

Discussions similaires

  1. Création de sous-répertoire impossible dans "Program Files"
    Par Themacleod1980 dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 09/10/2013, 14h26
  2. Création de sous-sections dans la base de registre
    Par saad.hessane dans le forum MFC
    Réponses: 2
    Dernier message: 24/02/2013, 01h29
  3. [Débutant] Création de courbes dans deux graphes différents
    Par anthodub dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 31/01/2013, 11h12
  4. Création de "sous-librairie" dans une librairie SAS
    Par domalin dans le forum SAS Base
    Réponses: 4
    Dernier message: 16/05/2008, 09h40

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