I. Etude d'algorithmes simples

Documents pareils
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

LE PROBLEME DU PLUS COURT CHEMIN

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

Algorithmes récursifs

CORRECTION EXERCICES ALGORITHME 1

chapitre 4 Nombres de Catalan

Recherche dans un tableau

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

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

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

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

Algorithmique et Programmation

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

Algorithmes de recherche

Quelques Algorithmes simples

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

Cours 1 : Qu est-ce que la programmation?

Alarme domestique- Présentation

L exclusion mutuelle distribuée

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

MIS 102 Initiation à l Informatique

CH.6 Propriétés des langages non contextuels

Introduction à la théorie des graphes. Solutions des exercices

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Les évolutions des échanges de données dans le domaine du transport. Bertrand Cuissart septembre 2005 EDI. B. Cuissart.

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Indications pour une progression au CM1 et au CM2

Programmation Objet - Cours II

Plus petit, plus grand, ranger et comparer


Quelques algorithmes simples dont l analyse n est pas si simple

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

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

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

Ebauche Rapport finale

Continuité et dérivabilité d une fonction

Jean-Philippe Préaux

Resolution limit in community detection

4. Les structures de données statiques

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Raisonnement par récurrence Suites numériques

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

1 Recherche en table par balayage

6. Les différents types de démonstrations

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Initiation à LabView : Les exemples d applications :

SÉJOURS LINGUISTIQUES

Programmes des classes préparatoires aux Grandes Ecoles

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

Nouvelles propositions pour la résolution exacte du problème de sac à dos bi-objectif unidimensionnel en variables binaires

Optimisation for Cloud Computing and Big Data

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

Pourquoi l apprentissage?

Résolution d équations non linéaires

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

I. Introduction aux fonctions : les fonctions standards

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

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Prêt(e) pour le CE1. Tu es maintenant au CE1. Avant de commencer les leçons, nous allons réviser avec toi!

Algorithmique avec Algobox

Cours d Informatique

CAPTURE DES PROFESSIONNELS

Notice d Utilisation du logiciel Finite Element Method Magnetics version 3.4 auteur: David Meeker

Initiation à la programmation en Python

Chp. 4. Minimisation d une fonction d une variable

Appareils de signalisation optiques Colonnes lumineuses préconfigurée Kompakt 71

TP : Gestion d une image au format PGM

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

Les structures de données. Rajae El Ouazzani

Algorithmique et structures de données I

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Entraînement au concours ACM-ICPC

INF601 : Algorithme et Structure de données

BACCALAUREAT GENERAL MATHÉMATIQUES

Série TD 3. Exercice 4.1. Exercice 4.2 Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible! Exercice 4.3. Exercice 4.

Propagation sur réseau statique et dynamique

NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

LISTE DES ECOLES PERMETTANT UN RECLASSEMENT DANS LE 3 ème GRADE D INGENIEUR DE LA FILIERE TECHNIQUE

Une proposition de séquence relative à l étude des sons /an/, /on/ et de leurs graphies. Cadre général

OLYMPIADES ACADEMIQUES DE MATHEMATIQUES. 15 mars 2006 CLASSE DE PREMIERE ES, GMF

FORMATION CONTINUE SUR L UTILISATION D EXCEL DANS L ENSEIGNEMENT Expérience de l E.N.S de Tétouan (Maroc)

Algèbre binaire et Circuits logiques ( )

OPTION SCIENCES BELLE-ISLE-EN-TERRE

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Licence Sciences et Technologies Examen janvier 2010

Intelligence Artificielle Planification

INITIATION A L ALGORITHMIQUE INF 102

Certificat Big Data - Master MAthématiques

Université de Strasbourg UFR de Mathématique et d'informatique. L2 Informatique Semestres S3 et S4. Structures de Données et Algorithmes 1 et 2

Introduction au Data-Mining

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

UNE EXPERIENCE, EN COURS PREPARATOIRE, POUR FAIRE ORGANISER DE L INFORMATION EN TABLEAU

ANALYSE CATIA V5. 14/02/2011 Daniel Geffroy IUT GMP Le Mans

Formats d images. 1 Introduction

ATTENTION AU DÉPART! GUIDE DE QUESTIONS DU MENEUR DE JEU.

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

L apprentissage automatique

Transcription:

Séquence 10 : Algorithme et programmation I. Etude d'algorithmes simples I.1. Rechercher un élément dans un tableau trié par une méthode dichotomique Si le tableau est trié par ordre croissant, on peut s'arrêter dès que la valeur rencontrée est plus grande que la valeur cherchée (ou plus petite si le tableau est trié par ordre décroissant). // cette fonction renvoie vrai si x est présente dans tab, faux sinon // le tableau tab est supposé trié par ordre croissant fonction avec retour booléen rechercheelement2(chaine[] tab, chaine x) entier i; début i <- 0; tantque (i < tab.longueur) faire si (tab[i] = x) alors retourne VRAI; sinon si (tab[i] > x) alors retourne FAUX; sinon i <- i + 1; si si tantque retourne FAUX; Programmer cette fonction en AS3. I.2. Le tri d'un tableau par sélection Le principe est que pour classer n valeurs, il faut rechercher la plus grande valeur et la placer en de liste, puis la plus grande valeur dans les valeurs restante et la placer en avant dernière position et ainsi de suite... Considérons un tableau à n éléments. Pour effectuer le tri par sélection, il faut rechercher dans ce tableau la position du plus grand élément. Le plus grand élément est alors échangé avec le dernier élément du tableau. Ensuite, on réitère l algorithme sur le tableau constitué par les (n-p) premiers éléments où p est le nombre de fois où l algorithme a été itéré. L algorithme se termine quand p=(n-1), c est à dire quand il n y a plus qu une valeur à sélectionner ; celle ci est alors la plus petite valeur du tableau. 1/6

Exemple : Grandes étapes de l évolution du tableau au fil de l algorithme. En bleu, les valeurs déjà traitées. procedure tri_selection(tableau T) entier longueur, maxi, i longueur<-taille(t) tantque(longueur>0) faire //recherche de la position du plus grand élément dans le tableau non encore trié maxi<-0; pour i=1 à (longueur-1) faire si T(i)>T(maxi) alors maxi<-i si pour //echange du plus grand élément avec le dernier echanger(t,maxi,longueur-1) //traitement du reste du tableau longueur<-longueur-1 tantque Programmer cette fonction en AS3. Remarque : Le tri sélection peut être amélioré en positionnant à chaque parcours du tableau le plus grand et le plus petit élément. I.3. Ajouter deux entiers exprimés en binaire Exemple : 1010 +1011 Ecrire l'algorithme pour résoudre cette opération : 2/6

Programmer cette fonction en AS3. II.Etude d'algorithmes plus avancés II.1. Tri d'un tableau par fusion Principe Le tri fusion est construit suivant la stratégie "diviser pour régner", en anglais "divide and conquer". Le principe de base de la stratégie "diviser pour régner" est que pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires. Une fois chaque petit problème résolu, il n y a plus qu à combiner les différentes solutions pour résoudre le problème global. La méthode "diviser pour régner" est tout à fait applicable au problème de tri : plutôt que de trier le tableau complet, il est préférable de trier deux sous tableaux de taille égale, puis de fusionner les résultats. L algorithme proposé ici est récursif. En effet, les deux sous tableaux seront eux même triés à l aide de l algorithme de tri fusion. Un tableau ne comportant qu un seul élément sera considéré comme trié : c est la condition sine qua non sans laquelle l algorithme n aurais pas de conditions d arrêt. Etapes de l algorithme : Division de l ensemble de valeurs en deux parties Tri de chacun des deux ensembles Fusion des deux ensembles Exemple Grandes étapes de l évolution du tableau au fil de l algorithme : Tableau Commentaire : ce qui est fait pour passer à la ligne suivante 6 3 0 9 1 7 8 2 5 4 Division du tableau en deux parties 6 3 0 9 1 7 8 2 5 4 Division de chaque sous tableau en deux parties 6 3 0 9 1 7 8 2 5 4 Division de chaque sous tableau en deux parties Division des sous tableau bleu et rouge en deux parties, fusion des tableaux vertrose 6 3 0 9 1 7 8 2 5 4 6 3 0 1 9 7 8 2 4 5 Fusion des sous tableaux bleu-rose et rouge-rose 3 6 0 1 9 7 8 2 4 5 Fusion des sous tableaux bleu-jaune et rouge-jaune 0 3 6 1 9 2 7 8 4 5 Fusion des sous tableaux bleu-vert et rouge-vert 0 1 3 6 9 2 4 5 7 8 Fusion des deux tableaux 0 1 2 3 4 5 6 7 8 9 Le tableau est trié, l'algorithme est terminé fusion(tableau T,entier premier1,entier dernier1,entier dernier2) tableau Tbis entier premier2, compteur1, compteur2, i premier2<-dernier1+1 compteur1<-premier1 compteur2<-premier2 taille(t)<-(dernier1-premier1+1) //taille du premier sous tableau 3/6

//on recopie dans T les éléments du premier sous tableau pour i=premier1 à dernier1 faire Tbis(i-premier1)<-T(i) pour //on fusionne ensuite les deux sous tableaux pour i=premier1 à dernier2 faire si compteur1=premier2 alors //tous les éléments du premier sous tableau ont été utilisés arret pour //tous les éléments sont donc classés sinon si compteur2=(dernier2+1) alors //tous les éléments du second sous tableau ont été utilisés T(i)=Tbis(compteur1-premier1) //on recopie à la du tableau les éléments du premier sous tableau compteur1<-compteur1+1 sinon si Tbis(compteur1-premier1)<T(compteur2) alors //l'élément du premier sous tableau est le plus petit T(i)<-Tbis(compteur1-premier1) //on ajoute un élémnt du premier sous tableau compteur1<-compteur1+1 //on progresse dans le premier sous tableau sinon //c'est l'élément du second sous tableau qui est le plus petit T(i)<-T(compteur2) //on recopie cette élément à la suite du tableau compteur2<-compteur2+1 //on progresse dans le second tableau si pour tri_fusion_bis(tableau T,entier premier,entier dernier) entier milieu; si premier<>dernier alors //si l'indice du premier et du dernier élément à traiter //est différent (condition d'arret de l'algorithme) milieu<-(premier+dernier)/2 tri_fusion_bis(t,premier,milieu) //tri de la premiére moitiée du sous tableau tri_fusion_bis(t,milieu+1,dernier) //tri de la seconde moitiée du sous tableau fusion(t,premier,milieu,dernier) //fusion des deux sous moitiées si tri_fusion(tableau T) entier longueur longueur<-taille(t) 4/6

si longueur>0 alors tri_fusion_bis(t,0,longueur-1) si II.2.Notions élémentaires sur les graphes Exemple 1 : Choix d'un itinéraire Sachant qu'une manifestation d'etudiants bloque la gare de Poitiers, et connaissant la duree des trajets suivants : Bordeaux! Nantes 4 h Bordeaux! Marseille 9 h Bordeaux! Lyon 12 h Nantes! Paris-Montparnasse 2 h Nantes! Lyon 7 h Paris-Montparnasse! Paris-Lyon 1 h (en autobus) Paris-Lyon! Grenoble 4 h 30 Marseille! Lyon 2 h 30 Marseille! Grenoble 4 h 30 Lyon! Grenoble 1 h 15 comment faire pour aller le plus rapidement possible de Bordeaux a Grenoble? Les donnees du probleme sont faciles a representer par un graphe dont les arêtes sont etiquetees par les durees des trajets : Il s'agit de determiner, dans ce graphe, le plus court chemin (ou l'un des plus courts chemins, s'il existe plusieurs solutions) entre Bordeaux et Grenoble. Exemple 2 : Organisation d'une session d'examens Des étudiants A, B, C, D, E et F doivent passer des examens dans différentes disciplines, chaque examen occupant une demi-journée : 5/6

Chimie : etudiants A et B Electronique : etudiants C et D Informatique : etudiants C, E, F et G Mathematiques : etudiants A, E, F et H Physique : etudiants B, F, G et H On cherche a organiser la session d'examens la plus courte possible. On peut representer chacune des disciplines par un sommet, et relier par des ar^etes les sommets correspondant aux examens incompatibles (ayant des etudiants en commun) : Il s'agit alors de colorier chacun des sommets du graphe en utilisant le moins de couleurs possible, des sommets voisins (relies par une arête) etant necessairement de couleurs différentes. II.3. Recherche d'un chemin dans un graphe par un parcours en profondeur (DFS) parcourir un graphe en profondeur : visiter tous les sommets visiter un sommet s : SI s n'a pas encore #et#e visit#e ALORS f pr#e-traitement de sg visiter tous les successeurs de s f post-traitement de sg FIN SI II.4. Recherche d'un plus court chemin par un parcours en largeur (BFS). parcourir une arborescence en profondeur : visiter la racine visiter un noeud n : Source : http://phamdavid.free.fr/cours/maths_graphes_algorithmes.pdf (81 pages) III.Conclusion 6/6