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 :

Permuter un tableau


Sujet :

Algorithmes et structures de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 14
    Par défaut Permuter un tableau
    Bonjour,
    Je souhaite permuter tous les éléments d'un tableau. Le problème est que pour un grand nombre d'objets à permuter, la fonction réalisée prend trop de temps. Auriez vous une solution plus rapide ?

    Le tableau phi est le tableau qui permet de definir une permutation et de la conserver (il faut absolument que je conserve les positions de départ et d 'arrivée).
    exemple pour un tableau de 3 objets à permuter avec phi = {1,2,0} et un tableau {4,5,6} à permuter, ca va donner en sortie le tableau suivant :
    {6,4,5}

    Voila ce qui a été fait :


    Code:
    protected Ball[] permuteList(Ball[] tabBall) {

    int size = tabBall.length;
    Ball[] result = new Ball[size];

    int pos;
    for (int i = 0; i < size; i++) {
    pos = phi[i];
    result[pos] = tabBall[i];
    }
    return result;
    }


    Merci pour votre aide

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    346
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 346
    Par défaut
    J'ai vu ta question dans le forum java, mais je te reponds ici pour un point
    purement sur la complexité.
    Je ne vois pas comment tu pourrais accélerer tes affectations,
    en effet tu est obligé de parcourir ton tableau phi. Ce qui te donne
    un complexité linéaire.
    Tu as donc deux choix possibles pour accélérer ta fonction :
    1 - Choix algorithmique : meme si tu permutes tous les objets. Existe-t-il une sorte de structure dans la permutation ?
    2 - Choix Java trouver une autre façon pour affecter les valeurs mais je ne vois pas ce que tu peux faire étant donné que c'est assez simple.

    Bref, avec ton code tu es linéaire donc si tu veux gagner du temps essaye de te pencher sur 1 -

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 14
    Par défaut
    Existe-t-il une sorte de structure dans la permutation ?

    Je sais pas si je vais bien repondre à ta question...on va essayer. Voila comment ca se passe. Au depart on a un tableau à permuter. On génère de manière aléatoire une permutation que je stocke dans phi. Je permute le tableau de depart en fonction de phi pour obtenir le tableau permuté.
    Donc a priori pas de structure dans la premut !

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    346
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 346
    Par défaut
    Si le tirage est bien aléatoire il ne doit pas y avoir de structure .

    La seule solution est de repenser dans quel contexte tu souhaites avoir
    ce tableau "desordonné". Explique mieux ton problème en général. Quels sont les tailles de tableau que tu veux traiter ? Uniquement pour des entier ?
    etc. Quand tu dis que ça te prends du temps, en min, h, jours ?

    Mais je ne pense que ce soit un problème que l'on peut mettre avec une complexité inférieure.

  5. #5
    Membre Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Par défaut
    Tu ne peux pas énormément réduire ton temps de calcul, car il faut bien que tu le remplisse ton tableau!!

    Néanmoins, il y a peut-être une façon de gagner du temps:
    Tu pars d'un tableau T à permuter;
    Plutôt que de construire un tableau RES t'obligeant à écrire chaque élément de RES à partir de T, tu MODIFIES T.

    Ce que tu gagne? Et bien tu utilises des permutations élémentaires pour permuter ton tableau! Une permutation élémentaire échange 2 éléments et laisse fixe les autres. L'avantage? Il y aura un certain nombres d'éléments de T qui ne bougerons pas, et tu n'auras pas de traitement à faire sur eux...

    Tu tires donc le % d'éléments fixe,
    Tu tires des perm. élémentaires (i.e. 2 positions dans T) et tu échanges les élements de T assiciés; tu en tires ce qu'il te faut pour laisser ton % d'éléments fixe....

    Tu peux éventuellement gagner du temps par cette méthode, en fixant le nombre d'éléments fixe à 30% en moyenne par exemple....


    Enfin, je ne sais si cela t'aide...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 14
    Par défaut
    Merci pour votre aide !
    J'arriverai pas à faire mieux visiblement.

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

Discussions similaires

  1. Trie de permutation d’un tableau
    Par dot-_-net dans le forum Langage
    Réponses: 2
    Dernier message: 04/05/2008, 23h55
  2. [C]probleme permutation colonnes d'un tableau
    Par memo67 dans le forum Débuter
    Réponses: 5
    Dernier message: 20/03/2008, 12h53
  3. Récursivité, permutations d' éléments dans un tableau
    Par baeri dans le forum Algorithmes et structures de données
    Réponses: 20
    Dernier message: 29/01/2007, 20h29
  4. Réponses: 2
    Dernier message: 19/12/2006, 22h57
  5. [Perf] Permuter un tableau
    Par seb-astien dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 25/08/2004, 19h31

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