structures de données et complexité. notions de complexité

37
Structures de données et complexité

Upload: edwige-foucault

Post on 03-Apr-2015

117 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Structures de données et complexité. Notions de Complexité

Structures de données et complexité

Page 2: Structures de données et complexité. Notions de Complexité

Notions de Complexité

Page 3: Structures de données et complexité. Notions de Complexité

Notion d'algorithme Algorithme : ensemble d'actions de

traitement l'information échanger, recevoir, ranger, compter…

Agit sur des données initiales ("entrées") Produit des résultats ("sorties")

Programmation d'un algorithme: Expression dans un langage de

programmation Styles de programmation (itérative,

récursive…)

Page 4: Structures de données et complexité. Notions de Complexité

Complexité d’un algorithme

Mesurer l’efficacité d’un algorithme

Coût en nombre d’opérations: Fonction du nombre n de données (mots mémoire ou

bits) à traiter

Algorithme polynomial : O(n 2) , O(n 3), … opérations

Parcours d’une matrice carrée n x n, produit de 2 matrices, ...

Algorithme exponentiel : O(e n) Très lent en pratique

Coût moyen : pas facile à calculer hypothèses probabilistes sur la répartition des données

Complexité : coût maximal, pire des cas

Page 5: Structures de données et complexité. Notions de Complexité
Page 6: Structures de données et complexité. Notions de Complexité
Page 7: Structures de données et complexité. Notions de Complexité
Page 8: Structures de données et complexité. Notions de Complexité
Page 9: Structures de données et complexité. Notions de Complexité
Page 10: Structures de données et complexité. Notions de Complexité
Page 11: Structures de données et complexité. Notions de Complexité
Page 12: Structures de données et complexité. Notions de Complexité
Page 13: Structures de données et complexité. Notions de Complexité
Page 14: Structures de données et complexité. Notions de Complexité
Page 15: Structures de données et complexité. Notions de Complexité
Page 16: Structures de données et complexité. Notions de Complexité

Structures de données

Page 17: Structures de données et complexité. Notions de Complexité

A quoi ça sert ?!?

Savoir ranger les données Tableaux limités Agencer les données d’une

certaine manière Ex: Processus physiques de type flux…

Page 18: Structures de données et complexité. Notions de Complexité

Les PILES - Stack (LIFO)

Last In – First Out Principe de la pile d’assiette

Page 19: Structures de données et complexité. Notions de Complexité

Opérations sur les piles

Empiler(e): ajouter e en haut de la pile

Dépiler(): extraire l’élément au sommet

Vide(): vider la pile EstVide(): teste si la pile est vide EstPleine(): teste si la pile est pleine

Page 20: Structures de données et complexité. Notions de Complexité

Exemple d’utilisation

Notation postfixée des expressions arithmétiques 2+5*6 256*-

Détermination de palindrome, etc…

Page 21: Structures de données et complexité. Notions de Complexité

Implémentation par tableau

Empile

Empile

Dépile

Page 22: Structures de données et complexité. Notions de Complexité
Page 23: Structures de données et complexité. Notions de Complexité
Page 24: Structures de données et complexité. Notions de Complexité

Les FILES (FIFO)

First In – First Out Principe de la File d’attente

Page 25: Structures de données et complexité. Notions de Complexité

Opérations sur les files

Enfiler(e): ajouter e en haut de la file

Défiler(): extraire l’élément en bas Vide(): vider la file EstVide(): teste si la file est vide EstPleine(): teste si la file est

pleine

Page 26: Structures de données et complexité. Notions de Complexité

Exemple d’utilisation

File d’attente utilisateur ou processus

Base de données Etc…

Page 27: Structures de données et complexité. Notions de Complexité

Implémentation par tableau

Enfile

Empile

Défile

Page 28: Structures de données et complexité. Notions de Complexité

Vision circulaire de la file

Test pour plein: Fin = Début

Test pour vide: Fin = Début

Comment faire ? Variable

booléenne

Page 29: Structures de données et complexité. Notions de Complexité
Page 30: Structures de données et complexité. Notions de Complexité
Page 31: Structures de données et complexité. Notions de Complexité

Les Listes chaînées

Inconvénients des précédents: nombres limités d’éléments

Principe: le jeu de piste; pointeur vers l’élément suivant

Page 32: Structures de données et complexité. Notions de Complexité

Opérations sur les Listes

Ajoute(e): ajouter e au bout de la liste

Récupère(n): extraire l’élément à la nième position

Vide(): vider la liste EstVide(): teste si la liste est vide…etc…

Page 33: Structures de données et complexité. Notions de Complexité

Exemple d’utilisation

On peut implémenter des piles, files, tableaux et bien d’autres choses avec des listes.

Page 34: Structures de données et complexité. Notions de Complexité

Les Listes doublement chaînées

Inconvénients des listes simplement chaînées: un seul sens de parcours

Principe: on rajoute un sens; pointeur vers l’élément suivant et l’élément précédent

Page 35: Structures de données et complexité. Notions de Complexité

Arbres Binaires

Structures arborescentes

Utilisations: Langage naturel Algorithme de recherche Jeu, echecs

Page 36: Structures de données et complexité. Notions de Complexité

Possibilités pour le prochain cours Théorie des graphes Sécurité informatique (Net & Réseaux) Base de donnée et + si temps libre Théorie de la complexité avancée Programmation objet Intelligence artificielle distribuée Intelligence artificielle « Logique » Vie Artificielle et Programmation génétique

Page 37: Structures de données et complexité. Notions de Complexité