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

Java Discussion :

Générer tous les permutations admissibles


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 14
    Par défaut Générer tous les permutations admissibles
    Salut tout le monde,

    J'aimerai générer tous les permutations possibles d'un ensemble mais les permutations ne sont pas tous admissibles. Les permutations sont selon les combinaisons des permutations des sous ensembles.

    Par exemple on a la liste suivante composée des sous ensembles: List = {(1,2),(3,4)}
    les permutations admissibles sont : 1234/1243/2134/2143/3412/4312/3421/4321
    les permutations suivantes ne sont pas admissibles : 1423/3142/1324/1342/2431/2341/....

    J'ai pu générer tous les permutations possibles mais pas ceux admissibles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      static void permute(ArrayList<Integer> arr, int k){
            for(int i = k; i < arr.size(); i++){
                java.util.Collections.swap(arr, i, k);
                permute(arr, k+1);
                java.util.Collections.swap(arr, k, i);
            }
            if (k == arr.size() -1){
                System.out.println(java.util.Arrays.toString(arr.toArray()));
            }
     
        }
    J'ai besoin de ce code pour calculer la valeur de Owen (théorie des jeux). Merci en avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 51
    Par défaut
    A priori, ton besoin nécessite des tableaux 2 dimensions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int[][] tab = {{1,2},{3,4}};
    A ta place, je commencerais par faire un algo de permutation sur un tableau 1 dimension.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int[] tab = {1,2}; // le résultat est donc {1,2} ou {2,1}
    Puis tu mets en place un algo de permutation sur un tableau 2 dimensions qui aura pour role de permuter les tableaux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int[][] tab = {{1,2},{3,4}}; // je peux permuter mes 2 tableaux 1 dimension indépendamment {1,2} ou {2,1} et {3,4} ou {4,3} puis je peux permuter mes tableaux entre eux {{1,2},{3,4}} ou {{4,3},{2,1}}, ...
    J'espère avoir été clair dans mes explications.

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/07/2015, 10h55
  2. Générer tous les accords.
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 28/08/2009, 06h48
  3. générer toutes les permutations d'un ensemble fini d'éléments
    Par Didier77 dans le forum Algorithmes et structures de données
    Réponses: 17
    Dernier message: 25/09/2007, 07h34
  4. Générer tous les scripts de création de tables
    Par farenheiit dans le forum Administration
    Réponses: 5
    Dernier message: 03/08/2007, 11h05
  5. Générer tous les tirages possibles.
    Par Mandotnet dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 03/09/2005, 16h53

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