• Aucun résultat trouvé

Sur les permutations

N/A
N/A
Protected

Academic year: 2022

Partager "Sur les permutations"

Copied!
3
0
0

Texte intégral

(1)

Corrig´e du DS1 d’informatique

Corrig´ e du DS1

Sur les permutations

Partie A – Ordre d’une permutation

A.1

# l e t composer t t ’ = l e t n = v e c t l e n g t h t i n l e t r e s = m a ke ve c t n 0 i n

f o r i = 0 t o n − 1 do r e s . ( i ) <− t . ( t ’ . ( i ) ) done ; r e s ; ;

composer : i n t v e c t −> i n t v e c t −> i n t v e c t =<fun>

# composer [|0 ; 1 ; 2 ; 4 ; 5 ; 3|] [|1 ; 3 ; 2 ; 5 ; 4 ; 0|] ; ;

− : i n t v e c t = [|1 ; 4 ; 2 ; 3 ; 5 ; 0|] A.2

# l e t i n v e r s e r t = l e t n = v e c t l e n g t h t i n l e t i n v = m a ke ve c t n 0 i n

f o r i = 0 t o n − 1 do i n v . ( t . ( i ) ) <− i done ; i n v ; ;

i n v e r s e r : i n t v e c t −> i n t v e c t = <fun>

#i n v e r s e r [|0 ; 2 ; 1 ; 4 ; 5 ; 3|] ; ;

− : i n t v e c t = [|0 ; 2 ; 1 ; 5 ; 3 ; 4|]

A.3IdEn est (la seule permutation deEn) d’ordre 1.

ϕ :x∈En7→(x+ 1)[n] est d’ordren.

A.4On d´efinit d’abord une fonction qui construit IdEn (on pouvait faire sans).

# l e t i d n = l e t r e s = m a ke v ec t n 0 i n

f o r i = 1 t o n − 1 do r e s . ( i ) <− i done ; r e s ; ;

i d : i n t −> i n t v e c t =<fun>

# l e t r e c o r d r e t e m p = f u n

| n t a c c u when a c c u = ( i d ( v e c t l e n g t h t ) ) −> n

| n t a c c u −> o r d r e t e m p ( n + 1 ) t ( composer t a c c u ) ; ; o r d r e t e m p : i n t −> i n t v e c t −> i n t v e c t −> i n t = <fun>

# l e t o r d r e t = o r d r e t e m p 1 t t ; ; o r d r e : i n t v e c t −> i n t = <fun>

Partie B – Manipuler les permutations

B.1

# l e t p e r i o d e t i = l e t temp = r e f t . ( i ) and r e s = r e f 1 i n w h i l e ! temp <> i

do temp := t . ( ! temp ) ; r e s := ! r e s + 1 done ;

! r e s ; ;

p e r i o d e : i n t v e c t −> i n t −> i n t = <fun>

B.2

(2)

# l e t e s t D a n s O r b i t e t i j =

l e t k = p e r i o d e t i and temp = r e f i and l = r e f 0 and r e s = r e f f a l s e i n w h i l e ! l < k && n o t ! r e s

do temp := t . ( ! temp ) ; r e s := ! temp = j ; l := ! l + 1 done ;

! r e s ; ;

e s t D a n s O r b i t e : i n t v e c t −> i n t −> i n t −> b o o l = <fun>

B.3On compte le nombre de points deEn non fix´es part, et on teste si ce nombre vaut 2.

#l e t e s t T r a n s p o s i t i o n t = l e t n = v e c t l e n g t h t and i n f i x e s = r e f 0 i n f o r i = 0 t o n − 1 do

i f t . ( i ) <> i t h e n i n f i x e s := ! i n f i x e s + 1 done ;

! i n f i x e s = 2 ; ;

e s t T r a n s p o s i t i o n : i n t v e c t −> b o o l = <fun>e s t T r a n s p o s i t i o n : i n t v e c t −> b o o l = <fun>

B.4On empile les p´eriodes non triviales dans une liste, puis on teste si le nombre de ces p´eriodes est ´egal `a la p´eriode du premier terme.

# l e t e s t C y c l e t = l e t n = v e c t l e n g t h t and t e s t = r e f [ ] i n f o r i = 0 t o n − 1 do

i f p e r i o d e t i <> 1 t h e n t e s t := ( p e r i o d e t i ) : : ! t e s t done ;

! t e s t <> [ ] && hd ! t e s t = l i s t l e n g t h ! t e s t ; ; e s t C y c l e : i n t v e c t −> b o o l = <fun>

Partie C – Op´ erations efficaces sur les permutations

C.1 Si on n’a pas rempli la i-i`eme case, on la remplit par la valeur periode t i, ainsi que toutes les cases correspondant `a l’orbite dei: il y a donc bien autant d’appels `a periode que d’orbites.

# l e t p e r i o d e s t = l e t n = v e c t l e n g t h t i n l e t p = m a ke ve c t n 0 i n f o r i = 0 t o n − 1 do i f p . ( i ) = 0 t h e n

l e t k = p e r i o d e t i and u = r e f i i n

f o r j = 1 t o k do p . ( ! u ) <− k ; u := t . ( ! u ) done ; done ;

p ; ;

p e r i o d e s : i n t v e c t −> i n t v e c t = <fun>

C.2

# l e t i t e r e r E f f i c a c e t k = l e t n = v e c t l e n g t h t and p = p e r i o d e s t i n l e t r e s = m a ke ve c t n 0 i n

f o r i = 0 t o n − 1 do

l e t r = k mod p . ( i ) and temp = r e f i i n

f o r j = 1 t o r do temp := t . ( ! temp ) done ; r e s . ( i ) <− ! temp ;

done ; r e s ; ;

i t e r e r E f f i c a c e : i n t v e c t −> i n t −> i n t v e c t =<fun>

C.3La permutation [|1; 2; 3; 0; 5; 6; 4|] est d’ordre 12.

C.4

# l e t r e c pgcd = f u n

| a 0 −> a

| a b −> pgcd b ( a mod b ) ; ; pgcd : i n t −> i n t −> i n t = <fun>

C.5

# l e t ppcm a b = a ∗ b / ( pgcd a b ) ; ; ppcm : i n t −> i n t −> i n t = <fun>

(3)

C.6On se fonde sur une strat´egiediviser pour r´egner :

# l e t r e c ppcmTableau p = match v e c t l e n g t h p w i t h

| 1 −> p . ( 0 )

| n −> ppcm ( ppcmTableau ( s u b v e c t p 0 ( n / 2 ) ) )

( ppcmTableau ( s u b v e c t p ( n / 2 ) ( n − ( n / 2 ) ) ) ) ; ; ppcmTableau : i n t v e c t −> i n t = <fun>

# l e t o r d r e E f f i c a c e t = ppcmTableau ( p e r i o d e s t ) ; ; o r d r e E f f i c a c e : i n t v e c t −> i n t = <fun>

C.7On initialise un tableau de bool´eens test en le remplissant par des false , et sij figure danst, alors on remplace test .( j ) par true. On teste si le tableau obtenu n’a que des true.

# l e t e s t P e r m u t a t i o n t =

l e t n = v e c t l e n g t h t and temp = r e f t r u e and i = r e f 0 i n l e t t e s t = m a k e ve c t n f a l s e i n

f o r i = 0 t o n − 1 do

i f t . ( i ) < n && t . ( i ) >= 0

t h e n t e s t . ( t . ( i ) ) <− t r u e done ;

t e s t = m a k e v ec t n t r u e ; ; e s t P e r m u t a t i o n : i n t v e c t −> b o o l = <fun>

Références

Documents relatifs

Au Texas Hold'em, un joueur peut utiliser n'importe quelle combinaison des sept cartes disponibles pour constituer la main la plus forte possible avec une, deux ou bien aucune des

Mais si l'on fait des polygones, deux tels polygones coloriés sont considérés comme équivalents s'ils fournissent la même suite de couleurs lorsqu'on les parcourt dans des

http://www.numdam.org/.. Les permutations ordinaires et les permutations circulaires ne sont autre chose que les dispositions qu'on peu! réaliser avec n objets placés en ligne droite

Si /?, en mar- chant vers g, arrive à sa gauche, le nombre des déran- gements varie de p -h i unités positives ou négatives, d'après le théorème précédent ; si ensuite g, en

comportent 5 éléments, il se trouve qu’il y a aussi deux plus longues chaînes décroissantes de m3me longueur. Nous appelons longueur d’une chaîne y le nombre de

L’existence du morphisme signature est un résultat non triv- ial mais ne peut pas constituer, à elle seule, l’objet d’un développement.. Les applications sont nombreuses, il

On effectue une suite de permutations circulaires sur les chiffres de chaque bloc d₁d₂d₃...d n ,.Lors d'une permutation le dernier chiffre de chaque bloc passe en première position

bloc d1d2d3...dn.Lors d'une permutation le dernier chiffre de chaque bloc passe en première position de ce bloc tandis que les n 1 autres chiffres sont décalés d'un cran ‒ vers