You are on page 1of 12

Chapitre 7

Techniques de rduction

1. Introduction
Le principe des techniques de rduction consiste transformer un problme donn, pour le
rsoudre, en un autre problme quivalent dont on connat la solution. Dans ce chapitre, nous
allons passer en revue quelques transformations pour illustrer cette ide de rduction. Les plus
utilises sont celles qui consistent passer par un programme mathmatique ou par un problme
de graphe.

Le problme central de cette approche rside dans le choix du problme vers qui il faudrait
rduire le problme que nous voulons rsoudre. De plus, si nous voulons que nos efforts soient
dune porte pratique, il faudrait :

1. lalgorithme de rduction soit efficace


2. le problme vers lequel nous avons rduit notre problme de dpart doit possder un
algorithme de rsolution efficace.

En un mot, pour considrer cette approche, il faut que lensemble de deux point ci-dessus aient
une meilleure complexit que lalgorithme direct de rsolution (sil en existe un) du problme
considr.

2. La rduction par lexemple


Dans cette section, nous allons illustrer la technique de rduction travers des exemples.

2.1 Calcul du plus petit multiple commun

Rappelons que le plus petit multiple commun de deux nombres entier n et m, not par
PPMC(n,m), est dfini comme tant le plus petit entier qui est divisible par n et m. Par exemple,
le PPMC(124,60) = 120 ; PPMC(11,55) = 55.

Pour dterminer le PPMC de deux nombre n et m, il existe un algorithme simple qui est comme
suit :

Supposons que m < n. lalgorithme consiste multiplier m par les nombres successifs de 1 n.
On obtient le PPMC ds que le produit obtenu est un multiple de n. Lalgorithme est comme suit :
int function PPMC(int n,m){
int temp,i ;
if m > n {
temp = m;
m=n;
n = temp ;
} // fin du if
i = 1 ; temp = m ;
while (i < n) && ( temp % n != 0)
{
temp = m * i;
i++ ;
}
return(temp) ;
} // fin de la fonction

Il est clair que la complexit de dans le pire cas cet algorithme est en O(max(n,m)). Pour
amliorer cette complexit, on utilise le rsultat suivant. Si PGCD(n,m) reprsente le PGCD des
nombre n et m, alors, nous avons :

nm
PPMC =
PGCD (n, m)

Or, nous avons un algorithme (dEuclide) qui dtermine le PGCD de n et m en O(log max (n,m)).
Autrement dit, pour calculer le PPMC de deux nombre, il est prfrable de passer par le calcul de
leur PGCD.

2.2 Calcul du nombre de chemins ou de cycles dans un graphe

Dans certaines situations, nous pourrions tre intresss par le calcul du nombre de chemins ou
de cycles dune certaine longueur. La structure de donnes de la matrice adjacente peut tre
directement utilise pour rpondre cette interrogation.

Thorme Soit G = (X,A) un graphe orient, avec X = {x1 , x 2 ,..., x n }; de matrice d'adjacence
M = (mij ) . Pour tout entier naturel k, non nul notons M k la kme puissance de la matrice. La
valeur de m k ij reprsente le nombre de chemins de longueur k du sommet xi au sommet xj .

Dmonstration
Effectuons une rcurrence sur k : m1ij = mij dsigne bien le nombre de chemins allant de xi xj.
Supposons le rsultat vrai pour l'entier k 1 . Comme M k = M k 1 M , on a par dfinition :

n
k 1
mij = mil mlj
k

l =1
k 1
Par hypothse de rcurrence, mil est le nombre de chemins de longueur k 1 allant de xi xl
k 1
et mlj est gal 1 si ( xi , x j ) est une arte de G et 0 sinon. Observons que mil mlj est le
nombre de chemins de longueur k

allant de xi x j dont la dernire arte est ( xl , x j ) . La somme de ces termes est donc bien le
nombre de chemins de longueur k allant de xi x j .

Exemple Dterminons le nombre de chemins de longueur 2 allant de v1 v4 dans le graphe G1


v3

e8

v2 e4
v4
e3
e5
e7
v5
e1
e2
v6
e6
v1
La matrice dadjacence de G1 est

v1 v2 v3 v4 v5 v6
v1 0 1 0 0 1 1
X= v2 1 0 0 1 1 0
v3 0 0 0 1 0 0
v4 0 1 1 0 1 1
v5 1 1 0 1 0 0
v6 1 0 0 1 0 0
Le nombre de chemins cherch est llment qui est ligne 1 et la colonne 2 de la matrice
v1 v2 v3 v4 v5 v6
v1 3 1 0 3 1 0
2
X = v2 1 3 1 1 2 2
v3 0 1 1 0 1 1
v4 3 1 0 4 1 0
v5 1 2 1 1 3 2
v6 0 2 1 0 2 2

c'est--dire 3.
2.3. Les problmes doptimisation

Dfinition 1 : Si un problme consiste rechercher un maximum dune certaine fonction f, nous


dirons que cest un problme de maximisation.

Dfinition 2 : Si un problme consiste rechercher un minimum dune certaine fonction f, nous


dirons que cest un problme de minimisation.

Supposons maintenant quon veut minimiser une fonction f(x), et que nous connaissons un
algorithme qui maximise cette fonction. Comment peut-on utiliser de lalgorithme de
minimisation pour rsoudre notre problme de maximisation. La rponse est donne par le
rsultat suivant qui reste vrai quelque soit la fonction f dfinie sur un domaine quelconque D. :

min f ( x) = max[ f ( x)]

En dautre termes, minimiser une fonction revient maximiser sa fonction ngative.

Dans ce qui suit, nous allons discuter dun type de rduction lie aux problmes de la
programmation linaire et de la thorie des graphes. Ces techniques de rduction sont de loin les
plus rpandues dans la rduction des problmes. La raison principale est quil existe dans ces cas
des algorithmes efficaces de rsolution. De plus, un nombre important de problmes pratiques
sont naturellement modliss laide de ces deux problmatiques.

2.4. Rduction par la programmation mathmatique

Cette technique consiste modliser le problme tudi en un problme de programmation


mathmatique, cest dire lexprimer sous forme dune fonction de variables optimiser sujette
des contraintes sur ces variables. Ensuite, rsoudre le problme de dpart revient rsoudre le
problme mathmatique ainsi formul. Dans cette section, on parlera plus dun modle le plus
connu qui est celui de la programmation linaire. Il est utile de signaler que la fonction (objectif)
optimiser et les contraintes sur les variables sont, dans ce cas, des fonctions linaires. Ce
problme est rsolu par plusieurs algorithmes. Nanmoins, ce plus connu dentre eux est
lalgorithme du simplexe. Signalons par ailleurs que dans les autres cas (cas non linaires, cas
des variables entires), il existe des techniques pour leur rsolution. Seulement, dun point de vue
de la complexit de calculs, la rsolution de ces problmes, dans la plupart des cas, est difficile.

Dfinition 1 : Un problme de programmation linaire est un problme qui a la forme suivante :

n
min f ( x) = ci xi
i =1

sous les contraintes suivantes :


a11 x1 + a12 x 2 + .... + a1n x n = b1
a 21 x1 + a 22 x 2 + .... + a 2 n x n = b2
a31 x1 + a32 x 2 + .... + a3n x n = b3
..
..
a m1 x1 + a m 2 x 2 + .... + a mn x n = bm

x1 , x 2 ,..., x n 0

o aij , ci , bi , n, m sont des constantes. Les variables x1 , x 2 ,..., x n sont des relles. Si elles venaient
tre des entiers, alors on dit que nous avons un programme linaire en nombres entiers. Dans ce
dernier cas, il nexiste pas dalgorithme polynomial pour rsoudre ce dernier.

Exemple 1 : Rappelons le problme du sac dos fractionnaire que nous avons dj discut dans
le chapitre des algorithmes voraces.

Soit un ensemble de n objets N = {1,2,..., n} , et un sac dos ayant une capacit maximale W.
Chaque objet a un poids wi et un gain vi . Le problme consiste choisir un ensemble d'objets
parmi les n objets, au plus un de chaque, de telle manire que le gain total soit maximis, sans
dpasser la capacit W du sac.

Si xi reprsente la quantit de larticle i mettre dans le sac, alors il nest pas difficile darriver
la formulation suivante.

n
max vi xi
i =1
n

w x i i W
i =1

xi 1; i = 1,2,.., n
xi 0; i = 1,2,.., n.

la premire quation reprsente la quantit maximiser si xi est la quantit choisie pour larticle
i. La deuxime quation reprsente la capacit de poids de lensemble des article choisis ne
devant pas dpasser la capacit totale. Le reste des quations signifient que les quantits xi ne
doivent pas dpasser lunit et doivent tre non ngatives.

Si on revanche, on insiste quun objet est soit choisi soit ignor. Autrement dit, les objets sont
indivisibles, et de ce fait nous ne pouvons pendre une portion dun objet dans le sac, alors dans
ce cas, la formulation ci-dessus devient comme suit :
n
max vi xi
i =1
n

w x i i W
i =1

xi = 0,1, i = 1,2,..., n..

Lintgralit des objets rend ce problme difficile rsoudre. La stratgie vorace propose dans
le chapitre prcdent ne fonctionne plus dans ce cas.

Exemple 2. Considrons un agriculteur qui possde des terres, de superficie gale H hectares,
dans lesquelles il peut planter du bl et du mas. L'agriculteur possde une quantit E d'engrais et
I d'insecticide. Le bl ncessit une quantit E1 d'engrais par hectare et I1 d'insecticide par
hectare. Les quantits correspondant pour le mas sont notes E2 et I2.

Soit P1 le prix de vente du bl et P2 celui du mas. Si l'on note par x1 et x2 le nombre d'hectares
planter en bl et en mas, alors le nombre optimal d'hectare planter en bl et en mas peut tre
exprim comme un programme linaire:

maximiser P1 x1 + P2 x 2 ; (maximiser le revenu net)

Sous les contraintes suivantes

x1 + x 2 H ; (borne sur le nombre total d'hectares)

E1 x1 + E 2 x 2 E ; (borne sur la quantit d'engrais)

I 1 x1 + I 2 x 2 I ; (borne sur la quantit d'insecticide)

x1 0; x 2 0 ; (on ne peut pas planter un nombre ngatif d'hectares)

Exemple 3. Un artisan fabrique deux type dobjets, disons A et B. La ralisation d'un objet A
demande 30$ de matire premire et 125$ de main-d'uvre, tandis que celle de B demande 70$
et 75$, respectivement. Les profits ralis sont de 54$ par objets A, et de 45$ par objet B. La
dpense journalire en matire premire ne doit pas dpasser 560$. La dpense journalire en
main-d'oeuvre ne doit pas dpasser 1 250 $. Dterminer la quantit journalire dobjets A et B
produire de telle manire maximiser le profit.

Si x est le nombre d'objets A et y le nombre d'objets B, les contraintes sont:

Ce qui se simplifie en :
Le bnfice journalier de l'entreprise est donn par:

F(x ; y) = 54x + 45y .


Graphiquement, on aura ce qui suit :

La solution est donc : x = 7 ; y = 5 ; F(x,y) = 603.


2.5. Rduction par les problmes de graphe

Elle consiste ramener le problme tudi une problmatique de graphe pour laquelle une
solution existe. Dans cette section, on verra quelques transformation dans ce sens.

Problme 1. Le problme des ponts de Knigsberg La ville de Knigsberg en Prusse


(maintenant Kaliningrad) comprenait 4 quartiers, spars par les bras du Prgel. Les habitants de
Knigsberg se demandaient sil tait possible, en partant dun quartier quelconque de la ville, de
traverser tous les ponts sans passer deux fois par le mme et de revenir leur point de dpart. Le
plan de la ville peut se modliser laide dun graphe ci-dessous, les quartiers sont reprsents
par les 4 sommets, les 7 ponts par des artes :

Ce problme nest en fait que celui du chemin eulrien qui consiste trouver dans un graphe
donn un chemin qui passe par tous les arcs de ce graphe une et une seule fois. Ce problme
possde une solution bien connue dans la thorie des graphes.

Problme 2. Choix d'un itinraire Sachant qu'une manifestation d'tudiants bloque la gare de
Poitiers, et connaissant la dure des trajets suivants :

Bordeaux Nantes 4 h
Bordeaux Marseille 9 h
Bordeaux Lyon 12 h
Nantes Paris-Montparnasse 2 h
Nantes Lyon 7 h
Paris Montparnasse Paris Lyon 1 h (en autobus)
Paris-Lyon Grenoble 4 h 30
Marseille Lyon 2 h 30
Marseille Grenoble 4 h 30
Lyon Grenoble 1 h 15

Comment faire pour aller le plus rapidement possible de Bordeaux Grenoble ?

Les donnes du problme sont faciles reprsenter par un graphe dont les artes sont
tiquetes par les dures des trajets :
Il s'agit de dterminer, dans ce graphe, le plus court chemin (ou l'un des plus courts chemins, s'il
existe plusieurs solutions) entre Bordeaux et Grenoble. Ce problme est rsoluble par
lalgorithme du plus court chemin dans un graphe ayant des poids positifs (par exemple
lalgorithme de Dijkstra)..

Problme 3 Organisation d'une session d'examens

Des tudiants A, B, C, D, E et F doivent passer des examens dans diffrentes disciplines, chaque
examen occupant une demi-journe :

Chimie : tudiants A et B
lectronique : tudiants C et D
Informatique : tudiants C, E, F et G
Mathmatiques : tudiants A, E, F et H
Physique : tudiants B, F, G et H

On cherche organiser la session d'examens la plus courte possible.

On peut reprsenter chacune des disciplines par un sommet, et relier par des artes les sommets
correspondant aux examens incompatibles (ayant des tudiants en commun) :
Il s'agit alors de colorier chacun des sommets du graphe en utilisant le moins de couleurs
possible, des sommets voisins (relis par une arte) tant ncessairement de couleurs. Cette
problmatique est bien tudie dans la thorie des graphes et est connue sous le connue de
coloration de graphes.

Problme 4. Planification de travaux

Pour rnover une maison, il est prvu de refaire l'installation lectrique (3 jours), de ramnager
(5 jours) et de carreler (2 jours) la salle de bains, de refaire le parquet de la salle de sjour (6
jours) et de repeindre les chambres (3 jours), la peinture et le carrelage ne devant tre faits
qu'aprs rfection de l'installation lectrique. Si la rnovation est faite par une entreprise et que
chacune des tches est accomplie par un employ diffrent, quelle est la dure minimale des
travaux ?

On peut reprsenter les diffrentes tapes de la rnovation sur un graphe dont les arcs sont
tiquets par la dure minimale sparant deux tapes

On peut reprsenter les diffrentes tapes de la rnovation sur un graphe dont les arcs sont
tiquets par la dure minimale sparant deux tapes

Il s'agit de dterminer la dure du plus long chemin du dbut la fin des travaux. Ce problme
peut tre rsolu par la mthode CPM-PERT.
Problme 5. Affectation du personnel des tches

Dfinition 1: Un graphe biparti est un graphe dont lensemble de ses sommets V sont divises en
deux ensemble disjoints, A et B tels que lensemble de ses arcs est celui qui relie juste un des
sommets de A et un des sommet de B.

A B A B

Dfinition 2: Deux arcs sont dit adjacents dans un graphe si, et seulement si, ils possdent en
commun une de leurs extrmits.

Dfinition 3 : un couplage dans un graphe biparti est lensemble des arcs non adjacent reliant les
sommets de A ceux de B.

Soir le graphe biparti suivant :

Un couplage est reprsent par lensemble ci-dessous darcs coloris en noir:


Dfinition 4: Un couplage est dit maximum si on ne peut pas ajouter darcs sans dtruire la
notion de couplage.

Le couplage de la figure prcdente est maximum.

Il existe plusieurs algorithmes efficaces qui dterminent un couplage maximum (maximum


matching) dans un graphe biparti.

Exemple. Soient un ensemble de n travailleurs et un ensemble de m machines. Chaque


travailleur est qualifi oprer sur un sous-ensemble de machines. Chaque travailleur ne peut tre
affect qu une seule machine et une machine ne peut tre affecte plus dun travailleur. Notre
problme consiste affecter le plus de machines possibles aux travailleurs pouvant les faire
marcher.

Si on reprsente lensemble des machines et des travailleurs par des sommets. Un sommet
reprsentant les travailleurs est reli un sommet reprsentant ceux des machines chaque fois
que ce travailleur est qualifi travailler sur cette machine. On construit ainsi un graphe biparti.
Affecter le plus de machines possibles aux travailleurs pouvant les faire oprer revient alors
trouver un couplage maximum dans ce graphe.

You might also like