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 :

Combinaisons possibles de prix pour un montant donné


Sujet :

Algorithmes et structures de données

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Combinaisons possibles de prix pour un montant donné
    Bonjour,

    Comment procéderiez vous pour connaitre les combinaisons de prix d'articles (disponibles en base de données) pour arriver à un montant donné.

    Exemple, que puis-je acheter pour arriver à la somme exacte de 101,34 euros, le script me sortirait : soit par exemple un article de 101,34 euros, ou un produit de 50,10 + 51,24 ou 3 articles etc.... le tout sur une grosse base de données, cependant seule 2 ou 3 combinaisons suffisent à la fin...

    Merci de votre aide

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    dans une base de données ce n'est pas trop facile à traiter

    on règle en général les problèmes de combinaisons par le produit cartésien
    de valeurs issues de deux tables

    j'attire ton attention sur le fait que s'agissant de recherche combinatoire les
    requêtes intermédiaires seront de tailles énormes avec des temps de calcul très longs

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Cela ressemble furieusement au problème du sac à dos, ton truc, non ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Pas tout à fait, dans le problème du sac à dos, on cherche à maximiser une variable (valeur des objets mis dans le sac), sous une contrainte inégalité (contenance du sac).

    Ici, le but est de trouver, dans une liste de nombres (avec? sans répétitions?) tous les sous ensembles (avec ou sans répétition, éventuellement avec un nombre maximal de répétitions) ayant une somme donnée.

    Dans la littérature anglophone, ce problème est connu sous le nom de Subset Sum Problem (problème des sommes de sous ensembles). Il est apparemment difficile. On en connait des solutions en temps exponentiel ( 2^(n/2) ), mais pas mieux. Apparemment, prouver qu'il existe des solutions en temps polynomial reviendrait à prouver P=NP... C'est pas gagné!

    Pour les anglophones, il y a de l'info là
    http://en.wikipedia.org/wiki/Subset_sum_problem


    On va donc devoir chercher une solution énumérative. Personnellement, je commencerais par construire une liste de "petites valeurs" faisables et infaisables (en combinant les produits 'pas chers'). Cela va simplifier la recherche ultérieure.

    Puis je partirais du nombre, en ajoutant des articles à la liste, par ordre de prix décroissant (les plus chers d'abord). Dès qu'on atteint un "nombre faisable" de la liste précédente, on a une solution, dès qu'on atteint un infaisable, on élimine cette solution partielle.

    Les SGBD ne sont clairement pas l'outil qu'il faut pour ce genre de problème.

    Francois

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    il s'agirait peut être de préciser "seule deux ou trois combinaisons suffisent à la fin"

    sinon avec une base de 10 ou 15 mille articles bonjour les temps de calcul

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ca dépend, en fait...

    Si on a beaucoup d'articles, mais des "montants totaux" pas trop élevés, ca va assez vite (parce qu'un montant, c'est 2 ou 3 articles, donc même avec 10000 articles 1e8 à 1e12 possibilités, énumérable...)

    Si on a peu d'articles et des montants élevés, pas de pb non plus...

    Si les articles sont nombreux, et que les montants sont élevés, là alors...

    Francois

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    tu tries tes prix par ordre croissant et tu construis au fur & à mesure l'arbre de tes possibles...

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/04/2015, 13h00
  2. Réponses: 1
    Dernier message: 09/01/2014, 21h27
  3. Algo pour toutes les combinaisons possibles
    Par rantanplan08 dans le forum Général Java
    Réponses: 6
    Dernier message: 03/01/2008, 09h45
  4. Combien de combinaison possible pour uniqueidentifier
    Par NicoNGRI dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/10/2006, 15h49
  5. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44

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