Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

cycles et permutation

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux...
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
michel



Inscrit le: 23 Juin 2006
Messages: 72

MessagePosté le: 22 Avr 2011 11:08    Sujet du message: cycles et permutation Répondre en citant

Bonjours,
Connaissant les cycles d'une permutation, peut-on trouver une permutation associée ?
Exemple :
On sait que les cycles sont : [[1,4,6,7,11],[2,5,8],[3],[9,10,12]]:
quelle procédure permet de trouver la permutation :
[6,8,3,1,2,7,11,5,9,4,12] ? Merci.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 22 Avr 2011 17:19    Sujet du message: Répondre en citant

Bonjour Michel,
Je pense que vous vous être trompé dans votre permutation.

Code:

> with(group):

> p:=[4,5,3,6,8,7,11,2,10,12,1,9];

             p := [4, 5, 3, 6, 8, 7, 11, 2, 10, 12, 1, 9]

> c:=convert(p,'disjcyc');

           c := [[1, 4, 6, 7, 11], [2, 5, 8], [9, 10, 12]]

> convert(c,'permlist',12);

               [4, 5, 3, 6, 8, 7, 11, 2, 10, 12, 1, 9]



A+
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
michel



Inscrit le: 23 Juin 2006
Messages: 72

MessagePosté le: 27 Avr 2011 15:07    Sujet du message: Trouver une permutation associée à une liste de cycles Répondre en citant

Bonjour Alain,
Voici une manière d'éviter d'utiliser le package (group) de maple pour trouver une permutation en connaissant seulement ses cycles :

D'abord cette procédure pour enlever les crochets internes et rendre négatif le dernier élément d'un cycle.
arrang:=proc(M ::list) # M est la liste des cycles entre crochets
> local L,Q,n,m,i:
> n:=nops(M):
> Q:=[]:
> for i to n do
> m:=nops(M[i]):
> L:=seq(M[i][j],j=1..m-1),-M[i][m]:
> Q:=Q,L:
> od:
> RETURN(convert(sauf_premier([Q]),array));# à simplifier ?
> end:
> arrang([[1,5,3],[9,4,7,5],[6]]);

[1, 5, -3, 9, 4, 7, -5, -6]


Puis une procédure qui trouve une permutation associée à une liste des cycles même les singletons et que j'ai trouvée sur internet.
> Permu:=proc(P::array(integer))
> local Q,j,d,n:
> Q:=copy(P):
> n:=nops(convert(P,list)):
> for j to n do
> d:=Q[j]:
> while Q[j]>0 do
> P[Q[j]]:=abs(Q[j+1]):
> j:=j+1:
> od:
> P[abs(Q[j])]:=abs(d)
> od:
> RETURN(eval(P))
> end:
Cordialement.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 02 Mai 2011 7:56    Sujet du message: Répondre en citant

Bonjour,
Permu ne semble pas fonctionner, j'ai un message d'erreur quand je l'applique sur [1, 5, -3, 9, 4, 7, -5, -6].
A+
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
michel



Inscrit le: 23 Juin 2006
Messages: 72

MessagePosté le: 02 Mai 2011 11:15    Sujet du message: recomposition de permutation à partir de ses cycles Répondre en citant

Bonjour,
D'erreur en erreur... voici la procédure qui semble fonctionner à partir d'une liste de cycles (réponse prenant en compte le message précédant)

cf := [[1, 2, 4, 8, 13], [3, 5, 9, 15], [6, 10, 12, 16], [7, 11, 14]];
cf := [ [1, 2, 4, 8, 13], [3, 5, 9, 15], [6, 10, 12, 16], [7, 11, 14] ]

> Q1:=arrang(cf);
Q1 := [1, 2, 4, 8, -13, 3, 5, 9, -15, 6, 10, 12, -16, 7, 11, -14]

> whattype(Q1); symbol
procédure qui trouve une permutation associée à une liste des cycles même les singletons et que j'ai trouvée sur internet.
> Permu:=proc(P::array(integer))
> local Q,j,d,n:
> Q:=copy(P):
> n:=nops(convert(P,list)):
> for j to n do
> d:=Q[j]:
> while Q[j]>0 do
> P[Q[j]]:=abs(Q[j+1]):
> j:=j+1:
> od:
> P[abs(Q[j])]:=abs(d)
> od:
> RETURN(eval(P))
> end:
> #debug(Permu);
> Permu(Q1);

[2, 4, 5, 8, 9, 10, 11, 13, 15, 12, 14, 16, 1, 7, 3, 6]
A+
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux... Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.