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 :

Problème avec les graphes


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème avec les graphes
    J'ai un problème à résoudre proche de la problématique du remplissage de volume (pb de recursivité). Je garde l'image du volumes et des bouteilles pour le décrire.

    J'ai ici 3 volumes à remplir (3 volumes différents) avec 27 bouteilles (de contenances différentes) et je cherche les meilleures façon de remplir les 3 volumes avec les 27 bouteilles (sachant que je peux légèrement dépasser les volumes ~5%).
    Comment aborderiez vous le pb?

    Merci

    Sylvain

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,

    Comme c'est urgent, je commencerais par prendre mon temps .

    Puis, en espérant que les bouteilles contiennent du Ricard, je boirais un, deux, ..., apéros, jusqu'à ce que toutes les bouteilles soient vides (j'appellerais du monde en renfort !), puis je mettrais les bouteilles à la poubelle (spéciale "verre", la poubelle).

    Plus sérieux, personne ne fera tes devoirs à ta place, donc montre-nous où tu en es de tes réflexions, codage..., et on t'aidera, dans la mesure du possible
    Compilation sans erreur ne signifie pas programme sans erreur.
    L'indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes.

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    As-tu déjà vu les graphes en cours ?

    Si oui, ce problème peut se modéliser en les utilisant et la meilleure solution consiste simplement à chercher un chemin minimal.

    Après, la difficulté est de créer le graphe à la volée
    Je ne répondrai à aucune question technique en privé

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    la solution bestiale :
    une bouteille peut-être dans le Volume 1, le volume 2, le volume 3 ou ne pas être versée du tout : donc 27 puisance 4 possibilités (environ 500000), ce qui peut se traiter sans problème de temps.
    Pour chaque possibilité, on calcule le total du liquide dans 1, 2 et 3.
    Si il y a un dépassement dans l'un des volumes, on élimine, sinon on compare le total 1+2+3 au meilleur total (sans dépassement) obtenu jusqu'à là.

    La récursivité n'est pas vraiment utile pour implémenter cette solution.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,

    la solution bestiale :
    une bouteille peut-être dans le Volume 1, le volume 2, le volume 3 ou ne pas être versée du tout : donc 27 puisance 4 possibilités (environ 500000), ce qui peut se traiter sans problème de temps.
    Pour chaque possibilité, on calcule le total du liquide dans 1, 2 et 3.
    Si il y a un dépassement dans l'un des volumes, on élimine, sinon on compare le total 1+2+3 au meilleur total (sans dépassement) obtenu jusqu'à là.

    La récursivité n'est pas vraiment utile pour implémenter cette solution.
    D'après mois ça fait plutôt 4 puissance 27 (en fait 3 puissance 27 car j'utilise toutes les bouteilles). Et là, la methode bestiale pose un pb de temps.

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    4 puissance 27 !
    En effet, Kolossal erreur
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par millie
    As-tu déjà vu les graphes en cours ?

    Si oui, ce problème peut se modéliser en les utilisant et la meilleure solution consiste simplement à chercher un chemin minimal.

    Après, la difficulté est de créer le graphe à la volée
    ouais j'ai vu les graphes...
    Là je ne vois pas comment traiter ce pb sur le mode chemin minimal, puisque j'ai des containtes qui sont mes 3 volumes...

  8. #8
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par Sly666
    ouais j'ai vu les graphes...
    Là je ne vois pas comment traiter ce pb sur le mode chemin minimal, puisque j'ai des containtes qui sont mes 3 volumes...
    Je te donne un exemple, tu as deux bouteilles de 3 et 7 litres et tu souhaites obtenir le volume 5.


    Tu pars au début d'un sommet (c'est un couple) (0,0) qui correspond au deux bouteilles vide (0 pour la contenance). Tu traces des arcs vers d'autre couple (3,0) et (0,5) pour les opérations que tu peux faire à ce stade (c'est à dire remplir le premier ou remplir le second).

    Ensuite, à partir de (3,0) tu as : (3,5) ou (0,3) (on verse dans l'autre) ou (0,0) (tu peux vider le premier bidon)
    de : (0,5) -> (3,2) ou (3,5) ou (0,0)

    etc.. Un moment, tu vas boucler.

    Et au final, tu vas avoir un graphe.

    Tu prend tous les sommets qui contiennent un 5 dans le couple et tu lances un parcours pour chercher le minimum de tous les chemins minimaux vers ces sommets. en partant de (0,0)

    mais ceci donne une solution exact et optimal, alors que apparement, tu cherches une solution :

    (sachant que je peux légèrement dépasser les volumes ~5%).
    Je ne répondrai à aucune question technique en privé

  9. #9
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Désolé, je me suis trompé, erreur d'interprétation du problème.
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  10. #10
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Une méthode qui pourrait donner des idées (et éventuellement des résultats) :
    • classons les 3 volumes en ordre croissant,
    • classons les bouteilles en ordre décroissant de la + grande à la + petite,
    • essayons de remplir le volume 1 avec les plus grandes bouteilles (par exemple : 2/3 des bouteilles),
    • soit 2 puissance 18 posssibilités à envisager pour 2/3 des bouteilles,
    • gardons les N1 meilleures possibilités classées dans l'ordre du plus grand remplissage du volume 1 (sans dépassement),

    Pour chacune de ces N1 possibilités :
    • compléter au mieux l'espace restant dans le volume 1 avec les peites bouteilles (l'autre 1/3)
    • essayons de remplir le volume 2 avec les les plus grandes bouteilles (par exemple : 2/3 des bouteilles) non utilisées pour le volume 1,
    • gardons les N2 meilleures possibilités

    Pour chacune de ces N2 possibilités :
    • compléter au mieux l'espace restant dans le volume 2 avec les petites bouteilles non traitées
    • essayons de remplir le volume 3 avec toutes les bouteilles volumes non utilisées pour les volumes 1 et 2,
    • si on tombe sur une soluce qui marche, bingo


    C'est juste une piste qui ne me satisfait pas totalement.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

Discussions similaires

  1. Problème avec les graphes en VB
    Par csmaf2002 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/03/2008, 22h44
  2. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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