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 :

Distributions de k éléments dans n avec contraintes


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Par défaut Distributions de k éléments dans n avec contraintes
    Bonjour,

    Pour résumer:

    je cherche à distribuer k éléments parmi p possibles, chaque élément distribué est noté (Z1, Z2 ... jusqu'à Z(k) ).
    Je sais déterminer toutes mes combinaisons pour distribuer mes éléments dans ma matrice, mais le problème c'est que j'ai une contrainte supplémentaire : les éléments distribués doivent être "à l'équilibre", cad autant de Z1,Z2... par colonne pour chaque colonne.
    (Pour illustrer simplement ce dont je parle voir le fichier Excel en pièce jointe.)

    J'avais prévu de distribuer mes Zi de la manière suivante (exemple 3 éléments)
    Z1 Z2 Z3
    Z2 Z3 Z1
    Z3 Z1 Z2
    Z1 Z2 Z3
    etc.. en avançant dans le vecteur. Bien évidemment ce n'est pas équilibré

    Avez-vous une idée?
    Merci d'avance
    Cladoo

    PS : ça ne change pas grand chose, mais je travaille sous Windev 14 et je pilote Excel via OLE.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut
    Si tu peu donnée plus de précision sur la notion d’équilibre « une définition plus rigoureuse », la taille de la matrice ? Y a-t-il une relation avec les Zi, tu parles de contraintes mais elles ne sont pas définies.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Par défaut
    Bonjour,

    l'utilisateur choisit :
    k (nombre de Zk à placer dans la matrice)
    p (nombre de produits ou de colonnes)
    k < p (toujours vrai)

    Le but est de faire apparaître toutes les combinaisons de colonnes (ou de produits si on préfère) possibles avec les choix de l'utilisateur, il y en a C(k,p). Exemple C(3,5)=10 ou encore C(2,6)=15 http://fr.wikipedia.org/wiki/Combina...%A9matiques%29

    Une fois chaque combinaison possible déterminée (ce point est déjà géré) je dois y distribuer mes Zk (si k = 3 alors on doit distribuer Z1, Z2, Z3) de sorte que j'ai autant de Z1 que de Z2, Z3 dans chaque colonne mais également autant de Z1 dans la colonne A que B que C, idem avec Z2 et Z3 etc...
    C'est que j'appelle "être à l'équilibre". Aucune distribution de Zk ne doit favoriser telle ou telle colonne en terme de distribution.

    Une solution serait de distribuer toutes les permutations possibles dans chaque bloc de combinaisons possibles, exemple :
    k=3 et p=5 j'ai donc C(3,5)=10 lignes pour réaliser toutes mes combinaisons possibles. Pour être certain d'être à l'équilibre, je peux distribuer dans ces 10 lignes successivement toutes les permutations possibles de 3 éléments (k=3 et 3!=6) soit 6 permutations, on arrive donc à 10*6=60 lignes (ce qui est égal à A(3,6) http://fr.wikipedia.org/wiki/Arrangement )

    Or et c'est là où je suis très très embêté : là où le second algorithme me demande 60 lignes pour "équilibrer ma matrice" je peux en utiliser seulement 10 dans mon cas, en faisant varier la séquence distribuée de Zk de sorte à équilibrer mes colonnes


    Donc il est possible dans certains cas de réduire considérablement le nombre de ligne (et c'est un point primordial dans mon cas) et obtenir le même équilibre. En effet je n'ai aucune contrainte quant à la séquence de Zk utilisée, je ne suis absolument pas obligé à faire apparaître toutes les permutations.

    Qu'en penses-tu?

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Cela ressemble à un problème de Sudoku, donc solvable avec des techniques de backtracking ou alors de coloration de graphe. Par contre, ca risque de prendre du temps pour des grandes de valeurs k,p
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Cela ressemble à un problème de Sudoku, donc solvable avec des techniques de backtracking ou alors de coloration de graphe. Par contre, ca risque de prendre du temps pour des grandes de valeurs k,p
    EN fait j'ai borné mes k et p :
    k : [2,9]
    p : [3,10]
    k < p

    Je ne connais pas le backtracking , c'est quoi le principe?

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par cladoo Voir le message
    EN fait j'ai borné mes k et p :
    k : [2,9]
    p : [3,10]
    k < p

    Je ne connais pas le backtracking , c'est quoi le principe?
    C'est un mot compliqué pour dire qu'on revient en arrière si on se trompe.

    Dans ton cas C(3,5), il faut placer 30 jetons (10xZ1, 10xZ2, 10xZ3) sur les cases bleus en respectant les contraintes (1 Zi par ligne et 2 Zj par colonne).

    On commence par mettre un jeton au hasard sur la 1ere case, on choisit un jeton possible (respectant les contraintes) pour la 2eme case, etc. jusqu'a ce que le remplissage soit complet (gagné !) ou alors qu'on ne puisse plus placer de jeton (perdu !). Dans ce dernier cas, on retire le dernier jeton placé et on le remplace par un autre possible.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Select avec "date d'un premier élément" dans clause Where
    Par adrien357 dans le forum Requêtes
    Réponses: 9
    Dernier message: 05/11/2008, 15h27
  2. Réponses: 4
    Dernier message: 17/03/2008, 16h41
  3. pb Insertion d'éléments dans une table avec mySql++
    Par donkeyquote dans le forum C++
    Réponses: 1
    Dernier message: 24/02/2008, 00h39
  4. Réponses: 12
    Dernier message: 12/03/2007, 16h58
  5. [Debutant]Suppression dans des tables avec contraintes
    Par Roming22 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/10/2004, 17h23

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