Sensibilisation à l’Algorithmique

Slides:



Advertisements
Présentations similaires
Tris.
Advertisements

L’algorithmique, les séquences.
Algorithmique (suite)
Algorithmique et Programmation DEUG 2 Sciences Economiques 2004/2005
Algorithmique et Programmation
Fonctions & procédures
Calcul géométrique avec des données incertaines
Structures de données et complexité
Au programme du jour …. Un peu plus de structures de données
Introduction à l’Algorithmique
Sensibilisation à l’Algorithmique et structure de données
Calculs de complexité d'algorithmes
LA LOGIQUE ALGORITHMIQUE. Algorithme Définition Ensemble dopérations Effectuées dans un ordre logique Afin dobtenir un résultat, Afin de résoudre un problème.
Algorithmique Résume.
Cours n° 9 Conception et Programmation à Objets
Cours n° 8 Conception et Programmation à Objets
La programmation générique avec la STL EIUMLV - Informatique et Réseaux 99 Benoît ROMAND.
Calcul numérique (avec Maple)
8. Les tableaux P. Costamagna – ISEN N1.
Algorithmique -les fichiers-
Les bases de l’Algorithmique
Références Bibliographiques
ALGORITHMES RECURSIFS
Structures collectives en Java
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.
Introduction à l’algorithmique
Section XI Traitement de fichiers
Dérécursivation Dérécursiver, c’est transformer un algorithme récursif en un algorithme équivalent ne contenant pas d’appels récursifs. Récursivité terminale.
Les éléments de base de l’algorithmique
Les structures de données arborescentes
ALGORITHMIQUE Plan du cours Généralités -définition -importance
Bibliothèque standard du C++
Standard Template Library (STL)
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
Structures de données IFT-2000
Introduction à l’algorithmique
Rappels Java.
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
Chapitre 9 Les sous-programmes.
Standard Template Library
Les Algorithmes de Tri Introduction Tri par Sélection
La librairie assert.h.
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Les structures de données séquentielles contiguës
ALGORITHME DE TRI Le tri par insertion.
Programmation procédurale Les différents schémas
La Boucle Repeat Cours LCS N°1 Présenté par Mr: LALLALI.
JavaScript.
ALGORITHMIQUE ET PROGRAMMATION C
TD0 - Rappels. Acquis du programme 1 ère année Analyser et modéliser : un problème, une situation ; Imaginer et concevoir : une solution algorithmique.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Les tests.
Structures de contrôle
La programmation.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Algorithmique : Introduction
Démarche de résolution
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2) François Meunier DMI.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
Les bases de l’algorithmique
Une proposition de résolution du pb1 AEP PACD VB Pb11.
Algorithmique Tableaux de données
Algorithmique Conditions et Itérations Cours de BTS/CPI 1ère année Algo – Prog CPI/BTS1 – M. Dravet – 17/09/2003 Dernière modification: 17/09/2003.
Seconde 8 Module 7 M. FELT 03/11/ Module 7: Algorithmique #2  Objectifs:  AlgoBox.  Définition d’un algorithme.  Affectation de variable. 
Algorithmique Boucles et Itérations
Quentin Madec Frédéric Hémery Aurélien.
BASE DE L’ALGORITHMIE.  Un système d’instructions.  Pour résoudre d’un problème ou d’une classe de problèmes  Recette de cuisine pour faire un gâteau.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Transcription de la présentation:

Sensibilisation à l’Algorithmique

Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir d’un ensemble de relevés Procédure de calcul bien définie Séquence d'instructions élémentaires termine en un temps fini prend une ou des valeur(s) en entrée donne une ou des valeur(s) en sortie

Etude de cas – Fil rouge Gestion des relevés d’une crue d’une rivière Un relevé comprend : La hauteur de la crue Le point de relevé La date du relevé L’heure du relevé L’auteur du relevé Un identifiant de relevé On stocke et analyse un ensemble de relevés

Exemple Exemple de problème à résoudre Trouver la crue minimale et/ou la crue maximale à partir d’un ensemble de relevés Input: liste non triée de relevés Output: liste des relevés correspondant à la crue minimale ou maximale Algo: ???

Types de problèmes Tris d'éléments d'une liste (trier les relevés) Recherches d'un élément (trouver la hauteur de la crue à une heure donnée à un point donné) Calculs (calculer la moyenne de la crue, identifier les points critiques….) Algorithmes exacts / d'approximation chaînes de carctères codant la séquences de gènes du génome humain séquençage de l'ADN Séquençage du génome humain En biochimie, le séquençage consiste à déterminer l'ordre linéaire des composants d'une macromolécule (les acides aminés d'une protéine, etc.). En génétique, le séquençage concerne la détermination de la séquence des gènes voire des chromosomes, voire du génome complet. Ce qui techniquement revient à effectuer le séquençage de l'ADN constituant ces gènes ou ces chromosomes. algo sur graphes: modélisent pb réels: réseaux de communication ,jeux, pb du voyageur de commerce, pb de coloration de graphes pour planification d'évènements... pb combinatoires: explosion combinatoire, pas d'algo en temps raisonnable, sauf exception géométriques: graphisque, robotique: trouver la paire la plus proche, trouver le polygone convexe le plus petit numérique: systèmes d'équation, évaluation de fonctions, calcul intégral, etc. suppose représentation des nombres, approximations

Algorithme et Programme Un algorithme est implémenté dans un langage de programmation Un même algorithme peut être implémenté dans différents langages (Java, C, Python, Caml, ...) Pseudo-code

Structure de Données Moyen de stocker et organiser les données d'un algorithme accès aux données modification, mise à jour des données Tableaux nombre max de relevés est connu (le tableau incomplet) Listes la liste contient toujours le nombre de relevés courant, on ne connait pas forcément le nombre max de relevés Sets : notion d’ensemble Les relevés n’ont pas besoin d’être retrouvés selon un ordre Maps : un index unique Les relevés peuvent être retrouvés directement à partir du nom de l’auteur Piles, files : gestion des accès aux données Graphes, arbres, arbres binaires de recherche tableau/liste: taille fixe ou non set: ensemble non ordonné d'éléments distincts opérations: test d'appartenance, union, intersection si on prend un super-ensemble, on représente un set par une suite de 0 et de 1 selon que l'élément est dans le super set ou pas dictionnaires ou map: recherche d'un élément, ajout, suppression système de clés uniques

Structures de contrôle Structures de contrôle conditionnelle Si cond Alors instr FinSi Si cond Alors instr sinon instr FinSi (imbrications possibles) Structures de contrôle itératives TantQue cond Faire instr FinTantQue variantes

Itérations int i = 0; while(i<10){ System.out.println(“Coucou”); }

Itérations int i = 0; do{ System.out.println(“Coucou”); i +=1; }while(i<10); for (i=0; i<10; i++) System.out.println(“Coucou”);

Tableaux Déclaration et allocation mémoire d’un tableau de 10 entiers int [] hauteurs = new int[10]; Accès au premier élément : hauteurs[0] Accès au dernier élément : hauteurs[hauteurs.length -1] i ième élément : hauteurs[i-1] init./modif. d'un élément: hauteurs[i] = 3;

Tableaux valeur tableau[i] / indice i recherche du (des) élément(s) vérifiant une certaine propriété vérification de la présence ou l'absence d'une certaine valeur dans le tableau recherche de l'indice dans le tableau d'une valeur donné tri du tableau selon un certain critère

Exemple d’Itération int i = 0; int somme=0; while(i<hauteurs.length){ somme=somme+hauteurs[i]; } int max=hauteurs[0]; for (int i=1; i<hauteurs.length; i++){ if (max < hauteurs[i]) max=hauteurs[i];

Matrices Tableau de tableaux : int [][] matrice = new int[10][15]; élément en ligne i et colonne j : matrice[i][j] Matrice carrée : int [][] matriceCarree = new int[7][7];

La classe ArrayList : Liste Déclaration et allocation mémoire ArrayList<Integer> hauteurs; hauteurs = new ArrayList<Integer>(); ArrayList<Releve> releves; releves = new ArrayList<Releve>(); Ne peuvent contenir que des objets Accès au premier élément : releves.get(0) dernier élément : releves.get(liste.size()-1) i ième élément : releves.get(i-1)

La classe ArrayList : Listes ajout d'un élt: releves.add(new Releve(3,100,10,0,”26/04/2003”) ); modif d'un élt: hauteurs.set(i,new Integer(4)); suppression d'un élt: releves.remove(i); mêmes algos que sur les tableaux

Exemple d’Itération int i = 0; int somme=0; while(i<hauteurs.size()){ somme=somme+hauteurs.get(i).value(); } int max=hauteurs.get(0).value(); for (int i=1; i<hauteurs.size(); i++){ if (max < hauteurs.get(i).value()) max=hauteurs.get(i).value();

Paires d'objets : Maps Déclaration et allocation mémoire HashMap<String,String> surnoms; surnoms = new HashMap<String,String>(); HashMap<String,Releve> releves; releves = new HashMap<String,Releve>(); paires clé/valeur, clés uniques ajout d'un couple clé/valeur : surnoms.put(“tartampion”, “dupont”); releves.put(“Martin”, new Releve(3,100,10,0,”26/04/2003”)) suppression d'un couple clé/valeur : releves.remove(“Martin”);

Maps plus de premier, dernier, i ième élément, récupération d'une valeur associée à une clé : Releve r = releves.get(“martin”); récupération directe de la valeur associée à une clé : get de l'information de présence/absence d'une valeur: releves.containsKey(“dupont”); d'une clé : releves.containsValue(r);

ensemble non ordonné d'objet : Sets Déclaration et allocation mémoire HashSet<String> surnoms; surnoms = new HashSet<String>(); ajout d'un élément : surnoms.put(“tartampion”); suppression : surnoms.remove(“tartampion”); test direct de la présence d'un élément : surnoms.contains(“tartampion”);

Exemple d’Itération Non Adaptées int i = 0; int somme=0; while(i<hauteurs.size()){ somme=somme+hauteurs.get(i).value(); } int max=hauteurs.get(0).value(); for (int i=1; i<hauteurs.size(); i++){ if (max < hauteurs.get(i).value()) max=hauteurs.get(i).value(); Non Adaptées

Maps et Sets Les structures de Maps et de Sets ne supportent que les opérations de dictionnaire: insérer, rechercher, supprimer HashMap et HashSet sont des implémentations à base de tables de hachage qui permettent de réduire le coût de ces opérations.

Piles et Files Ordonnancements particuliers des éléments d'un tableau ou d'une liste Pile : empiler/dépiler des éléments File : enfiler /défiler des éléments :