Vous êtes sur la page 1sur 22

Algorithmique avancée

A. Mouloudi
Table des matières

Introduction
Chap 1: Complexité algorithmique
Chap 2: Arbre Binaire
Arbre Binaire de Recherche (ABR)
Les Arbres Equilibrés
Les B Arbres
Chap 3 : Graphes
Eléments de la théorie des graphes
Le problème du plus court chemin
Flots dans les réseaux
Master: Génie informatique
2
Table des matières

Chap 4 : Programmation linéaire


 Résolution graphique
 Méthode du simplexe

Chap 5 : Décidabilité
 Machine de Turing
 Décidabilité
 Classes de complexité

Master: Génie informatique


3
Table des matières
 NP-Complétude
o 3-SAT
o Clique
o Couverture par les sommets
o Circuit hamiltonien
o Coloration de graphes
Chap 6 : Algorithmes d’approximation
 Vertex cover
 Voyageur de commerce (TSP)
 Bin Packing
 2-Partition
Master: Génie informatique
4
Introduction

L’algorithmique est une science apparue, il y


a très longtemps, bien avant l’idée même
d’ordinateur.
Citons, vers 1800 avant J-C, les babyloniens
de l’époque d’Hammurabi formulant des
règles précises pour la résolution de certains
types d’équations.
5 Master: Génie informatique
Introduction

Plus tard, au 3ème siècle avant J-C, chez les


grecs, fleurissent un grand nombre de procédés de
calcul, dont le célèbre « algorithme d'Euclide ».

En Perse, au 9ème siècle après J-C, on trouve


l’origine du mot « algorithme », qui provient du nom
de Abu Ja'far Mohammed Ibn Mûsâ Al-Khowâ-
rismi.
6 Master: Génie informatique
Introduction

Al-Khowâ-rismi, a écrit un ouvrage


d’arithmétique utilisant les règles de calcul sur
la représentation décimale des nombres, et
montra l’inutilité des tables et abaques. Il eut
une influence capitale pendant plusieurs
siècles.
7 Master: Génie informatique
Introduction

Au fil du temps, la signification du mot s’élargit et


finalement vient à désigner tout procédé de calcul
systématique, voire automatique, mais sans
référence nécessaire à une machine.

Côté informatique du 21ème siècle et en première


approche, on peut dire qu'un algorithme est un

« mode d'emploi pour résoudre un problème ».

8 Master: Génie informatique


Introduction

Un algorithme est un procédé de calcul


automatique composé d’un ensemble fini
d’étapes, chaque étape étant formée d’un
nombre fini d’étapes élémentaires, qui permet
de résoudre le problème en donnant la sortie
requise.
Master: Génie informatique
9
Introduction

Chaque étape élémentaire est :

définie de façon rigoureuse et non ambiguë

 effective, c-à-d, pouvant être réalisée par une


machine

De plus, l’algorithme doit toujours terminer après un


nombre fini d’opérations, quelle que soit la donnée
en entrée, et fournir un résultat.
Master: Génie informatique
10
Introduction

Quels sont les types de problème susceptibles


d’être résolus par des algorithmes ?
Les applications concrètes des algorithmes sont
innombrables, entre autres :
– L’Internet permet à des gens éparpillés un peu
partout dans le monde d’accéder rapidement à toutes
sortes de données. Tout cela repose sur des
algorithmes intelligents qui permettent de gérer et
manipuler de grosses masses de données.
Introduction
– Le commerce électronique permet de négocier et
échanger, de manière électronique, biens et services.
Le commerce électronique exige que l’on préserve la
confidentialité de données telles que numéros de
carte de crédit, mots de passe et relevés bancaires.
La cryptographie à clé publique et les signatures
numériques qui font partie des technologies
fondamentales employées dans ce contexte,
s’appuient sur des algorithmes numériques et sur la
théorie des nombres.
Introduction

- Dans l’industrie et le commerce, il faut souvent optimiser


l’allocation de ressources limitées. Une compagnie pétrolière
veut savoir où placer ses puits de façon à maximiser les profits
escomptés. Un candidat à la présidence veut savoir dans
quels supports publicitaires il doit investir pour maximiser ses
chances d’élection. Une compagnie aérienne désire réaliser
l’affectation des équipages aux vols de telle façon que les
coûts soient minimisés, les vols assurés sans défaillance et la
législation respectée. Un fournisseur de services Internet veut
savoir où placer des ressources supplémentaires pour
desservir ses clients de manière plus efficace.
Ces exemples de problèmes peuvent être résolus par la
programmation linéaire, que nous étudierons dans un chapitre.
Introduction

Les algorithmes que nous considérons sont


déterministes : toute exécution de l’algorithme sur
les mêmes données donne le même résultat.

À tout algorithme écrit en langage naturel ou


pseudo-code, on peut associer un programme
implémentant l’algorithme.

Master: Génie informatique


14
Introduction

Ce programme écrit avec des règles syntaxiques


rigoureuses et destiné à être compris par une
machine.

Il se pose alors le problème de trouver le bon degré


de précision nécessaire pour définir l’algorithme: il
doit être suffisant pour permettre d’écrire un
programme lui correspondant et pour calculer sa
complexité.
Master: Génie informatique
15
Introduction

Il est à noter qu’à tout problème ne correspond pas


nécessairement un algorithme permettant de le
résoudre : problème indécidable, tel que le
problème de la diagonalisation de Cantor ou l’arrêt
de la machine de Turing (il est démontré qu’il ne
peut pas exister d’algorithme général , qui pour tout
programme P, et toute donnée D, répondrait oui ou
non à la question « P termine-t-il pour D ? »).
16 Master: Génie informatique
Introduction

On parle aussi de fonction non calculable. En effet,


vers 1930, avant la construction des premiers
ordinateurs, plusieurs mathématiciens (Gödel,
Church, Turing, Post) ont formalisé le concept
d’algorithme, ou de fonction calculable, par
différents modèles abstraits à ressources infinies
(machines de Turing, fonctions récursives, λ-calcul).

17 Master: Génie informatique


Introduction

En conséquence, si un algorithme est


implémentable dans un langage (ou modèle)
donné, en C par exemple, alors il est forcément
implémentable dans un autre et des transcriptions
d’un langage dans un autre sont possibles (thèse
de Church).

Master: Génie informatique


18
Introduction

On peut décrire un algorithme


indépendamment du langage de
programmation (et de la machine sur
laquelle sera exécuté le programme) et si
l’on n’utilise que des pas raisonnables,
l’algorithme est implémentable dans tout
langage.
Master: Génie informatique
19
Introduction

Ce qui nous intéresse, étant donné un problème,


est de trouver le "meilleur " algorithme. Pour cela,
on va comparer des algorithmes qui ont la même
spécification. Ce que l’on veut pouvoir dire :
« Sur toute machine, quel que soit le langage de
programmation, l’algorithme A1 est meilleur que
l’algorithme A2 pour les données de grande taille. »
20 Master: Génie informatique
Introduction

Il faut donc évaluer les ressources nécessaires pour


réaliser l’algorithme : place mémoire et temps
d’exécution. Attention avec les algorithmes récursifs,
il peut y avoir de la place mémoire utilisée pour la
création de la pile.
Il faut trouver un juste compromis entre espace et
temps. On peut parfois gagner du temps mais c’est
au détriment de la place, et réciproquement.
Master: Génie informatique
21
Introduction
Un algorithme peut être préféré à un autre pour sa
clarté et sa lisibilité (produit de 2 matrices), même
s’il est moins performant.
Certains algorithmes ne sont pas performants en
général, mais peuvent l’être pour certaines
configurations de données. Par exemple, si on sait
que les données d’une liste sont presque triées, le
tri par insertion est intéressant.
22 Master: Génie informatique

Vous aimerez peut-être aussi