Algorithmes de tri (1/2) Algorithmes de tri (2/2)
|
|
- Pauline Marion
- il y a 7 ans
- Total affichages :
Transcription
1 Algorithmes de tri (1/2) Problématique : étant donné une structure linéaire (tableau, liste, etc) contenant des valeurs d'un type ordonné, il faut trier les éléments en ordre croissant (ou décroissant). Il existe des dizaines d'algorithmes répondant à ce problème, utilisant quelques principes de base auxquels on ajoute des variantes On peut distinguer : les tris internes qui trient les éléments dans la structure qui les contient (tableau, liste,...) ou au pire utilise une structure annexe de même type les tris externes utilisés lorsque la quantité d'éléments à trier est telle qu'ils ne tiennent pas en mémoire vive et qu'il faut stocker des éléments dans des fichiers ou des tables de bases de données 1 Algorithmes de tri (2/2) Propriétés des algorithmes de tri : complexité en temps et en espace stabilité : l'algorithme ne modifie pas l'ordre initial des éléments égaux par comparaison tri sur place ou pas : l'algorithme n'utilise pas de mémoire supplémentaire (hormis éventuellement quelques indices de boucle ou booléens), les éléments sont triés directement dans la structure de données La plupart des algorithmes de tri utilisent la comparaison d'éléments 2 à 2 on montre que le nombre minimum de comparaisons à effectuer est nlog(n) si n est la taille de la structure. Les algorithmes en O(n 2 ) sont donc peu efficaces, ceux au pire en O(nlog(n)) sont optimaux il existe des tris linéaires, mais ils n'utilisent pas la comparaison et sont limités à des cas très particuliers (tris de nombres dont on connait des propriétés statistiques) 2
2 Tri à bulle (1/7) Principe du tri à bulle (bubble sort) : l'élément le plus grand remonte au bout du tableau, comme une bulle de champagne, puis on recommence pour que le deuxième plus grand remonte, etc. L'écriture de l'algorithme s'inspire de l'algorithme séquentiel qui vérifie si un tableau est trié. Algorithme : i désigne la dernière case à traiter fonction sans retour tribulle(entier[] tab){ entier i,j,temp; pour (i allant de tab.longueur-2 à 1 pas -1) faire pour (j allant de 0 à i pas 1) faire si (tab[j] > tab[j+1]) alors temp <- tab[j]; tab[j] <- tab[j+1]; tab[j+1] <- temp; pour pour 3 Tri à bulle (2/7) Exemple : trier en ordre croissant le tableau suivant premier tour de la première boucle (sur i) j=0 j=1 j=2 j=3 j=4 j=5 j=
3 Tri à bulle (3/7) deuxième tour de la première boucle (sur i) troisième tour de la première boucle (sur i) quatrième tour de la première boucle (sur i) Problème : l'algorithme va faire 3 tours supplémentaires de la boucle sur i, inutilement 5 Tri à bulle (4/7) Complexité du tri à bulle en fonction de la taille n du tableau : la remontée du plus grand élément utilise (n-1) comparaisons, la remontée du deuxième plus grand utilise (n-2), etc. La complexité sera donc toujours proportionnelle à (n-1)+(n-2) = n*(n-1)/2 soit O(n 2 ). Le tri à bulle est en place et l'algorithme donné ici est stable (il serait instable si on utilisait au lieu de >) Une amélioration possible du tri bulle consiste à utiliser une variable booléenne drapeau qui permet de stopper le tri si plus aucune permutation n'a lieu 6
4 Tri à bulle (5/7) fonction sans retour tribulle(entier[] tab){ entier i,j,temp; booleen b; b <- faux; i <- tab.longueur-2; tantque ((non b) et (i > 0)) faire b <- vrai; pour (j allant de 0 à i pas 1) faire si (tab[j] > tab[j+1]) alors temp <- tab[j]; tab[j] <- tab[j+1]; tab[j+1] <- temp; b <- faux; pour i <- i-1; tantque Remarques : la complexité au pire et en moyenne reste en O(n 2 ) mais est linéaire au mieux cette amélioration n'est efficace que si le tableau est déjà «un peu» trié et qu'il devient trié «assez vite» 7 Tri à bulle (6/7) Une autre amélioration possible du tri bulle est le tri Boustrophedon (du nom des écritures qui changent de sens à chaque ligne) : on parcourt le tableau de gauche à droite, en faisant remonter l'élément le plus grand on redescend le tableau de droite à gauche, en faisant descendre le plus petit on recommence en ignorant les 2 éléments déjà triés la complexité au pire et en moyenne est toujours en O(n 2 ) mais est réduite du fait qu'on peut exploiter les bonnes positions des petits éléments comme des plus grands 8
5 Tri à bulle (7/7) Tri par la méthode du tri à bulle de tableaux d'entiers générés aléatoirement 9 Tri sélection (1/3) Principe du tri sélection (ou tri par extraction) : on parcourt le tableau pour trouver le plus grand élément, et une fois arrivé au bout du tableau on y place cet élément par permutation. Puis on recommence sur le reste du tableau. Algorithme : i désigne la dernière case à traiter fonction sans retour triselection(entier[] tab){ entier i,j,temp,pg; debut i <- tab.longueur-1; tanque (i > 0) faire pg <- 0; pour (j allant de 0 à i pas 1) faire si (tab[j] > tab[pg]) alors pg <- j; pour temp <- tab[pg]; tab[pg] <- tab[i]; tab[i] <- temp; i <- i-1; tantque 10
6 Tri sélection (2/3) Complexité du tri sélection : à chaque tour de la boucle tantque, on fait i tours de boucle pour. La complexité sera donc dans tous les cas proportionnelle à (n-1)+(n-2) =n*(n-1)/2 et donc en O(n 2 ). Remarque : le tri sélection utilise une variable de plus que le tri bulle pour stocker l'indice du plus grand élément, mais il utilise moins d'instructions (une seule permutation par parcours du tableau) Le tri sélection est en place et l'algorithme donné ici est stable (il serait instable si on utilisait au lieu de >) Le tri sélection peut être amélioré en positionnant à chaque parcours du tableau le plus grand et le plus petit élément, selon le même principe que celui utilisé pour le tri Boustrophédon. dans ce cas, on fera 2 fois moins de tours de boucle tantque (on trie 2 éléments à chaque tour) mais à chaque tour, on effectuera plus d'opérations, la complexité reste donc quadratique mais s'améliore 11 Tri sélection (3/3) Tri par la méthode du tri sélection de tableaux d'entiers générés aléatoirement 12
7 Tri insertion (1/2) Principe du tri insertion : on prend deux éléments qu'on trie dans le bon ordre, puis un 3e qu'on insère à sa place parmi les 2 autres, puis un 4e qu'on insère à sa place parmi les 3 autres, etc. C'est la méthode la plus utilisée pour trier des dossiers, des cartes à jouer,... Algorithme : i représente le nombre d'éléments triés fonction sans retour triinsertion(entier[] tab){ entier i, j, val; debut pour (i allant de 1 à tab.longueur-1 pas 1) faire val <- tab[i]; j <- i; tantque ((j > 0) et (tab[j-1] > val)) faire tab[j] <- tab[j-1]; j <- j-1; tantque tab[j] <- val; pour 13 Tri insertion (2/2) Complexité du tri insertion : au pire, si le tableau est trié en ordre inverse, à chaque tour de la boucle pour, on fait i tours de boucle tantque. La complexité au pire sera donc proportionnelle à (n-1) =n*(n-1)/2 et donc en O(n 2 ). au mieux, si le tableau est déjà trié, on fera une seule comparaison par élément, sans permutation, sauf pour le premier élément. La complexité au mieux est donc proportionnelle à (n-1) et linéaire. en moyenne, chaque élément sera inséré au milieu de ceux déjà triés, le nombre de comparaisons sera donc de 0+1+3/2+...+n/2 soit n*(n+1)/4 et la complexité moyenne est donc en O(n 2 ). Le tri par insertion est en place et l'algorithme donné ici est stable (il serait instable si on utilisait au lieu de >) Remarque : le tri insertion est donc environ 2 fois plus rapide que le tri sélection 14
8 Tris quadratiques Comparaison des tris quadratiques sur des tableaux d'entiers générés aléatoirement 15 Tri rapide (1/5) Principe du tri rapide (quicksort, tri de Hoare) : on prend le premier élément (le pivot), on le met à sa place en plaçant à sa gauche les éléments plus petits que lui et à sa droite les éléments plus grands que lui. Puis on répète l'opération d'une part sur le sous tableau de gauche, d'autre part sur le sous-tableau de droite. Algorithme : on partitionne le tableau autour de la valeur contenue dans la première case, puis on appelle l'algorithme sur chacune des sous-parties. Il nous faut donc : une fonction qui partitionne une certaine section [a,b] du tableau en plaçant au les éléments plus petits que tab[a], puis tab[a], puis les éléments plus grands ou égaux à tab[a] et retourne l'indice de tab[a] dans le tableau partitionné (au départ, a vaudra 0 et b vaudra tab.longueur-1) une fonction de tri proprement dit qui appelle la fonction précédente puis lance des appels récursifs sur les sous-parties 16
9 Tri rapide (2/5) fonction avec retour entier partition(entier[] tab, entier a, entier b){ entier pivot,i,temp; pivot <- a; pour (i allant de a+1 à b pas 1) faire si (tab[i] < tab[pivot]) alors temp <- tab[i]; tab[i] <- tab[pivot+1]; tab[pivot+1] <- tab[pivot]; tab[pivot] <- temp; pivot <- pivot+1; pour return pivot; // cette fonction trie les éléments de tab d'indices compris entre a et b inclus fonction sans retour trirapide(entier[] tab, entier a, entier b){ entier pivot; si (b > a) alors pivot <- partition(tab,a,b); trirapide(tab,a,pivot-1); trirapide(tab,pivot+1,b); 17 Tri rapide (3/5) Exemple d'exécution de la fonction de partitionnement : i=1 et pivot= i=2 et pivot= i=3 et pivot= i=4 et pivot= i=5 et pivot= i=6 et pivot=3 i=7 et pivot= L'indice du pivot retourné est 4 18
10 Tri rapide (4/5) Complexité du tri rapide : la fonction de partitionnement est linéaire de la forme a*n où a est une constante. au mieux, dans le cas où le partitionnement coupe toujours le tableau en deux parties égales (à 1 près), la complexité c(n) de la fonction de tri est telle que c(n) = a*n + 2*c(n/2) + b où b est une constante. Dans ce cas, on a c(n) = O(n*log(n)). au pire, dans le cas où le partitionnement conduit systématiquement à ce qu'une des parties soit vide, la complexité c(n) de la fonction de tri est telle que c(n) = a*n + c(n-1) + b où b est une constante. Dans ce cas, on a c(n) = O(n 2 ). en moyenne, on peut montrer que c(n) = O(n*log(n)). Le tri rapide n'est pas optimum dans tous les cas, mais en moyenne, il est bien plus rapide que les tris quadratiques Le tri rapide est en place, mais l'algorithme donné ici n'est pas stable 19 Tri rapide (5/5) Améliorations possibles : quand le tableau est déjà «un peu trié», il vaut mieux choisir comme pivot l'élément du milieu du tableau, pour équilibrer les parties fonction avec retour entier partition(entier[] tab, entier a, entier b){ entier pivot,i,temp; temp = tab[a]; tab[a] = tab[(a+b)/2]; tab[(a+b)/2] = temp; pivot <- a;... quand le tableau n'est pas «un peu trié», on peut découvrir l'élément médian (tel que la moitié des éléments du tableau sont plus petits, et la moitié plus grands, à 1 près) avec un algorithme linéaire. Cette amélioration assure donc une complexité au pire en O(n*log(n)) au tri rapide. quand les parties à trier sont petites, il peut être plus rapide d'utiliser un tri par sélection pour les trier car ce tri est plus rapide sur de petits tableaux... 20
11 Tri fusion (1/3) Principe du tri fusion : on découpe le tableau en deux, on trie chacune des 2 parties, puis on fusionne les parties triées en respectant l'ordre. Algorithme : il nous faut donc une fonction qui fusionne deux sections contigues du tableau. Le plus simple est d'utiliser des tableaux supplémentaires (mais il est possible de faire du tri fusion en place). une fonction de tri proprement dit qui lance des appels récursifs sur les sousparties puis appelle la fonction précédente 21 Tri fusion (2/3) // cette fonction fusionne les parties de tab d'indices dans [a,b] et [b+1,c], // en supposant que les éléments de ces parties soient triés en ordre croissant. fonction sans retour fusion(entier[] tab,entier a, entier b, entier c){ entier i,j,k; entier[b-a+1] t1; int[c-b] t2; pour (i allant de 0 à t1.longueur-1 pas 1) faire t1[i] <- tab[a+i]; pour pour (j allant de 0 à t2.longueur-1 pas 1) faire t2[j] <- tab[b+1+j]; pour i <- 0; j <- 0; k <- a; tantque (k <= c) faire si (i >= t1.longueur) alors tab[k] <- t2[j]; j <- j+1; sinon si (j >= t2.longueur) alors tab[k] <- t1[i]; i <- i+1; sinon si (t1[i] <= t2[j]) alors tab[k] <- t1[i]; i <- i+1; sinon tab[k] <- t2[j]; j <- j+1; k++; tantque 22
12 Tri fusion (3/3) fonction sans retour trifusion(entier[] tab, entier a, entier b){ si (b>a) alors trifusion(tab,a,(a+b)/2); trifusion(tab,((a+b)/2)+1,b); fusion(tab,a,(a+b)/2,b); Complexité du tri-fusion : la complexité de la fusion est linéaire de la forme a*n où a est une constante la complexité du tri est c(n) = c(n/2) + c(n/2) + a*n + b où b est une constante donc c(n) = O(n*log(n)) dans tous les cas Le tri fusion est donc optimum en complexité, mais généralement, il est moins rapide que le tri rapide, car il duplique le tableau. On peut optimiser le tri en ne dupliquant qu'une des deux parties. Le tri fusion est stable mais la version proposée ici n'est pas en place (il est possible d'en écrire des versions en place) 23 Tris quasilinéaires Comparaison des tris quasilinéaires sur des tableaux d'entiers générés aléatoirement 24
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étail1 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étailintroduction 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étailRecherche 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étailArchitecture 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étailCORRECTION EXERCICES ALGORITHME 1
CORRECTION 1 Mr KHATORY (GIM 1 A) 1 Ecrire un algorithme permettant de résoudre une équation du second degré. Afficher les solutions! 2 2 b b 4ac ax bx c 0; solution: x 2a Solution: ALGORITHME seconddegré
Plus en détailMISE 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étail4. Les structures de données statiques
4. Les structures de données statiques 4.1 Tableaux à une dimension 4.1.1 Introduction Imaginons que dans un programme, nous ayons besoin simultanément de 25 valeurs (par exemple, des notes pour calculer
Plus en détailAlgorithmes 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étail1 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étailProgrammation 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étailAlgorithmique 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étailI. Introduction aux fonctions : les fonctions standards
Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons
Plus en détailInitiation à 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étail1/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étailUniversité Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...
Université Bordeaux 1 table des matières Licence Semestre 3 - Algorithmes et structures de données 1 Dernière mise à jour effectuée le 23 Octobre 2013 Piles et Files Déitions Primitives de piles, exemples
Plus en détailRé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étailDé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étailQuelques 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étailExo7. 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étailBases de données documentaires et distribuées Cours NFE04
Bases de données documentaires et distribuées Cours NFE04 Introduction a la recherche d information Auteurs : Raphaël Fournier-S niehotta, Philippe Rigaux, Nicolas Travers prénom.nom@cnam.fr Département
Plus en détailINITIATION 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étailChapitre 9. Algorithmique. Quelques définitions. L'informatique au lycée. http://ow.ly/36jth
L'informatique au lycée http://ow.ly/36jth On désigne par algorithmique l'ensemble des activités logiques qui relèvent des algorithmes ; en particulier, en informatique, cette discipline désigne l'ensemble
Plus en détailCalcul 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étailARBRES 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étailALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII
ALGORITHMIQUE II NOTION DE COMPLEXITE 1 2 Comment choisir entre différents algorithmes pour résoudre un même problème? Plusieurs critères de choix : Exactitude Simplicité Efficacité (but de ce chapitre)
Plus en détailAlgorithmique 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étailProgrammation Objet - Cours II
Programmation Objet - Cours II - Exercices - Page 1 Programmation Objet - Cours II Exercices Auteur : E.Thirion - Dernière mise à jour : 05/07/2015 Les exercices suivants sont en majorité des projets à
Plus en détailBases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
Plus en détailCours d Informatique
Cours d Informatique 1ère année SM/SMI 2007/2008, Info 2 Département de Mathématiques et d Informatique, Université Mohammed V elbenani@hotmail.com sayah@fsr.ac.ma 2007/2008 Info2, 1ère année SM/SMI 1
Plus en détailFeuille TD n 1 Exercices d algorithmique éléments de correction
Master Sciences, Technologies, Santé Mention Mathématiques, spécialité Enseignement des mathématiques Algorithmique et graphes, thèmes du second degré Feuille TD n 1 Exercices d algorithmique éléments
Plus en détailRepré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étailTravaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation
Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des
Plus en détail1.6- Génération de nombres aléatoires
1.6- Génération de nombres aléatoires 1- Le générateur aléatoire disponible en C++ 2 Création d'un générateur aléatoire uniforme sur un intervalle 3- Génération de valeurs aléatoires selon une loi normale
Plus en détailTP 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étailPROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES
Leçon 11 PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Dans cette leçon, nous retrouvons le problème d ordonnancement déjà vu mais en ajoutant la prise en compte de contraintes portant sur les ressources.
Plus en détailIntroduction à 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étailLicence 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étailLe chiffre est le signe, le nombre est la valeur.
Extrait de cours de maths de 6e Chapitre 1 : Les nombres et les opérations I) Chiffre et nombre 1.1 La numération décimale En mathématique, un chiffre est un signe utilisé pour l'écriture des nombres.
Plus en détailDéfinition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.
Chapitre : Les nombres rationnels Programme officiel BO du 8/08/08 Connaissances : Diviseurs communs à deux entiers, PGCD. Fractions irréductibles. Opérations sur les nombres relatifs en écriture fractionnaire.
Plus en détailQuelques 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étailCours 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étail3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements
3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements Développer une expression consiste à transformer un produit en une somme Qu est-ce qu une somme? Qu est-ce qu un produit?
Plus en détailL exclusion mutuelle distribuée
L exclusion mutuelle distribuée L algorithme de L Amport L algorithme est basé sur 2 concepts : L estampillage des messages La distribution d une file d attente sur l ensemble des sites du système distribué
Plus en détailExercices 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étailSTAGE 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étailFORMULAIRE DE STATISTIQUES
FORMULAIRE DE STATISTIQUES I. STATISTIQUES DESCRIPTIVES Moyenne arithmétique Remarque: population: m xμ; échantillon: Mx 1 Somme des carrés des écarts "# FR MOYENNE(série) MOYENNE(série) NL GEMIDDELDE(série)
Plus en détailRACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.
S Vous n aimez pas la souris Les raccourcis clavier sont là pour vous faciliter la vie! INTRODUCTION : Vous avez du mal à vous habituer à la manipulation de la souris Des solutions existent : les raccourcis
Plus en détailLicence 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étailSouad 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étailUEO11 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étailLogiciel 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étailCHAPITRE 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étail4D v11 SQL Release 5 (11.5) ADDENDUM
ADDENDUM Bienvenue dans la release 5 de 4D v11 SQL. Ce document présente les nouveautés et modifications apportées à cette nouvelle version du programme. Prise en charge de nouvelles plates-formes La release
Plus en détailAdama MBODJI MBODJ.SYSTEM
MBODJ.SYSTEM Tableaux & vecteurs Algorithmes de tris Chaînes de caractères Listes linéaires Piles & Files Arbres Fichiers Je dédie cet ouvrage à mon père Souleymane MBODJI 2 Dédicace... 2 Sommaire... 3
Plus en détailTD3: 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étailCours de Probabilités et de Statistique
Cours de Probabilités et de Statistique Licence 1ère année 2007/2008 Nicolas Prioux Université Paris-Est Cours de Proba-Stat 2 L1.2 Science-Éco Chapitre Notions de théorie des ensembles 1 1.1 Ensembles
Plus en détailMICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C
Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...
Plus en détail6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses
6. Hachage Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses PLAN Définition Fonctions de Hachage Méthodes de résolution de collisions Estimation
Plus en détailAlgorithmique avec Algobox
Algorithmique avec Algobox Fiche 2 Cette fiche est la suite directe de la première. 1. Instructions conditionnelles : 1.1. Reprise de la fiche 1 : Lecture d'un algorithme : ORDINATEUR INTERDIT : Après
Plus en détailManuel 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étailApplication 1- VBA : Test de comportements d'investissements
Application 1- VBA : Test de comportements d'investissements Notions mobilisées Chapitres 1 à 5 du cours - Exemple de récupération de cours en ligne 1ère approche des objets (feuilles et classeurs). Corps
Plus en détailLes 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étailAlgorithmique 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étailArchitecture des ordinateurs TD1 - Portes logiques et premiers circuits
Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice
Plus en détailRepré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étailCHAPITRE VIII : Les circuits avec résistances ohmiques
CHAPITRE VIII : Les circuits avec résistances ohmiques VIII. 1 Ce chapitre porte sur les courants et les différences de potentiel dans les circuits. VIII.1 : Les résistances en série et en parallèle On
Plus en détailLE PROBLEME DU PLUS COURT CHEMIN
LE PROBLEME DU PLUS COURT CHEMIN Dans cette leçon nous définissons le modèle de plus court chemin, présentons des exemples d'application et proposons un algorithme de résolution dans le cas où les longueurs
Plus en détailGroupe 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étailAlgorithmique et programmation : les bases (VBA) Corrigé
PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi
Plus en détailAlgorithmique 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étailAlgorithmique, 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# 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étailCH.6 Propriétés des langages non contextuels
CH.6 Propriétés des langages non contetuels 6.1 Le lemme de pompage 6.2 Les propriétés de fermeture 6.3 Les problèmes de décidabilité 6.4 Les langages non contetuels déterministes utomates ch6 1 6.1 Le
Plus en détailJean-Philippe Préaux http://www.i2m.univ-amu.fr/~preaux
Colonies de fourmis Comment procèdent les colonies de fourmi pour déterminer un chemin presque géodésique de la fourmilière à un stock de nourriture? Les premières fourmis se déplacent au hasard. Les fourmis
Plus en détailCours 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étailConsole IAP Manuel d utilisation
Console IAP Manuel d utilisation Préface Cette application fut un projet lancé à l initiative du service IAP (Industrialisation Automatisation et Projet) de l entreprise SEA TPI, composé de développeurs
Plus en détailDurée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point
03 Mai 2013 Collège Oasis Durée de L épreuve : 2 heures. apple Le sujet comporte 4 pages et est présenté en livret ; apple La calculatrice est autorisée ; apple 4 points sont attribués à la qualité de
Plus en détailChapitre 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étailLes 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étailDévelopper, factoriser pour résoudre
Développer, factoriser pour résoudre Avec le vocabulaire Associer à chaque epression un terme A B A différence produit A+ B A B inverse quotient A B A opposé somme Écrire la somme de et du carré de + Écrire
Plus en détailBaccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé
Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé A. P. M. E. P. Exercice 1 5 points 1. Réponse d. : 1 e Le coefficient directeur de la tangente est négatif et n est manifestement pas 2e
Plus en détailExercices 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étailSystemes d'exploitation des ordinateurs
! " #$ % $ &' ( $ plan_ch6_m1 Systemes d'exploitation des ordinateurs Conception de Systèmes de Gestion de la Mémoire Centrale Objectifs 1. Conception de systèmes paginés 2. Conception des systèmes segmentés
Plus en détailCours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions
Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental
Plus en détailLes différents types de données et leurs opérations de base
Séquence 2 Les différents types de données et leurs opérations de base Contenu Présentation générale... 21 Partie 1 Les 3 familles de données et l'opération d'affectation... 22 1. Les trois familles de
Plus en détailRaisonnement 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étailCorrection TD algorithmique
Affectation Correction TD algorithmique Exercice 1 algo affect1b b 5 a b+1 b 2 Il vaut faire passer la notion de variable et la notion de stockage mémoire. Une variable n a donc pas d historique et à un
Plus en détailINITIATION A L ALGORITHMIQUE INF 102
INITIATION A L ALGORITHMIQUE INF 102 NOTES DE COURS M. DELEST 2007 Université Bordeaux 1 2 Introduction Notion d'algorithme Notion de Complexité Langage de description d'algorithmes 1. Notion d'algorithme
Plus en détailFctsAffines.nb 1. Mathématiques, 1-ère année Edition 2007-2008. Fonctions affines
FctsAffines.nb 1 Mathématiques, 1-ère année Edition 2007-2008 Fonctions affines Supports de cours de mathématiques de degré secondaire II, lien hpertete vers la page mère http://www.deleze.name/marcel/sec2/inde.html
Plus en détailOrdonnancement 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étailProgrammation Linéaire - Cours 1
Programmation Linéaire - Cours 1 P. Pesneau pierre.pesneau@math.u-bordeaux1.fr Université Bordeaux 1 Bât A33 - Bur 265 Ouvrages de référence V. Chvátal - Linear Programming, W.H.Freeman, New York, 1983.
Plus en détailConventions d écriture et outils de mise au point
Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette
Plus en détailRappels 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étailINEX. Informatique en Nuage : Expérimentations et Vérification. Livrable n M1 PARALLÉLISME ET ÉVALUATION
INEX Informatique en Nuage : Expérimentations et Vérification Livrable n M1 PARALLÉLISME ET ÉVALUATION DE PERFORMANCES DES JOINTURES ET SEMI-JOINTURES SUR DES ARCHITECTURES CLOUD Abdeljallil Abajjane Septembre
Plus en détailCours 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étailChapitre 1 : Introduction aux bases de données
Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données
Plus en détail1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2
Série de TD 2 Exercice 2.1 Quel résultat produit le programme suivant? Var val, double : entier ; Val := 231 ; Double := Val * 2 ; Ecrire (Val) ; Ecrire (Double) ;. Exercice 2.2 Ecrire un programme qui
Plus en détailCentre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
Plus en détail