• Aucun résultat trouvé

/30 /20

N/A
N/A
Protected

Academic year: 2022

Partager "/30 /20 "

Copied!
11
0
0

Texte intégral

(1)

Licence de Mathématiques et Informatique Université de Perpignan Via Domitia Semestre 2

Algorithmique

Devoir du printemps 2017

NOM : Prénom : Groupe TD :

Modalités : Répondre uniquement dans les cadres prévus à cet effet.

Total :

/30 /20

Exercice 1.(24 points)

/24

On veut calculer la somme des entiers pairs compris entre deux entiers positifs donnésaetb; les extrémités aetbsont comptées le cas échéant. Sia > b, on convient que cette somme vaut0.

1. Ecrire une fonction itératives1qui utilise une boucleforpour calculer cette somme.

/1

2. Ecrire un algorithme qui effectue le traitement suivant : (a) demander à l’utilisateur 2 entiersaetb,

(b) utiliser la fonctions1pour calculer la somme des nombres pairs compris entreaetb, (c) affichera,bet la somme des valeurs paires entreaetb.

/1

(2)

3. Ecrire une autre fonction itératives2qui utilise une bouclewhilepour calculer cette somme.

/1

4. Quelle sont les complexités (en temps) asymptotiques de ces solutions itératives ? Justifier votre ré-

ponse.

/1

5. On va écrire une première version récursiver1de ce calcul sans utiliser de stratégie diviser pour régner.

(a) Que penser de ce calcul sia > b? En déduire une propriété qui termine ce calcul récursif.

/1

(b) On suppose queaest pair. Ecrire une propriété récursive surr1.

/1

(c) Même question pouraimpair.

/1

(3)

(d) Ecrire la fonction récursiver1.

/1

6. Ecrire un algorithme qui effectue le traitement suivant : (a) demander à l’utilisateur 2 entiersaetb,

(b) utiliser la fonctionr1pour calculer la somme des nombres pairs compris entreaetb, (c) affichera,bet la somme des valeurs paires entreaetb.

/1

7. (a) Détailler l’évolution de la pile des appels du calcul parr1poura= 2etb= 5.

/1

(b) Même question poura= 1etb= 6.

/1

(4)

8. Quelle est la complexité (en temps) asymptotique de la fonctionr1? Justifier votre réponse.

/1

9. On va maintenant écrire une version récursiver2 qui utilise une stratégie diviser pour régner pour calculer la somme des valeurs paires comprises entrea etb. On convient que les intervalles [a, a] et [a, a+ 1]contiennent respectivement une et deux valeurs entières.

(a) Que penser de ce calcul sia > b?

/1

(b) Que penser de ce calcul siaest pair et que l’intervalle[a, b]ne contient que 1 ou 2 valeurs ?

/1

(c) Que penser de ce calcul siaest impair et que l’intervalle[a, b]ne contient que 1 ou 2 valeurs ?

/1

(d) Expliciter comment appliquer une stratégie diviser pour régner pour calculerr2.

/1

(e) En déduire l’en-tête d’une telle fonctionr2.

/1

(f) Expliciter une propriété qui permet de terminer ce calcul récursif.

/1

(g) Ecrire la fonction récursiver2.

/1

(5)

(h) Ecrire un algorithme qui effectue le traitement suivant : i. demander à l’utilisateur 2 entiersaetb,

ii. utiliser la fonctionr2pour calculer la somme des nombres pairs compris entreaetb, iii. affichera,bet la somme des valeurs paires entreaetb.

/1

10. (a) Détailler l’évolution de la pile des appels du calcul parr2poura= 2etb= 5.

/1

(b) Même question poura= 1etb= 6.

/1

11. (a) Quelle est la complexité (en temps) asymptotique de la fonctionr2? Justifier votre réponse.

/1

(6)

(b) Que penser der1etr2.

/1

Exercice 2.(21 points)

/21

1. (a) Écrire une fonctionmin2qui calcule le minimum de 2 entiers.

/1

(b) Écrire l’en-tête d’une fonctionminItqui calcule le minimum des valeurs d’un tableau d’entierst

de longueurnarbitraire.

/1

(c) Ecrire un algorithme qui effectuedans l’ordreles traitements suivants : i. génère un tableaut8composé des entiers (positifs) de 0 à 7 ; ii. génère un tableauq8composé des entiers (négatifs) de -8 à 0 ; iii. utilise la fonctionminItpour calculer le minimum det8;

iv. utilise la fonctionminItpour calculer le minimum deq8; v. affiche ses 2 minimas.

/1

(7)

2. (a) Écrire une version itérative deminItqui utilise une bouclefor.

/1

(b) Quelle est la complexité (en temps) asymptotique de cette solution itérative ? Justifier votre ré-

ponse.

/1

(c) Écrire une version itérative deminItqui utilise une bouclewhile.

/1

(d) Quelle est la complexité (en temps) asymptotique de cette autre solution itérative ? Justifier votre

réponse.

/1

(e) Quelle est la solution itérative préférable ? Justifier votre réponse.

/1

(8)

3. (a) Identifier une propriété récursive entre la valeur minimale présente dans un tableau d’entierstde longueurnet un sous-tableau de longueurn−1extrait det. Le cas terminal sera explicité et la fonc-

tionmin2sera utilisée.

/1

(b) Utiliser cette propriété pour écrire l’en-tête d’une fonction récursiveminRecqui calcule le minimum des valeurs d’un tableau d’entierstde longueurnarbitraire.

/1

(c) Ecrire une fonction récursiveminRecqui calcule le minimum des valeurs d’un tableau d’entierst de longueurnarbitraire. Cette version utilisera la fonctionmin2et profitera de Python qui permet de manipuler des tranches de tableauxt[i:j]: sii≥j, la tranche de tableaut[i:j]est vide et sinont[i:j] = [t[i], t[i+1], ..., t[j-1]].

/1

(9)

(d) Dans les mêmes conditions que précédemment et en particulier sans utiliser de division pour régner, écrire une autre fonction récursiveminRec2qui calcule le minimum des valeurs d’un tableau d’en-

tierstde longueurnarbitraire.

/1

(e) Ré-écrire une des deux fonctions précédentes sans utiliser la fonctionmin2.

/1

4. On va écrire une version récursiveminDCbasée sur une stratégie diviser pour régner dichotomique.

(a) Identifier 2 cas terminaux de ce calcul ; l’un d’eux peut encore utiliser la fonctionmin2.

/1

(10)

(b) Expliquer le principe de la fonctionminDCafin d’en déduire les paramètres nécessaires.

/1

(c) Ecrire l’en-tête de la fonctionminDC.

/1

(d) Utiliser la fonctionminDCpour calculerpuisafficher les minimas des tableauxt8etq8.

/1

(e) Ecrire la fonctionminDC.

/1

(f) Combien d’appels àminDC sont nécessaires pour calculer le minimum de t8? Justifier votre ré-

ponse.

/1

(11)

(g) Combien d’appels àminDCsont nécessaires pour calculer le minimum d’un tableau de longueur 7 ?

et d’un tableau de longueur 10 ? Justifier vos réponses.

/1

(h) Quelle est la complexité (en temps) asymptotique de la fonctionminDC? Justifier votre réponse.

/1

Références

Documents relatifs

Exercice 2 Une entreprise fabrique chaque mois x tonnes d’un certain produit, avec x appartenant à l’intervalle ]0 ; 6].. À l’aide de la

[r]

Entraînement Complète les pointillés et calcule les longueurs demandées.. Le triangle ABC est rectangle

On cherche 0 sur la 1 re ligne du tableau et on lit son image sur la 2 de ligne.. Donne un encadrement de l’antécédent

On cherche 0 sur la 1 re ligne du tableau et on lit son image sur la 2 de ligne.. Donne un encadrement de l’antécédent

On cherche 0 sur la 1 re ligne du tableau et on lit son image sur la 2 de ligne.. Donne un encadrement de l’antécédent

[r]

[r]