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 :

toutes les combinaisons possibles


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Points : 23
    Points
    23
    Par défaut toutes les combinaisons possibles
    Bonjour

    Comment peut je obtenir tous les combinaisons de p éléménts parmi n élement (p<n bien sur) en un temps O(n.p)?

    Merci d'avance pour vos réponses.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    j'ai pensé à faire une récursion un peu cacher.

    on considerons une bijection de l'ensemble de mes elements dans [1,n].

    je vais diviser mes combinaisons de p element parmi n element en sous classes.

    deux combinaisons a_1,a_2,...,a_p et b_1,b_2,...,b_p appartiennenet à la même classe ssi a_{i+1}-a_i=b_{i+1}-b_i
    donc si on trouve un seul élémént de la classe on déduit les autres.

    et on remarque que le fait de détérminer une classe revient à choisir une combinaison de p-1 éléments de [1,x] de x élement avec :
    x=E(n-1/(p-1)+(p-1)/2).

    donc on descent à p-1 .

    Mais le probléme c'est je sais pas calculer sa complexité.

    Merci de vos aides

  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
    Une possibilité est d'utiliser des files. L'algo est très simple:

    Les élements de la file sont constitués d'un tableau de p élements et du nombre n d'éléments déjà insérés.

    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
    16
    17
    début
      // initialisation de la file
      on insère dans la file un élément vide
      tant que la file n'est pas vide faire
        extraire le premier élément ef de la file
        pour tous les éléments elem du tableau intial "supérieurs" au denier élément inséré faire
          créer un nouvel élément efn à partir de l'ancien ef
          ajouter en fin lde tableau de efn l'élément elem
          incrémenter le nombre d'éléments de efn
          si le nombre d'éléments de efn est égal à p alors
            ecrie la permutation obtenue
          sinon
             insérer efn en fin de file
          fin si
        fin pour
      fin tant que
    fin
    Il existe bien sûr d'autres algos.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    Désolé, mais j'ai rien zapé

  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
    Oh, c'est tout simple :

    Suppose que tu veuilles obtenir toutes les combinaisons de 3 nombres pris parmi 5 (on suppose que l'ordre n'a pas d'importance 1 2 3 ou 1 3 2 sont identiques.

    l'élément à mettre dans la file est une structure du type ([X,X,X] , 0), tableau et nombre d'éléments mis.

    Tu initialises avec ([0, 0, 0], 0)

    tu extrais ([0, 0, 0], 0)

    comme il n'y a pas de nombre mis
    tu créées ([1,0,0], 1) que tu mets dans la file
    tu créées ([2,0,0], 1) que tu mets dans la file
    tu créées ([3,0,0], 1) que tu mets dans la file
    tu créées ([4,0,0], 1) que tu mets dans la file
    tu créées ([5,0,0], 1) que tu mets dans la file

    tu extrais ([1,0,0], 1) de la file
    tu créées ([1,2,0], 2) que tu mets dans la file
    tu créées ([1,3,0], 2) que tu mets dans la file
    tu créées ([1,4,0], 2) que tu mets dans la file
    tu créées ([1,5,0], 2) que tu mets dans la file

    tu extrais ([2,0,0], 1) de la file
    tu créées ([2,3,0], 2) que tu mets dans la file
    tu créées ([2,4,0], 2) que tu mets dans la file
    tu créées ([2,5,0], 2) que tu mets dans la file

    tu extrais ([3,0,0], 1) de la file
    tu créées ([3,4,0], 2) que tu mets dans la file
    tu créées ([3,5,0], 2) que tu mets dans la file

    tu extrais ([4,0,0], 1) de la file
    tu créées ([4,5,0], 2) que tu mets dans la file

    tu extrais ([5,0,0], 1) de la file
    tu ne peux rien faire

    etc...

    Si l'ordre à une importance, au lieu de mettre les nombres plus grands, on ajoute les nombres différents de ceux déjà mis.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par marocleverness
    Bonjour

    Comment peut je obtenir tous les combinaisons de p éléménts parmi n élement (p<n bien sur) en un temps O(n.p)?

    Merci d'avance pour vos réponses.
    Tu ne peux pas... En effet le nombre de combinaison de p parmi n croît déjà plus vite que O(np) !

    --
    Jedaï

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    Merci TrapD j'ai compris à travers l'exemple.j'ai pas pensé à cette méthode.

    Désolé je voulais dire en O(C(p,n)).
    sinon je pense que cet algorithme est en O(p.C(p,n)).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche de toutes les combinaisons possibles
    Par Frog74 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/04/2008, 11h34
  2. Afficher toutes les combinaisons possibles
    Par NELLLY dans le forum MATLAB
    Réponses: 1
    Dernier message: 07/01/2008, 21h09
  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. Réponses: 5
    Dernier message: 18/06/2007, 20h52
  5. Réponses: 16
    Dernier message: 20/10/2006, 16h31

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