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 :

Tester la somme de toutes les combinaisons possibles


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut Tester la somme de toutes les combinaisons possibles
    Bonjour, je cherche un algorithme optimal qui puisse faire la somme d’un ensemble de nombres réels ( donnés en entré )je m’explique par exemple j’ai un tableau de 12 réels comme ceci :
    Et je souhaite faire toutes les combinaisons possibles CAD
    Combinaison1=T[1]+T[2]+T[3]+…
    Combinaison2=T[2]+T[1]+T[3]+…
    Combinaison3=T[3]+T[2]+T[1]+…
    Combinaison n=….


    Et on faisant la somme si cette dernière est supérieure à 6 alors s’arrêter et mettre les éléments restant dans la même ligne sinon continuer à faire les sommes … le but de l’algorithme est d’afficher la combinaison dont les éléments sont égaux ou se rapproche du nombre 6, donc pour continuer l’exemple ci-dessus ça donnera :
    Combinaison1=(1.1+2 .2) puisque 3,3 <6 donc faire (3,3+3,9)…
    Combinaison2=(2 .2+1.1) puisque 3,3 <6 donc faire (3,3+3,9)…
    Combinaison3=(3.9+2.2) puisque 6,1 >6 conserver le 3.9 et 2.3 et faire la somme de 1,1+…

    j'ai déjà ouvert le sujet et j'ai cru que le problème est résolu mais l'algorithme implémenté marche juste avec 4 ou 8 éléments réel dans le tableau par contre avec 12 ou 16... ça prend 2h ou même plus...
    à consulter avant de poster ... la FAQ de C#

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par unix27 Voir le message
    Et je souhaite faire toutes les combinaisons possibles CAD
    Combinaison1=T[1]+T[2]+T[3]+…
    Combinaison2=T[2]+T[1]+T[3]+…
    Combinaison3=T[3]+T[2]+T[1]+…
    Combinaison n=….
    L'addition étant commutative, ce que tu as marqué là est exactement la même chose. Mais c'est pas le problème.

    Si tu veux tester TOUTES les combinaisons, il te faut faire une récursivité, plus précisément ici, il te faut en faire 12, chacune démarrant avec un élément différent en tête de l'arbre.
    Si tu fais ta recherche brute, c'est effectivement super long.
    Il te faut donc couper rapidement des branches de l'arbre de recherche, comme le fait tout simple : si somme > 6 alors arrêter la recherche dans cette branche.

    Si tu veux toutes les solutions approchantes, la recherche exhaustive est obligatoire.
    Si tu ne veux que certaines des combinaisons, tu peux tenter une recherche Tabou.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Si tu veux tester TOUTES les combinaisons, il te faut faire une récursivité
    Le temps de traitement n'est-il pas accentué en utilisant la récursivité?

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Citation Envoyé par ZenZiTone Voir le message
    Le temps de traitement n'est-il pas accentué en utilisant la récursivité?
    Si elle est faite de manière intelligente avec un bon compilateur, il n'y a aucune raison que l'approche récursive soit plus lente qu'une approche impérative (voir, par exemple, l'annotation @tialrec de Scala, http://www.scala-lang.org/api/curren...tation.tailrec, qui indique clairement le code qui ne peut pas être réécrit sous la forme d'une boucle, largement plus efficace qu'une série d'appels récursifs). Le temps de traitement ne devrait pas être la première préoccupation sur la manière d'implémenter un algorithme : il vaut mieux avoir rapidement un code qui fonctionne mais qui peut être optimisé (premature optimization is root of all evil​).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    Le temps de traitement ne devrait pas être la première préoccupation sur la manière d'implémenter un algorithme : il vaut mieux avoir rapidement un code qui fonctionne mais qui peut être optimisé (premature optimization is root of all evil​).
    Oui, je disais ça dans le sens ou unix27 cherchait à optimiser le temps ^^

    Merci pour le lien

Discussions similaires

  1. [Algorythme] Tester toutes les combinaisons possibles
    Par strike57 dans le forum VBA Access
    Réponses: 7
    Dernier message: 25/03/2009, 12h26
  2. Algo pour toutes les combinaisons possibles
    Par rantanplan08 dans le forum Général Java
    Réponses: 6
    Dernier message: 03/01/2008, 09h45
  3. Réponses: 5
    Dernier message: 18/06/2007, 20h52
  4. Réponses: 16
    Dernier message: 20/10/2006, 16h31
  5. toutes les combinaisons possibles
    Par marocleverness dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 29/05/2006, 00h11

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