Opérations ensemblistes [cx04] - Exercice

publicité
Opérations ensemblistes [cx04] - Exercice
Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner
Unisciel
algoprog
Version 24 octobre 2016
Table des matières
1 Représentation d’un ensemble
1.1 Type Ensemble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Procédures utilitaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2
2
2 Appartenance
2.1 Ensembles non triés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Ensembles triés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Procédure de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
3
4
3 Union
3.1 Ensembles non triés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Ensembles triés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Procédure de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
5
6
4 Intersection
4.1 Ensembles non triés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Ensembles triés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Procédure de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
7
7
8
5 Différence
5.1 Ensembles non triés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Ensembles triés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Procédure de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
9
9
10
alg - Opérations ensemblistes (TD)
Mots-Clés Complexité des algorithmes Requis Axiomatique impérative sauf Fichiers, Récursivité des actions Difficulté • • ◦ (4 h) 1
Unisciel algoprog – Opérations ensemblistes [cx04]
2
Objectif
Cet exercice réalise les opérations ensemblistes (union, intersection, différence), les ensembles étant représentés par des tableaux. Certains ensembles seront triés et d’autres
pas. Toutes les solutions proposées doivent être récursives.
Unisciel algoprog – Opérations ensemblistes [cx04]
1
1.1
3
Représentation d’un ensemble
Type Ensemble
Définissez la constante MAXELEMS=100 (taille maximale des tableaux), le type Element
équivalent à un entier et le type Ensemble, structure mémorisant :
• Un tableau elems de taille maximale MAXELEMS contenant les Element.
• Un entier taille stockant le nombre effectif d’éléments de l’ensemble.
Écrivez une procédure initialiserEns(A) qui initialise un Ensemble A à l’ensemble
vide.
Écrivez une fonction ieme(A,k) qui renvoie le k-eme Element d’un Ensemble A.
Écrivez une procédure ajouterEns(A,x) qui ajoute un Element x à un Ensemble A.
Écrivez une procédure afficherEns(A) qui affiche les éléments d’un Ensemble A.
1.2
Procédures utilitaires
Écrivez une procédure creerEns1(A) qui crée un Ensemble A avec les éléments {1,6,7}.
Écrivez une procédure creerEns2(A) qui crée un Ensemble A avec les éléments {1,3,4,7,10,12}.
...(suite page suivante)...
Unisciel algoprog – Opérations ensemblistes [cx04]
2
4
Appartenance
Objectif
Cette section réalise un algorithme Appartenance(A,x) qui teste et renvoie Vrai si un
élément x appartient à un Ensemble A, Faux sinon.
2.1
Ensembles non triés
Dans le cas des Ensembles non triés,
Écrivez un tel algorithme appartientSeq(A,x).
Aide méthodologique
Écrivez une fonction récursive appartientSeqRec(A,k,x).
Quelle est sa complexité pire-cas en nombre de comparaisons ?
2.2
Ensembles triés
Dans le cas des Ensembles triés (dans l’ordre croissant),
Écrivez un tel algorithme appartientLin(A,x).
Aide méthodologique
Écrivez une fonction récursive appartientLinRec(A,k,x).
Quelle est sa complexité pire-cas en nombre de comparaisons ?
Pour améliorer votre algorithme, écrivez un algorithme appartientDicho(A,x) qui utilise
une recherche dichotomique.
Unisciel algoprog – Opérations ensemblistes [cx04]
5
Aide méthodologique
Écrivez une fonction récursive appartientDichoRec(A,inf,sup,x).
Quelle est la complexité de votre nouvel algorithme ?
2.3
Procédure de test
Écrivez une procédure test_appartient qui crée un Ensemble A puis teste les procédures.
...(suite page suivante)...
Unisciel algoprog – Opérations ensemblistes [cx04]
3
6
Union
Objectif
Cette section réalise un algorithme Union(A,B,C) qui calcule l’union C des ensembles A
et B qui lui sont passés en paramètre. Dans les études de complexité, on notera n (resp.
m) le nombre d’éléments de l’ensemble A (resp. B).
3.1
Ensembles non triés
Dans le cas des Ensembles non triés,
Écrivez un tel algorithme unionSeq(A,B,C).
Aide méthodologique
Écrivez une procédure récursive unionSeqRec(A,B,k,C).
Quelle est sa complexité ?
3.2
Ensembles triés
Dans le cas des des Ensembles triés (dans l’ordre croissant),
Écrivez un tel algorithme unionLin(A,B,C).
Aide méthodologique
Écrivez une procédure récursive unionLinRec(A,j,B,k,C).
Unisciel algoprog – Opérations ensemblistes [cx04]
7
Quelle est sa complexité pire-cas ?
3.3
Procédure de test
Écrivez une procédure test_union qui crée deux Ensemble nommés A et B puis teste les
procédures d’union dans un Ensemble C. Affichez l’ensemble C à l’issu de chacune des
procédures.
...(suite page suivante)...
Unisciel algoprog – Opérations ensemblistes [cx04]
4
8
Intersection
Objectif
Cette section réalise un algorithme Intersection(A,B,C) qui calcule l’intersection C des
ensembles A et B qui lui sont passés en paramètre. Dans les études de complexité, on
notera n (resp. m) le nombre d’éléments de l’ensemble A (resp. B).
4.1
Ensembles non triés
Dans le cas des des Ensembles non triés,
Écrivez un tel algorithme interSeq(A,B,C).
Aide méthodologique
Écrivez une procédure récursive interSeqRec(A,B,k,C).
Quelle est sa complexité pire-cas ?
4.2
Ensembles triés
Dans le cas des des Ensembles triés (dans l’ordre croissant),
Écrivez un tel algorithme interLin(A,B,C).
Aide méthodologique
Écrivez une procédure récursive interLinRec(A,j,B,k,C).
Unisciel algoprog – Opérations ensemblistes [cx04]
9
Quelle est sa complexité pire-cas ?
4.3
Procédure de test
Écrivez une procédure test_inter qui crée deux Ensemble nommés A et B puis teste les
procédures d’intersection dans un Ensemble C. Affichez l’ensemble C à l’issu de chacune
des procédures.
...(suite page suivante)...
Unisciel algoprog – Opérations ensemblistes [cx04]
5
10
Différence
Objectif
Cette section réalise un algorithme Difference(A,B,C) qui calcule la différence C des
deux ensembles A et B qui lui sont passés en paramètre. (La différence de A et de B,
notée A \ B est l’ensemble des éléments de A n’appartenant pas à B. Attention, la
différence n’est pas symétrique.) Dans les études de complexité, on notera n (resp. m) le
nombre d’éléments de l’ensemble A (resp. B).
5.1
Ensembles non triés
Dans le cas des des Ensembles non triés,
Écrivez un tel algorithme diffSeq(A,B,C).
Aide méthodologique
Écrivez une procédure récursive diffSeqRec(A,j,B,C).
Quelle est sa complexité pire-cas ?
5.2
Ensembles triés
Dans le cas des des Ensembles triés (dans l’ordre croissant),
Écrivez un tel algorithme diffLin(A,B,C).
Aide méthodologique
Écrivez une procédure récursive diffLinRec(A,j,B,k,C).
Unisciel algoprog – Opérations ensemblistes [cx04]
11
Quelle est sa complexité pire-cas ?
5.3
Procédure de test
Écrivez une procédure test_diff qui crée deux Ensemble nommés A et B puis teste les
procédures de différence dans un Ensemble C. Affichez l’ensemble C à l’issu de chacune
des procédures.
Téléchargement