Partage
  • Partager sur Facebook
  • Partager sur Twitter

produit de cycles

Sujet résolu
5 avril 2021 à 7:00:18

Bonjour et merci d'avance

Dernièrement j'ai construit un programme en C qui calcule des produits de cycles pour les exprimer en produits à support disjoints depuis une expression écrite sur un fichier texte

Le programme cherche à savoir si l'expression est un produit de cycles puis une fois cette vérification effectuée il va l'exprimer en produit à support disjoints dans le cas où cette expression ne l'est pas

Ma question est la suivante:

Juste pour vérifier ce que j'ai fait : le calcul ci-dessous est-il correct?

Dans S_n calculer en produit  à support disjoints l'expression  

(1,2)(1,2,5)^8((1,2)(3,5))^7(2,3)

J'ai trouvé (1,2)(3,5) 

c'est ok?

________________________________

pour explication de l'expression 

(1,2,5)^8 signifie (1,2,5) à la puissance 8

((1,2)(3,5))^7 signifie que le produit (1,2)(3,5) est à la puissance 7

________________________________

Première remarque:

Dans mon programme il fait le calcul bourrin de (1,2,5)^8 

J'ai préféré écrire un code relativement court qui pourra lire toute expression et à faire tous les calculs bourrins sans avoir à rechercher les supports ou calculer des ppcm 

_______________

Deuxième remarque:

comme ici le produit (1,2)(3,5) est à support disjoints on obtient  

((1,2)(3,5))^7 = (1,2)^7(3,5)^7

mais dans mon programme il ne va pas chercher à savoir si le produit (1,2)(3,5) est commutatif ou pas 

il fait le calcule bourrin directement (ça prend plus de temps de calcul mais l'avantage est que le code est plus simple) 

  • Partager sur Facebook
  • Partager sur Twitter
5 avril 2021 à 15:46:27

Une question pour commencer, je découvre totalement ces notations.

(1,2) ça représente une opération où on permute les éléments 1 et 2, sans changer tous les autres, c'est bien ça ?

et (1,2,5), c'est la même chose, 1 va en 2 , 2 va en 5, et 5 va en 1, et les autres éléments ne bougent pas, c'est ça ?

Et (1,2)(2,3), on applique d'abord (1,2) , puis (2,3), dans cet ordre (a confirmer, c'est une question) , et ça donne (1,3,2)

Du coup, en supposant que c'est bien comme ça que ça se lit :

(1,2,5)^8 = (1,2,5)^2=(1,5,2)

Puis (1,2)(1,2,5)^8  = (1,2)(1,5,2) = (2,5)

((1,2)(3,5))^7 = (1,2)(3,5)

Au final :

(1,2)(1,2,5)^8((1,2)(3,5))^7(2,3) = (1,2)(1,5,2)(1,2)(3,5)(2,3) =(2,5)(1,2)(3,5)(2,3)=(1,2,5)(3,5,2)=(1,3,5)

Si j'ai bien ompris les notations, ce n'est pas sûr. En particulier, il peut y avoir un doute sur l'ordre quand on fait (1,2)(2,3)

Selon qu'on applique d'abord (1,2), ou (2,3), le résultat sera différent.

  • Partager sur Facebook
  • Partager sur Twitter
5 avril 2021 à 16:24:42

tbc92 a écrit:

 Et (1,2)(2,3), on applique d'abord (1,2) , puis (2,3), dans cet ordre (a confirmer, c'est une question) , et ça donne (1,3,2)


Bonjour 

 non  (1,2)(2,3) donne (1,2,3) car 

là non on applique d'abord (2,3) puis (1,2) 

car le produit est la composition des permutations

1 donne 1 puis 1 donne 2 donc sur (1,2)(2,3) alors 1 donne 2

2 donne 3 puis 3 donne 3 donc sur (1,2)(2,3) alors 2 donne 3

3 donne 2 puis 2 donne 1 donc sur (1,2)(2,3) alors 3 donne 1

et donc (1,2)(2,3)=(1,2,3) 

PS : précision de ma réponse précédente


tbc92 a écrit:

 Selon qu'on applique d'abord (1,2), ou (2,3), le résultat sera différent.


Oui car ici les support ne sont pas disjoints  (de sorte que dans cet exemple là le produit n'est pas commutatif)

-
Edité par DominiqueSicilia 5 avril 2021 à 16:33:47

  • Partager sur Facebook
  • Partager sur Twitter
5 avril 2021 à 18:35:29

DominiqueSicilia a écrit:

Bonjour et merci d'avance

Dernièrement j'ai construit un programme en C qui calcule des produits de cycles pour les exprimer en produits à support disjoints depuis une expression écrite sur un fichier texte

Le programme cherche à savoir si l'expression est un produit de cycles puis une fois cette vérification effectuée il va l'exprimer en produit à support disjoints dans le cas où cette expression ne l'est pas

Ma question est la suivante:

Juste pour vérifier ce que j'ai fait : le calcul ci-dessous est-il correct?

Dans S_n calculer en produit  à support disjoints l'expression  

(1,2)(1,2,5)^8((1,2)(3,5))^7(2,3)


on a (1,2)(1,2,5)⁸((1,2)(3,5))⁷(2,3)=(1,2)(1,2,5)²((1,2)(3,5))(2,3)

= (1,2)(1,2,5)²(1,3,5,2)

=(1,2)(5,2,1)(1,3,5,2)

=(1,2)(3,5)

ou 

12345

13245

31542

21543

  • Partager sur Facebook
  • Partager sur Twitter
5 avril 2021 à 18:43:21

(1,2)(1,2,5)^8((1,2)(3,5))^7(2,3)=(1,2)(1,5,2)(1,2)(3,5)(2,3)

= (1,5)(1,2)(2,5,3)

=(1,2,5)(2,5,3)

=(1,2)(3,5)

On trouve effectivement (1,2)(3,5)

Par rapport à la force bourrine, l'amélioration qui saute aux yeux, c'est pour les expressions de la forme (a,b)^n. Selon que n est pair ou impair, on simplifie rapidement. 

Et un peu plus généralement, (a,b,c)^n, selon que n est multiple de 3 (n=3k), ou 3k+1 ou 3k+2, on peut aussi simplifier facilement.

  • Partager sur Facebook
  • Partager sur Twitter
5 avril 2021 à 19:07:57

tbc92 a écrit:

On trouve effectivement (1,2)(3,5)

__________________________________

Vraiment merci TBC92 d'avoir pris le temps de vérifier 

Je pense que je vais garder le code tel quel car il accepte de lire des exponentielles d'expressions lesquelles sont des produits d'expressions avec des exponentielles 

mais il est vrai qu'avec mon code la machine fait des calculs un peu idiots

-
Edité par DominiqueSicilia 5 avril 2021 à 19:09:22

  • Partager sur Facebook
  • Partager sur Twitter