Tableaux et tris. as Architecture des Systèmes d Information. I3 - Algorithmique et programmation. Nicolas Delestre

Documents pareils
Architecture des Systèmes d Information Architecture des Systèmes d Information

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

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

1 Recherche en table par balayage

Jean-Philippe Préaux

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

4. Les structures de données statiques

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Plan du cours Cours théoriques. 29 septembre 2014

Bases de programmation. Cours 5. Structurer les données

ARBRES BINAIRES DE RECHERCHE

Cours Informatique Master STEP

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Chapitre 5 : Flot maximal dans un graphe

Adama MBODJI MBODJ.SYSTEM

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

Introduction à MATLAB R

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

La classification automatique de données quantitatives

Algorithmique, Structures de données et langage C

Algorithmes récursifs

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

Initiation à la programmation en Python

Programmation linéaire

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


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

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

Algorithmique et Programmation

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)

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Chap III : Les tableaux

Les deux points les plus proches

Recherche dans un tableau

Algorithmique I. Algorithmique I p.1/??

Corrigé des TD 1 à 5

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Bases de données documentaires et distribuées Cours NFE04

Quelques algorithmes simples dont l analyse n est pas si simple

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

de calibration Master 2: Calibration de modèles: présentation et simulation d

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

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

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

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

Atelier Transversal AT11. Activité «Fourmis» Pierre Chauvet.

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

Travaux Dirigés n 1 : chaînes de caractères

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

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

4D v11 SQL Release 5 (11.5) ADDENDUM

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.

Évaluation et optimisation de requêtes

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

Programmation linéaire

1 I ) Une première approche de l algorithme en seconde, saison 2010 _ Antoine ROMBALDI

Utilisation d objets : String et ArrayList

Découverte du tableur CellSheet

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Initiation à Excel. Frédéric Gava (MCF)

Saisie des chauffe-eau thermodynamiques à compression électrique

Quelques Algorithmes simples

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Continuité et dérivabilité d une fonction

Résolution d équations non linéaires

Initiation à LabView : Les exemples d applications :

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

Algorithmique et Programmation, IMA

Encryptions, compression et partitionnement des données

Activité : Élaboration, mise en forme et renseignement de documents

Traitement des données avec Microsoft EXCEL 2010

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

STAGE IREM 0- Premiers pas en Python

Etape 1 : Identification avec un compte personnel sur la plateforme (cf. notice «Création et gestion de votre compte utilisateur»)

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

Quantification Scalaire et Prédictive

INTRODUCTION À LA GESTION DE PROJET AGILE (BACKLOG, TABLEAUX DE BORD, BURNDOWN, PLANIFICATION D ITERATIONS)

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

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

Projet Active Object

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Rappels sur les suites - Algorithme

Code_Aster. Procédure IMPR_RESU aux formats 'RESULTAT' et 'ASTER' 1 But

Structure fonctionnelle d un SGBD

Python - introduction à la programmation et calcul scientifique

CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

1.6- Génération de nombres aléatoires

Premiers Pas en Programmation Objet : les Classes et les Objets

Cryptologie et physique quantique : Espoirs et menaces. Objectifs 2. distribué sous licence creative common détails sur

DovAdis. Objet Rapprochement bancaire Métier Gérance. Siège social SPI 1, rond-point du Flotis Bât IV St Jean

Transcription:

Tableaux et tris I3 - Algorithmique et programmation Nicol Delestre Tableaux - v2.0.1 1 / 27

Plan... 1 Rappels 2 Tableaux à n dimensions 3 Initiation aux tris Tableaux - v2.0.1 2 / 27

Rappels : tableau à une dimension 1 / 4 Objectif Stocker à l aide d une seule variable un ensemble de valeurs de même type Déclaration Type Notes = Tableau[1..26] de Reel définit un nouveau type appelé Notes, qui est un tableau de 26 réels a : Notes déclare une variable de type Notes b : Tableau[1..26] de Reel déclare une variable de type tableau de 26 réels a et b sont de même type c : Tableau[ a.. z ] d Entier déclare une variable de type tableau de 26 entiers a et c sont de types différents Tableaux - v2.0.1 3 / 27

Rappels : tableau à une dimension 2 / 4 Utilisation Ainsi l extrait suivant d algortihme : tab : Tableau[ a.. c ] de Reel tab[ a ] 2.3 tab[ b ] -3.6 tab[ c ] 4.2... peut être présentée graphiquement par : tab : 2.3-3.6 4.2 a b c Tableaux - v2.0.1 4 / 27

Rappels : tableau à une dimension 3 / 4 Caractéristiques Un tableau possède un nombre maximal d éléments défini lors de l écriture de l algorithme (les bornes sont des constantes explicites, par exemple MAX, ou implicites, par exemple 10) ce nombre d éléments ne peut être fonction d une variable Par défaut si aucune initialisation n a été effectuée les ces d un tableau possèdent des valeurs aléatoires Le nombre d éléments maximal d un tableau est différent du nombre d éléments significatifs dans un tableau Dans l exemple précédent le nombre maximal d éléments est de 100 mais le nombre significatif d élements est référencé par le paramètre nbeleves L accès aux éléments d un tableau est direct (temps d accès constant) Il n y a p conservation de l information d une exécution du programme à une autre Tableaux - v2.0.1 5 / 27

Rappels : tableau à une dimension 4 / 4 L affectation ( ) copie tous les éléments du tableau dans un autre Les opérations de bes sur des tableaux de même type sont : L égalité (=) qui permet de savoir si deux tableaux de même type possèdent des éléments de même valeur ( i, a[i]=b[i]) L inégalité ( ) qui permet de savoir si deux tableaux de même type possèdent au moins un élément différent ( i, a[i] b[i]) Attention On ne peut comparer deux tableaux que si ces derniers sont totalement remplis Tableaux - v2.0.1 6 / 27

Les tableaux à deux dimensions 1 / 3 On peut aussi avoir des tableaux à deux dimensions (permettant ainsi de représenter par exemple des matrices à deux dimensions) On déclare une matrice à deux dimensions de la façon suivante : Tableau[intervallePremièreDimension][intervalleDeuxièmeDimension] de type des éléments On accéde à la i ème,j ème valeur d un tableau en utilisant la syntaxe suivante : nom de la variable[i][j] Tableaux - v2.0.1 7 / 27

Les tableaux à deux dimensions 2 / 3 Par exemple si tab est défini par tab : Tableau[1..3][1..2] de Réel tab[2][1] -1.2 met la valeur -1.2 dans la ce 2,1 du tableau En considérant le c où a est une variable de type Réel, a tab[2][1] met -1.2 dans a 1 2 1 7.2 5.4 2-1.2 2 3 4-8.5 Tableaux - v2.0.1 8 / 27

Les tableaux à deux dimensions 3 / 3 Attention, le sens que vous donnez à chaque dimension est important et il ne faut p en changer lors de l utilisation du tableau Par exemple, le tableau tab défini de la façon suivante : tab : Tableau[1..3][1..2] de Réel tab[1][1] 2.0 ;tab[2][1] -1.2 ;tab[3][1] 3.4 tab[1][2] 2.6 ; tab[2][2] -2.9 ; tab[3][2] 0.5... peut permettre de représenter l une des deux matrices suivantes : ( 2.0 1.2 3.4 2.6 2.9 0.5 ) 2.0 2.6 1.2 2.9 3.4 0.5 Exercice Donner le corps : 1 d une fonction additionnant deux matrices 2 d une fonction multipliant deux matrices 3 d une fonction transposant une matrice Tableaux - v2.0.1 9 / 27

Tableau à n dimensions 1 / 3 Extension Par extension on peut définir et utiliser des tableaux à n dimensions Leur déclaration est à l image des tableaux à deux dimensions, c est-à-dire : tableau [intervalle 1 ][intervalle 2 ]... [intervalle n ] de type des valeurs Exemple à 3 dimensions Constante LARGEUR = 4 Constante HAUTEUR = 4 Constante PROFONDEUR = 4 Type Contenu = {vide,pionnoir,pionblanc} Type Plateau = tableau[1..largeur ][ 1..PROFON- DEUR][1..HAUTEUR] de Contenu Tableaux - v2.0.1 10 / 27

Tableau à n dimensions 2 / 3 Initialiser plateau procédure initialiserplateau (S p : Plateau) Déclaration i,j,k : Naturel debut pour i 1 à LARGEUR faire pour j 1 à PROFONDEUR faire pour k 1 à HAUTEUR faire p[i][j][k] vide finpour finpour finpour fin Tableaux - v2.0.1 11 / 27

Tableau à n dimensions 3 / 3 Jouer procédure jouerpion (E/S p : Plateau,E largeur : 1..LARGEUR, profondeur : 1..PROFONDEUR, pion : pionnoir..pionblanc) précondition(s) hauteurcolonne(p,largeur,profondeur) < HAUTEUR debut p[largeur][profondeur][hauteurcolonne(p,largeur,profondeur)+1] pion fin Exercice Donner le corps de : fonction hauteurcolonne (p : Plateau, largeur : 1..LARGEUR,profondeur : 1..PROFONDEUR) : 0..HAUTEUR Tableaux - v2.0.1 12 / 27

Représentation d un tableau à 2 dimensions avec un tableau en 1D 1 / 2 Retour sur l exemple des matrices Les matrices mathématiques peuvent être de différentes dimensions plusieurs types? On veut seulement que pour certaines opérations elles soient compatibles On voudrait un seul type de données pour représenter toutes les matrices en optimisant l espace mémoire Taille donnée M, on veut pouvoir stocker toutes les matrices tels que n m M Tableaux - v2.0.1 13 / 27

Représentation d un tableau à 2 dimensions avec un tableau en 1D 2 / 2 Solution Utiliser un tableau à une dimension pour stocker une information à deux dimensions création d un type Matrice Type Matrice = Tableau[1..MAX] de Reel Stockage des informations par ligne ou par colonne Nécessité d une formule mathématique pour pser (i, j) à k fonction rang Utilisation de deux informations complémentaires : le nombre de lignes (n) et le nombre de colonnes (m) de la matrice Utilisation d une fonction et d une procédure pour s abstraire de cette représentation : procédure fixervaleur (E/S ma : Matrice,E i,j,n,m : NaturelNonNul) précondition(s) n*m MAX et i n et j m fonction obtenirvaleur (ma : Matrice, i,j,n,m : NaturelNonNul) : Reel précondition(s) n*m MAX et i n et j m Tableaux - v2.0.1 14 / 27

Qu est ce qu un tri? 1 / 2 Prérequis Un tri s applique sur un tableau à une dimension d éléments possédant un ordre total : i < j on a t[i] t[j] ou t[j] t[i] Définition Un tri est un algorithme qui prend en entrée un tableau et qui donne en sortie ce même tableau avec les éléments ordonnés suivant une relation R donnée En pratique c est une procédure qui possède la signature suivante : procédure trier (E/S t : Tableau[1..MAX] d Element,E nbelements : Naturel) Tableaux - v2.0.1 15 / 27

Qu est ce qu un tri? 2 / 2 Attention Le tri s effectue par permutations successives des éléments du tableau (utilisation de la procédure échanger) on ne compte p les éléments!!! Dans les tris que nous allons étudier les éléments sont des entiers et la relation d ordre est < (tri en ordre croissant) procédure trier (E/S t :Tableau[1..MAX] d Entier,E nb :Naturel) Tableaux - v2.0.1 16 / 27

Un premier exemple : le tri à bulles 1 / 3 Principe On parcourt le tableau t a trié Dès que deux éléments consécutifs t[i] et t[i + 1] ne sont p bien placés, c est-à-dire que t[i] > t[i + 1], alors on les échange Si au moins un échange a été effectué, c est que le tableau n était p trié, on le reparcourt de nouveau Quelques points importants On compare deux éléments consécutifs, l itération doit donc aller de 1 à nb 1 Il faut savoir si un échange a été effectué, il faut donc utiliser une variable booléenne Tableaux - v2.0.1 17 / 27

Un premier exemple : le tri à bulles 2 / 3 algorithme procédure triabulles (E/S t :Tableau[1..MAX] d Entier,E nb :Naturel) Déclaration i : Naturel esttrie : Booleen debut repeter esttrie VRAI pour i 1 à nb-1 faire si t[i]>t[i+1] alors echanger(t[i],t[i+1]) esttrie FAUX finsi finpour jusqu a ce que esttrie fin Tableaux - v2.0.1 18 / 27

Un premier exemple : le tri à bulles 3 / 3 Calcul de complexité Dans le meilleur des c, le tri d un tableau déjà trié est en Ω(n) Dans le pire des c, le tri d un tableau trié en sens inverse, il faudra n itérations pour redescendre le plus petit élément (celui qui est le plus éloigné de sa position finale). La complexité est alors en O(n 2 ) Amélioration Le tri shaker Exercice Donnez l algorithme du tri shaker Tableaux - v2.0.1 19 / 27

Tris itératifs clsiques Principes des tris itératifs clsiques On va parcourir entièrement le tableau, en appliquant à chaque itération i l une des deux stratégies suivantes : on recherche l élément qui doit se placer à la i eme place Tri par sélection on recherche la place où va être positionné le i eme élément Tri par insertion Remarque Après chaque itération, le sous-tableau t[1..i] est trié À la fin le tableau t sera trié Tableaux - v2.0.1 20 / 27

Le tri par sélection 1 / 3 Principe (par minimum successif) On parcourt le tableau t (i variant de 1 à nb 1) et à chaque itération i on détermine l indice j du plus petit entier de t sur l intervalle [i..n] on échange t[i] et t[j] Tableaux - v2.0.1 21 / 27

Le tri par sélection 2 / 3 algorithme fonction indiceduminimum (t :Tableau[1..MAX] d Entier, borneinf,bornesup :Naturel) : Naturel Déclaration i,resultat : Naturel debut resultat borneinf pour i borneinf+1 à bornesup faire si t[i]<t[resultat] alors resultat i finsi finpour retourner resultat fin procédure triparminimumsuccessif (E/S t :Tableau[1..MAX] d Entier,E nb :Naturel) Déclaration i : Naturel debut pour i 1 à nb-1 faire echanger(t[i],t[indiceduminimum(t,i,nb)]) finpour fin Tableaux - v2.0.1 22 / 27

Le tri par sélection 3 / 3 Exercice Quelle est la complexité T (n) dans le meilleur et le pire des c? Tableaux - v2.0.1 23 / 27

Le tri par insertion 1 / 4 Principe On parcourt le tableau t (i variant de 2 à nb) et à chaque itération i on détermine l indice j de la position de t[i] dans l intervalle [1..i] on insère t[i] à la j eme place Tableaux - v2.0.1 24 / 27

Le tri par insertion 2 / 4 algorithme fonction obtenirindicedinsertion (t :Tableau[1..MAX] d Entier,borneSup :Naturel,lEntier :Entier) : Naturel procédure decaler (E/S t :Tableau[1..MAX] d Entier,E borneinf,bornesup :Naturel) procédure triparinsertion (E/S t :Tableau[1..MAX] d Entier,E nb :Naturel) Déclaration i,j : Naturel temp : Entier debut pour i 2 à nb faire j obtenirindicedinsertion(t,i,t[i]) temp t[i] decaler(t,j,i) t[j] temp finpour fin Tableaux - v2.0.1 25 / 27

Le tri par insertion 3 / 4 Exercices 1 Donner les algorithmes de : fonction obtenirindicedinsertion (t :Tableau[1..MAX] d Entier,borneSup :Naturel,lEntier :Entier) : Naturel avec un algorithme séquentiel puis dichotomique procédure decaler (E/S t :Tableau[1..MAX] d Entier,E borneinf,bornesup :Naturel) 2 Quelle est la complexité T (n) dans le meilleur et le pire des c? Tableaux - v2.0.1 26 / 27

Le tri par insertion 4 / 4 Un autre algorithme La recherche de l indice d insertion et le décalage se font en même temps : procédure inserer (E/S t : Tableau[1..MAX] d Entier, E position : Naturel) procédure triparinsertion (E/S t :Tableau[1..MAX] d Entier, E nb :Naturel) Déclaration i,j : Naturel temp : Entier debut pour i 2 à nb faire inserer(t,i) finpour fin Exercices Donnez l algorithme de la procédure inserer Quelle est la complexité T (n) dans le meilleur et le pire des c? Tableaux - v2.0.1 27 / 27