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



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

4. Les structures de données statiques

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

1 Recherche en table par balayage

ARBRES BINAIRES DE RECHERCHE

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

Rappels sur les suites - Algorithme

Adama MBODJI MBODJ.SYSTEM

Jean-Philippe Préaux

Chapitre 5 : Flot maximal dans un graphe

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

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

Recherche dans un tableau

Algorithmes récursifs

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

Traitement des données avec Microsoft EXCEL 2010

La classification automatique de données quantitatives

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

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

STAGE IREM 0- Premiers pas en Python

V- Manipulations de nombres en binaire

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

Algorithmique et Programmation

Algorithmique I. Algorithmique I p.1/??

Introduction à MATLAB R

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)

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

Quelques Algorithmes simples

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


Algorithmique, Structures de données et langage C

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

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

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

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

EXCEL TUTORIEL 2012/2013

Fonctions de plusieurs variables

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

Initiation à LabView : Les exemples d applications :

1. Introduction Création d'une requête...2

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

Statistique : Résumé de cours et méthodes

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

# 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>

Les deux points les plus proches

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Utilisation d objets : String et ArrayList

Raisonnement par récurrence Suites numériques

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

Algorithmique et Programmation, IMA

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

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

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur

C f tracée ci- contre est la représentation graphique d une

Algorithmique et structures de données I

SUGARCRM MODULE RAPPORTS

Programmation Objet - Cours II

4D v11 SQL Release 5 (11.5) ADDENDUM

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Débuter avec Excel. Excel

Initiation à la programmation en Python

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Encryptions, compression et partitionnement des données

Cours Informatique Master STEP

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.

L analyse boursière avec Scilab

SOMMAIRE. 1. Préambule Le calendrier Trajectoire d un objet lancé Régression linéaire...9

Chp. 4. Minimisation d une fonction d une variable

Algorithmes de recherche

Partie 1. Fonctions plus complexes dans Excel. Fonctions Si(), Et(), Ou() et fonctions imbriquées. Opérateurs logiques. I.1.

données en connaissance et en actions?

Évaluation et optimisation de requêtes

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

Corrigé des TD 1 à 5

Quelques algorithmes simples dont l analyse n est pas si simple

La Clé informatique. Formation Excel XP Aide-mémoire

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files

Excel 2007 Niveau 3 Page 1

Créer le schéma relationnel d une base de données ACCESS

Python - introduction à la programmation et calcul scientifique

Programmation linéaire

Programmation linéaire

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Plan du cours Cours théoriques. 29 septembre 2014

GUIDE Excel (version débutante) Version 2013

CCP PSI Mathématiques 1 : un corrigé

Localisation des fonctions

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Organigramme / Algorigramme Dossier élève 1 SI

Le langage SQL Rappels

Chap III : Les tableaux

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

Transcription:

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 à une dimension 1 / 4 Rappels : tableau à une dimension 2 / 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éit 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 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 3 / 27 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éi 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 Les tableaux à deux dimensions 2 / 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] Par exemple si tab est déi 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 7 / 27 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éi 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 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 2 / 3 Tableau à n dimensions 3 / 3 Initialiser plateau procédure initialiserplateau (S p : Plateau) Déclaration i,j,k : Naturel pour i 1 à LARGEUR faire pour j 1 à PROFONDEUR faire pour k 1 à HAUTEUR faire p[i][j][k] vide 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 p[largeur][profondeur][hauteurcolonne(p,largeur,profondeur)+1] pion Donner le corps de : fonction hauteurcolonne (p : Plateau, largeur : 1..LARGEUR,profondeur : 1..PROFONDEUR) : 0..HAUTEUR Tableaux - v2.0.1 11 / 27 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 Qu est ce qu un tri? 2 / 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éition 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) 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 15 / 27 Tableaux - v2.0.1 16 / 27

Un premier exemple : le tri à bulles 1 / 3 Un premier exemple : le tri à bulles 2 / 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 algorithme procédure triabulles (E/S t :Tableau[1..MAX] d Entier,E nb :Naturel) Déclaration i : Naturel esttrie : Booleen repeter esttrie VRAI pour i 1 à nb-1 faire si t[i]>t[i+1] alors echanger(t[i],t[i+1]) esttrie FAUX si jusqu a ce que esttrie Tableaux - v2.0.1 17 / 27 Tableaux - v2.0.1 18 / 27 Un premier exemple : le tri à bulles 3 / 3 Tris itératifs clsiques 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 ale). La complexité est alors en O(n 2 ) Amélioration Le tri shaker Donnez l algorithme du tri shaker 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 le tableau t sera trié Tableaux - v2.0.1 19 / 27 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 resultat borneinf pour i borneinf+1 à bornesup faire si t[i]<t[resultat] alors resultat i si retourner resultat procédure triparminimumsuccessif (E/S t :Tableau[1..MAX] d Entier,E nb :Naturel) Déclaration i : Naturel pour i 1 à nb-1 faire echanger(t[i],t[indiceduminimum(t,i,nb)]) Tableaux - v2.0.1 22 / 27 Le tri par sélection 3 / 3 Le tri par insertion 1 / 4 Quelle est la complexité T(n) dans le meilleur et le pire des c? 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 23 / 27 Tableaux - v2.0.1 24 / 27

Le tri par insertion 2 / 4 Le tri par insertion 3 / 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 pour i 2 à nb faire j obtenirindicedinsertion(t,i,t[i]) temp t[i] decaler(t,j,i) t[j] temp s 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 25 / 27 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 pour i 2 à nb faire inserer(t,i) s 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