Vous êtes sur la page 1sur 14

18/10/2020

Conception
et Analyse des
Algorithmes

PLAN
 Problèmes algorithmiques

 Algorithmes

 Programmes

 Analyse des algorithmes

 Conception des algorithmes

1
18/10/2020

Liste des objectifs


Ce cours initie les étudiants à l’analyse et à la conception
des algorithmes.
à la fin du cours, les étudiants seront capables de faire ce qui
suit:
• Analyser les performances asymptotiques des algorithmes.
• Démontrer une connaissance des principaux algorithmes et
structures de données.
• Appliquer d'importants paradigmes de conception
algorithmique et méthodes d'analyse.
• Produire des algorithmes efficaces.

Problèmes algorithmiques
• Problèmes de calcul
• Un problème de calcul spécifie une relation entrée-sortie
• À quoi ressemble l'entrée?
• Quelle devrait être la sortie pour chaque entrée?
• Exemple:
• Entrée: un nombre entier N
• Sortie: Le nombre est-il premier?
• Exemple:
• Entrée: une liste de noms de personnes
• Sortie: La même liste triée par ordre alphabétique
• Exemple:
• Entrée: une image au format numérique
• Sortie: Une description en anglais de ce que l’image montre 4

2
18/10/2020

Définir un Problème

• Problème:
Description de la relation entrée-sortie
• Algorithme:
Une séquence d’étapes de calcul qui transforme l’entrée
en sortie.
• Structure de données:
Une méthode organisée pour stocker et récupérer des
données.
• Notre tâche:
Face à un problème, concevoir un algorithme correct et
efficace qui le résout.
5

Problème
• Une instance d'un problème comprend toutes les entrées
nécessaires pour calculer une solution au problème.

• Un algorithme est dit correct si, pour chaque instance


d'entrée, il s'arrête avec la sortie correcte.

• Un algorithme correct résout le problème de calcul donné.


Un algorithme incorrect peut ne pas s’arrêter du tout sur
certaines instances d’entrée, ou avec une réponse autre que
celle souhaitée.

3
18/10/2020

Résoudre le problème par un


ordinateur
1. Qu'est-ce que résoudre un problème ??
• Répondre aux questions.
• Trouver la sortie.
2. Étapes pour résoudre le problème par les ordinateurs:
• Comprendre le problème
• Développer un moyen de le résoudre.
• Programmer l'ordinateur pour le résoudre.

Résoudre le problème par un


ordinateur
A. Comprendre le problème:
 Analyse du problème et spécification.
1. Comprendre le problème
2. Description des données d'entrée
Nombre d'éléments de données.
Type de chaque élément.
Les noms de chaque élément.
Les relations entre les éléments.

4
18/10/2020

Résoudre le problème par un


ordinateur
B. Développer une solution:
Trouver un algorithme capable de résoudre le problème.

Concevoir la solution (algorithme).

Analyser-la (analyse d'algorithme) pour pouvoir choisir la


meilleure solution s'il y en a plus d'une.

Algorithmes
• Un algorithme est une spécification exacte de la façon de
résoudre un problème de calcul
• Un algorithme doit spécifier chaque étape de manière complète,
afin qu'un ordinateur puisse la mettre en œuvre sans plus de
"compréhension"
• Un algorithme doit fonctionner pour toutes les entrées possibles
du problème.
• Les algorithmes doivent être:
1. Correct: pour chaque entrée, produire une sortie appropriée
2. Efficace: le plus rapidement possible avec le moins de mémoire
possible
• Il peut y avoir de nombreux algorithmes différents pour chaque
problème de calcul.
10

5
18/10/2020

Un algorithme?
• Algorithme
Algorithme: Toute procédure de calcul bien définie qui prend
une valeur ou un ensemble de valeurs en entrée et produit une
valeur ou un ensemble de valeurs en sortie.

est donc une séquence d’étapes de calcul qui transforment


l’entrée en sortie.

est un outil permettant de résoudre un problème de calcul bien


spécifié.
Toute méthode spéciale pour résoudre un certain type de
problème.
11

Un programme?
• Un programme est l'expression d'un algorithme dans un
langage de programmation
• un ensemble d'instructions que l'ordinateur suivra pour
résoudre un problème

12

6
18/10/2020

Applications
• Problèmes d’étude auxquels ces techniques peuvent
s’appliquer
tri
récupération de données
routage réseau
Jeux
etc

13

L’ étude des algorithmes


Un algorithme utilisera les ressources de la machine pour
résoudre le problème:
 il utilise le processeur de l’ordinateur.
Il utilise la mémoire de l'ordinateur.
Il utilise la bande passante de communication.
Les ordinateurs sont rapides mais ils ne sont pas infiniment
rapides.
La mémoire de l'ordinateur ne coûte pas cher, mais ce n'est
pas gratuit.
L'algorithme a un coût.
14

7
18/10/2020

Analyse des algorithmes


• L'analyse d'algorithmes a pour objectif principal de trouver le
meilleur algorithme capable de résoudre un problème donné.
• Meilleur algorithme: coût minimal.

• Il peut y avoir de nombreux algorithmes différents pour


chaque problème de calcul, mais ils diffèrent souvent
considérablement dans leur utilisation des ressources de
l'ordinateur:
utilisation du temps.
Utilisation de la mémoire

15

Analyse des algorithmes


• L'objectif est alors de trouver l'algorithme qui utilise le
minimum de ressources informatiques: le temps et l'espace.
• Analyser l'algorithme, c'est prédire les ressources qu'il
requiert -> étudier l'efficacité de l'algorithme.

• Efficacité de l'algorithme:
L'efficacité du temps.
Efficacité de l'espace

16

8
18/10/2020

Intérêt de l’analyse des


algorithmes

• Besoin de reconnaître les limites de divers algorithmes pour


résoudre un problème.

• Besoin de comprendre la relation entre la taille du problème


et la durée d'exécution: Comment décider qu’un
programme n’est pas assez bon?

• Besoin d'apprendre à analyser le temps d'exécution d'un


algorithme sans le coder.

17

Intérêt de l’analyse des


algorithmes

• Apprendre des techniques pour écrire des codes plus


efficaces

• comprendre leurs comportements.

• les améliorer. (Recherche)

18

9
18/10/2020

Intérêt de l’analyse des


algorithmes
• La justesse
La relation entrée / sortie correspond-elle à l'exigence de
l'algorithme?
• Quantité de travail effectué (complexité)
Le nombre des opérations de base pour effectuer la
tâche
• Quantité d'espace utilisé
Mémoire utilisée

19

Intérêt de l’analyse des


algorithmes

• Simplicité, clarté
Vérification et mise en œuvre.
• Optimalité
Est-il impossible de faire mieux?

20

10
18/10/2020

Complexité

• La complexité d'un algorithme est simplement la


quantité de travail qu'il effectue pour réaliser sa
tâche.

21

Pourquoi étudier la conception des


algorithmes

• Il est important de pouvoir:


1. Estimer la durée d'exécution d'un programme.
2. Estimer la plus grande entrée (de point de vue taille) qui peut
raisonnablement être donnée au programme.
3. Comparer l'efficacité de différents algorithmes.
4. Se concentrer sur les parties de code exécutées le plus grand
nombre de fois.
5. Choisir un algorithme pour une application.

22

11
18/10/2020

Pourquoi étudier la conception


et l’analyse des algorithmes
• Les algorithmes nous aident à comprendre l’évolutivité.
• La performance fait souvent la distinction entre ce qui est
réalisable et ce qui est impossible.
• Les mathématiques algorithmiques fournissent un langage
permettant de parler du comportement du programme.
• La performance est la devise de l'informatique.
• Les leçons de la performance du programme se généralisent à
d'autres ressources informatiques.
• La vitesse est amusante!

23

Les composants d’un algorithme

• Variables et valeurs
• Instructions Séquences (une série d'instructions)
• Procédures (une séquence d'instructions nommée)
• Sélections (Une instruction qui détermine laquelle des
deux séquences possibles est exécutée)
• Répétitions (Répéter une instruction ...)
• Documentation (enregistre ce que l'algorithme fait)

24

12
18/10/2020

Ce que nous allons faire


• Apprendre les approches générales de la conception
d'algorithmes
• Diviser pour régner (Diminuer/Transformer)
• Approches gloutonnes
• Programmation dynamique
• Algorithmes d'approximation
• Problème NP

25

Ce que nous allons faire


• Examiner les méthodes d'analyse de la correction et de
l'efficacité des algorithmes
Équations de récurrence
Notations O, Omega et Thêta pour l'analyse de meilleur /
pire / moyen des cas
• Décider si certains problèmes n'ont pas de solution dans un
délai raisonnable
Lister toutes les permutations de n objets (prend n! Pas)
Problème de voyageur de commerce
• Étudier l'utilisation de la mémoire en tant que mesure
d'efficacité différente

26

13
18/10/2020

Référence

27

14

Vous aimerez peut-être aussi