I. Introduction. II. Tri par sélection. III. Tri par insertion. IV. Tri rapide. V. Tri fusion. Algorithmes de tri. Informatique. Cours N 4.

Dimension: px
Commencer à balayer dès la page:

Download "I. Introduction. II. Tri par sélection. III. Tri par insertion. IV. Tri rapide. V. Tri fusion. Algorithmes de tri. Informatique. Cours N 4."

Transcription

1 Informatique. Cours N 4.

2 L ordinateur a l intelligence de celui qui s en sert!!

3 1. Présentation du problème 2. Quelques définitions 3. Calcul de la médiane Trier une liste, ou un tableau à une dimension. En Python : >>>L=[5,2,4,3,1] >>>L.sort() >>>print(l) [1,2,3,4,5] Possible dès lors que l ensemble de ces objets est muni d un ordre total : >>>M=['pcsi','psi','mpsi'] >>>M.sort() >>>print(m) ['mpsi', 'pcsi', 'psi'] Nous allons présenter et comparer ici plusieurs méthodes de tri. A chaque fois : Principe Implémentation Complexité temporelle en évaluant le nombre de comparaisons entre deux élements.

4 1. Présentation du problème 2. Quelques définitions 3. Calcul de la médiane Définition 1.1 Un algorithme de tri permet d organiser une collection d objets selon un ordre déterminé. Les objets à trier doivent pour cela faire partie d une classe munie d une relation d ordre. Les relations d ordre les plus utilisées sont l ordre numérique et l ordre lexicographique. Définition 1.2 Un algorithme de tri est dit en place s il modifie directement la structure qu il est en train de trier. Nécessite que l objet trié soit modifiable. En Python, typiquement une liste. Intérêt principal : complexité en mémoire (ou spatiale) réduite! Définition 1.3 Un algorithme de tri d une liste est dit stable s il conserve la position relative dans la liste des quantités qui sont égales pour la relation d ordre. Exemple : on veut trier la liste de cartes T = [6, 5, 4, 5 ] Si le tri laisse le 5 avant le 5, il s agit d un tri stable, sinon il est instable : si une fois trié, on obtient : T = [4, 5, 5, 6 ], le tri est stable, si une fois trié, on obtient : T = [4, 5, 5, 6 ], le tri est instable.

5 1. Présentation du problème 2. Quelques définitions 3. Calcul de la médiane Pourquoi trier? Par exemple, pour faire des recherches ou encore pour déterminer la : Définition 1.4 Médiane. Soit L = [L[0], L[1],..., L[n 1]] une liste triée contenant n éléments. Lorsque n impair, il existe p N tel que n = 2p + 1, la médiane de L est l élément L[p] Lorsque n est pair, il existe p N tel que n = 2p, la médiane de L est alors la moyenne L[p 1]+L[p] des éléments L[p 1] et L[p] soit : 2 Si la liste L n est pas triée, la médiane de L est définie comme la médiane de la liste obtenue à partir de L en triant L. Si on dispose d une fonction_de_tri pour trier L, on pourra ainsi calculer avec Python : def mediane(l): """ calcule la médiane d'une liste non triée""" L=fonction_de_tri(L) #L'affectation est -elle nécessaire? n=len(l) if n%2==1: #si n=2p+1 return L[n//2] #on renvoie L[p] avec p=n//2 else: return 0.5*(L[n//2-1]+L[n//2]) #si n=2p c'est l'autre

6 3. Terminaison, correction, complexité Principe du tri par sélection : comme pour les photos de classe, on cherche d abord le plus petit élément du tableau que l on échange avec le premier. On applique alors de nouveau cette méthode au sous-tableau restant : recherche (et sélection) d un élément minimal : m permutation avec le premier : m T[0] tri du tableau restant : m tableau restant à trier

7 I. Introduction. 3. Terminaison, correction, complexité Tri par sélection (selection sort) à la main avec T = [, 3, 9, 6] : Que penser du dernier? D où l algorithme...

8 3. Terminaison, correction, complexité Nous avons d abord besoin d une fonction qui calcule imin l indice du minimum de la partie du tableau comprise entre les indices j et n 1. Pour la lisibilité, rédigeons la séparément : def indice_min(t,j): """ retour l'indice du minimum du sous tableau T[j:]""" mini = j for i in range(j+1,len(t)): if T[i]<T[mini]: mini = i return mini Nous pouvons maintenant implémenter facilement le tri par sélection : def tri_selection(t): for k in range(len(t) -1): # le dernier element sera forcement trie imin = indice_min(t,k) if imin!= k: #A quoi ça sert? T[iMin],T[k] = T[k],T[iMin] return T #Par commodité (car T modifié). Ce tri est en place et stable. Ainsi implémenté, un appel direct dans la console donnera : >>> tri_selection([,3,9,6]) [3, 6,, 9]

9 3. Terminaison, correction, complexité Terminaison : évidente car deux boucles for imbriquées. (une pour tri_selection et une pour indice_min) qui, forcément, terminent. On peut aussi vérifier qu il n y a pas de dépassement d indice... Correction. On justifie la validité de la fonction indice_min(t,j) en prouvant par récurrence l invariant suivant : { } A la fin de la i ème itération : T[mini] = min T[l], l j, j + i On justifie la validité de la fonction tri_selection en prouvant par récurrence l invariant suivant : A la fin de la i ème itération (i N ) : T[0 : i] est trié ET k i, T[k] T[i 1]

10 3. Terminaison, correction, complexité Complexité. Il y a une comparaison par itération de la boucle interne (celle de indice_min). Le nombre de comparaisons de données est ainsi avec n = len(t) : n 2 n 1 k=0 i=k+1 n 2 1 = (n 1 k) = (n 1) 2 k=0 (n 1)(n 2) 2 = n(n 1) 2 n2 2 = O(n2 ) Le nombre de comparaisons est donc constant, que ce soit le pire cas, le meilleur cas, ou le cas moyen. Synthèse tri par selection : Complexité meilleur des cas O(n 2 ) cas moyen O(n 2 ) pire des cas O(n 2 ) Coût quadratique (en terme de comparaisons). Avantage : le nombre réduit d échanges effectués (au pire n 1). Il présente un intérêt sur des données coûteuses à déplacer mais aisément comparables.

11 I. Introduction. 3. Terminaison, correction, complexité Tri par insertion (insertion sort) de T = [, 3, 9, 6]. Principe du jeu de carte : Pour mettre 6 à sa place, il a fallu successivement décaler vers la droite le 9 puis le. D où l algorithme...

12 3. Terminaison, correction, complexité Le code Python du tri par insertion peut donc s écrire : def tri_insertion(t): for k in range(1,len(t)): # balayage à partir du 2eme element cle = T[k] # cle represente la valeur a inserer i = k # i represente l'indice ou inserer la cle while i >= 1 and cle < T[i-1] : #insertion dans partie triee T[i] = T[i-1] # decale valeurs d'un rang vers la droite i -= 1 T[i] = cle #Place trouvée : on insere cle a l'indice i return T Comme ce tri se fait en place, le return T de la fin est facultatif mais commode. Il permet par exemple de tester directement notre fonction dans la console : >>> tri_insertion([,3,9,6]) [3, 6,, 9]

13 I. Introduction. Terminaison. Le programme termine car : Une boucle for termine toujours. Dans la boucle while : i est un variant de boucle. Correction. La preuve nécessite 2 invariants de boucle : un pour la boucle for : 3. Terminaison, correction, complexité A la fin de la l ème itération : k 1, l, T[k 1] T[k] un pour la boucle while : A la fin de la j ème itération : k l j, l 1, cle < T[k] Complexité. Le nombre de comparaisons pour un tableau de taille n est : Au pire : n 1 k = k=1 Au mieux : n(n 1) 2 n2 2 = O(n2 ) si liste inversée n 1 1 = n 1 = O(n) si liste déjà triée k=1

14 3. Terminaison, correction, complexité Synthèse tri par insertion : Complexité meilleur des cas O(n) cas moyen O(n 2 ) pire des cas O(n 2 ) Remarques. 1 Notre tri par insertion est en place : sa complexité en espace mémoire est en O(1). 2 C est un tri quadratique (donc peu efficace), cependant, on pourrait démontrer que dans le cas d un petit nombre d éléments à trier, c est le plus rapide en moyenne (hors programme). 3 Il est également très efficace lorsque le tableau est déjà presque trié car en O(n). 4 Ce n est évidemment pas le cas lorsque le tri doit être effectué sur de grands tableaux très «désordonnés».

15 I. Introduction. naïve 3. Terminaison, correction, complexité 4. Tri rapide en place Le tri rapide (quick sort) : tri récursif basé sur une méthode «diviser pour régner». Le principe (récent) est le suivant : Choisir arbitrairement dans le tableau un élément pivot p : p Enlever le pivot de la liste, et segmenter le tableau en deux sous-tableaux l un contenant les éléments strictement plus petits que p, l autre les élements restants supérieurs à p : < p p p Recommencer récursivement avec les tableaux situés à gauche et à droite du pivot, puis rassembler le tout : tri p tri

16 naïve 3. Terminaison, correction, complexité 4. Tri rapide en place Dans ce cours, le pivot p sera le dernier élément de la liste. Appliquons cet algorithme récursif à la main avec T = [6, 5, 2, 1, 3, 4]. On prend pour premier pivot 4, on obtient donc : [2, 1, 3] [4] [6, 5] Puis on prend 3 comme pivot dans la liste de gauche, et 5 dans celle de droite : En continuant ce processus, on obtient : [2, 1] [3] [] [4] [] [5] [6] [] [1] [2] [3] [] [4] [] [5] [6] Exercice d application 1 Décrire l algorithme de tri rapide en pseudo-code puis le traduire en une fonction récursive Python tri_rapide(l) qui renvoie une copie triée de la liste L passée en argument sans modifier cette liste L. Ici ce n est pas un tri en place que nous implémentons...

17 naïve 3. Terminaison, correction, complexité 4. Tri rapide en place Terminaison du tri rapide. Notons n la longueur de la liste à trier. Soit (u p ) la suite des longueurs maximales successives des listes passées en argument de tri_rapide. Reprenons l exemple de T = [6, 5, 2, 1, 3, 4]. On a donc u 0 = 6 puis, avec l algorithme : [2, 1, 3] [4] [6, 5] donc u 1 = 3 A l étape suivante : [2, 1] [3] [] [4] [] [5] [6] donc En continuant ce processus, on obtient : [] [1] [2] [3] [] [4] [] [5] [6] donc Pour tout p, on a u p+1 < u p du pivot, on a retiré un élément : le pivot. u 2 = 2 u 3 = 1 car même si tous les éléments restants sont du même côté La suite (u p ) est une suite strictement décroissante d entiers naturels. Elle ne prend qu un nombre fini de valeurs, ce qui signifie que la fonction récursive tri_rapide n est appelée qu un nombre fini de fois. L algorithme se termine.

18 naïve 3. Terminaison, correction, complexité 4. Tri rapide en place Correction du tri rapide. Par récurrence forte sur la longueur n de la liste passée en argument. Initialisation. Si n = 0 ou n = 1, la liste est déjà triée et la fonction tri_rapide ne la modifie pas. Hérédité. Soit n N, on suppose que, pour toute liste L de longueur inférieure ou égale à n, l appel tri_rapide(l) renvoie une copie triée de L. Soit L une liste de longueur n + 1. Comme n + 1 > 1, on pose p = L[ 1] et on définit deux listes L 1 et L 2 contenant les éléments de L respectivement strictement inférieur à p et supérieur à p. Ainsi L1 et L2 de longueurs inférieures où égale à n car L privée de p ne contient que n éléments. Par conséquent, l hypothèse de récurrence assure que tri_rapide(l 1 ) et tri_rapide(l 2 ) renvoient deux listes triées, l une contenant les éléments strictement plus petit que p et l autre les éléments plus grand que p. Il s ensuit que la liste concaténée tri_rapide(l 1 ) + [p] + tri_rapide(l 2 ) est bien une copie triée de la liste L de longueur n + 1.

19 naïve 3. Terminaison, correction, complexité 4. Tri rapide en place Complexité (en nombre de comparaisons entre les éléments de la liste). La complexité de tri_rapide dépend de la distribution autour du pivot. Notons C(n) le nombre de comparaisons lors d un appel à tri_rapide pour un tableau de longueur n. Si n 2, une fois le pivot choisi, il y a n 1 comparaisons et le tri des deux sous-listes. On obtient donc la relation de récurrence suivante : C(n) = n 1 + C(k) + C(n k 1) où 0 k n 1 avec k le nombre d éléments dans la liste L 1 (et n k 1 éléments dans L2). On peut raisonnablement penser que : le pire des cas correspond à un pivot qui est inférieur à tous les autres éléments du tableau (k = 0) ou supérieur à tous les autres éléments du tableau (k = n 1) le meilleur des cas est celui où les deux sous-tableaux ont à peu près le même nombre d éléments... Vu l algorithme du tri rapide, C(0) = 0 et C(1) = 0

20 naïve 3. Terminaison, correction, complexité 4. Tri rapide en place Étude de la complexité au pire. Au pire, k = 0 ou k = n 1 dans C(n) = n 1 + C(k) + C(n k 1) où 0 k n 1 Avec C(0) = 0 on obtient dans les deux cas : C(n) = C(n 1) + n 1 donc C(n) C(n 1) = n 1 En sommant pour i 1; n, on obtient par télescopage (à gauche) et décalage d indice (à droite) : Or n n n 1 C(i) C(i 1) = (i 1) C(n) C(0) = i i=1 On en déduit finalement i=1 C(0) = 0 et C(n) = n 1 i = i=0 n(n 1) 2 n(n 1) 2 = O(n 2 ) i=0

21 naïve 3. Terminaison, correction, complexité 4. Tri rapide en place Étude de la complexité en moyenne. Hors-programme mais... Le pivot dans la liste triée a autant de chances d être sur chacune des n places : ( ) C(n) = n n 1 (C(k) + C(n k 1)) n k=0 sommes en miroir : n 1 (C(k) + C(n k 1)) = 2 n 1 C(k) k=0 k=0 En multipliant la relation ( ) par n, on obtient ainsi : n 1 n C(n) = 2 C(k) + n (n 1) relation que l on peut aussi écrire au rang précédent n 1 sous la forme : k=0 n 2 (n 1) C(n 1) = 2 C(k) + (n 1) (n 2) k=0 En soustrayant les 2 lignes précédentes, on obtient : n C(n) (n 1)C(n 1) = 2C(n 1) + n (n 1) (n 1) (n 2) n C(n) (n + 1)C(n 1) = 2(n 1) C(n) C(n 1) = 2 n 1 n + 1 n n(n + 1)

22 naïve 3. Terminaison, correction, complexité 4. Tri rapide en place On somme cette relation pour k 1; n. Télescopage à gauche : n k=1 C(k) C(k 1) k + 1 k = n k=1 2 k 1 k(k + 1) puis en on décompose la fraction rationnelle qui intervient côté droit : Ainsi C(n) n + 1 C(0) 1 n ( 4 = k ) k k=1 C(n) ( ) n + 1 = 4 H(n + 1) 1 2H(n) avec H(n) = où C(0) = 0 Or, le cours de Mathématiques 1 nous permet d écrire H(n) = ln(n) + O(1). On en déduit donc : C(n) = 2 ln(n) + O(1) n + 1 d où C(n) 2n ln(n) ( ) La complexité en moyenne du tri rapide est C(n) = O n ln(n) n k=1 1 k (la série harmonique) 1. Qui n a jamais entendu parler de la fameuse constante gamma d Euler?

23 naïve 3. Terminaison, correction, complexité 4. Tri rapide en place Étude de la complexité au meilleur. On obtient pour n impair la relation de récurrence : ( n ) C(n) = n 1 + 2C 2 Commençons par calculer cette complexité en des entiers de la forme 2 K 1. Pour k N, puisque n = 2 k+1 1 est impair et s écrit 2p + 1 avec p = 2 k 1 : C(2 k+1 1) = 2 k C ( 2 k 1 ) et donc C(2 k+1 1) = 2 k C ( 2 k 1 ) Exercice d application 2 Dans le calcul précédent de la complexité au meilleur du tri rapide, on pose pour tout k N, x k = C ( 2 k 1 ) 1 Donner la valeur de x 0, puis, pour k N, une relation entre x k+1 et x k. 2 Démontrer par récurrence que : k N, x k = (k 2)2 k + 2 Ainsi x k = O(k 2 k ) donc C(n) = O(k 2 k ) avec n 2 k c-à-d k log 2 (n). Ca ressemble (mais il reste un peu de travail) à C(n) = O(n log 2 (n))

24 naïve 3. Terminaison, correction, complexité 4. Tri rapide en place Synthèse Tri rapide : Complexité meilleur des cas O(n log(n)) cas moyen O(n log(n)) pire des cas O(n 2 ) Remarques. Force du tri rapide : Complexité en moyenne en O(n log(n)). Le tri rapide est aujourd hui probablement le tri le plus employé au monde! Cette complexité en moyenne en O(nlog(n)) ne peut pas être battue... La complexité au pire du tri rapide est O(n 2 )...mais on peut s adapter.

25 I. Introduction Principe Implémentation naïve Terminaison, correction, complexité Tri rapide en place Tri rapide : comment partitionner en place? Reprenons l exemple du début T = [6, 5, 2, 1, 3, 4] : : trié : pivot : non trié Voici les différentes étapes de la première partition : on compare 6 et 4, 6 est plus grand, c est le premier plus grand, en position 0 ; on le permutera avec le premier élément qu on trouvera plus petit que le pivot ; on compare 5 et 4, 5 est plus grand, (c est le 2ème plus grand, en position 1) : pas d échange car on n a pas encore trouvé d élément plus petit que le pivot ; on compare 2 et 4, 2 est plus petit, on le permute avec le premier plus grand (ici 6) :

26 I. Introduction Principe Implémentation naïve Terminaison, correction, complexité Tri rapide en place Compare 1 et 4, 1 est plus petit, on permute avec le 1er plus grand (qui est 5 ici) : Compare 3 et 4, 3 est plus petit, on permute avec le 1er plus grand (qui est 6 ici) :

27 I. Introduction Principe Implémentation naïve Terminaison, correction, complexité Tri rapide en place Le premier «tri» est terminé, on pose le pivot (ici 4) à sa position, c est à dire à la place du premier plus grand (ici 5) : Le pivot est à sa place. En effet les termes placés avant lui sont strictement inférieurs et les termes placés après lui sont supérieurs. Il reste alors à trier récusrivement les sous-tableaux situés à la gauche et à la droite du pivot.

28 naïve 3. Terminaison, correction, complexité 4. Tri rapide en place Algorithme de tri rapide en place (composé de deux fonctions.) D abord partition(t,debut,fin) prend en arguments un tableau T, un indice de début et un indice de fin. Elle segmente le tableau T[debut :fin] et renvoie l indice de la place du pivot. def partition(t,debut,fin): """ retourne l'indice du pivot dans T[debut:fin] et partitionne """ pivot = T[fin -1] k = debut #place du 1er plus grand for i in range(debut,fin -1): if T[i] < pivot: T[i],T[k] = T[k],T[i] #on échange (parfois pour rien...) k += 1 T[fin -1],T[k] = T[k],T[fin -1] return k Pour T = [6,5,2,1,3,4] partition(t,0,6) renvoie... Mais la liste T a été modifiée et T =... Exercice d application 3 Écrire la fonction principale tri_rapide2(t,debut,fin) qui renvoie trié le tableau T[ debut : fin ] en utilisant la fonction partition. C est une fonction récursive! Ce tri est en place mais il n est pas stable.

29 I. Introduction. 3. Terminaison correction complexité VI. Synthèse Le tri fusion (merge sort) utilise aussi une approche «diviser pour régner» : on partage le tableau de taille n en deux parties de tailles égales (à une unité près lorsque n impair) que l on trie par un appel récursif, puis on fusionne les deux parties triées. Cet algorithme repose donc sur une fonction auxiliaire, la fonction de fusion. liste L1 triée liste L2 triée fusion Notre fonction de fusion prendra en argument deux listes triées L1 et L2 et renverra la liste fusionnée. Remarque. C est possible (mais complexe) de l implémenter en place.

30 3. Terminaison correction complexité VI. Synthèse Phases d empilage et de dépilage des appels récursifs sur un exemple : Détaillons la dernière fusion du schéma précédent pour bien comprendre.

31 I. Introduction. 3. Terminaison correction complexité VI. Synthèse Pour réaliser cette fusion de L1 et L2, on utilise un tableau temporaire M. A l issue de la procédure, le tableau M sera clairement de longueur len(l1) + len(l2). : trié : en cours de tri : non trié

32 I. Introduction Terminaison correction complexité VI. Synthèse

33 I. Introduction Terminaison correction complexité VI. Synthèse 54 Exercice d application 4 1 En s appuyant sur l exemple précédent, proposer en pseudo-code un algorithme qui fusionne deux listes L1 et L2 triée en une liste M triée. 2 Décrire l évolution de l état des variables de cet algorithme lors de son appel sur l exemple ci-dessus.

34 3. Terminaison correction complexité VI. Synthèse fusion(l1,l2) permet de fusionner deux listes triées au préalable en une seule liste triée. def fusion(l1,l2): """ fusionne deux listes triées en une seule liste triée""" M = [None]*(len(L1)+len(L2)) # on initialise la liste temporaire i,j = 0,0 # on initialise les indices de chaque morceau for k in range(len(l1)+len(l2)): #on remplit la liste fusionnee if i == len(l1): # cas ou il ne reste plus que L2 M[k] = L2[j] j += 1 elif j == len(l2): # cas ou il ne reste plus que L1 M[k] = L1[i] i += 1 elif L1[i] <= L2[j]: # on compare les plus petits des 2 listes M[k] = L1[i] i += 1 else: M[k] = L2[j] j += 1 return M On peut tester notre fonction dans la console : >>> fusion([,27,33],[14,16,31,54]) [, 14, 16, 27, 31, 33, 54]

35 3. Terminaison correction complexité VI. Synthèse Remarque La position relative de deux éléments équivalents n est pas modifiée, ce qui permettra d avoir une fonction de tri stable. La fonction principale tri_fusion(t) gère les appels récursifs. Elle prend en argument un tableau T et renvoie une copie triée de T en utilisant la fonction fusion. def tri_fusion(t): if len(t) <2: return T else: L1=tri_fusion(T[:len(T)//2]) #tri de la moitié gauche L2=tri_fusion(T[len(T)//2:]) #tri de la moitié droite return fusion(l1,l2) #on fusionne et on renvoie On peut tester notre fonction dans la console : >>> T = [33,27,,54,16,31,14] >>> tri_fusion(t) [, 14, 16, 27, 31, 33, 54]

36 3. Terminaison correction complexité VI. Synthèse Terminaison des deux fonctions précédentes : fusion et tri_fusion. Il est clair que fusion termine car elle ne fait appel qu à une boucle for. La fonction récursive tri_fusion ne fait rien si le tableau a 0 ou 1 élément. Sinon tri_fusion s appelle elle-même avec des tableaux de taille strictement inférieure : En effet, pour n la longueur de la liste T à trier, en appelant (u p ) la suite définie par u 0 = n et u p la longueur maximale des listes passées en argument de tri_fusion à up+1 l étape p, on a (pour u p pair ou impair) la relation de récurrence u p+1 = 2. Ainsi, tant que u p > 1, up u p + 1 < u p c-à-d u p+1 < u p 2 donc la suite (u p ) est une suite strictement décroissante d entiers naturels. Elle prend un nombre fini de valeurs supérieures ou égales à 1 donc la fonction tri_fusion n est appelée qu un nombre fini de fois. La fonction tri_fusion termine donc.

37 3. Terminaison correction complexité VI. Synthèse Correction. Preuve à envisager pour chacune des deux fonctions fusion et tri_fusion : Pour la fonction fusion, on peut considérer l invariant de boucle suivant : la liste M est triée et les éléments de M sont inférieurs ou égaux aux éléments de L1 et L2 non parcours. Pour tri_fusion, on s en sort (comme pour le tri rapide) grâce à un raisonnement par récurrence forte sur la longueur n de la liste à trier.

38 3. Terminaison correction complexité VI. Synthèse Complexité. Commençons par détailler la complexité de la fonction fusion en nombre de comparaisons des éléments de deux listes triées L1 et L2 de longueurs k et l (avec n = k + l taille du tableau fusionné et k l 1). Le pire des cas est celui où la liste fusionnée M reçoit alternativement un élément de L1 puis un élément de L2. Il y aura dans ce cas k + l 1 = n 1 comparaisons. Le meilleur des cas est celui où tous les éléments d une des listes L1 ou L2 sont inférieurs au minimum de l autre liste (donc à tous les éléments de cette autre liste). Il y aura dans ce cas min(k, l) comparaisons. Dans les deux cas, pour un tableau fusionné M de taille n, on a une complexité en O(n).

39 3. Terminaison correction complexité VI. Synthèse Pour la fonction récursive tri_fusion, en notant C(n) le nombre de comparaisons lors d un appel pour un tableau de longueur n, on obtient la relation de récurrence : ( n ) ( n ) C(n) = C + C + O(n) le O(n) provenant de l appel à fusion. 2 2 Dans le cas particulier où n = 2 p, cette relation devient donc : C(2 p ) = 2C(2 p 1 ) + O(2 p ) ce que l on peut encore écrire en divisant par 2 p C(2 p ) : 2 p = C(2p 1 ) 2 p 1 + O(1) Comme pour la complexité du tri rapide, une sommation pour k 1, p donne : p k=1 C(2 k ) 2 k C(2k 1 ) 2 k 1 = p O(1) k=1 donc par télescopage C(2 p ) 2 p C(20 ) 2 0 = O(p) Il est clair que C(2 0 ) = C(1) = 0 et donc que : C(2p ) 2 p = O(p) puis C(2 p ) = O(p2 p ) soit pour n = 2 p et donc p = log 2 (n) la relation : C(n) = O(n log(n)) Pour passer à n quelconque, il faut justifier la croissance de n C(n) en prouvant, à l aide d une récurrence forte, la propriété P(n) : C(n) C(n + 1). Complexité dans tous les cas en O(n log(n)).

40 3. Terminaison correction complexité VI. Synthèse Synthèse pour le tri fusion : meilleur des cas cas moyen pire des cas Complexité O(n log(n)) O(n log(n)) O(n log(n)) Remarques. 1 Avantage du tri fusion : sa complexité est la même dans tous les cas! Il n y a pas de cas où sa complexité est en O(n 2 ) (comme le pire des cas du tri rapide). 2 Inconvénient du tri fusion présenté ici : ce n est pas un tri en place. 3 Expérimentalement, il est moins bon que le tri rapide!

41 3. Terminaison correction complexité VI. Synthèse

42 3. Terminaison correction complexité VI. Synthèse

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 1 de 46 Algorithmique Trouver et Trier Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 46 Algorithmes et structures de données La plupart des bons algorithmes

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives introduction Chapitre 5 Images récursives http ://univ-tln.fr/~papini/sources/flocon.htm Récursivité http://www.poulain.org/fractales/index.html Image qui se contient elle-même 1 Exemples mathématiques

Plus en détail

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année 2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

Chapitre 7. Récurrences

Chapitre 7. Récurrences Chapitre 7 Récurrences 333 Plan 1. Introduction 2. Applications 3. Classification des récurrences 4. Résolution de récurrences 5. Résumé et comparaisons Lectures conseillées : I MCS, chapitre 20. I Rosen,

Plus en détail

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation Complexité Objectifs des calculs de complexité : - pouvoir prévoir le temps d'exécution d'un algorithme - pouvoir comparer deux algorithmes réalisant le même traitement Exemples : - si on lance le calcul

Plus en détail

Les deux points les plus proches

Les deux points les plus proches MPSI Option Informatique Année 2001, Deuxième TP Caml Vcent Simonet (http://cristal.ria.fr/~simonet/) Les eux pots les plus proches Lors e cette séance, nous allons nous téresser au problème suivant :

Plus en détail

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/??

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/?? Algorithmique I Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr Télécom 2006/07 Algorithmique I 20-09-06 p.1/?? Organisation en Algorithmique 2 séances par semaine pendant 8 semaines. Enseignement

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Quelques Algorithmes simples

Quelques Algorithmes simples Quelques Algorithmes simples Irène Guessarian ig@liafa.jussieu.fr 10 janvier 2012 Je remercie Patrick Cegielski de son aide efficace pour la programmation Java ; la section sur le codage de Huffman a été

Plus en détail

Algorithmes récursifs

Algorithmes récursifs Licence 1 MASS - Algorithmique et Calcul Formel S. Verel, M.-E. Voge www.i3s.unice.fr/ verel 23 mars 2007 Objectifs de la séance 3 écrire des algorithmes récursifs avec un seul test rechercher un élément

Plus en détail

Architecture des Systèmes d Information Architecture des Systèmes d Information

Architecture des Systèmes d Information Architecture des Systèmes d Information Plan... Tableaux et tris I3 - Algorithmique et programmation 1 Rappels Nicol Delestre 2 Tableaux à n dimensions 3 Initiation aux tris Tableaux - v2.0.1 1 / 27 Tableaux - v2.0.1 2 / 27 Rappels : tableau

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun> 94 Programmation en OCaml 5.4.8. Concaténation de deux listes Définissons maintenant la fonction concat qui met bout à bout deux listes. Ainsi, si l1 et l2 sont deux listes quelconques, concat l1 l2 constitue

Plus en détail

Résolution de systèmes linéaires par des méthodes directes

Résolution de systèmes linéaires par des méthodes directes Résolution de systèmes linéaires par des méthodes directes J. Erhel Janvier 2014 1 Inverse d une matrice carrée et systèmes linéaires Ce paragraphe a pour objet les matrices carrées et les systèmes linéaires.

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail

Corrigé des TD 1 à 5

Corrigé des TD 1 à 5 Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un

Plus en détail

CCP PSI - 2010 Mathématiques 1 : un corrigé

CCP PSI - 2010 Mathématiques 1 : un corrigé CCP PSI - 00 Mathématiques : un corrigé Première partie. Définition d une structure euclidienne sur R n [X]... B est clairement symétrique et linéaire par rapport à sa seconde variable. De plus B(P, P

Plus en détail

Cours Informatique Master STEP

Cours Informatique Master STEP Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

Quelques algorithmes simples dont l analyse n est pas si simple

Quelques algorithmes simples dont l analyse n est pas si simple Quelques algorithmes simples dont l analyse n est pas si simple Michel Habib habib@liafa.jussieu.fr http://www.liafa.jussieu.fr/~habib Algorithmique Avancée M1 Bioinformatique, Octobre 2008 Plan Histoire

Plus en détail

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2. Eo7 Calculs de déterminants Fiche corrigée par Arnaud Bodin Eercice Calculer les déterminants des matrices suivantes : Correction Vidéo ( ) 0 6 7 3 4 5 8 4 5 6 0 3 4 5 5 6 7 0 3 5 4 3 0 3 0 0 3 0 0 0 3

Plus en détail

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes. 1 Définitions, notations Calcul matriciel Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes. On utilise aussi la notation m n pour le

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Algorithmique et Programmation

Algorithmique et Programmation École Supérieure d Ingénieurs de Poitiers Gea Algorithmique et Programmation Laurent Signac ii Algorithmique et programmation Gea Table des matières Avant Propos v Structures de données Notion de pointeur..............................................

Plus en détail

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Groupe symétrique. Chapitre II. 1 Définitions et généralités Chapitre II Groupe symétrique 1 Définitions et généralités Définition. Soient n et X l ensemble 1,..., n. On appelle permutation de X toute application bijective f : X X. On note S n l ensemble des permutations

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 4 : Fonctions La construction de fonctions dans un langage de programmation permet aux

Plus en détail

MIS 102 Initiation à l Informatique

MIS 102 Initiation à l Informatique MIS 102 Initiation à l Informatique Responsables et cours : Cyril Gavoille Catherine Pannier Matthias Robine Marc Zeitoun Planning : 6 séances de cours 5 séances de TD (2h40) 4 séances de TP (2h40) + environ

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Raisonnement par récurrence Suites numériques

Raisonnement par récurrence Suites numériques Chapitre 1 Raisonnement par récurrence Suites numériques Terminale S Ce que dit le programme : CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES Raisonnement par récurrence. Limite finie ou infinie d une suite.

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

Programmes des classes préparatoires aux Grandes Ecoles

Programmes des classes préparatoires aux Grandes Ecoles Programmes des classes préparatoires aux Grandes Ecoles Filière : scientifique Voies : Mathématiques, physique et sciences de l'ingénieur (MPSI) Physique, chimie et sciences de l ingénieur (PCSI) Physique,

Plus en détail

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo7. 1.1. Hello world!

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo7. 1.1. Hello world! Exo7 Algorithmes et mathématiques Vidéo partie 1. Premiers pas avec Python Vidéo partie 2. Ecriture des entiers Vidéo partie 3. Calculs de sinus, cosinus, tangente Vidéo partie 4. Les réels Vidéo partie

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

Plus en détail

Initiation à l algorithmique

Initiation à l algorithmique Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Organigramme / Algorigramme Dossier élève 1 SI

Organigramme / Algorigramme Dossier élève 1 SI Organigramme / Algorigramme Dossier élève 1 SI CI 10, I11 ; CI 11, I10 C24 Algorithmique 8 février 2009 (13:47) 1. Introduction Un organigramme (ou algorigramme, lorsqu il est plus particulièrement appliqué

Plus en détail

Continuité et dérivabilité d une fonction

Continuité et dérivabilité d une fonction DERNIÈRE IMPRESSIN LE 7 novembre 014 à 10:3 Continuité et dérivabilité d une fonction Table des matières 1 Continuité d une fonction 1.1 Limite finie en un point.......................... 1. Continuité

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Chp. 4. Minimisation d une fonction d une variable

Chp. 4. Minimisation d une fonction d une variable Chp. 4. Minimisation d une fonction d une variable Avertissement! Dans tout ce chapître, I désigne un intervalle de IR. 4.1 Fonctions convexes d une variable Définition 9 Une fonction ϕ, partout définie

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

SNT4U16 - Initiation à la programmation 2014-2015. TD - Dynamique de POP III - Fichiers sources

SNT4U16 - Initiation à la programmation 2014-2015. TD - Dynamique de POP III - Fichiers sources SNT4U16 - Initiation à la programmation Licence SVT 2 ème année 2014-2015 TD - Dynamique de POP III - Fichiers sources contacts : mathias.gauduchon@univ-amu.fr, melika.baklouti@univ-amu.fr, xavier.giraud@univ-amu.fr,

Plus en détail

Découverte de Python

Découverte de Python Découverte de Python Python est un des langages informatiques au programme des concours à partir de la session 2015. Ce tutoriel vous permettra de vous mettre à peu près à niveau de ce qui a été fait en

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Probabilités sur un univers fini

Probabilités sur un univers fini [http://mp.cpgedupuydelome.fr] édité le 7 août 204 Enoncés Probabilités sur un univers fini Evènements et langage ensembliste A quelle condition sur (a, b, c, d) ]0, [ 4 existe-t-il une probabilité P sur

Plus en détail

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */. Page 1 de 9 MATLAB : COMMANDES DE BASE Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */. Aide help, help nom_de_commande Fenêtre de travail (Command Window) Ligne

Plus en détail

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

Suites numériques 3. 1 Convergence et limite d une suite

Suites numériques 3. 1 Convergence et limite d une suite Suites numériques 3 1 Convergence et limite d une suite Nous savons que les termes de certaines suites s approchent de plus en plus d une certaine valeur quand n augmente : par exemple, les nombres u n

Plus en détail

Coefficients binomiaux

Coefficients binomiaux Probabilités L2 Exercices Chapitre 2 Coefficients binomiaux 1 ( ) On appelle chemin une suite de segments de longueur 1, dirigés soit vers le haut, soit vers la droite 1 Dénombrer tous les chemins allant

Plus en détail

Chapitre 2 Devine mon nombre!

Chapitre 2 Devine mon nombre! Python 3 : objectif jeux Chapitre 2 Chapitre 2 Devine mon nombre! 2.1. Thèmes abordés dans ce chapitre commentaires modules externes, import variables boucle while condition : if... elif... else la fonction

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Recherche opérationnelle Les démonstrations et les exemples seront traités en cours Souad EL Bernoussi Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Table des matières 1 Programmation

Plus en détail

Algorithmique et structures de données I

Algorithmique et structures de données I Algorithmique et structures de données I Riadh Ben Messaoud Université 7 novembre à Carthage Faculté des Sciences Économiques et de Gestion de Nabeul 1ère année Licence Fondamentale IAG 1ère année Licence

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE BACCALAURÉAT GÉNÉRAL SESSION 2012 MATHÉMATIQUES Série S Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE Les calculatrices électroniques de poche sont autorisées, conformément à la

Plus en détail

Algorithmique, Structures de données et langage C

Algorithmique, Structures de données et langage C UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA 75. Un plombier connaît la disposition de trois tuyaux sous des dalles ( voir figure ci dessous ) et il lui suffit de découvrir une partie de chacun d eux pour pouvoir y poser les robinets. Il cherche

Plus en détail

Chapitre 2 Le problème de l unicité des solutions

Chapitre 2 Le problème de l unicité des solutions Université Joseph Fourier UE MAT 127 Mathématiques année 2011-2012 Chapitre 2 Le problème de l unicité des solutions Ce que nous verrons dans ce chapitre : un exemple d équation différentielle y = f(y)

Plus en détail

Rappels sur les suites - Algorithme

Rappels sur les suites - Algorithme DERNIÈRE IMPRESSION LE 14 septembre 2015 à 12:36 Rappels sur les suites - Algorithme Table des matières 1 Suite : généralités 2 1.1 Déition................................. 2 1.2 Exemples de suites............................

Plus en détail

ARBRES BINAIRES DE RECHERCHE

ARBRES BINAIRES DE RECHERCHE ARBRES BINAIRES DE RECHERCHE Table de symboles Recherche : opération fondamentale données : éléments avec clés Type abstrait d une table de symboles (symbol table) ou dictionnaire Objets : ensembles d

Plus en détail

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies Régis Boulet Charlie Demené Alexis Guyot Balthazar Neveu Guillaume Tartavel Sommaire Sommaire... 1 Structure

Plus en détail

CHAPITRE V. Recherche et tri

CHAPITRE V. Recherche et tri Cherchez et vous trouverez,... car qui cherche trouve. Matthieu 7 7-8 et Luc 11 9-10 CHAPITRE V Recherche et tri Objectif. Comprendre les techniques de base pour organiser des données ordonnées. Ce chapitre

Plus en détail

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Examen Médian - 1 heure 30

Examen Médian - 1 heure 30 NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une

Plus en détail

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12 Probabilités. I - Rappel : trois exemples. Exemple 1 : Dans une classe de 25 élèves, il y a 16 filles. Tous les élèves sont blonds ou bruns. Parmi les filles, 6 sont blondes. Parmi les garçons, 3 sont

Plus en détail

Probabilités sur un univers fini

Probabilités sur un univers fini [http://mp.cpgedupuydelome.fr] édité le 10 août 2015 Enoncés 1 Proailités sur un univers fini Evènements et langage ensemliste A quelle condition sur (a,, c, d) ]0, 1[ 4 existe-t-il une proailité P sur

Plus en détail

Programmation linéaire

Programmation linéaire 1 Programmation linéaire 1. Le problème, un exemple. 2. Le cas b = 0 3. Théorème de dualité 4. L algorithme du simplexe 5. Problèmes équivalents 6. Complexité de l Algorithme 2 Position du problème Soit

Plus en détail

La boucle for La boucle while L utilisation du if else. while (condition) { instruction(s) }

La boucle for La boucle while L utilisation du if else. while (condition) { instruction(s) } VI Initiation à la programmation sous Comme nous l avons constaté tout au long du document, offre de nombreuses fonctionnalités En tant que nouvelles utilisateurs de il vous est désormais PRESQUE possible

Plus en détail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Correction de l examen de la première session

Correction de l examen de la première session de l examen de la première session Julian Tugaut, Franck Licini, Didier Vincent Si vous trouvez des erreurs de Français ou de mathématiques ou bien si vous avez des questions et/ou des suggestions, envoyez-moi

Plus en détail

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples, Non-linéarité Contexte Pour permettre aux algorithmes de cryptographie d être sûrs, les fonctions booléennes qu ils utilisent ne doivent pas être inversées facilement. Pour cela, elles doivent être très

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4 1 Introduction 1-1 Chaîne de développement Algorithm e C+ + Algorigramm e languag e machine binaire Le programme est écrit à l aide de Multiprog sous forme d algorigramme puis introduit dans le microcontrôleur

Plus en détail

Résolution d équations non linéaires

Résolution d équations non linéaires Analyse Numérique Résolution d équations non linéaires Said EL HAJJI et Touria GHEMIRES Université Mohammed V - Agdal. Faculté des Sciences Département de Mathématiques. Laboratoire de Mathématiques, Informatique

Plus en détail

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé. Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé. L usage d une calculatrice est autorisé Durée : 3heures Deux annexes sont à rendre avec la copie. Exercice 1 5 points 1_ Soit f la

Plus en détail

Fibonacci et les paquerettes

Fibonacci et les paquerettes Fibonacci et les paquerettes JOLY Romain & RIVOAL Tanguy Introduction Quand on entend dire que l on peut trouver le nombre d or et la suite de Fibonacci dans les fleurs et les pommes de pin, on est au

Plus en détail

Les algorithmes de base du graphisme

Les algorithmes de base du graphisme Les algorithmes de base du graphisme Table des matières 1 Traçage 2 1.1 Segments de droites......................... 2 1.1.1 Algorithmes simples.................... 3 1.1.2 Algorithmes de Bresenham (1965).............

Plus en détail

avec des nombres entiers

avec des nombres entiers Calculer avec des nombres entiers Effectuez les calculs suivants.. + 9 + 9. Calculez. 9 9 Calculez le quotient et le rest. : : : : 0 :. : : 9 : : 9 0 : 0. 9 9 0 9. Calculez. 9 0 9. : : 0 : 9 : :. : : 0

Plus en détail

Propagation sur réseau statique et dynamique

Propagation sur réseau statique et dynamique Université de la Méditerranée UFR Sciences de Luminy Rapport de stage informatique pour le Master 2 de Physique, Parcours Physique Théorique et Mathématique, Physique des Particules et Astroparticules.

Plus en détail

Ordonnancement temps réel

Ordonnancement temps réel Ordonnancement temps réel Laurent.Pautet@enst.fr Version 1.5 Problématique de l ordonnancement temps réel En fonctionnement normal, respecter les contraintes temporelles spécifiées par toutes les tâches

Plus en détail

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

Plus en détail

ÉPREUVE COMMUNE DE TIPE 2008 - Partie D

ÉPREUVE COMMUNE DE TIPE 2008 - Partie D ÉPREUVE COMMUNE DE TIPE 2008 - Partie D TITRE : Les Fonctions de Hachage Temps de préparation :.. 2 h 15 minutes Temps de présentation devant le jury :.10 minutes Entretien avec le jury :..10 minutes GUIDE

Plus en détail

TRIGONOMETRIE Algorithme : mesure principale

TRIGONOMETRIE Algorithme : mesure principale TRIGONOMETRIE Algorithme : mesure principale Déterminer la mesure principale d un angle orienté de mesure! 115" Problèmatique : Appelons θ la mesure principale, θ et! 115" sont deux mesures du même angle,

Plus en détail