Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1466 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Besoin d'aide [Générer un permutoèdre]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide [Générer un permutoèdre]

n°409819
Fornium
until the end of the world...
Posté le 27-05-2003 à 23:05:45  profilanswer
 

Salut les codeurs,
j'ai un projet en C à rendre la semaine prochaine et je n'ai malheureusement toujours pas trouvé la solution  :fou: , ce serait sympa si vous pouviez m'aider svp ....  
 
Voilà les questions!!!
 
1. Générer un permutoèdre *
2. Une fois le permutoèdre généré, votre programme devra pouvoir retrouver la longueur d'une permutation donnée, ainsi qu'un chemin de l'identité vers cette permutation ( i.e. la décomposition de la permutation en produit de transpositions, plus les permutaions intermédiaires).
 
 
* On appellera "permutoèdre" un graphe orienté dont l'ensemble de sommets est constitué de toutes les permutations d'une taille donnée, et dans lequel on mettra un arc entre deux permutations, si la deuxième peut être obtenue à partir de la première en la multipliant juste par une transposition élémentaire, et sa longueur est supérieure à celle de la première.
 
 
Merci pour toute aide !!!!!!!!!!


Message édité par Fornium le 28-05-2003 à 00:11:58
mood
Publicité
Posté le 27-05-2003 à 23:05:45  profilanswer
 

n°409841
HORNY-Gran​dcornu
grumf !
Posté le 27-05-2003 à 23:50:48  profilanswer
 

Ahlàlà, le rush... On arrive à une semaine de l'échéance, et oh, on tombe nez à nez avec la feuille du projet :whistle:  
 
Sérieusement, déjà, j'ai rien pigé au permutoèdre, et qui va s'amuser à programmer ce truc ? (si ce n'est toi of course :d)
 
mets y toi, non seulement tu en retireras de la satisfaction :love: mais également de l'expérience ! :whistle:
 
edit : au fait, tu es en quoi ? Je viens de relire le coup du permutoèdre et j'y pige vraiment que dalle !


Message édité par HORNY-Grandcornu le 27-05-2003 à 23:58:08
n°409848
Fornium
until the end of the world...
Posté le 28-05-2003 à 00:17:38  profilanswer
 

HORNY-GRANDCORNU a écrit :

Ahlàlà, le rush... On arrive à une semaine de l'échéance, et oh, on tombe nez à nez avec la feuille du projet :whistle:  
 
Sérieusement, déjà, j'ai rien pigé au permutoèdre, et qui va s'amuser à programmer ce truc ? (si ce n'est toi of course :d)
 
mets y toi, non seulement tu en retireras de la satisfaction :love: mais également de l'expérience ! :whistle:
 
edit : au fait, tu es en quoi ? Je viens de relire le coup du permutoèdre et j'y pige vraiment que dalle !


 
 
T'inkietes t'es pas le seul à n'avoir rien compris  ;) et sinon j'suis en IUP Génie Maths et Info et c'est un sujet d'Algo !!! en fait c un truc qui à une relation avec les permutations des chiffres et transpositions élémentaires bref des truc pas trop passionnant et ça me rend fou  :pt1cable: !!!


Message édité par Fornium le 28-05-2003 à 18:20:21
n°409877
Taz
bisounours-codeur
Posté le 28-05-2003 à 06:23:46  profilanswer
 

et c'est quoi le rapport avec le C? moi j'ai bien l'impression que c'est de l'algo pure (permutometre, c'est dans le dico?)

n°409918
skeye
Posté le 28-05-2003 à 08:50:16  profilanswer
 

++Taz a écrit :

et c'est quoi le rapport avec le C? moi j'ai bien l'impression que c'est de l'algo pure (permutometre, c'est dans le dico?)


permutoèdre, pas permutomètre!:D
Mais en effet c'est plutot un pb d'algo...

n°410689
Fornium
until the end of the world...
Posté le 28-05-2003 à 18:23:05  profilanswer
 

skeye a écrit :


permutoèdre, pas permutomètre!:D
Mais en effet c'est plutot un pb d'algo...


 
t'as tout à fait raison c un sujet d'algo, j'me suis trompé en haut  ;) mais pour l'instant personne n'a trouvé une solution pour moi  :cry:

n°410691
Taz
bisounours-codeur
Posté le 28-05-2003 à 18:26:24  profilanswer
 

ben en C++ je t'aurais sorti le std::next_permutation, mais tu fais du C :D

n°410762
Fornium
until the end of the world...
Posté le 28-05-2003 à 20:45:51  profilanswer
 

++Taz a écrit :

ben en C++ je t'aurais sorti le std::next_permutation, mais tu fais du C :D  


 
je refuserais pas ton code alors ce serait sympa si tu me le files  ;)

n°410763
Taz
bisounours-codeur
Posté le 28-05-2003 à 20:49:55  profilanswer
 

Code :
  1. // next_permutation and prev_permutation, with and without an explicitly  
  2. // supplied comparison function.
  3. template <class _BidirectionalIter>
  4. bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last) {
  5.   __STL_REQUIRES(_BidirectionalIter, _BidirectionalIterator);
  6.   __STL_REQUIRES(typename iterator_traits<_BidirectionalIter>::value_type,
  7.                  _LessThanComparable);
  8.   if (__first == __last)
  9.     return false;
  10.   _BidirectionalIter __i = __first;
  11.   ++__i;
  12.   if (__i == __last)
  13.     return false;
  14.   __i = __last;
  15.   --__i;
  16.   for(;;) {
  17.     _BidirectionalIter __ii = __i;
  18.     --__i;
  19.     if (*__i < *__ii) {
  20.       _BidirectionalIter __j = __last;
  21.       while (!(*__i < *--__j))
  22.         {}
  23.       iter_swap(__i, __j);
  24.       reverse(__ii, __last);
  25.       return true;
  26.     }
  27.     if (__i == __first) {
  28.       reverse(__first, __last);
  29.       return false;
  30.     }
  31.   }
  32. }
  33. template <class _BidirectionalIter, class _Compare>
  34. bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
  35.                       _Compare __comp) {
  36.   __STL_REQUIRES(_BidirectionalIter, _BidirectionalIterator);
  37.   __STL_BINARY_FUNCTION_CHECK(_Compare, bool,
  38.     typename iterator_traits<_BidirectionalIter>::value_type,
  39.     typename iterator_traits<_BidirectionalIter>::value_type);
  40.   if (__first == __last)
  41.     return false;
  42.   _BidirectionalIter __i = __first;
  43.   ++__i;
  44.   if (__i == __last)
  45.     return false;
  46.   __i = __last;
  47.   --__i;
  48.   for(;;) {
  49.     _BidirectionalIter __ii = __i;
  50.     --__i;
  51.     if (__comp(*__i, *__ii)) {
  52.       _BidirectionalIter __j = __last;
  53.       while (!__comp(*__i, *--__j))
  54.         {}
  55.       iter_swap(__i, __j);
  56.       reverse(__ii, __last);
  57.       return true;
  58.     }
  59.     if (__i == __first) {
  60.       reverse(__first, __last);
  61.       return false;
  62.     }
  63.   }
  64. }
  65. template <class _BidirectionalIter>
  66. bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last) {
  67.   __STL_REQUIRES(_BidirectionalIter, _BidirectionalIterator);
  68.   __STL_REQUIRES(typename iterator_traits<_BidirectionalIter>::value_type,
  69.                  _LessThanComparable);
  70.   if (__first == __last)
  71.     return false;
  72.   _BidirectionalIter __i = __first;
  73.   ++__i;
  74.   if (__i == __last)
  75.     return false;
  76.   __i = __last;
  77.   --__i;
  78.   for(;;) {
  79.     _BidirectionalIter __ii = __i;
  80.     --__i;
  81.     if (*__ii < *__i) {
  82.       _BidirectionalIter __j = __last;
  83.       while (!(*--__j < *__i))
  84.         {}
  85.       iter_swap(__i, __j);
  86.       reverse(__ii, __last);
  87.       return true;
  88.     }
  89.     if (__i == __first) {
  90.       reverse(__first, __last);
  91.       return false;
  92.     }
  93.   }
  94. }
  95. template <class _BidirectionalIter, class _Compare>
  96. bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
  97.                       _Compare __comp) {
  98.   __STL_REQUIRES(_BidirectionalIter, _BidirectionalIterator);
  99.   __STL_BINARY_FUNCTION_CHECK(_Compare, bool,
  100.     typename iterator_traits<_BidirectionalIter>::value_type,
  101.     typename iterator_traits<_BidirectionalIter>::value_type);
  102.   if (__first == __last)
  103.     return false;
  104.   _BidirectionalIter __i = __first;
  105.   ++__i;
  106.   if (__i == __last)
  107.     return false;
  108.   __i = __last;
  109.   --__i;
  110.   for(;;) {
  111.     _BidirectionalIter __ii = __i;
  112.     --__i;
  113.     if (__comp(*__ii, *__i)) {
  114.       _BidirectionalIter __j = __last;
  115.       while (!__comp(*--__j, *__i))
  116.         {}
  117.       iter_swap(__i, __j);
  118.       reverse(__ii, __last);
  119.       return true;
  120.     }
  121.     if (__i == __first) {
  122.       reverse(__first, __last);
  123.       return false;
  124.     }
  125.   }
  126. }

n°410774
Fornium
until the end of the world...
Posté le 28-05-2003 à 21:01:09  profilanswer
 

cool merci !!!!!!!!!

mood
Publicité
Posté le 28-05-2003 à 21:01:09  profilanswer
 

n°410793
Taz
bisounours-codeur
Posté le 28-05-2003 à 21:26:57  profilanswer
 

TipOfTheDay: efface les __, c'est con, mais ça gagne en lisibilité
 
c'est des opérations sur des sequences: first pointe sur le premier élément, last pointe apres le dernier. tous les éléments sont conceptuellement contigus, c'est à dire accessible par incrémentation (comme balader un pointeur sur un tableau[N], first=tableau, et last=tableau+N)

n°410796
Fornium
until the end of the world...
Posté le 28-05-2003 à 21:39:21  profilanswer
 

++Taz a écrit :

TipOfTheDay: efface les __, c'est con, mais ça gagne en lisibilité
 
c'est des opérations sur des sequences: first pointe sur le premier élément, last pointe apres le dernier. tous les éléments sont conceptuellement contigus, c'est à dire accessible par incrémentation (comme balader un pointeur sur un tableau[N], first=tableau, et last=tableau+N)


 
c noté  :wahoo:  thank u !!!!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Besoin d'aide [Générer un permutoèdre]

 

Sujets relatifs
besoin d'aidedemande d'aide pour creer un agenda en php
besoin d'aide sur excel pour une courbe de temps...Aide ecriture fichier
Programmation d'une appli Web : besoin de conseils[BusinessObjects] Besoin de votre aide
Besoin d'un petit perl 101 
Plus de sujets relatifs à : Besoin d'aide [Générer un permutoèdre]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR