Introduction à l algorithmique, structures de contrôle et de données. Stage IREM Nov./Déc. 2010

Documents pareils
ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

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

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

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

L exclusion mutuelle distribuée

STAGE IREM 0- Premiers pas en Python

Probabilités sur un univers fini

1 Recherche en table par balayage

Génie Logiciel avec Ada. 4 février 2013

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

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

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

Probabilités sur un univers fini

Chapitre 7. Récurrences

Rappels sur les suites - Algorithme

4. Les structures de données statiques

Programmation linéaire

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

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Algorithmique I. Algorithmique I p.1/??

Quelques Algorithmes simples

Résolution d équations non linéaires

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Cours de Master Recherche

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Polynômes à plusieurs variables. Résultant

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction à l étude des Corps Finis

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Plus courts chemins, programmation dynamique

Moments des variables aléatoires réelles

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

MIS 102 Initiation à l Informatique

Limitations of the Playstation 3 for High Performance Cluster Computing

Resolution limit in community detection

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

Quelques algorithmes simples dont l analyse n est pas si simple

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

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

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

Structure fonctionnelle d un SGBD

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

Représentation d un entier en base b

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

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

Corrigé des TD 1 à 5

Organigramme / Algorigramme Dossier élève 1 SI

Calculabilité Cours 3 : Problèmes non-calculables.

Licence Sciences et Technologies Examen janvier 2010

Simulation de variables aléatoires

Calcul Formel et Numérique, Partie I

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

Procédure de sauvegarde pour AB Magique

Feuille TD n 1 Exercices d algorithmique éléments de correction

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Algorithme. Table des matières

Correction TD algorithmique

Initiation à l algorithmique

Calculateur quantique: factorisation des entiers

Entraînement au concours ACM-ICPC

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

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

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

La fonction exponentielle

Fonctions linéaires et affines. 1 Fonctions linéaires. 1.1 Vocabulaire. 1.2 Représentation graphique. 3eme

Introduction. Gestion de la consommation énergétique. Contexte du cloud computing Instrumentation et contrôle

Algorithmique et Programmation

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

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

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

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours 1 : Qu est-ce que la programmation?

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

Chapitre 5 : Flot maximal dans un graphe

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Évaluation et implémentation des langages

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

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

Algorithmes de recherche

Algorithmique et Programmation, IMA

Optimisation for Cloud Computing and Big Data

QUESTION 1 QUESTION 2 QUESTION 3 QUESTION 4. Que signifie "shortage"? Que signifie "handling"? Que signifie "raw material" Que signifie "tool"?

UE Programmation Impérative Licence 2ème Année

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Programmation C. Apprendre à développer des programmes simples dans le langage C

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

Chapitre 2. Eléments pour comprendre un énoncé

Algorithmique et structures de données I

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

INF601 : Algorithme et Structure de données

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Console IAP Manuel d utilisation

Calcul Formel et Numérique, Partie I

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

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

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

Initiation à la programmation en Python

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Transcription:

Introduction à l algorithmique, structures de contrôle et de données Stage IREM Nov./Déc. 2010

Plan 1 Introduction 2 Structures de contrôle et de données

Plan 1 Introduction 2 Structures de contrôle et de données

Vocabulaire un ordinateur = un objet, des ressources matérielles (le hardware). un algorithme = une recette, une méthode pour obtenir un résultat. un programme = un algorithme écrit dans un langage de programmation. un problème algorithmique = un problème à résoudre.

Vocabulaire un ordinateur = un objet, des ressources matérielles (le hardware). un algorithme = une recette, une méthode pour obtenir un résultat. un programme = un algorithme écrit dans un langage de programmation. un problème algorithmique = un problème à résoudre. Des exemples!

Algorithme Un algorithme est la description univoque d une méthode effective pour résoudre un problème, exprimée à l aide d une suite d instructions élémentaires.

Problèmes algorithmiques Données : un entier a Résultat : la somme 1 + 2 + 3 +... + a Données : une liste de mots Résultat : la liste triée dans l ordre alphabétique Données : une liste de mots Résultat : une liste de pages Web contenant ces mots Données : une carte, deux villes A et B Résultat : un plus court chemin entre A et B Données : un programme P, une donnée a Résultat : réponse à est-il vrai que le résultat de P appliqué à a vaut 8a+5?... Un algorithme doit résoudre toutes les instances d un problème.

Exemple La recherche du minimum dans une liste (non vide) d entiers...

Exemple La recherche du minimum dans une liste (non vide) d entiers... 1 Noter le premier entier de la liste 2 Pour tous les entiers suivants, faire : Si l entier est inférieur à celui noté Alors remplacer celui-ci par le nouvel entier 3 Renvoyer le nombre noté.

Exemple La recherche du minimum dans une liste (non vide) d entiers... En pseudo-code : Recherche du minimum Données : liste non vide d entiers L Résultat : entier m le plus petit de L m L(1) pour chaque i allant de 2 à L faire si L(i) < m alors m L(i) retourner m

Exemple La recherche du minimum dans une liste (non vide) d entiers... En pseudo-code : Recherche du minimum Données : liste non vide d entiers L Résultat : entier m le plus petit de L m L(1) pour chaque i allant de 2 à L faire si L(i) < m alors m L(i) retourner m Des instances : [3, 10, 5, 24, 2, 12] [10]

Un problème... des algorithmes? Pour un problème donné, il peut y avoir plusieurs algorithmes différents... ou aucun!

Un problème... des algorithmes? Pour un problème donné, il peut y avoir plusieurs algorithmes différents... ou aucun! Lorsqu il existe plusieurs algorithmes, on peut les comparer selon plusieurs critères : les idées sous-jacentes, leur structure (récursif / itératif, glouton, prog. dynamique, diviser pour régner,... ), les structures de données utilisées, la complexité algorithmique (i.e. les ressources temps, mémoire nécessaires à son exécution).

Complexité d un algorithme Complexité en temps ou en espace mémoire.

Complexité d un algorithme Complexité en temps ou en espace mémoire. Objectif : trouver un ordre de grandeur du nombre d opérations élémentaires nécessaires à l exécution de l algorithme. Pas en minutes ou microsecondes! On veut une notion robuste : indépendante d un ordinateur donné, d un compilateur, d un langage de programmation, etc. et exprimée en fonction de la taille de la donnée à traiter.

Complexité d un algorithme Complexité en temps ou en espace mémoire. Objectif : trouver un ordre de grandeur du nombre d opérations élémentaires nécessaires à l exécution de l algorithme. Pas en minutes ou microsecondes! On veut une notion robuste : indépendante d un ordinateur donné, d un compilateur, d un langage de programmation, etc. et exprimée en fonction de la taille de la donnée à traiter. opération élémentaire : opération qui prend un temps constant (ou presque). (Recherche du minimum : n 1 comparaisons sont faites.)

Complexité d un algorithme Coût de A sur x : l exécution de l algorithme A sur la donnée x requiert C A (x) opérations élémentaires.

Complexité d un algorithme Coût de A sur x : l exécution de l algorithme A sur la donnée x requiert C A (x) opérations élémentaires. Complexité dans le pire cas : C A (n) def = max x. x =n C A(x)

Complexité d un algorithme Coût de A sur x : l exécution de l algorithme A sur la donnée x requiert C A (x) opérations élémentaires. Complexité dans le pire cas : Complexité en moyenne C moy A C A (n) def = max x. x =n C A(x) def (n) = x. x =n p(x) C A (x) p : distribution de probabilités sur les données de taille n.

Algorithmes efficaces... et au delà! Quelques familles d algorithmes selon leur complexité : les algorithmes sous-linéaires : par exemple, en O(log(n)) les algorithmes linéaires : O(n) et quasi-linaires : O(n log(n)) les algorithmes polynomiaux : O(n k )

Algorithmes efficaces... et au delà! Quelques familles d algorithmes selon leur complexité : les algorithmes sous-linéaires : par exemple, en O(log(n)) les algorithmes linéaires : O(n) et quasi-linaires : O(n log(n)) les algorithmes polynomiaux : O(n k ) les algorithmes exponentiels : O(2 p(n) )... doublement exponentiels : O(2 2p(n) )... NB : O(g(n)) contient l ensemble des fonctions majorées par un c g(n) avec c > 0 au delà d un certain n 0...

Algorithmes efficaces... ou pas! Considérons un algorithme de complexité f (n) qui permette de résoudre en une heure les instances de taille X d un problème sur un ordinateur aujourd hui. Alors un ordinateur 1000 fois plus rapide permettrait en une heure de résoudre les instances de taille... 1000 X si f (n) = n,

Algorithmes efficaces... ou pas! Considérons un algorithme de complexité f (n) qui permette de résoudre en une heure les instances de taille X d un problème sur un ordinateur aujourd hui. Alors un ordinateur 1000 fois plus rapide permettrait en une heure de résoudre les instances de taille... 1000 X si f (n) = n, 31, 6 X si f (n) = n 2,

Algorithmes efficaces... ou pas! Considérons un algorithme de complexité f (n) qui permette de résoudre en une heure les instances de taille X d un problème sur un ordinateur aujourd hui. Alors un ordinateur 1000 fois plus rapide permettrait en une heure de résoudre les instances de taille... 1000 X si f (n) = n, 31, 6 X si f (n) = n 2, X + 9, 97 si f (n) = 2 n. (voir Algorithmics, the spirit of computing, D. Harel)

A la recherche du bon algorithme Étant donné un problème, on cherche donc des algorithmes : corrects : qu ils calculent bien ce que l on veut, efficaces : nécessitant des ressources (temps, mémoire) raisonnables.

A la recherche du bon algorithme Étant donné un problème, on cherche donc des algorithmes : corrects : qu ils calculent bien ce que l on veut, efficaces : nécessitant des ressources (temps, mémoire) raisonnables. Peu de problèmes admettent des algorithmes utilisables en pratique. Il est important de savoir concevoir, vérifier et analyser des algorithmes.

Un exemple d algorithme très efficace...

Problème : Rechercher une définition dans un dictionnaire, un numéro dans un annuaire,... On commence avec la zone de recherche (1 fin), puis : 1 si la zone de recherche est vide, alors c est fini 2 on ouvre le dictionnaire au milieu m de la zone de recherche (d f )... 3 si le mot recherche y est, c est fini! 4 si on recommence (1) sur la zone réduite (d m 1) ou (m + 1 f ).

Problème : Rechercher une définition dans un dictionnaire, un numéro dans un annuaire,... On commence avec la zone de recherche (1 fin), puis : 1 si la zone de recherche est vide, alors c est fini 2 on ouvre le dictionnaire au milieu m de la zone de recherche (d f )... 3 si le mot recherche y est, c est fini! 4 si on recommence (1) sur la zone réduite (d m 1) ou (m + 1 f ). A chaque fois, on divise la taille de l espace de recherche par 2! Pour 1 millions de noms, 20 comparaisons (au max) suffisent pour résoudre le problème...

Recherche dichotomique Rechercher(T, x, bg, bd) si bg > bd alors retourner nil m := (bg + bd)/2 (y, v) := T [m] si x == y alors retourner v sinon si x < y alors retourner Rechercher(T, x, bg, m 1) sinon retourner Rechercher(T, x, m + 1, bd) T est un tableau de paires (x, v) trié selon les x...

Recherche dichotomique Version itérative... Rechercher(T, x) bg := 0 bd := T 1 tant que bg bd faire m := (bg + bd)/2 (y, v) := T [m] si x == y alors retourner v sinon si x < y alors bd := m 1 sinon bg := m + 1 retourner nil

Plan 1 Introduction 2 Structures de contrôle et de données

Stocker de l information Le post-it une variable : une zone mémoire repérée par un identificateur.

Stocker de l information Le post-it une variable : une zone mémoire repérée par un identificateur. instruction d affectation X := exp X exp exp X X = exp...

Stocker de l information Le post-it une variable : une zone mémoire repérée par un identificateur. instruction d affectation X := exp X exp exp X X = exp... X peut être remplacée par n importe quel objet qui désigne une zone mémoire pouvant stocker une telle expression exp : X [4], z.m, ( p),... exp est une expression... construites à partir d opérateurs de base, de constantes, de variables...

Instruction conditionnelle instruction conditionnelle Si C Alors... Si C Alors... Sinon... C est une condition construite à partir de combinateurs Booléens (,, ) et de conditions atomiques : X == 3, T [i] < K, mot1 < mot2,...

Entrées/sorties instruction d entrées/sorties Afficher Lire(v) exp NB : v est une variable désignant l endroit de la mémoire où la donnée qui sera lue devra être stockée.

Boucles boucles... 1 Pour chaque x dans S Faire:... (Pour i = 1 à 100 Faire:... ) 2 Tant que C Faire:... 3 Répéter... jusqu à C

Boucles Tant que C Faire:... boucles.pdf - Page 6 Répéter... jusqu à C

Les fonctions On peut isoler un algorithme dans une fonction : un nom + des paramètres (et leurs types) + un type de résultat Exemple : RechercherMin(T : tableau d entiers) : entier

Structures de données Tableaux : T [1... 100], M[1... 10][1... 10],... Taille fixe ou... modifiable (mais avec un coût). Accès direct au i eme élément. tabliste.pdf - Page 2

Structures de données Listes : Ajout en début ou en fin de liste, découpage, insertion... : faciles. L[i] ou tabliste.pdf longueur(l) - Page 2: avec un coût.

Structure de données La plupart des langages de programmation offrent des types de données très riches avec de nombreuses fonctions associées. Exemple : les listes de Python. Cela dépend des langages et attention au coût de ses opérations.

Autres... Les piles et les files Les piles : structure de stockage LIFO : Last in, first out dessin-stage.pdf - Pa Les files : structure de stockage FIFO : First in, first out