Fermat 06/07 - PCSI 1 Khôlle de Maple 08
Ensembles et Dénombrements
Dans ce qui suit nous utiliserons trois façons de représenter des parties d’un ensemble E= [|1, n|]
•Listes de type σ.
Toute partie deF ⊂ E se caractérise par la donnée de sa fonction caractéristiqueχF.
On note alorsσF la liste MAPLE[χF(1), . . . , χF(n)]. Celle-ci caractérise complètement la partieF.
Exemple: lorsqueE = [|1,5|] etF={1,3,4} on aσF = [1,0,1,1,0]
•Listes de type δ.
Toute partie deF est caractérisée par les étiquettes de ses objets. On note alorsδF = [i1, . . . , ip]la liste MAPLE correspondant à la partieF:={ai1, . . . , aip}deE :={a1, . . . , an}
Exemple: lorsqueE = [|1,5|] etF={1,3,4} on aδF = [1,3,4]
•Listes de type γ.
Pour caractériser les classesA1, . . . , Akd’unek-partition deE(voir exercice 4) on associe à chaque élément deE sa classe et on résume ceci sous forme d’une listeγ= [c1, c2, . . . , cn]oùcp correspond à la classe du p-ième élément deE.
Exemple: lorsqueE = [|1,5|] et E={1,4}
| {z }
A1
∨ {3}
|{z}
A2
∨ {2,5}
| {z }
A3
alorsγ= [1,3,2,1,3]
Exercice 1. [Préliminaires]
a)Ecrire une procédure ensqui prend en argument la listeEdes objets deE et une listef de typeσet renvoi la partie deE correspondant àf.
Exemple:
ens([a, b, c, d],[0,1,0,1])−−−−→ {b, d}renvoi
b) Ecrire une procédure ens2qui prend en argument la liste E des objets deE et une listef de typeδ et renvoi la partie deE correspondant àf.
Exemple:
ens2([a, b, c, d],[1,3])−−−−→ {a, c}renvoi
c) Ecrire une procédureens3 qui prend en argument la listeE des objets deE, une liste f de typeγ et une classepet renvoi la partie deE correspondant à la p-ième classe.
Exemple:
ens3([a, b, c, d, e],[1,3,1,2,3],3)−−−−→ {b, e}renvoi
d) Ecrire une procédure ou une instruction colleprenant un nombre a et une séquence [u1, . . . , un] en argument et renvoyant la séquence[a, u1, . . . , un]
e)Etendre cet algorithme à un ensemble de séquences{s1, . . . , sp}
a et {s1, . . . , sp}−−−−−→ {colle(a, sdevient 1), . . . , colle(a, sp)}
indication: On pourra utiliser la commandemap2
A partir de l’exercice 2, on tachera d’écrire des procédures récursives et on pourra utiliser la commande options remember
1
Fermat 06/07 - PCSI 1 Khôlle de Maple 08
Exercice 2. [Parties]
a) Ecrire une procédure parties prenant en argument un entiern et renvoyant l’ensemble des listes de typeσcorrespondant aux parties de[|1, n|]
Exemple:
parties(2)−−−−→renvoi n
[0,0],[0,1],[1,0],[1,1]o
b) Ecrire une procédure ou une instruction donnant l’ensemble des parties d’un ensemble E, dont on connaît la listeE des éléments.
E= [a, b]−−−−→donne n
{},{a},{b},{a, b}o
Exercice 3. [Combinaisons]
a) Ecrire une procédurecombinaisonprenant en argument deux entiersnet p, renvoyant l’ensembledes listes de typeδcorrespondant auxp-parties de[|1, n|]
Exemple:
combinaison(4,2)−−−−→renvoi n
[2,1],[3,1],[3,2],[4,1],[4,2],[4,3]
o
b) Ecrire une procédure ou une instruction donnant l’ensemble desp-parties d’un ensemble E, dont on connaît la listeE des éléments.
Exemple:
p= 2 et E= [a, b, c]−−−−→donne n
{a, b},{a, c},{b, c}
o
Exercice 4. [k-partitions]
Etant donné un ensembleE, on dit que les partiesA1, . . . , Ak forment unek-partition deE lorsque E=A1∨. . .∨Ak
On noteSnk le nombre de ces k-partitions.
a) Ecrire une procédure partition prenant en argument deux entiers n et k, renvoyant l’ensemble des listes de typeγ correspondant auxk-partitions de[|1, n|].
Exemple:
partition(4,3)−−−−→renvoi n
[3,2,1,1],[3,1,2,1],[3,2,2,1],[1,3,2,1],[2,3,2,1],[3,3,2,1]
o
b) Ecrire une procédurep_classesqui prend en argument une listeE et un entierket qui renvoie sous forme de tableau lesk-partitions deE (dont les éléments sont donnés parE)
Exemple:
p_classes([a, b, c, d],3)−−−−→renvoi
{d, c} {b} {a}
{d, b} {c} {a}
{b, c} {d} {a}
{d, a} {b} {c}
{c, a} {b} {d}
{a, b} {d} {c}
c) Sachant queSnk =Sn−1k−1+kSn−1k .
Ecrire une procédureStirlingprenant en argumentnetket renvoyant la valeurSkn. Mettre les résultats sous forme de tableau.
2