Algorithmique Structures de données
Structures séquentielles : les tableaux. 5 de 87. Structure de donnée séquentielle (tableau). En anglais : array vector. Définition.
Cours de structures de données licence 2 - Université CLERMONT 2
Dans ce cours on va étudier certaines méthodes pour manipuler les données de l'informatique c'était la manière que l'on avait de programmer avec les ...
Algorithmique Structures de données : Les tableaux
Un tableau est une structure de donnée T qui permet de stocker un certain nombre d'éléments T[i] repérés par un index i. Les tableaux vérifient généralement
Structures de données et algorithmes
Transparents disponibles sur la page web du cours avant chaque cours. Pas de livre de référence par un programme écrit dans un langage informatique.
Cours Structures de données Objectifs du Cours
Cours. Structures de données. 2ème année SMI Semestre ème année SMI
Structure de Données Introduction
“ L'informatique n'est pas plus la science des ordinateurs que Dans ce cours on considérera que les structures de données sont.
Cours dAlgorithmique et structures de données 1
Chargé du cours : Dr. Abdelhamid DJEFFAL 1.1 Résolution d'un problème en informatique ... Initiation à l'algorithmique et aux structures de données.
Structures de données et méthodes formelles
Abrial The B-Book
Algorithmique Types de données abstraits
Lors du passage à la programmation : Les TDA sont implantés par des types de données (classes si programmation orientée objets) ;. Les opérations sont implantés
Structures de donnees et algorithmes
Pierre Geurts
2011-2012
E-mail :p.geurts@ulg.ac.be
URL :http://www.montefiore.ulg.ac.be/
~geurts/sda.htmlBureau : R 141 (Monteore)
Telephone : 04.366.48.15 | 04.366.99.64
1Contact
Charge de cours :
I Pierre Geurts,p.geurts@ulg.ac.be, I141 Monteore, 04/3664815Assistants : I Gilles Louppe,g.louppe@ulg.ac.be, GIGA-R (B34,+1), CHU,04/3662766
IJulien Becker,j.becker@ulg.ac.be, GIGA-R (B34,+1), CHU,04/3669805Sites web du cours :
ICours theorique :
http://www.montefiore.ulg.ac.be/ ~geurts/sda.html IRepetitions et projets :http://www.montefiore.ulg.ac.be/ glouppe/2011-2012/students.info0902.php2Objectif du cours
Introduction a l'etude systematique des algorithmes et des structures de donneesVous fournir une bo^te a outils contenant : I Des structures de donnees permettant d'organiser et d'acceder ecacement aux donneesILes algorithmes les plus populaires
IDes methodes generiques pour la modelisation, l'analyse et laresolution de problemes algorithmiquesOn insistera sur la generalite des algorithmes et structures de
donnees et on les etudiera de maniere formelleLes projets visent a vous familiariser a la resolution de problemes
3Organisation du cours
Cours theoriques :
I Les vendredis de 14h a 16h, S94, B^atiment B4 (Europe).I10-12 coursRepetitions :
I Certains vendredis de 16h a 18h, S94, B^atiment B4 (Europe)I5 repetitions (+ debrieng des projets)Projets :
I Trois projets tout au long de l'annee, de diculte croissante ILes deux premiers individuels, le troisieme en bin^ome IEn CEvaluation sur base des projets (30%) et d'un examen ecrit (70%). 4Notes de cours
Transparents disponibles sur la page web du cours avant chaque coursPas de livre de reference obligatoire mais les ouvrages suivants ont ete utilises pour preparer le cours : IIntroduction to algorithms, Cormen, Leiserson, Rivest, Stein,MIT press, Third edition, 2009.
I http://mitpress.mit.edu/algorithms/ I Algorithms, Sedgewick and Wayne, Addison Wesley, Fourth edition, 2011.I http://algs4.cs.princeton.edu/home/ I Data structures and algorithms in Java, Goodrich and Tamassia, Fifth edition, 2010. I http://ww0.java4.datastructures.net/ IAlgorithms, Dasgupta, Papadimitriou, and Vazirani, McGraw-Hill, 2006.
I
Cours sur le web
Ce cours s'inspire egalement de plusieurs cours disponibles sur le web :Antonio Carzaniga, Faculty of Informatics, University of Lugano
Ihttp://www.inf.usi.ch/carzaniga/edu/algo/index.htmlMarc Gaetano, Polytechnique, Nice-Sophia Antipolis
I http://users.polytech.unice.fr/~gaetano/asd/Robert Sedgewick, Princeton University I cos226/lectures.htmlCharles Leiserson and Erik Demaine, MIT. I http://ocw.mit.edu/courses/ index.htmLe cours de 2009-2010 de Bernard Boigelot 6Contenu du cours
Partie 1: Introduction
Partie 2: Outils d'analyse
Partie 3: Algorithmes de tri
Partie 4: Structures de donnees elementaires
Partie 5: Dictionnaires
Partie 6: Resolution de problemes
Partie 7: Graphes
7Partie 1
Introduction
Introduction8
Plan1. Algorithms + Data structures = Programs (Niklaus Wirth)
2. Introduction a la recursivite
Introduction9
Algorithmes
Unalgorithmeest une suitenieetnon-ambigued'operations oud'instructions permettant de resoudre unproblemeProvient du nom du mathematicien persanAl-Khawarizmi(820),
le pere de l'algebreUn probleme algorithmique est souvent formule comme la transformation d'un ensemble de valeurs,d'entree, en un nouvel ensemble de valeurs,de sortie.Exemples d'algorithmes : IUne recette de cuisine (ingredients!plat prepare)
ILa recherche dans un dictionnaire (mot!denition)
ILa division entiere (deux entiers!leur quotient)
ILe tri d'une sequence (sequence!sequence ordonnee)Introduction10Algorithmes
On etudiera essentiellement les algorithmescorrects. I Un algorithme est (totalement)correctlorsque pour chaque instance, il se termine en produisant la bonne sortie. IIl existe egalement des algorithmespartiellement correctsdont la terminaison n'est pas assuree mais qui fournissent la bonne sortie lorsqu'ils se terminent. IIl existe egalement des algorithmesapproximatifsqui fournissent unesortie inexacte mais neanmoins proche de l'optimum.Les algorithmes seront evalues en termes d'utilisation de resources,
essentiellement par rapport auxtemps de calculmais aussi a l'utilisation de lamemoire.Introduction11Algorithmes
Un algorithme peut ^etre specie de dierentes manieres :en langage naturel, graphiquement, en pseudo-code, par un programme ecrit dans un langage informatique La seule condition est que la description soit precise.Introduction12
Exemple : le tri
Le probleme de tri :
IEntree : une sequence dennombresha1;a2;:::;ani
ISortie : une permutation de la sequence de departha01;a02;:::;a0ni telle quea01a02:::a0nExemple : IEntree :h31;41;59;26;41;58i
ISortie :h26;31;41;41;58;59iIntroduction13
Tri par insertion
Description en langage naturel :
On parcourt la sequence de gauche a droite
Pour chaque elementaj:On l'insere asa p ositiondans une nouvelle s equenceo rdonnee contenant les elements le precedant dans la sequence. On s'arr^ete des que le dernier element a ete insere a sa place dans la sequence.Introduction14
Tri par insertion1"#$%%&'(#(&)#$*+#*$,-&(".&/01%$2#34-&51"#$%.*+#2%"6&&)02.,&&
111"-,$#2%"&)%$#
7 8 9:;< 879 897
897:
;897: ;8<97:Introduction15
Tri par insertion
Description en C (sur des tableaux d'entiers) :
void InsertionSort (int *a, int length) { int key, i; for(int j = 1; j < length; j++) { key = a[j]; /* Insert a[j] into the sorted sequence a[0...j-1] */ i = j-1; while (i>=0 && a[i]>key) { a[i+1] = a[i]; i = i-1; a[i+1] = key;Introduction16
Insertion sort
Description enpseudo-code(sur des tableaux d'entiers) :Insertion-Sort(A)1forj= 2toA:length
2key=A[j]
3//InsertA[j] into the sorted sequenceA[1::j1].
4i=j15whilei>0 andA[i]>key
6A[i+ 1] =A[i]
7i=i18A[i+ 1] =keyIntroduction17
Pseudo-code
Objectifs :Decrire les algorithmes de maniere a ce qu'ils soient compris par des humains.Rendre la description independante de l'implementation S'aranchir de details tels que la gestion d'erreurs, les declarations de type, etc. Tres proche du C (langage procedural plut^ot qu'oriente objet) Peut contenir certaines instructions en langage naturel si necessaireIntroduction18
Pseudo-code
Quelques reglesStructures de blocs indiquees par l'indentation Boucles (for,while,repeat) et conditions (if,else,elseif) comme en C.Le compteur de boucle garde sa valeur a la sortie de la boucle En sortie d'unfor, le compteur a la valeur de la borne max+1.fori= 1toMaxCode,i= 1
whileiMax Code i=i+ 1Commentaires indiques par//Aectation (=) et test d'egalite (==) comme en C.Introduction19
Pseudo-code
Les variables (i,jetkeypar exemple) sont locales a la fonction.A[i] designe l'elementidu tableauA.A[i::j] designe un intervalle de
valeurs dans un tableau.A:lengthest la taille du tableau.L'indexation des tableaux commence a 1. Les types de donnees composes sont organises enobjets, qui sont composes d'attributs. On accede a la valeur de l'attributattrpour un objetxparx:attr.Un variable representant un tableau ou un objet est considereecomme un pointeur vers ce tableau ou cet objet.Parametres passes par valeur comme en C (mais tableaux et objets
sont passes par pointeur)....Introduction20
Trois questions recurrentes face a un algorithme
1.Mon algo rithmeest-il co rrect,se termine-t-il ?
2.Quelle est sa vitesse d'ex ecution?
3.Y-a-t'il mo yende faire mieux ?
Exemple du
tri pa rinse rtion 1.Oui !technique des invariants (partie 2)
2.O(n2)!analyse de complexite (partie 2)
3. Oui !il existe un algorithmeO(nlogn) (partie 1)Introduction21Correction deInsertion-SortInsertion-Sort(A)
1forj= 2toA:length
2key=A[j]
3i=j14whilei>0 andA[i]>key
5A[i+ 1] =A[i]
6i=i17A[i+ 1] =keyInvariant :(p ourla b oucleexterne) le sous-tableau A[1::j1]
contient les elements du tableau originalA[1::j1] ordonnes.On doit montrer que I l'invariant est vrai avant la premiere iteration Il'invariant est vrai avant chaque iteration suivante IEn sortie de boucle, l'invariant implique que l'algorithme est correctIntroduction22 Correction deInsertion-SortAvant la premiere iteration : I j= 2)A[1] est trivialement ordonne.Avant lajeme iteration : I Informellement, la boucle interne deplaceA[j1],A[j2], A[j3]:::d'une position vers la droite jusqu'a la bonne position pourkey(A[j]).En sortie de boucle : I A la sortie de boucle,j=A:length+ 1. L'invariant implique queA[1::A:length] est ordonne.Introduction23
Complexite deInsertion-SortInsertion-Sort(A)
1forj= 2toA:length
2key=A[j]
3i=j14whilei>0 andA[i]>key
5A[i+ 1] =A[i]
6i=i17A[i+ 1] =keyNombre de comparaisonsT(n) pour trier un tableau de taillen?Dans le pire des cas :
ILa boucleforest executeen1 fois (n=A:length).
ILa bouclewhileest executeej1 foisIntroduction24
Complexite deInsertion-SortLe nombre de comparaisons est borne par :T(n)nX
j=2(j1)Puisque Pn i=1i=n(n+ 1)=2, on a :T(n)n(n1)2
Finalement,T(n) =O(n2)
(borne inferieure?)Introduction25
Structures de donnees
Methode pour stocker et organiser les donnees pour en faciliter l'acces et la modicationUne structure de donnees regroupe : I un certain nombre de donnees a gerer, et Iun ensemble d'operations pouvant ^etre appliquees a ces donneesDans la plupart des cas, il existe I plusieurs manieres de representer les donnees et Idierents algorithmes de manipulation.On distingue generalement l'interfacedes structures de le ur implementationIntroduction26
Types de donnees abstraits
Un type de donnees abstrait (TDA) represente l'interface d'une structure de donnees.Un TDA specie precisement : I la nature et les proprietes des donneesIles modalites d'utilisation des operations pouvant ^etre eectueesEn general, un TDA admet dierentes implementations (plusieurs
representations possibles des donnees, plusieurs algorithmes pour les operations).Introduction27
Exemple : le a priorites
Donnees gerees : des objets avec comme attributs : I une cle, munie d'un operateur de comparaison selon un ordre totalIune valeur quelconqueOperations :
ICreation d'une le vide
IInsert(S;x) : insere l'elementxdans la leS.
IExtract-Max(S) : retire et renvoie l'element deSavec la cle la plus grande.Il existe de nombreuses facons d'implementer ce TDA : ITableau non trie;
IListe triee;
IStructure de tas;
I::: Chacune mene a des complexites dierentes des operationsInsert etExtract-MaxIntroduction28Structures de donnees et algorithmes en pratique
La resolution de probleme algorithmiques requiert presque toujours la combinaison de structures de donnees et d'algorithmessophistiques pour la gestion et la recherche dans ces structures.D'autant plus vrai qu'on a a traiter des volumes de donnees
importants.Quelques exemples de problemes reels : IRoutage dans les reseaux informatiques
IMoteurs de recherche
IAlignement de sequences ADN en bio-informatiqueIntroduction29 Plan1. Algorithms + Data structures = Programs (Niklaus Wirth)
2. Introduction a la recursivite
Introduction30
Algorithmes recursifs
Un algorithme estrecursifs'il s'invoque lui-m^eme directement ou indirectement. Motivation : Simplicite d'expression de certains algorithmesExemple : Fonction factorielle :
n! =1 sin= 0 n(n1)! sin>0Factorial(n)1ifn==0
2return1
3returnnFactorial(n1)Introduction31
Algorithmes recursifs
Factorial(n)
1ifn==0
2return1
3returnnFactorial(n1)Regles pour developper une solution recursive :
On doit denir un cas de base (n== 0)On doit diminuer la \taille" du probleme a chaque etape (n!n1)Quand les appels recursifs se partagent la m^eme structure de
donnees, les sous-problemes ne doivent pas se superposer (pour eviter les eets de bord)Introduction32
Exemple de recursion multiple
Calcul dukieme nombre de Fibonacci :
F 0= 0 F 1= 18i2 :Fi=Fi2+Fi1
Algorithme :Fibonacci(n)
1ifn12returnn
3returnFibonacci(n2) +Fibonacci(n1)Introduction33
Exemple de recursion multiple
Fibonacci(n)
1ifn12returnn
3returnFibonacci(n2) +Fibonacci(n1)1.L'algo rithmee st-ilco rrect?
2.Quelle est sa vitesse d'ex ecution?
3.Y-a-t'il mo yende faire mieux ?
Introduction34
Exemple de recursion multiple
Fibonacci(n)
1ifn12returnn
3returnFibonacci(n2) +Fibonacci(n1)1.L'algo rithmee stco rrect?
IClairement, l'algorithme est correct.
IEn general, la correction d'un algorithme recursif se demontre par induction. 2.Quelle est sa vitesse d'ex ecution?
3.Y-a-t'il mo yende faire mieux ?
Introduction35
Vitesse d'execution
Nombre d'operations pour calculerFibonacci(n) en fonction denEmpiriquement :Results 0 10 20 3040
50
60
20 25 30 35 40 45 50
Time (seconds)
n RubyPython
Scheme
C C-wiz Java C-gcc©20 06AntonioCarz aniga(Carzaniga)
Toutes les implementations atteignent leur limite, plus ou moins loinIntroduction36
Trace d'executionTracedÕex"ecution:
fibonacci1(k) fibonacci1(k12)fibonacci1(k11)Tempsdecalcul:O(1
n ),o`u1= 1+ 5 2Preuve?
32(Boigelot)
Introduction37
Complexite
quotesdbs_dbs46.pdfusesText_46[PDF] LES SUBORDONNES SVP !!
[PDF] Les substances edeine et cyclhoheximide agissent a deux phases differents d'une des etapes de la synthese de protine
[PDF] Les substitus et leurs référents!Urgent besoin d'aide!!!
[PDF] les substituts exercices
[PDF] les substituts grammaticaux 1am
[PDF] les substituts grammaticaux et lexicaux exercices français facile
[PDF] les substituts grammaticaux exercices 3am
[PDF] les substituts grammaticaux pdf
[PDF] les substituts lexicaux et grammaticaux 3am
[PDF] les substituts lexicaux et grammaticaux exercices corrigés pdf
[PDF] Les succès de L'Union Européenne
[PDF] Les Sud : Croissance Démographique et Richesses
[PDF] les suffixes et les préfixes
[PDF] les suite