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 :

Brute Force "sans remise"


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 43
    Points : 42
    Points
    42
    Par défaut Brute Force "sans remise"
    Bonjour,

    Mon titre n'est peut être pas très claire, mais je ne sais justement pas comment nommer cette méthode (c'est peut être pour cela que google de m'aide pas). Donc je m'explique.

    Je veux tester toutes les combinaisons d'une série mais en utilisant qu'une seule fois chaque élément par combinaison.
    Un petit exemple, avec la série : a b c
    Je cherche un algo qui me sorte :

    abc
    acb
    bac
    bca
    cab
    cba

    En bonus j'aimerais pourvoir choisir la taille de la combinaison, toutes les combinaisons de 1 élément, puis de 2, puis de 3 ...
    Il s'est avéré que ce n'est pas si facile que je l'avais pensé et bien que j'aurais aimé le trouver par moi même, je ne suis pas arrivé à grand chose de concluant.

    Si vous avez des pistes, ou des noms d'algos déjà existants je suis fortement intéressé !

  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
    C'est comme tu le dis dans le titre une méthode de recherche brute, tu trouveras ton bonheur en tapant "recherche exhaustive".
    Disons que tu as un tableau T d'éléments dont tu veux toutes les combinaisons

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Solution S
     
    Fonction F(T, int deep)
    Si deep supérieur à la longueur de T
    	Afficher la solution.
    	Sortir de la fonction.
     
    Pour tous les élements de T
    	Si T[deep] n'est pas déjà utilisé dans la solution
    		Solution[deep] = T[i]
    		F(T, deep+1)
    fin fonction
    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 du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 43
    Points : 42
    Points
    42
    Par défaut
    Je ne suis pas sur de bien comprendre l'algo que tu proposes, notamment la ligne "Si T[deep] n'est pas déjà utilisé dans la solution", ce ne serait pas "Si T[i] n'est pas déjà utilisé dans Solution[deep]" ?
    Et "Solution[deep] = T[i]" tu veux bien dire d'ajouter T[i] à la suite ? Pas d'écraser la valeur de Solution[deep] ?


    En tout cas la récursivité m'a donné des idées.
    Avec T1 la liste d'éléments et T2 une liste initialement vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    fonction F(List T1, List T2)
     
    	Pour tout les éléments E de T1
     
    		T2 ajouter E
    		T1 retirer E
     
    		Si T2 est la solution
     
    			Afficher T2
     
     
    		F(T1, T2)
     
    fin fonction
    Ce qui devrait, si tout fonctionne comme je le pense, tester toutes les solutions possibles et afficher celles qui correspondent à mes critères. Pour optimiser l'algo j'aimerais parcourir les combinaisons de la plus courte à la plus longue et stopper la recherche dès la 1er solution trouvé (la plus courte donc). Le problème est que je les parcours dans une ordre un peu anarchique (a - ab - abc - ac - acb - b - ...).

    Que pensez vous de cet algo ? Est il bon ? Des idées pour l'optimiser ?

  4. #4
    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 Opsse Voir le message
    la ligne "Si T[deep] n'est pas déjà utilisé dans la solution", ce ne serait pas "Si T[i] n'est pas déjà utilisé dans Solution[deep]" ?
    Oui !

    Citation Envoyé par Opsse Voir le message
    Et "Solution[deep] = T[i]" tu veux bien dire d'ajouter T[i] à la suite ? Pas d'écraser la valeur de Solution[deep] ?
    Si, tu écrases, sinon tu accumules toutes les solutions testées.
    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.

Discussions similaires

  1. [PROC] Exporter vers Excel sans simple quote
    Par Tabby dans le forum SAS Base
    Réponses: 6
    Dernier message: 21/02/2012, 16h41
  2. [vbnet 1.1]Inserer deux simple quote sans texte dans une db
    Par ChristopheOce dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/03/2007, 08h51

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