[PDF] SUJET + CORRIGE UE J1MI2013 : Algorithmes et Programmes





Previous PDF Next PDF



Devoir maison 1 - Corrigé

Devoir maison 1 - Corrigé. M2 AIGEME année 2008-2009. Exercice 1. 1. On souhaite écrire une fonction récursive qui calcule le carré d'un entier.



Corrigé de la Fiche de TD Récursivité Exercice 1

Exercice 2 a) Écrire une fonction itérative qui renvoie le reste de la division euclidienne d'un entier a par un entier b en utilisant les soustractions 



SUJET + CORRIGE

UE J1MI2013 : Algorithmes et Programmes Exercice 1 : Récursivité ... Écrire une fonction python récursive terminale combRecAux(np



Corrigés des exercices sur les fonctions récursives

Corrigés des exercices sur les fonctions Exercice 7.1.1 sous-programmes récursifs ... variation qui affecte le paramètre à chaque appel récursif.



Exemples dalgorithmes récursifs 1 Des exercices sur les suites

sce désigne la traduction de l'algorithme 1 sous SCILAB en version récursive à compléter. Ainsi lorsque la mention trous n'est pas présente



Travaux Dirigés dalgorithmique no4

Écrire une fonction récursive qui calcule la somme de nombres de 1 a n si n > 0 et renvoie 0 sinon. Exercice 4. Donner un algorithme récursif pour calculer 



RECURSIVITE Exercices - Corrigés

Récursivité / Exercices / Corrigés. Fénelon Sainte-Marie Comme suggéré en séance faire « tourner un algorithme à la main » est très formateur !



TD dalgorithmique avancée Corrigé du TD 2 : récursivité

Corrigé du TD 2 : récursivité Écrivez un algorithme récursif calculant Fib(n). Fibonacci(n) ... Écrire un algorithme récursif qui calcule pour n > 0



Feuille dexercices dinformatique – Récursivité 2019-2020 Pour

Exercice 6 – Horner : Écrire une version récursive Horner(Lx) de l'algorithme de Horner



Récursivité

´Ecrire une fonction C utilisant un algorithme récursif



Récursivité - mathuniv-lyon1fr

Récursivité 1 Contenududocumentettravailàréaliser – Le documentprésentedes exemples de fonctionsdé?niesdefaçonrécursive – L’objectifestdecomprendrelaprogrammationrécursivedequelquesfonctionspuisdechercheràen écrirepar vous-mêmesquelques-unes



Corrigés des exercices sur les fonctions récursives

Corrigés des exercices sur les fonctions récursives Exercice 7 1 1 sous-programmes récursifs Pour chacun des sous-programmes nous donnerons les paramètres en précisant le paramètre sur lequel porte la récurrence le cas de base (valeur de ce paramètre pour lequel le calcul s’arrête) et la



Searches related to récursivité algorithme exercice corrigé PDF

l’algorithme pour n se termine seulement si l’algorithme se termine pour n+1 Or il n’existe pasd’entier strictement positif pour lesquels l’agorithme s’arrete Exercice 2 : Suite r´ecurente Algorithme Suite(n : entier) : entier d´ebut si n = 0 alors retourner 0 8 sinon retourner 0 6Suite(n?1) ?n si ?n Exercice 3 : Fibonacci

Comment comprendre la programmation récursive de quelques fonctions ?

L’objectif est de comprendre la programmation récursive de quelques fonctions puis de chercher à enécrire par vous-mêmes quelques-unes. Trois exercices sont à rendre (exercices dont le titre est sur fond jaune) dans les casiers numériques devos enseignants pour le 20/01. Une fonction récursive est une fonction qui. s’appelle elle-même.

Quels sont les exercices corrigés ?

Les exercices corrigés suivants concernent le principe d’algorithme récursif, par exemple Fibonacci, les tours de Hanoï et bien d’autres cas mathématiques.

Comment résoudre les appels récursifs ?

S’assurer que, dans les appels récursifs, ..les arguments sont plus "simples" queceux avec lesquels la fonction a été appelée (ce qui signi?e essentiellement qu’ils« évoluent vers le cas de base ») Reconstituer correctement la valeur de retour de la fonction à partir du résultatdu ou des appels récursifs.

Comment calculer une somme récursive?

# La fonction récursive pour le calcul de la somme proprement dit. def sum_sq_inv(n): if n == 1: return 1 else: return 1/n**2 + sum_sq_inv(n-1) # DEBUT DU SCRIPT # ===============

DISVE { LicenceAnn

ee :2011/2012Semestre 2

PARCOURS :Licence LIMI201 & LIMI211

UE J1MI2013 :Algorithmes et Programmes

Epreuve :Devoir Surveille Terminal

Date :Lundi 11 juin 2012

Heure :8 heures 30

Duree :1 heure 30

Documents : non autorises

Epreuve de M. AlainGriffaultSUJET + CORRIGE

Avertissement

{ La plupart des questions sont independantes. { Le sujet est sans doute un peu long. { Les indentations des fonctions ecrites enPython doivent ^etre respectees. { L'espace laisse pour les reponses est susant (sauf si vous utilisez ces feuilles comme brouillon, ce qui est fortement deconseille).QuestionPointsScore

Recursivite9

Le tri par base11

Variante tri rapide10

Complexite10

Total:40

Exercice 1 : Recursivite (9 points)

Le nombre de combinaisonsCpnrepresente le nombre de sous-ensembles de cardinalpd'un ensemble de cardinaln. Il est deni parCpn= 1 sip= 0 ou sip=n, et parCpn=Cp1 n1+Cp n1dans le cas general. Une propriete interessante pour calculer les combinaisons est :Cpn=nCp1 n1p (a) Soit la fonctioncombRec(n,p)ounetpsont deux entiers positifs tels quepn. defcombRec(n,p): if(p == 0orn == p): return1 else: returnncombRec(n1,p1) // p i. (1

1=2points) Completer le tableau suivant pour simuler la pile d'execution lors de l'appel

combRec(7,3).Solution: appels successifs x combRec515 combRec6215 combRec7335 fonctionnpretour? UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012 Soit les fonctionscombRecV2(n,p)etcombRecUV(n,p,u,v)ounetpsont deux entiers positifs tels quepn, etuetvdeux parametres supplementaires. defcombRecUV(n,p,u,v ): if(p == 0orn == p): return1 else: returnncombRecUV(n1,p1,un,vp) // p defcombRecV2(n,p): returncombRecUV(n,p,1 ,1) ii. (1

1=2points) Completer le tableau suivant an de simuler la pile d'execution lors d'un

appel acombRecV2(7,3).Solution: combRecUV514265 combRecUV627315 combRecUV731135 combRecV27335 fonctionnpuvretour? dans le second tableau, la valeur uv lors du dernier appel recursif est egal au resultat nal. C'est donc qu'il est inutile de propager le resultat jusqu'a l'appel initial. Ecrire une fonction python recursive terminalecombRecAux(n,p,u,v)qui calcule le nombre de combinaisonsCpn, et preciser l'appel initial a cette fonction dans une fonction python combRecTerm(n,p).Solution: defcombRecAux(n,p,u,v ): if(p == 0orn == p): returnu // v else: returncombRecAux(n1,p1,un,vp) defcombRecTerm(n,p): returncombRecAux(n,p,1 ,1)(c) (3 points) Ecrire une fonction python iterativecombIter(n,p), deriveeautomatiquementde la fonctioncombRecAux(n,p,u,v)qui calcule le nombre de combinaisonsCpn.Solution: defcombIter (n,p): u = 1 v = 1 whileTrue : if(p == 0orn == p): returnu // v else: # n,p ,u, v = n1,p1,un, vp u = un v = vp n = n1 p = p1Page 2 sur 8 UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012

Exercice 2 : Le tri par base (11 points)

Nous souhaitons trier un tableau de personnes suivant leurs dates de naissance. Nous allons etudier deux approches : La premiere utilise un algorithme de triclassiquequi utilise une fonction de com- paraison de deux personnes; et la seconde est une adaptation de l'algorithme de tri par base qui a

ete beaucoup utilise autrefois pour trier les cartes perforees. Dans la suite, nous supposerons que les

personnes sont stockees sous forme de tableaux. (a) (2 points) Completer la fonction pythonneAvant(P1,P2)de comparaison de deux personnes P1etP2qui retourneVraisiP1est nee avant ou le m^eme jour queP2, etFauxsinon. Cette fonctionneAvant(P1,P2)pourra ^etre utilisee dans n'importe lequel des algorithmes de tri vus en cours pour trier un tableau deNpersonnes suivant leur date de naissance. Il sura

de remplacer les testsT[i]<=T[j]parneAvant(T[i],T[j]).Solution:Trois solutions (un predicat, des branchements, une iteration) parmi d'autres.

# p1 et p2 sont deux tableaux de 3 entiers # p1 [0] et p2 [0] contiennent les jours de naissance # p1 [1] et p2 [1] contiennent les mois de naissance # p1 [2] et p2 [2] contiennent les annees de naissance defneAvant(p1 , p2 ): return((p1 [2]p2 [ i ] : returnFalse returnTrue(b) Le tri par base des dates de naissances de personnes. Denition (rappel) :Un algorithme de tri eststablesi l'ordre des indices de deux valeurs egales est inchange dans le tableau trie. Par exemple siT[5] =T[36] dans le tableau non trie, alors sii etjsont les nouveaux indices deT[5] et deT[36] dans le tableau trie, alorsi < j.

Le tri par base consiste a appliquer une suite de tris stables sur des parties de l'objet a trier. Pour

une date de naissance, il faut eectuer sequentiellement trois trisstables:

1. Trier (avec un tri stable) suivant le jour de naissance.

2. Trier (avec un tri stable) suivant le mois de naissance.

3. Trier (avec un tri stable) suivant l'annee de naissance.

i. (2 points) Soit le tableau suivant de trois personnes avec leurs dates de naissances. indice012 jour142222 mois313 annee200420042001

Page 3 sur 8

UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012 Completer le tableau suivant apres chacune des trois etapes. Solution:Apres le tri stableApres le tri stableApres le tri stable jours de naissancemois de naissanceannees de naissance indice012012012 jour142222221422222214 mois313133313 ii. (2 points) Il est connu que le tri par base n'est pas correct si le tri utilise n'est passtable. Au choix, justier cette armation, ou bien simuler sur l'exemple precedent un tri par

base utilisant le tri par selection.Solution:Par exemple, la derniere etape peut donner avec un tri non stable :

Apres un tripar selection non stable.

indice012 jour221422 mois331 annee200120042004 Ce qui demontre que le tri base doit n'utiliser que des tris stables. iii. (1 point) Donner la liste des tris stables vus en cours.

Solution:

deftriStable (t , clef ): # clef indice le second indice a utiliser pour le tri # N' importe lequel des 3 tris stables suivants peut etre utilise # triInsertion (t , clef ) triBulle (t , clef )

# triFusion (t , clef )iv. (2 points) Completer la fonction pythontriBase(t)pour trier un tableau deNper-

sonnes suivant leurs dates de naissances. Vous pourrez utiliser (sans en donner le code) une fonctiontriStable(t,clef)qui trie un tableauta deux dimensions en fonc- tion des valeurst[i][clef]. Par exemple sitest un tableau de personnes, l'appel triStable(t,1)trie les personnes en fonction des mois de naissances.Solution: deftriBase ( t ): # t [ i ][0] est le jour de naissance de la personne t [ i ] # t [ i ][1] est le mois de naissance de la personne t [ i ] # t [ i ][2] est l 'annee de naissance de la personne t [ i ] forclefinrange (3):

triStable (t , clef )v. (2 points) Donner et justier la complexite de votre algorithmetriBaseen fonction de

l'algorithme de tristableutilise.Solution:Le tri appelle un nombre de fois determine (ici 3) un algorithme de tri

stable. La complexite du tri par base est donc celle du tri stable utilise soit : { (n2) pour les tris par insertion et a bulles. { (nlog2(n)) pour le tri par fusion.Page 4 sur 8 UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012

Exercice 3 : Variante tri rapide (10 points)

(a) (2 points) Justier la validite de la fonction pythonpartitionner(t,g,d)suivante, dans laquelle les iterationsRepeterde l'algorithme 3 du tri rapide vu en cours sont remplacees

par des iterationsTant que.Solution:Les deux structures de programme suivantes sont equivalentes.Algorithm 1Repeter ...jusqu'a1:repeat

2:S

3:untilPAlgorithm 2Tant que ...1:S

2:while:Pdo

3:S

4:end whileAlgorithm 3Partitionner(t,g,d)Condition :0g < dlen(t)1

1:pivot t[g]

2:i g1

3:j d+ 1

4:while true do

5:repeat

6:j j1

7:untilt[j]<=pivot

8:repeat

9:i i+ 1

10:untilt[i]>=pivot

11:ifi < jthen

12:Echange(t;i;j)

13:else

14:returnj

15:end if

16:end while

Garantie :8kj;t[k]pivot

8k > j;t[k]pivot

Complexite :(dg)Algorithm 4TriRapideRec(t,g,d)Condition :0g < dlen(t)1

1:ifg < dthen

2:m Partitionner(t;g;d)

3:TriRapideRec(t;g;m)

4:TriRapideRec(t;m+ 1;d)

5:end if

Garantie :8k2[g;d[;t[k]t[k+ 1]

Complexite :

((dg)log2(dg)); O((dg)2)Algorithm 5TriRapide(t)1:TriRapideRec(t;0;len(t)1)

Complexite :

(nlog2(n));O(n2) avecn=len(t)1defechange(t , i , j ):

2 TMP = t [ i ]

3 t [ i ] = t [ j ]

4 t [ j ] = TMP

5

6defpartitionner (t ,g ,d):

7 pivot = t [ g ]

8 i = g1

9 j = d+1

10whileTrue :11 j= 112whilet [ j ]>pivot :13 j= 114 i += 1

15whilet [ i ]

17ifi

18 echange(t , i , j )

19else:

20returnj

21

22deftriRapideRec (t ,g ,d):

23ifg

24 m = partitionner (t ,g ,d)

25 triRapideRec (t ,g ,m)

26 triRapideRec (t ,m+1,d)

27

28deftriRapide ( t ):

29 triRapideRec (t ,0 , len ( t)1)

Page 5 sur 8

UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012 (b) Soient l'algorithme du drapeau hollandais vu en cours et une ecriture possible en python. Algorithm 6Drapeau(t)Condition :8i2[0;len(t)1];t[i]2[0;2] 1:i 0 2:j i

3:k len(t)1

4:while(jk)do

5:ift[j] = 1then// 1 : Blanc

6:j j+ 1

7:else ift[j] = 0then// 0 : Bleu

8:Echange(t;i;j)

9:i i+ 1

10:j j+ 1

11:else// 2 : Rouge

12:Echange(t;j;k)

13:k k1

14:end if

15:end while

16:returni;j;k

Garantie :8l2[0;i[;t[l] = 0

8l2[i;j[;t[l] = 1

8l2]k;len(t)1];t[l] = 2

Complexite :(n);avecn=len(t)1defdrapeau( t ):

2# t est un tableau de 0, 1 ou 2

3# 0 : Bleu , 1 : Blanc , 2 : Rouge

4 i = 0

5 j = i

6 k = len ( t )1

7whilej<= k:

8ift [ j ] = 1:

9 j += 1

10else:

11ift [ j ] == 0:

12 echange(t , i , j )

13 i += 1

14 j += 1

15else:

16 echange(t , j ,k)

17 k= 1

18returni , j ,k

quotesdbs_dbs13.pdfusesText_19

[PDF] écrire un discours en allemand

[PDF] variable réelle définition économie

[PDF] carte shom pdf

[PDF] instructions nautiques pdf

[PDF] carte marine shom gratuite

[PDF] document sur le système de balisage

[PDF] carte marine méditerranée gratuite

[PDF] les fondements de l'idéologie nazie

[PDF] idéologie nazie définition

[PDF] jeunesses hitlériennes filles

[PDF] l idéologie nazie paragraphe argumenté

[PDF] idéologie nazie pdf

[PDF] l'idéologie nazie paragraphe argumenté

[PDF] idéologie staline

[PDF] idéologie nazie mein kampf