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 :

Algorithme de remplissage correct


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut Algorithme de remplissage correct
    Bonjour à tous

    J'ai un petit souci d'algorithmie...

    Je pose le problème :

    • soit un ensemble de points P (N)
    • soit un ensemble (parcours tronqué) C (M) dans cet ensemble de points (indices dans P)


    Je cherche un algo pour stocker dans P(N) au début ET dans le même ordre que spécifié par C(M) ... au vol..


    Exemple :

    P : 0 2 4 6 8 10 12 14 16 18 20 22 (N=12)

    C : 7 2 3 1 5 4 (M=6)

    Je cherche à avoir un algo pour obtenir :

    P : 12 2 4 0 8 6 ...

    (P(7), P(2), P(3), P(1), P(5), P(4))


    Je peux passer par une variable intermédiaire, mais j'amerais ne pas passer par un tableau intermédiaire..

    Si vous avez des idées, je les accepte avec plaisir

    Parce que je sèche un peu là...


    Si les indices étaent croissants, ce serait facile..

    Mais non seulement ils ne sont pas croissants, mais ils peuvent être < M ... et même à eux-même : indice(4) = 1

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    je ne pense as que cela soit possible sans passer par un autre tableau,
    au cour d'un traitement normal de remplacement, il y'aura beaucoup de cases à stocker en attendant une possible réutilisation

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Par défaut
    Un truc débile: pour chaque i de 1 à M tu échanges P(i) avec P(C(i)), et tu remplaces éventuellement i par C(i) dans la liste des C(j) avec j>i.

    Ca répond à ton problème?

  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
    Je plussoie la proposition de Nemerle

    Tu peux meme renuméroter ton tableau de swap (C[]) avant de faire les permutation de ton tableau de départ.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // swap table renumbering
    for(int i=0;i<M;i++)
    	for(int j=i+1;j<M;j++)
    		if (C[j]==i) C[j]=C[i];
     
    // swapping elements
    for(int i=0;i<M;i++) {
    	int swap=P[i]; P[i]=P[C[i]]; P[C[i]]=swap;
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    merci

    je vais essayer ça ..

    J'avais réussi à trouver un algo, sauf quand M = N ..

    Je vous reviendrais là-dessus plus tard..

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    bon

    de retour..

    Je n'ai pas réussi à faire marcher cet algo (mais je réessayerais peut-être ce week end).. Mais je crois que ça ne marche pas si il y a une réciprocité :
    C(1) = 3
    C(3) = 1



    Mais j'ai trouvé !!! Après 4 ou 5 jours de réflexions, d'essais, et d'échecs successifs...

    On calcule le poiint ayant l'indice minimum

    On shifte C jusqu'à ce que ce point soit en 0


    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
      n3 = NPts ;
      k = -1 ;
      for ( i = 0 ; i < M ; i++ )
        {
           if ( C[i] <= n3 )
             {
    	  if ( C[i] < i )
    	    {
    	        n3 = C[i] ;
    	        k = i ;
    	    }
             }
        }
     
      if ( k >= 0 )
        {
            for ( i = (M-1) ; i >= k ; i-- )
               {
    	      l = C[M-1] ;
     
    	      for ( j = (M-2) ; j >= 0 ; j-- )
    	           C[j+1] = C[j] ;
     
    	      C[0] = l ;
               }
        }

    Pour M = N, je n'ai pas le choix que de passer par un tableau intermédiaire..

    Merci à tous..

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

Discussions similaires

  1. Algorithmes de remplissage (≠ flood fill)
    Par Luke58 dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 24/11/2009, 16h40
  2. Algorithme de remplissage d'une matrice
    Par bettiboo94 dans le forum MATLAB
    Réponses: 1
    Dernier message: 18/05/2008, 05h53
  3. Remplissage correcte de combobox
    Par Shadow5 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/04/2008, 14h29
  4. Algorithme de remplissage d'un triangle
    Par nicolas66 dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 15/05/2007, 10h00
  5. [XSLT] algorithme de remplissage d'armoire
    Par tylenchus dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 03/03/2007, 14h10

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