Vous êtes sur la page 1sur 63

RECHERCHE OPERATIONNELLE

Année Académique:
2019/2020
Niveau:
C2A2-: Cycle 2, Première Année, Ingénieur de Conception
Tronc commun: HYMAE

ECOLE NATIONALE SUPERIEURE POLYTECHNIQUE DE MAROUA

Enseignant:
M. MBA TENE SALOMON (Doctorant en Informatique et Télécommunication (Option : Génie Logiciel)
à l’ENSPM et PLEG)
INFORMATION GÉNÉRALE
o Intitulé: Recherche Opérationnelle
• Code : HMEL
• Durée : 45 heures
• Cours Magistral : 35 heures
• Travaux dirigé: 5 heures
• TPE : 5 heures

o Éléments constitutifs de l'Unité d'Enseignement


• Cours magistral : soyez attentifs!
• Travaux Dirigés : Exercices
• Travail Personnel de l'étudiant
Organisation de l'UE

 Organisation des évaluations


Exercices et Travaux Pratiques
Questions de cours
Parfois des QCM

 Types d'évaluation
TPE : Travail à faire à la maison
CC : 1 à 2 heures
Examen : 2-3 heures
Rattrapage : 2-3 heures
OBJECTIFS GENERAUX

Présentation des méthodes de programmations linéaire,

dynamique et d’optimisation
CHAPITRE
PLAN
INTITULE
0 RAPPEL SUR LES GRAPHES
1 Rôle des algorithmes en Informatique et croissance des fonctions
2 Tables de hachage et arbres binaires de recherche
3 Programmation dynamique
4 Algorithmes Glouton et Algorithmes élémentaires pour les graphes
5 Arbres couvrants de poids minimum, Plus courts chemins à origine
unique et Plus courts chemins pour tout couple de sommet
6 Flot maximum et Réseau de tri
7 Programmation linéaire
8 Calcul matricielle, polynômes et transformée rapide de Fourrier et
algorithmes de la théorie des nombres
9 NP-Complétude
10 Algorithmes d’approximation
BIBLIOGRAPHIE
1) Helary, Pedrono, « Recherche opérationnelle : Exercices corrigés »,
Hermann, 1983
2) Sivazlian, Stanfel, « Optimization Techniques in Operation
Research », Prentice Hall, 1975
3) Winston, « Operation Research: Applications and Algorithms »,
Duxbury
4) Thomas Cormen, Charles Leiserson, Ronald Rivest, Clifford Stein,
«INTRODUCTION À L’ALGORITHMIQUE», Dunod, Paris, 2004
CHAPITRE 0 : RAPPEL SUR LES
GRAPHES
INTRODUCTION

La notion de graphe et ses applications se rencontrent dans une multitude de

domaines d’application technique. C’est un élément central dans la théorie de la

recherche opérationnelle et dans l’implémentation, voire même la compréhension

des algorithmes de recherche opérationnelle.


DEFINITION
Représentation d’un graphe
1) Représentations sagittales

2) Représentation multivoque
Représentation d’un graphe
3) Matrice booléenne
Représentation d’un graphe
4) Représentation virtuelle d’un graphe
4-1) Représentation encaser

4-2) Représentation en matrice booléenne

D’autres types de représentations existent et leur utilisation dépend de l’utilisation qu’on veut en faire.
Pour une représentation plus mathématique, on utilisera la représentation en matrice booléenne.
Terminologie
Terminologie
Terminologie
Graphe orienté
Définitions
Graphe orienté
Définitions
Graphe orienté
Cas pratique d’utilisation de graphes
1) Problème 1 : Problème du voyageur de commerce (TPE 1)
Cas pratique d’utilisation de graphes
Relâchement
Les algorithmes de cette partie emploient la technique de La figure ci-dessous montre deux exemples de relâchement
relâchement d’arc, un dans lequel l’estimation de plus court chemin diminue
Soit un sommet v ∈ S , soit un attribut d[v] qui est un majorant et un autre dans lequel il n’y a pas modification de
de la longueur d’un plus court chemin entre l’origine s et v. l’estimation.
On appelle d[v] une estimation de plus court chemin. On
initialise les estimations et les prédécesseurs (П [v] ) via la
procédure en temps Ѳ(S) que voici.

SOURCE-UNIQUE-INITIALISATION(G, s)
1 pour chaque sommet v ∈ S[G]
2 faire d[v] ←∞
3 П[v] ← NIL
4 d[s] ← 0

RELÂCHER(u, v, w)
1 si d[v] > d[u]+w(u, v)
2 alors d[v] ← d[u]+w(u, v)
3 П [v] ← u
Cas pratique d’utilisation de graphes
ALGORITHME DE BELLMAN-FORD
Étant donné un graphe orienté pondéré G =(S, A), de fonction Les figures ci-dessous (b)–(e) montrent l’état de l’algorithme
de pondération w : A → R, et une origine s, l’algorithme de après chacun des quatre passages
Bellman-Ford retourne une valeur booléenne indiquant s’il
existe ou non un circuit de longueur strictement négative
accessible à partir de s. Si un tel circuit n’existe pas, l’algorithme
donne les plus courts chemins ainsi que leurs poids.

L’algorithme utilise la technique du relâchement, diminuant


progressivement une estimation d[v] du poids d’un plus court
chemin depuis l’origine s vers chaque sommet v ∈ S jusqu’à
atteindre la valeur réelle du poids de plus court chemin, d(s, v).

BELLMAN-FORD(G, w, s)
1SOURCE-UNIQUE-INITIALISATION(G, s)
2 pour i ← 1 à |S[G]|-1
3 faire pour chaque arc (u, v) ∈ A[G]
4 faire RELÂCHER(u, v, w)
5 pour chaque arc (u, v) ∈ A[G]
6 faire si d[v] > d[u]+w(u, v)
7 alors retourner FAUX
8 retourner VRAI
Cas pratique d’utilisation de graphes
Flot
Imaginons un produit s’écoulant à travers un système depuis  Le problème du flot maximum est le suivant : on veut
une source, où il est produit, vers un puits, où il est consommé. connaître la plus grande vitesse à laquelle le produit peut
La source génère le produit avec un certain débit constant et le voyager entre la source et le puits, sans violer aucune
puits consomme le produit avec le même débit. contrainte de capacité. C’est l’un des problèmes de réseau
 Le « flot » de produit à un endroit quelconque du système de transport les plus simples et, comme nous le verrons
est intuitivement la vitesse à laquelle ce produit se déplace. dans l’un des chapitres

 Les réseaux de transport peuvent servir à modéliser la


circulation de liquides à travers des tuyaux, de pièces
détachées à travers des chaînes de montage, de courant à
travers des réseaux électriques, de données à travers des
réseaux de communication, etc.
 Chaque arc d’un réseau de flot peut être vu comme un
conduit emprunté par le produit. Chaque conduit a une
capacité fixe, qui représente le débit maximum que peut
atteindre le produit à travers le conduit ; par exemple, 200
litres de liquide par heure dans un tuyau. Les sommets sont
les jonctions des conduits et, excepté pour la source et le
puits, le produit s’écoule d’un sommet à l’autre sans gain ni
perte. Autrement dit, le débit à l’entrée d’un sommet doit
être égal au débit en sortie. Cette propriété a pour nom «
conservation de flot »
Cas pratique d’utilisation de graphes
Cas pratique d’utilisation de graphes
Problème de transport
Problème de transport
Problème de transport
Pour le problème d’affectation
TPE 2
Problème d’affectation
Faire un bref résumé sur le problème d’affectation

Résolver un problème de votre choix qui cadre votre spécialité en


appliquant le problème d’affectation
CHAPITRE 1 : Rôle des algorithmes
en Informatique et croissance des
fonctions
SOMMAIRE

Algorithmes

Algorithme en tant que technologie

Tri par insertion

Analyse des algorithmes

Conception des algorithmes

Croissance des fonctions


INTRODUCTION

Qu’est-ce qu’un algorithme ?

En quoi l’étude des algorithmes est-elle utile ?

Quel est le rôle des algorithmes par rapport aux autres technologies
informatiques ?

Ce chapitre a pour objectif de répondre à ces questions.


Algorithmes
• Un algorithme (définition informelle) est donc une séquence d’étapes de calcul
qui transforment l’entrée en sortie.
• un algorithme comme un outil permettant de résoudre un problème de calcul bien
spécifié
• une instance d’un problème consiste en l’entrée (satisfaisant aux contraintes,
quelles qu’elles soient, imposées dans l’énoncé du problème) requise par le calcul
d’une solution au problème.
• Un algorithme est dit correct si, pour chaque instance en entrée, il se termine
en produisant la bonne sortie
• Un algorithme peut être spécifié en langage humain ou en langage informatique,
mais peut aussi être basé sur un système matériel
Algorithmes
1) 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 :
 Le projet du génome humain a pour objectifs d’identifier les 100 000 gènes de
l’ADN humain…
 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.
 Le commerce électronique permet de négocier et échanger, de manière électronique,
biens et services. s’appuient sur des algorithmes numériques et sur la théorie des
nombres.
 Une compagnie pétrolière veut savoir où placer ses puits de façon à maximiser les
profits escomptés. 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…
Algorithmes
Nous montrerons aussi, tout au long de ces chapitres, comment résoudre maints
problèmes concrets, dont les suivants :
 Soit une carte routière sur laquelle sont indiquées toutes les distances entre
intersections adjacentes ; il faut déterminer le trajet le plus court entre deux
intersections. Comment trouver le trajet le plus court parmi tous les trajets
possibles? Ici, nous modélisons la carte (qui, elle-même, modélise les routes
réelles) sous la forme d’un graphe. puis nous cherchons à déterminer le chemin le
plus court entre deux sommets du graphe

 Soit une suite (A1,A2,A3,…,An) de n matrices, dont nous voulons calculer le


produit A1A2…An

 Soit l’équation ax = b (mod n) dans laquelle a, b et n sont des entiers


…
Algorithmes
2) Structures de données
• Une structure de données est un moyen de stocker et organiser des données
pour faciliter l’accès à ces données et leur modification
3) Problèmes difficiles
• Il existe des problèmes, cependant, pour lesquels l’on ne connaît aucune solution
efficace. Ces problèmes, connus sous l’appellation de problèmes NP-complets.
Algorithme en tant que technologie
Le temps machine est donc une ressource limitée, et il en est de même de l’espace
mémoire. Il faut utiliser ces ressources avec parcimonie
a) Efficacité : Il arrive souvent que des algorithmes conçus pour résoudre le même
problème diffèrent fortement entre eux en termes d’efficacité.
• Exemple : deux algorithmes de tri
Tri par insertion Tri par fusion

un temps approximativement : C1n2 pour trier n éléments un temps approximativement : C2nlgn pour trier n éléments

Le tri par insertion est généralement plus rapide que le tri par fusion pour de petits nombres de données mais, dès que le nombre n
d’éléments à trier devient suffisamment grand, l’avantage du tri par fusion (lg n contre n) fait plus que compenser la différence
entre les facteurs constants
Algorithme en tant que technologie
b) Algorithmes et autres technologies
• Les algorithmes, à l’instar des matériels informatiques, sont une technologie
• Les performances globales du système dépendent autant des algorithmes que des
matériels.
• La conception de ces matériels utilise des algorithmes
• Toutes les interfaces utilisateur graphiques reposent sur des algorithmes.
• Le routage s’appuie fondamentalement sur des algorithmes
Les algorithmes sont au cœur de la plupart des technologies employées dans les
ordinateurs modernes

Posséder une base solide en algorithmique, voilà qui fait toute la différence entre
le programmeur d’élite et le programmeur lambda. Les technologies
informatiques modernes permettent de faire certaines tâches même si l’on ne s’y
connaît guère en algorithmes ; mais avec une bonne formation en algorithmique,
l’on peut aller beaucoup, beaucoup plus loin.
Tri par insertion

Figure 1 : Tri de cartes à jouer, via tri par insertion.


Analyse des algorithmes
• Analyser un algorithme est devenu synonyme de prévoir les ressources
nécessaires à cet algorithme
• les ressources à prévoir sont la mémoire, la largeur de bande d’une
communication ou le processeur ; mais, le plus souvent, c’est le temps de calcul
qui nous intéresse
• Pour pouvoir analyser un algorithme, le modèle utilisé est la RAM
Analyse des algorithmes
Analyse du tri par insertion
• La durée d’exécution de la procédure TRI-INSERTION dépend de l’entrée
• Le temps d’exécution d’un algorithme croît avec la taille de l’entrée
• taille de l’entrée : est le nombre d’éléments constituant l’entrée,
• par exemple la longueur n du tableau à trier.
• Un autre exemple, si l’entrée d’un algorithme est un graphe, on pourra décrire la taille de
l’entrée par le nombre de sommets et le nombre d’arcs.
• Le temps d’exécution d’un algorithme pour une entrée particulière est le nombre
d’opérations élémentaires, ou « étapes », exécutées.
Analyse des algorithmes
Conception des algorithmes
Méthode diviser-pour-régner

• Le paradigme diviser-pour-régner implique trois étapes à chaque niveau de la


récursivité :

• Diviser : le problème en un certain nombre de sous-problèmes.

• Régner : sur les sous-problèmes en les résolvant de manière récursive. Si la taille


d’un sous-problème est suffisamment réduite, on peut toutefois le résoudre
directement.

• Combiner : les solutions des sous-problèmes pour produire la solution du


problème originel.
Méthode diviser-pour-régner
L’algorithme du tri par fusion suit fidèlement la méthodologie diviser-pour-régner.
• Diviser : Diviser la suite de n éléments à trier en deux sous-suites de n/2éléments
chacune.
• Régner : Trier les deux sous-suites de manière récursive en utilisant le tri par
fusion.
• Combiner : Fusionner les deux sous-suites triées pour produire la réponse triée.
Méthode diviser-pour-régner
Méthode diviser-pour-régner
Croissance des fonctions
NOTATION ASYMPTOTIQUE
• Les notations que nous utiliserons pour décrire le temps d’exécution
asymptotique d’un algorithme sont définies en termes de fonctions dont le
domaine de définition est l’ensemble des entiers naturels N ={0,1,3…}
• De telles notations sont pratiques pour décrire la fonction T(n) donnant le temps
d’exécution du cas le plus défavorable, qui n’est généralement définie que sur des
entrées de taille entière
Notation Θ
• TPE : trouver c1, c2, et n0
Notation O

• La notation O sert à majorer une fonction, à un facteur constant près


• La notation O permet souvent de décrire le temps d’exécution d’un algorithme
rien qu’en étudiant la structure globale de l’algorithme. Par exemple, la structure
de boucles imbriquées de l’algorithme du tri par insertion donne
immédiatement une borne supérieure en pour le temps d’exécution du cas
le plus défavorable
Notation Ω
• (a)-g(n) est une borne asymptotiquement approchée de f (n)
• (b)-g(n) est une borne supérieure asymptotique de f(n)
• (c)- g(n) est une borne inférieure asymptotique de f(n)
Notation o
Notation ω
Comparaison de fonctions
• on supposera que f (n) et g(n) sont asymptotiquement positives.
TPE
TPE (suite et fin )
MERCI
RENDEZ VOUS AUX
PROCHAINES CHAPITRES

Vous aimerez peut-être aussi