Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
2016
1 – 92
SOMMAIRE
2 – 92
1.4.6. Graphe fonctionnel................................................................................................................ 26
1.4.7. Graphe bi-parti..................................................................................................................... 26
2. ARBRES ET ARBORESCENCES................................................................................. 27
2.1. Définitions..............................................................................................................27
2.1.1. Arbre .................................................................................................................................. 27
2.1.2. Arborescence ....................................................................................................................... 28
2.1.3. Forêt ................................................................................................................................... 28
2.1.4. Arbre maximal d’un graphe G connexe .................................................................................... 28
Algorithme de construction ........................................................................................................... 28
Résultat ..................................................................................................................................... 29
Exemple 1 .................................................................................................................................. 29
Exemple 2 .................................................................................................................................. 29
Arbre maximal de poids minimum ................................................................................................. 30
Arbre maximal de poids maximum ................................................................................................ 30
2.1.5. Fermeture transitive ............................................................................................................. 31
2.1.6. En résumé ........................................................................................................................... 31
2.2. Cycles et bases de cycles d’un graphe ........................................................................ 31
2.2.1. Pré-requis et définition .......................................................................................................... 31
2.2.2. Cycles indépendants ............................................................................................................. 32
Exemple 1 .................................................................................................................................. 32
Exemple 2 .................................................................................................................................. 32
2.2.3. Base de cycles d’un graphe simple orienté ............................................................................... 32
Exemple..................................................................................................................................... 33
Nombre cyclomatique .................................................................................................................. 33
2.2.4. Cocycles et bases de cocycles d’un graphe planaire................................................................... 34
Pré-requis et définitions ............................................................................................................... 34
Nombre cocyclomatique ............................................................................................................... 34
3. RECHERCHE DE CHEMINS DANS UN GRAPHE SIMPLE ORIENTE ....................................... 35
3.1. Définitions..............................................................................................................35
Exemple..................................................................................................................................... 35
Hypothèse de base ...................................................................................................................... 36
Exemples d’application................................................................................................................. 36
3.2. Algorithmes ............................................................................................................37
3.2.1. Moore-Dijkstra (cas 2)........................................................................................................... 37
Exemple..................................................................................................................................... 38
3.2.2. Berge (cas 2) ....................................................................................................................... 39
Exemple..................................................................................................................................... 40
3.2.3. Bellman (cas 2) .................................................................................................................... 40
3.2.4. Ford (cas 2) ......................................................................................................................... 41
3.2.5. Cas des graphes sans circuit (cas 2) ....................................................................................... 41
Exemple..................................................................................................................................... 41
Fonction rang ............................................................................................................................. 42
4. APPLICATION AUX PROBLEMES D’ORDONNANCEMENT ................................................. 43
4.1. Graphe potentiel – tâches.........................................................................................43
4.1.1. Marge totale ........................................................................................................................ 43
4.1.2. Marge libre .......................................................................................................................... 44
4.1.3. Marge certaine ..................................................................................................................... 44
4.1.4. Exemple applicatif................................................................................................................. 44
4.2. Graphe potentiel – évènements .................................................................................45
5. PROGRAMMATION LINEAIRE CONTINUE .................................................................. 46
5.1. Définition ...............................................................................................................46
3 – 92
5.2. Exemple.................................................................................................................47
5.3. Applications réelles ..................................................................................................47
5.4. Admissibilité ...........................................................................................................48
Solution admissible...................................................................................................................... 48
Domaine admissible..................................................................................................................... 48
Simplexe.................................................................................................................................... 49
Possibilités ................................................................................................................................. 49
5.5. Exercices ...............................................................................................................50
5.5.1. Premier exercice................................................................................................................... 50
5.5.2. Second exercice ................................................................................................................... 51
5.5.3. Troisième exercice ................................................................................................................ 52
Application numérique ................................................................................................................. 52
6. ALGORITHMES ET PERFORMANCES .......................................................................... 53
6.1. Problèmes combinatoires..........................................................................................53
Définition ................................................................................................................................... 53
Exemple..................................................................................................................................... 53
Questions................................................................................................................................... 53
Approche élémentaire .................................................................................................................. 54
Exemple 1 : les calculateurs ......................................................................................................... 54
Exemple 2 : le sac à dos .............................................................................................................. 55
6.2. Complexité d’un algorithme ...................................................................................... 55
6.2.1. Complexité en temps ............................................................................................................ 55
6.2.2. Complexité en mémoire......................................................................................................... 56
6.2.3. Critères d’évaluation de la complexité ..................................................................................... 56
Coût uniforme............................................................................................................................. 56
Coût logarithmique ...................................................................................................................... 56
Comparaison des coûts (exemple) ................................................................................................. 56
6.2.4. Complexité asymptotique ...................................................................................................... 58
6.2.5. Ordre .................................................................................................................................. 58
Exemple..................................................................................................................................... 58
Remarque .................................................................................................................................. 59
Exercice ..................................................................................................................................... 59
6.3. Efficacité d’un algorithme .........................................................................................60
6.3.1. Premier algorithme possible ................................................................................................... 60
6.3.2. Second algorithme possible.................................................................................................... 61
6.3.3. Troisième algorithme possible ................................................................................................ 61
Remarques ................................................................................................................................. 62
6.3.4. Exercice : calcul de an ........................................................................................................... 62
6.3.5. Exercice : problème des célébrités .......................................................................................... 63
6.3.6. exercice : calcul du nombre de hamsters au bout de n mois....................................................... 63
6.3.7. Exemple : les tours de Brahma............................................................................................... 65
7. CLASSES DE COMPLEXITE DE PROBLEMES ................................................................. 67
7.1. Première classification..............................................................................................67
7.2. Seconde classification (dite de complexité).................................................................. 67
7.2.1. Réductibilité d’un problème à un autre .................................................................................... 68
7.2.2. Équivalence ......................................................................................................................... 68
7.2.3. Classe de complexité NP-Complet ........................................................................................... 68
7.2.4. Problème de satisfaisabilité (SAT) ........................................................................................... 69
Exemple 1 .................................................................................................................................. 69
Exemple 2 .................................................................................................................................. 69
7.3. Exemples ...............................................................................................................70
4 – 92
7.3.1. Problèmes de classe P ........................................................................................................... 70
7.3.2. Problèmes NP-Complets......................................................................................................... 70
8. METHODES EXACTES D’OPTIMISATION COMBINATOIRE ............................................... 71
8.1. Backtracking...........................................................................................................71
Exercice ..................................................................................................................................... 72
8.2. Branch & Bound ......................................................................................................73
Exercice ..................................................................................................................................... 74
Exemple : coloration d’un graphe .................................................................................................. 76
Exemple : voyageur de commerce................................................................................................. 77
8.3. Programmation dynamique .......................................................................................80
Exemple : sac à dos .................................................................................................................... 80
Exercice ..................................................................................................................................... 83
9. METHODES HEURISTIQUES D’OPTIMISATION COMBINATOIRE ....................................... 85
9.1. Définition ...............................................................................................................85
Exemple : sac à dos .................................................................................................................... 85
9.2. Structures d’indépendance........................................................................................85
Exemple : algorithme de Kruskal................................................................................................... 85
9.2.1. Système d’indépendance ....................................................................................................... 86
Exemple 1 .................................................................................................................................. 86
Exemple 2 .................................................................................................................................. 86
9.2.2. Matroïde .............................................................................................................................. 86
Exemple..................................................................................................................................... 87
Algorithme général ...................................................................................................................... 87
9.3. schéma d’approximation...........................................................................................87
9.4. Problèmes types......................................................................................................87
9.4.1. Tâches indépendantes ........................................................................................................... 87
9.4.2. Bin Packing .......................................................................................................................... 90
9.4.3. Coloriage des sommets d’un graphe........................................................................................ 91
Méthode exacte : algorithme de Zikov ........................................................................................... 91
Heuristique inspirée de l’algorithme de Zikov .................................................................................. 92
5 – 92
1. RAPPELS SUR LA THEORIE DES GRAPHES
Nous considérons dès à présent un système, c’est à dire un ensemble d’éléments en interaction et organisé en
vue de réaliser une certaine fonction.
Graphe orienté
Un graphe orienté G est tout couple X, U dans lequel :
Représentation graphique :
Sommets : points
Arcs : flèches
REMARQUE : le graphe est dit planaire si aucun arc ne coupe un autre arc.
6 – 92
Graphe non orienté (clique)
Dans ce cas, l’ordre des éléments dans les couples n’est plus pris en compte :
U u1 , u2 , ..., uM : arêtes
Représentation graphique :
Arêtes : segments (pas de flèches)
Graphe simple
Il s’agit de tout graphe sans boucle et ne contenant pas plus d’un arc entre deux sommets.
Alors :
mij 1 s’il existe un arc dans G ;
mij 0 sinon.
2
Donc, le nombre total de cas envisageables vaut : 2N N
Exemple numérique :
On peut donc envisager un nombre fini de graphes simples orientés différents. Et ce nombre peut s’avérer
immense.
p-Graphe
C’est un graphe dans lequel il n’existe jamais plus de p arcs entre deux sommets. Donc, tout graphe est un p-
graphe.
1-graphe
2-graphe 1-graphe
(par association)
7 – 92
Applications multivoques : prédécesseurs et successeurs
i est prédécesseur de j dans G si u U tel que u i, j .
On définit alors la fonction comme étant l’ensemble des prédécesseurs de i dans G X, :
: i X i X
G X, 1
Exemple : G X, U
X 1,2,3,4,5
U 1,2, 2,3, 2,4, 4,5
1 2 3
1 2 11
2 3 21 1
4 5
: 3 1
: 31 2
4 5 41 2
5 51 4
Adjacence
Deux sommets sont adjacents s’ils sont reliés par un arc :
Le degré d’un sommet i est donc la somme des demi-degrés : di di di .
REMARQUE 1 : si le degré d’un sommet est nul, celui-ci est dit isolé.
REMARQUE 2 : le nombre d’arcs M di di .
iX iX
8 – 92
Exemple : G X, U
X 1,2,3,4,5
U 1,2, 2,3, 2,4, 4,5
1 2 3
d1 0 d1 1
d2 1 d2 2
4 5
d : d3 1 d : d3 0
d4 1 d4 1
d5 1 d5 0
Cocycles
Considérons un sous-ensemble A de sommets de G : A X . Alors :
A : ensemble des arcs d’origine dans A et de fin hors de A.
Exemple : G X, U
X 1,2,3,4,5
U 1,2, 2,3, 2,4, 3,4, 4,5
1 2 3 A 3,4
A A 4,5
REMARQUE 1 : si on a N sommets et un ensemble des parties de X : P X alors on peut définir card PX 2N
cocycles.
Exemples numériques :
X 1,2,3 PX 0, 1, 2, 3, 1,2, 1,3, 2,3, 1,2,3 card PX 2N 23 8 cocycles
REMARQUE 2 : les cocycles sont organisés en espaces vectoriels tant ils peuvent être nombreux. Et tout
ensemble vectoriel peut être ramené à sa base (résumé).
9 – 92
Fermeture transitive associée à un sous-ensemble A de X
Soit A l’ensemble des successeurs de A :
A i
i A
A2 A
La fermeture signifie donc « tous les sommets que l’on peut atteindre en suivant les arcs ».
Exemples :
G X, U
1 2 N
G X, U
A 3,4
1 2 3
1 1,2,3,4,5 X
2 2,3,4,5
3 3,4,5
4 5
4 4,5
5 5
Exemple :
1 2
G X, U
10 – 92
Exemple :
1 2 3
G X, U
4 5
Exemple :
1 2 3 G X, U
Exemple :
G X, U
A 3,4 est-il absorbant ?
1 2 3
11 – 92
Exemple :
G X, U
A 2,4,5,6 est-il absorbant ?
1 2 3
Exemples :
1 2 3
G X, U
Ici, G 4
4 5 6
1 2 3
G X, U
Ici, G 3
(on enlève le sommet 6)
4 5 6
12 – 92
Sous-ensembles stables dans un graphe
A X est stable dans G si et seulement si : A A .
De manière générale, X n’est pas stable sauf si tous ses sommets sont isolés. Sinon, n’importe quel sommet de
A convient.
Exemple :
G X, U
Exemple :
G X, U
1 2 3 A 1,3,5,6
Un sous-ensemble de sommets de G constitue un noyau s’il est à la fois stable et absorbant. Il est possible
qu’un graphe G ait plusieurs ou aucun noyau.
Exemple :
G X, U
1 2
13 – 92
Fonction de Grundy
A tout sommet i, on fait correspondre le nombre entier g
i tel qu’il soit le plus petit entier naturel non présent
dans les successeurs de i :
g: X
0,1,2,3,...
Méthode :
Exemple : 1. On part d’un sommet sans successeur. Par
exemple, du sommet 6 : on lui attribue
l’entier le plus faible, à savoir 0
( 0,1,2,3,... ).
1 2 3
1 2 3
(
0, 1,2,3,... ).
2 ,
0 2 0
5. Pour le sommet 0 et 1 sont utilisés :
on aura 2 (
0 , 1,2,3,... ).
4 5 6
6. Enfin, pour le sommet 1 , on aura 0
1 0 0 (
0, 1, 2 ,3,... ).
Contre-exemple :
1 1
1 2
G X, U , A 3 , 0,1,2,3,...
REMARQUE 3 : tout graphe admettant une fonction de Grundy admet un noyau (et ce peut importe sa taille).
L’inverse n’est pas vrai : tout graphe admettant un noyau n’admet pas forcément de fonction de Grundy.
14 – 92
Exemples :
1 2 3
0 1 0 G X, U , A 1,3,6 , 0,1,2,3,...
1 2 3
1 0 2 G X, U , A 2, 4,6 , 0,1,2,3,...
0 1 0
j 1 à M : colonne
Alors :
aij 1 s’il existe un arc i, j dans G ;
aij 0 sinon.
15 – 92
Pour la matrice ss, cela revient à :
M M
densité : dss
N N N2
Du fait qu’elle soit binaire, le principal avantage de cette représentation est une visualisation rapide de la
présence ou non d’un arc.
Malheureusement, sa faible densité entraîne une forte présence de zéro. On parle de matrice creuse (le terme
anglophone est sparse).
Alors i X et u U , si u i, j :
aiu 1
aiu aju 0
aju 1
Exemple :
G X, U
1 2 3
1 1 0 0 0 1
1 0 1 0 0 0
0 1 1 1 1 0
0 0 0 1 0 1
0 0 0 0 1 0
4 5
Le principal avantage de cette représentation est qu’elle permet de connaître le sens de l’arc.
Toutefois, cette représentation n’est pas non plus facilement adaptable vers un algorithme du fait de sa faible
densité :
2M 2
densité : dsa
NM N
M 2
2
M 2N
N N
De manière générale, aucune des deux représentions matricielles n’est efficace d’un point de vue
algorithmique.
16 – 92
Leur factorisation se fait par obtention du déterminant de la matrice :
a b
ad b c
c d
a b e
c d f a d i f h c b i e h g b f d e
g h i
etc.
G de dimension M.
i 1 2 3 4 5 6
i 1 2 3 4 5 6
i 1 4 i 1 4 5
i 2 3 4 i 2 3 4 3 4
1 2 3 4 5 6
1 2 3 4 5 6
i 1 2 3 4 5 6
i 1 2 3 4 5 6
i 1 4 i 1 4 5 M+1 M+1 M+1
i 2 3 4 3 i 2 3 4 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6
L’avantage majeur de cette représentation est sa forte densité (ce qui est plus pour la machine).
Malheureusement, cela devient illisible pour l’homme.
i1
di i 1 i i d1k 1
k 1
17 – 92
1.3. CONNEXITE D’UN GRAPHE SIMPLE ORIENTE
1.3.1. DEFINITIONS
Chaîne
Une chaîne de longueur q est une séquence d’arcs telle que les arcs sont adjacents deux à deux (extrémité
commune) :
Exemple :
1 G X, U
a
Chaîne :
2 8 10
ue , uf , uh
b c
i j
Cycle
C’est une chaîne dont les extrémités coïncident. Elle commence et finit au même sommet.
Un cycle élémentaire est un cycle qui ne contient aucun autre cycle : il ne passe donc pas deux fois par le
même sommet.
REMARQUE : les cycles élémentaires ne sont pas linéairement indépendants.
Chemin
C’est une chaîne dont tous les arcs sont orientés dans le même sens.
Circuit
C’est un chemin qui commence et finit au même sommet : ce chemin est également un cycle.
Tout comme pour le cycle, un chemin élémentaire est un chemin qui ne contient aucun autre chemin.
Chaîne eulérienne
C’est une chaîne qui ne passe qu’une seule fois par chaque arc.
Chaîne hamiltonienne
C’est une chaîne qui ne passe qu’une seule fois par chaque sommet.
18 – 92
1.3.2. COMPOSANTES CONNEXES
Un graphe est connexe si tout couple de sommets i, j X peut être relié par au moins une chaîne.
Ainsi, si le graphe est non connexe, il est composé de sous-graphes partiels connexes ; on parle de
composantes connexes.
Par exemple : dans l’exemple précédent, le graphe est composé de deux sous-graphes : il n’est donc pas
connexe.
Isthme
C’est un arc tel que sa suppression augmente le nombre de connexité p d’un graphe.
La présence d’isthmes est généralement liée à des problèmes de fiabilité (exemple : les by-pass).
Par exemple, dans l’exemple précédent, le graphe est composé de deux sous-graphes : un isthme les sépare.
Point d’articulation
C’est un sommet tel que sa suppression augmente le nombre de connexité p d’un graphe.
Tout comme les isthmes, les points d’articulation sont liés à des problèmes de fiabilité. L’algorithme de
Trémeaux et celui de Tarjan (plus performant, il se base sur celui de Trémeaux) permettent de vérifier leur
présence ou non dans un graphe.
Exemple :
1 2 1 2
3 4 5 3 4 5
19 – 92
1.3.3. ALGORITHME DE TREMEAUX
Cet algorithme permet de vérifier la connexité p d’un graphe. Pour cela, il recherche d’abord « en profondeur »
puis il revient par chaque bifurcation (« largeur »).
Il est possible de commencer à partir de n’importe quel sommet.
Notations :
num i : numéro du sommet i dans l’exploration (par exemple, pour le premier sommet l : num l 1 ).
P i : prédécesseur du sommet i dans l’arborescence (en théorie, le graphe est initialement vide).
n i : indice du dernier sommet exploré à partir du sommet i (le graphe étant vide, l’indice est donc nul au
départ).
Algorithme
Initialisation :
P i 0 i 1 à N
di di i 1 à N
n i 0 i 1 à N
k 1 l 1
num l 1
P l l i l
Itération :
Tant que n i di ou
i l , répéter :
Si n i di
Alors :
i P i
Sinon :
n i n i 1
j i n i
Si P j 0
Alors :
P j i
i j
k k 1
num i k
Conclusion :
Si k N : le graphe est connexe.
20 – 92
Exemple
Méthode :
1 4 5
1. Initialement, on considère que le graphe est
vide :
P i 0 i 1 à 5
di i
2 3 d1 1, d2 2, d3 2, d4 4, et d5 1
n i 0
1 4 , 2 3, 4 , 3 2, 4
avec : Les di ont été déduits des i initiaux.
et 4 1,2,3,5 , 5 4
j 4 n 4 1 1
1
a
4
P j P 1 1
21 – 92
5. Test avec i 2 :
Test : n 2 0 et d2 2 02
1 4
n 2 n 2 1 0 1 n 2 1
j 2 n 2 1 3
P j P 3 0 (valeur par défaut)
P j i P 3 1
2 3 i j i3
k k 1 k 4
num i k num 3 4
6. Test avec i 3 :
Test : n 3 0 et d3 2 02
n 3 n 3 1 0 1 n 3 1
j 3 n 3 1 2
P j P 2 1
2
a
3
j 3 n 3 2 4
P j P 4 1
7. Test avec i 2 :
Test : n 2 1 et d2 2 12
n 2 n 2 1 1 1 n 2 2
1 4
j 2 n 2 2 4
P j P 4 1
Test : n 2 2 et d2 2 22
2 3
ou test : i 2 1
i P 2 4
8. Test pour i 4 :
Test : n 4 2 et d4 4
b
1 4 5 24
n 4 n 4 1 2 1 n 4 3
a
j 4 n 4 3 3
P j P 4 3
2 3
Le sommet 3 a déjà été exploré.
22 – 92
Test : n 4 3 et d4 4 34
n 4 n 4 1 3 1 n 4 4
j 4 n 4 4 5
P j P 5 0 (valeur par défaut)
P j i P 5 4
i j i5
k k 1 k 5
num i k num 5 5
9. Test pour i 5 :
Test : n 5 0 et d5 1 01
n 5 n 5 1 0 1 n 5 1
1 4 5
j 5 n 5 1 4
P j P 4 1
REMARQUE : le nombre de boucles dans le graphe que l’on peut faire au maximum est inférieur à 2 N dmax
avec :
dmax max imum di (i X)
Ainsi :
par rapport à N ( X 1 à N ) : dmax N ( 2 N2 )
par rapport à M ( U 1 à M ) : dmax k1 M k2 (relation linéaire !)
23 – 92
1.3.4. ALGORITHME DE TARJAN
Cet algorithme sert à la recherche des points d’articulation d’un graphe connexe G à partir d’un sommet
quelconque i.
Pour ce faire, on utilise l’algorithme de Trémeaux avec adjonction pour chaque sommet d’une condition
d’articulation.
Pour i X , on a :
chaque sommet j de D i , on associe le nombre l j min num k avec k j .
l j : plus petit numéro des sommets adjacents à j dans le graphe G. On a donc l’indice
inf i min l j avec j D i .
inf i : plus petit des numéros des sommets pouvant être atteints avec une seule arête à partir des
descendants de i dans l’arborescence.
Remarque 1 : on a toujours inf i num i puisqu’à partir du successeur de i, on peut remonter au sommet i.
Remarque 2 : si inf i num i , le sommet i est un point d’articulation dans le graphe.
Algorithme de Tarjan :
Initialisation :
Arbre vide à l’origine : P i 0 i 1 à N
Compteur : di di i 1 à N
Indice nul à l’origine (arbre vide) : n i 0 i 1 à N
inf i i 1 à N
k 1 l 1
num l 1 P l l i l
Itération :
Tant que n i di ou
i l , répéter :
Si n i di
Alors :
q inf i
i P i
inf i q
Sinon :
n i n i 1
j i n i
Si P j 0
Alors :
inf i min inf i ,num i
P j i
i j
24 – 92
k k 1
num i k
Sinon :
r P j
inf i min inf i ,num i
i j
Deux graphes sont symétriques si et seulement
si : i, j U j,i U
i j
Un graphe est dit « complet » si et seulement si :
i, j U j,i U
25 – 92
1.4.4. GRAPHE TRANSITIF
i j k
Un graphe est dit « transitif » si et seulement si :
i, j U et j,k U i,k U
i j
Un graphe est dit « injectif » si et seulement si :
iX: di 1
i j
Un graphe est dit « fonctionnel » si et seulement
si : i X : di 1
si i X1 j X2
i, j X :
si i X2 j X1
2 1
1 2 4
3 4
3
X1 X2
Remarque : tester si un graphe est bi-parti ou non est très long car on a N sommets :
C1N CN
2 N
CN 2N
26 – 92
2. ARBRES ET ARBORESCENCES
2.1. DEFINITIONS
2.1.1. ARBRE
C’est un graphe connexe sans cycle.
Définitions équivalentes :
Graphe connexe admettant N-1 arcs.
Graphe simple sans cycle admettant N-1 arcs.
Graphe simple sans cycle qui, par l’ajout d’un arc, introduit un cycle unique.
Graphe connexe qui, par le retrait d’un arc, n’est plus connexe.
Tout couple de sommets relié par une chaîne unique.
Exemple :
3 2
2 4 4
1 5 6
6 7 7
27 – 92
2.1.2. ARBORESCENCE
C’est un ensemble de sommets dits « racines » tels qu’il existe un chemin entre ceux-ci et tous les autres
sommets du graphe.
2 4
3 5
6 7
2.1.3. FORET
C’est un graphe dont chaque composante connexe est un arbre (arborescence).
Exemple :
u1
u6 u7 u8 u2
u12 u9
u5 u11 u10 u3
u4
Algorithme de construction
G X,U
U u1, ,un
Algorithme :
1. Prendre a1 u1 i 1 .
2. Chercher uj qui ne forme pas de cycle avec a1, a2 , , ai1 .
3. S’il n’y en a pas, a1,a2 , ,ai1 sont les arcs d’un arbre maximal.
28 – 92
D’après l’exemple précédent :
u1
u1,u2
u1,u2 ,u3
u1,u2 ,u3 ,u4
u1,u2 ,u3 ,u4 ,u5
u1,u2 ,u3 ,u4 ,u5 ,u7
Résultat
Le nombre d’arbres maximaux d’un graphe est égal au mineur de n’importe quel élément de la diagonale
principale d’une matrice D.
Soit i l’énième ligne et j l’énième colonne, alors :
D dij
Si i, j U dij 1
Si i, j U dij 0
Exemple 1
1 1 0 0
0 3 0 1
4 2 D
0 1 2 0
0 0 1 2
3
Exemple 2
29 – 92
a(N)
N
0
Arbre X, A P arbre wu
uA
Trouver l’arbre maximal de poids minimum est complexe et long. Il existe une solution rapide : l’algorithme
de Kruskal :
1. On ordonne les arcs du graphe par poids croissant : T u1 u1, ,un
2. On considère uk . Si uk forme un cycle avec T, on rejète uk . Sinon : T T uk
Un autre : u6 u4
4 3 6
u2 ,u3,u7 ,u10 ,u6 ,u4 ,u3,u5,u1,u8 w6=3 w4=3
1 1 2 2 3 3 3 4 5 5 29
u5
w5=4
u8 u9
Encore un autre : w8=5 w9=3
Variante de l’algorithme :
1. U u1, ,un non-ordonné par poids : T u1 k 2
2. On considère uk . Si uk forme un cycle avec T, on enlève de ce cycle l’arc ui qui a le poids maximum.
3. k k 1 , puis on continue.
Nota : il faudra quand même comparer les poids à la fin. La meilleure méthode à adopter dépendra donc de
l’allure du graphe considéré.
30 – 92
2.1.5. FERMETURE TRANSITIVE
La fermeture transitive ou la représentation matricielle permettent de déterminer l’existence ou non d’un cycle
dans le graphe.
Par exemple :
Arrêt : cycle !
1 2
1 2 3 2
4 3
4 4
2.1.6. EN RESUME
Racine
Cycle
E E
Coupure : le graphe est non planaire !
M1 M2 M3 e M1 M2 M3 e
G G
31 – 92
Le sens de référence est le sens des aiguilles d’une montre :
Exemple :
u6 u5
U u1,u2 ,u3 ,u4 ,u5 ,u6 ,u7 ,u8
C1 0, 1,1, 1,0,0,0,0
u8
C2 0,0,0,0,0, 1,1, 1
u7
L’arc u3 est orienté dans le sens direct.
Exemple 1
1 C1 2 C2 0, 1, 1, 1,0, 2 , 2 , 2 0,0,0,0,0,0,0,0 indépendance
Exemple 2
C1 u3
Ici, on a :
u6 u8 u4 C3 C1 C2
C2
C3
C1 C2 C3 0
u7 u5 1 C1 1 C2 1 C3 0
1 0 2 0 3 0
On appelle donc base de cycle le plus grand ensemble de cycles linéairement dépendants.
32 – 92
Exemple
C1 u3
B C1,C2 avec : C1,C2 ,C3
u6 u8 u4
C2
C3 C 1 C 0 C
1
1
2
u7 u5 C2 0 C1 1 C2
C3 1 C1 1 C2
Nombre cyclomatique
C’est la dimension de la base d’un graphe :
G M N p M N 1
où :
M : arcs
N : sommets
P : composantes connexes
B C1,C2
Exemple :
arbre
maximal !
33 – 92
Autre exemple :
u4
u3 u6
A B C2 C D
F u10 E
C5
u9
Pré-requis et définitions
Soit le graphe G X,U . On a :
AX
A A
Si i A en rentrant, alors : i 1
Si i A en sortant, alors : i 1
Si i A , alors : i 0
n
i Coi 0
Donc pour i 1 à n : Coi sont indépendants si i 0i 1 à n .
i1
Nombre cocyclomatique
C’est la dimension de la base d’un cocycle
G N p
avec : G G M
Nota : les vecteurs associés aux cycles et aux cocycles sont orthogonaux (produit scalaire) :
C 1, , n
Co 1, , n
M
C Co i i 0
i1
Les deux bases étant complémentaires, elles ne sont donc pas suffisantes en elle-mêmes pour définir un
graphe.
34 – 92
3. RECHERCHE DE CHEMINS DANS UN
GRAPHE SIMPLE ORIENTE
3.1. DEFINITIONS
Soit un graphe G X,U , on a la longueur de l’arc u :
u U: l u
Cette longueur peut être définie de plusieurs façons :
l u , , 0,1 ,
, , , 0,1 , v1, , vR ,
La nature de l u dépend du graphe dans lequel elle est considérée. Ainsi, pour chaque arc, on pourrait associer
plusieurs longueurs. Par exemple :
u l1 u ,l2 u , l3 u
tarif durée risque
Exemple
P71 P76 0 1
1 7 6
P78
8
Pij 1
35 – 92
ou encore :
P16 P12 P23 P37 P76
log P16 log P12 log P23 log P37 log P76
Dans ce cas, le chemin le plus probable est celui de longueur minimale. Ce dernier critère est variable et
dépend du contexte (le chemin le plus probable aurait pu être celui de longueur maximale).
De manière générale, on ne s’intéressera ici qu’aux chemins de longueur minimale, la conversion vers les
chemins de longueur maximale étant facile.
log
0 1
Hypothèse : l i, j log Pij
-log
Hypothèse de base
Dans le cas où l’on recherche des chemins de longueur minimale, il n’existe pas de circuit de longueur négative
dans le graphe.
Par exemple :
Pour le chemin de 1 à 4 :
10 5 10
-10 10
6
-20
5
l 1, 4 l 1,2 , 2,3 , 3,5 , 5,6 , 6,2 , 2,3 , 3, 4
10 3 10 20 10 5 10 8
De manière générale, il faut considérer des chemins de longueur extrémale (minimale ou maximale). Les
différents algorithmes de recherche de chemins extrémaux se différencient de deux façons :
Par le domaine de longueur des arcs.
Par la nature du problème.
Exemples d’application
Cas 1 : on a un sommet origine et un sommet
destination. On cherche le chemin extrémal
entre ces deux sommets.
Pour ces problèmes, on cherche généralement
à se ramener au cas 2.
Cas 2 : on a un sommet origine. On recherche
le chemin extrémal entre ce sommet et tous les
autres sommets du graphe. Algorithme
arborescent.
Il est possible de résoudre ce cas avec
l’algorithme du cas 3.
36 – 92
Cas 3 : on recherche l’ensemble des chemins
extrémaux entre toutes les paires de sommets
du graphe. Algorithme matriciel.
Les algorithmes utilisés dans ce cas sont très
performants.
Cas 4 : on recherche les k meilleurs chemins entre un sommet origine et un sommet destination. Ce
dernier cas est très difficile à résoudre.
3.2. ALGORITHMES
Algorithme :
Initialisation :
S 2,3, ,N
1 0
Si 1,i U : i l1i
Si 1,i U : i
Pi 1 i 1àN
Recherche :
Choisir j S : j min i
iS
S S j
Si S : fin
Sinon : i j et iS:
i min i , j lji
37 – 92
Exemple
Les successeurs du sommet 1 :
7 4
S 2,3, 4,5,6
1 2 4
1 5 2 5 1 0
1 2 7
3 2 5 3 1
4 5 6
7 3
Puis : 2 5
j2 S2 4,6
4 1 2 2 4 9 8
6 1 2 2 1 6 P6 2
Nota : on remarque que le 4 trouvé est supérieur à celui trouvé précédemment. Donc, pour les Pi , on ne
considèrera que celui du sommet 6.
Enfin : 6 6
j6 S6 4
j4 S4
38 – 92
1 2 4
P6 2
P2 5
3 5
P5 3
P3 1
1 2 4
Et : P4 5
3 5
On remarque que la progression du chemin est
semblable à l’eau qui s’écoule.
Le graphe formé est arborescent.
6
Remarque : si dmax est le degré maximal pour les sommets, on obtient alors la dimension du graphe qui vaut
c N N * dmax
l u
i, j U lij
Algorithme :
Initialisation :
1 0
i i 2 àN
Pi 1 i 1àN
Si j i lij : fin
Sinon
j i lij
Pj i
39 – 92
Exemple
1 0
2 3 4 5 6
1 7 2 4 4
P1 P2 P3 P4 P5 P6 1
1 5 2 5
3 2 5 j
1 j
7 3
i lij
6
Arc 1,2 2 7
2 1 7 ? non
2.
2 1 7 0 7 7
P 1
2
3. Et ainsi de suite pour chaque arc, en tenant compte des résultats précédents.
Algorithme :
Initialisation :
10 0
10 i 2 àN
Recherche :
k 1
1k 0
1k min
1
ji
kj 1 lji
Tant que k N 1 :
k k 1
1k 0
1k min
1
kj 1 lji
ji
Si k N : il existe un circuit de longueur négative.
Si ki ik 1 i 1, ,N : fin
40 – 92
3.2.4. FORD (CAS 2)
l u
Algorithme :
Initialisation :
1 0
i i 2 àN
Recherche :
Tant que les i ne se sont pas stabilisés ( i 1, ,N ), faire :
i min
1
j lji
ji
S : complémentaire de S
Algorithme :
Initialisation :
1 0
i i 2 àN
S 1
Recherche de j S avec j 1 S :
j min
1
j j
i lji
S S j
Si S X : fin
Sinon : retourner au début.
Exemple
1. 1 0 et S 1
2. 2 1 et S 1,2
2 -1 5
3. 3 2 et S 1,2,3
4. 4 3 et S 1,2,3, 4 1 2 2
5. 5 0 et S 1,2,3, 4,5 1 4 6 6
6. 6 9 et S 1,2,3, 4,5,6
2 3 7
7. 7 3 et S 1,2,3, 4,5,6 X
3 -5 7
41 – 92
Fonction rang
Soit un graphe sans circuit présentant une source.
On appelle rang d’un sommet le nombre d’arcs du chemin le plus long (en terme d’arcs) joignant la source à ce
moment.
Avec E le nombre (cardinal) d’éléments de l’ensemble E.
Algorithme :
Initialisation :
Sk i S | di 0
ri k i Sk
dj dj 1 j i
S S Sk
k k 1
On aura donc N-1 itérations dans le pire des cas.
Exemple :
1 2
d1 0
7 3 d2 d6 1
d3 d4 d7 2
d5 3
6 4
k 0
SX
D’où :
S0 1
r1 0
d2 0
1. i 1
d3 1
S S S0 2,3, 4,5,6,7
k 0 1 1
S1 2,3
r1 1
d4 1
i 2 d 1
5
2.
d4 0
i 3
d7 1
S S S 4,5,6,7
1
k 1 1 2
3. Et ainsi de suite…
42 – 92
4. APPLICATION AUX PROBLEMES
D’ORDONNANCEMENT
Étant donné un objectif atteignable par l’exécution préalable d’un ensemble de tâches élémentaires soumises à
diverses contraintes, il s’agit de déterminer l’ordre et le calendrier de ces tâches de façon à minimiser la durée
totale de l’application.
Ainsi, on associe :
Tâches durée di .
Contraintes contraintes de succession (une tâche ne peut être réalisée qu’à la suite ou avant une autre).
Nota : il pourrait y avoir des contraintes d’exclusion.
On en déduit donc que le problème central de l’ordonnancement correspond au couple contrainte – tâche.
Le graphe, simple et orienté, admet une fonction rang et ne comporte pas de circuit :
Longueur d’un arc orienté = durée de la tâche précédente.
et : tâches fictives associées au graphe, symbolisant le début et la fin du graphe.
De manière générale, on recherche la durée minimale du projet (= chemin la plus court entre et ).
Date au plus tôt pour réaliser une tâche i : ti max t j dj .
ji1
Date au plus tard pour réaliser une tâche i : Ti min Tj di
j i
Localement, une tâche i pourra être finie un temps Ti plus tard sans que l’ensemble du projet n’en soit affecté.
Si Mi 0 , la tâche i est dite critique (la marge totale est nulle). L’ensemble de ces tâches constitue un chemin
critique ; cela signifie qu’elles ne peuvent être retardés.
43 – 92
4.1.2. MARGE LIBRE
La marge libre correspond au délai dont il est possible de retarder une tâche i sans que ses tâches successeurs
soient retardées :
mi min t j ti di
j i
Nota : si Mi 0 , alors mi 0 .
k j1
t j1 tk dk
ti di min t j1, t j2
t j2 tl dl
i
Les tâches k et l pénalisent la durée : il est donc
possible de retarder le commencement de la tâche
i.
l j2
i max 0,min t j di max Tk dk
j
1
i k i
Nota : si mi 0 , alors i 0 .
k1 j1
k2 j2
On recherche la durée minimale t du projet (= chemin le plus court entre et ). Ici, on a : t T .
44 – 92
Représentation graphique :
3 1
2 3 5
2
7
1
0 1 3 2 1
1 8 6 8 9 10
8 1
7 1
8
4 7
Rang : 1 2 3 4 5 6 7 8
Le chemin critique suit le chemin pour lequel Mi 0 : {, 1, 4, 6, 8, 9, 10, }. Les tâches ne pouvant être
retardées sont {4, 5, 6}.
7
3 1
2 3
7 8 2 1
1 4 5 10
1 2
6 9
2
45 – 92
5. PROGRAMMATION LINEAIRE CONTINUE
La programmation linéaire continue (PLC) est la résolution de problèmes d’optimisation linéaires continus (par
opposition aux problèmes discrets qui sont l’objet de la PLD).
5.1. DEFINITION
Soit la définition suivante (pouvant varier selon le contexte) :
m
min ci xi ct x
i1
ou :
m
max ci xi ct x
i1
Légende :
ci : paramètres inconnus.
xi : inconnues.
c et x : vecteurs.
t : transposée du vecteur.
: produit scalaire.
m : contraintes égalités.
D’où :
a1i xi b1
a2i xi b2
ami xi bm
Ax b xi 0
min c t x
Ax b
m
x
La première ligne désigne la solution à trouver, la seconde les contraintes et la dernière le domaine.
46 – 92
5.2. EXEMPLE
On cherche à minimiser :
2 x1 x2 3 x3
x1 x2 3
0 x1 2
x2
2 x1 x2 x2 3 x3 2 X1 X2 X3 3 X4
x1 x2 x2 x4 3 X1 X2 X3 X5 3
x1 x5 2 X1 X6 2
D’où :
min 2 X1 X2 X3 3 X4 Xi 0 i 1 à 6
Conclusion :
X1 2
X2 1
1 1 1 0 1 0 X3 3 1
et
1 0 0 0 0 1
X4 2 3
A
X b 0
5
X6
0
c
xi xi mini
Pourcentage des ingrédients dans le produit fini : xi
ij xi x j ij
min c1 x1 ... cn xn
Les PLC à structure particulière permettent également de résoudre des problèmes de flux (=flots). Une
application évidente est le réseau de distribution.
En effet, un réseau s’apparente à un graphe orienté additionné d’un flux, où les arcs symboliseraient les flux
( arc fx ). Ainsi :
47 – 92
f
f 1
f 2
f 2
f 3
f f 0
i i
min ci fi
i
Af b
b0
De manière générale, il existe des méthodes plus adaptées que la PLC généralisée pour résoudre ce type de
problèmes.
5.4. ADMISSIBILITE
Solution admissible
A x b
C’est une solution qui satisfait aux contraintes du problème :
b 0
Domaine admissible
C’est un polytope tel que : X x | A x b , x 0
x1
x2
x x1 1 x2
0 x2
0 1
x1
A la surface de ce polytope, la frontière est alors soit un point, soit une arête, soit une facette.
Pour déterminer si une surface est convexe ou non, il suffit de choisir un segment quelconque appartenant à
celle-ci. Si l’ensemble des points de ce segment appartient à la surface, alors celle-ci est convexe :
48 – 92
Convexe Non convexe
La partie du segment en dehors de la surface n’est pas une solution admissible du problème.
De manière générale, la solution admissible optimale se trouve à la frontière.
Simplexe
Le simplexe est la première solution admissible.
Ainsi, si on observe au voisinage immédiat pour savoir s’il existe une meilleure solution et qu’il n’y en a pas, on
a fini.
Possibilités
Combien de sommets peut avoir un polytope ? (cas général)
D’après la PLC :
min c t x
Ax b
n
x
avec :
n : variables.
m : contraintes
n m
Alors, on pourra envisager Cnm solutions. Si n m , il n’y aura pas de solutions.
2000
Par exemple, C10000 10000! (c’est long).
Pour certaines problèmes, la solution de PLC la plus utilisée dans le commerce donne (paradoxalement) une
solution assez rapidement. En effet, une méthode récente (moins de 20 ans) permet cela.
49 – 92
5.5. EXERCICES
Illustration graphique en deux dimensions (il ne reste alors que 4 des 6 possibilités) :
x2
5 2
7/3 3 4
0 1 5 7 x1
x1 x2 5
x1 3 x2 7
d’où :
x 4 x 0 x 0 x 5
1: 1 2: 1 3: 1 4: 1
x2 5 / 4 x2 7 / 3 x2 0 x2 0
min 2 x1 5 x2 min 2 x1 5 x2 min 2 x1 5 x2 min 2 x1 5 x2
min 2 4 5 5 / 4 min 2 0 5 7 / 3 min 2 0 5 0 min 2 5 5 0
min 57 / 4 min 35 / 3 min 0 min 25
50 – 92
5.5.2. SECOND EXERCICE
min 2 x1 3 x2
x1 4 x2 1
Possibilités : C24 6
2 x1 x2 1
x1 0
x2 0
Illustration graphique en deux dimensions (il ne reste alors que 4 des 6 possibilités) :
x2
2
1
3 4
1/4
0 1/2 1 x1
51 – 92
De la même manière que précédemment, on détermine les coordonnées des points optimaux :
x 3 / 7 x 0 x 0 x 1 / 2
1: 1 2: 1 3: 1 4: 1
x2 1 / 7 x2 1 / 4 x2 0 x2 0
max 2 x1 3 x2 max 2 x1 3 x2 max 2 x1 3 x2 max 2 x1 3 x2
max 2 3 / 7 3 1 / 7 max 2 0 3 1 / 4 max 2 0 3 0 max 2 1 / 2 3 0
max 9 / 7 max 3 / 4 max 0 max 1
12 2 x1 8 x2 1 2 x1 x2 1 7 x2 1
x2 1 / 7
1 x1 3 / 7
n
max 2n1 x1 2n2 x2 2 xn1 xn max
2nk xk
k 1
x1 5
2 x1 x2 52
2
2 x1 22 x2 x3 53
3
2n x 2n1 x 22 x n
1 2 n1 xn 5
xk 0
entraîne 2n itérations.
Application numérique
2000 contraintes et 10000 variables :
10
1000 1000
210000 210 3
103000
52 – 92
6. ALGORITHMES ET PERFORMANCES
De manière générale, les problèmes que l’on doit résoudre sont de nature combinatoire.
Définition
Choix discret, sélection, organisation d’un ensemble discret, éléments de l’ensemble qui sont organisés dans
une certaine structure (par exemple : graphe).
Exemple
max 2 x1 3 x2 CB
x1 4 x2 1 C1 B1
2 x1 x2 1 C2 B2
x1 x1
x1 1000 x1 1000
x2 0,1,2,8,17,61,76 x2 0,1,2,8,17,61,76
Modélisation graphique :
C 0 B
2
x1 1
2
C1 1 B1
4
x2
1
C2 1 B2
Questions
Existe-t-il une solution ?
Combien il y a-t-il de solutions ?
Quelle est ou quelles sont les solutions ?
53 – 92
Approche élémentaire
Génération
d'une solution
Evaluation
Cycle
de la solution
Exemple :
n Temps d’itération (cycle)
1 10-9 secondes (hypothèse)
5 0.12 µs
10 3.7 ms
15 14.5 s
20 80 ans
21 1680 ans
Soit un calculateur B fonctionnant x fois plus vite que A. Quelle est la taille N des problèmes que peut traiter B
pendant l’intervalle de temps T ?
Réponse :
t0A
tB0 2N tB0 T et 2N1 tB0 T
x
t0A T
2N T 2N x x 2n N log2 x n
x t0A
Application numérique :
n 100
8 10 16 23 10 24
x 10
Si on considère que 10 est très proche de 16, alors N=104 !
Conclusion : augmenter la performance du calculateur ne sert à rien. On parle d’explosion combinatoire. Face à
celle-ci, on a développé :
des méthodes exactes spécialisées (les problèmes résolus sont de l’ordre de n<500) ;
des méthodes approchées (heuristiques) (les problèmes résolus sont de l’ordre de n<5000).
54 – 92
Exemple 2 : le sac à dos
Soient :
n, b : entiers non nuls
ai b i 1 à n
n n
Il faut trouver x1, , xn tels que ci xi soient maximum alors que la contrainte est ai xi b .
i1 i1
On a :
n : nombre de variables de décision.
ci : pondération positive de la variable i.
b : capacité.
Réponse :
La programmation linéaire entière (PLI) ou bien la programmation linéaire binaire (PLB) seraient plus
appropriées dans le cas qui nous occupe. En effet, on à 2n solutions à envisager : il s’agit d’un arbre binaire à
2n feuilles. Si on veut une solution exacte, il faudra donc faire 2n itérations.
x1
1 0
n x2
max
ci xi 1 0 1
i1 x3
n 1 0 1 0 1 0 1 0
ai xi b
i1
xi 0,1
i 1àn 1 0
xn
1 0 1 0 1 0
ci c1 c c c
Une solution possible : pi 2 3 n .
ai a1 a2 a3 an
a2 b a1
Si x2 1 : rien.
Si x2 0 a3 b a1 a2 .
55 – 92
Exemple : le temps d’exécution des deux problèmes ci-dessous sera sensiblement le même.
max 2 x1 3 x2 max 3 x1 x2
2 x1 x2 5 x1 8 x2 10
x1 0,1 x1 0,1
x2 0,1 x2 0,1
La complexité en temps d’un algorithme est la fonction qui relie la taille du problème à son temps d’exécution
par l’algorithme.
Ainsi, plus la machine sera puissante, plus l’algorithme sera résolu rapidement (de manière générale).
Le temps d’exécution par l’algorithme correspond donc au nombre moyen d’opérations élémentaires nécessaire
à sa résolution.
Coût uniforme
L’exécution d’une instruction élémentaire consomme une unité de temps et l’exécution d’une opération de
mémorisation consomme une unité d’espace.
On retiendra ce coût par la suite car il est le plus usité.
Coût logarithmique
Le temps et l’espace mémoire nécessaires à l’exécution d’une instruction élémentaire sont proportionnels au
nombre de bits nécessaires pour représenter une instance du problème.
Algorithme de calcul :
Début
Lire n 1
Si n 0 : écrire 0 1
Sinon :
xn 1
y n 1 1
Tant que y 0 , faire :
x x n
y y 1
Écrire x 1
Fin
56 – 92
Pour le coût uniforme en temps, on se concentre sur les opérations d’écriture (lire, écrire, ). On en dénombre
cinq. Puis on s’intéresse au nombre d’opérations au sein de la boucle du tant que : on a cinq fois n moins une
itérations au pire. On en déduit que :
Coût uniforme en temps : 1 1 1 1 1 5 n 1 5 n
Pour le coût en mémoire, on compte le nombre de variables. Elles sont au nombre de trois : x, y, et n. Donc :
Coût uniforme en mémoire : 3.
Pour le coût logarithmique en temps, on considère l’énième itération : ni et on définit la longueur en bits :
ni i log2 n 1
n1
Cette longueur est proportionnelle à : ni qui est compris entre :
i1
n n 1 n1 n n 1
2
log2 n ni
2
log2 n n 1
i1
n2 n
On obtient alors quelque chose comme : t0 log2 n n 1 n2 log2 n
2
t0 est le coût logarithmique en temps.
Complexité
en temps Coût logarithmique
ˆ logarithmique en temps n
Cout
log n
ˆ uniforme en temps
Cout 2 2
5.n
Coût uniforme
De manière générale, on s’intéressera au coût en temps et on choisira l’évaluation la plus simple (= uniforme) :
n
Nombre d'opérations 2 ou n! 4
élémentaires a.n
n
Asymptote
57 – 92
6.2.4. COMPLEXITE ASYMPTOTIQUE
Fonction dominée asymptotiquement
La fonction f : est dominée asymptotiquement par la fonction g : si et seulement si :
n0 , n n0 : f n g n
f n 2 n2 3
g n 3 n2 2
g n 5 n2 n 1
g n en /1000
6.2.5. ORDRE
T n est d’ordre O f n si et seulement si :
k , n0 , n n0 : T n k f n .
T n est d’ordre g n si et seulement si :
h , n1 , n n1 : h g n T n .
T n est d’ordre exact f n si et seulement si T n est d’ordre O f n
et d’ordre f n :
k , h , n , n n : h f n T n k f n
Exemple
T n 2 n2 3
O n2
k 3
3
n2 2
2
n 3
n
3
3f n T n 2
2.n +3
et n0 2
T n 3 n2 2
O n2
k 1
n3 2 n2 3
n
T n est d’ordre n2 :
h1 n2 2 n2 3 n1 1
58 – 92
Remarque
De manière générale :
p
T n ak nk a0 a1 n a2 n2 ap np
k 0
A D1 B1
T n T1 n T2 n
f n f n
1 2
ou
O f1 n O f2 n
T n sera d’ordre min f1 n , f2 n
ou O max f1 n , f2 n .
Exercice
Mettre en ordre croisant n entiers ai (i 1 à n) .
Algorithme de calcul :
Début
Lire n, a1,a2 , , an pour i 1 à n 1
Pour j n à i 1 faire :
Si aj1 aj alors :
Début
temp aj1
aj1 aj
aj temp
Fin
Écrire n, a1, a2 , , an
Fin
n1 n n 1
1 n i 1 2
2
i1
59 – 92
Ainsi :
T1 n 2 n2 2 n 2
n2 n
T2 n 2
2 2
f x 1 a1 x a2 x2 a3 x3 a4 x4 a5 x5
n
Le polynôme est de la forme Pn x ak xk sur 0,2
k 0
p a0 1
Pour i 1 à n faire :
p p ai xi 3+i
Écrire p 1
Fin
n n n n i
3
3 i 3 3 n i 3 3 n 2
On aura donc le nombre d’itérations suivantes : i1 i1
n2 7 n
3
2
60 – 92
6.3.2. SECOND ALGORITHME POSSIBLE
Début
Lire n, a0 , a1, ,an, x 1
p a0 1
yx 1
Pour i 1 à n faire :
Début
p p ai y
3+2
y yx
Fin
Écrire p 1
Fin
Bine que plus compliqué, ce second algorithme est moins complexe que le premier : l’ordre est moindre.
Son efficacité est donc plus grande que le premier.
Pn x a x a
n n1 x an2 x x a1 x a0
Par exemple :
2 x4 3 x3 5 x2 8 x 2 2 x 3 x 5 x 8 x 2
On en déduit l’algorithme de Hörner :
Début
Lire n, a0 , a1, ,an, x
p an
Pour i n 1 à 0 faire :
p p x ai
Écrire p
Fin
D’ordre n, cet algorithme se révèle plus efficace encore que le second (les coefficients sont plus faibles).
61 – 92
Remarques
f n
f n est O g n si et seulement si lim 0.
n g n
f n
f n g n si et seulement si lim 1.
n g n
Exemples :
n2 est O n5
sin n est O n
1 1
sin
n n
z 1 1
k n 1
Tant que k 0 faire : 1
Début
z za 2
k k 1 2
Fin
Écrire z 1
Fin
On en déduit le nombre d’itérations : T n 4 5 n .
z 1 1
ta 1
k n 1
Tant que k 0 faire : 1
Si k est impair, alors : 1
Début
zzt 2
k
k 2
2
Si k 0 , alors : 1
2
tt 2
Fin
Écrire z 1
Fin
62 – 92
Soit m une itération quelconque. Le nombre total d’itérations oscille entre :
2m1 n em
Dans notre cas, il sera de 5 9 m itérations.
Remarque
T(n)
S(n) 5 9m
5 9 log2 n 1
S n 14 9 log2 n
S n est O T n
n
oui
pour laquelle on a l’ensemble : Q A | B
non
On en déduit :
a 0 0
a 1 2 (couple initial)
a 2 2 0 2
a 3 2 2 4
a 4 4 2 6
a 6 6 2 8
63 – 92
Soit de manière générale :
n 2 : a n a n 1 a n 2
couples couples
enfants petits
enfants
Début
Lire n
Si n=0, alors :
a n 0
Si n=1, alors :
a n 2
Sinon a n a n 1 a n 2
Écrire x
Fin
On en déduit que le nombre d’itérations maximal est de l’ordre de 2n2 , ce qui est gigantesque :
10
n 100 2100 210 1030
Pourtant, si on se base sur le même principe que précédemment (les coefficients ci sont connus) :
1 5
et xn xn1 xn2 x2 x 1 0
2
n n
1 5 1 5
a n 1 2
2 2
1 2 0
n n
n 0: 1 5 1 5 2
1 2
2 2
n
1 5
n
5 1 5
et a n
5 2 2
1 5
Nota : 1.618033988 est le nombre d’or.
2
a 1
lim n est le nombre d' or
x an
Le nombre d’or est le nombre qui fournit, entre
autres, un carré agréable (exemple : Léonard de
n
Vinci).
64 – 92
6.3.7. EXEMPLE : LES TOURS DE BRAHMA
Soit 64 disques de taille croissante. On cherche à amener les disques en position Z.
64
disques
X Y Z
X Y Z X Y Z
X Y Z
X Y Z
Étape 1 : (1,1,3) Étape 2 : (1,2,3) Étape 3 : (1,2,2)
État initial : (1,1,1)
X Y Z X Y Z X Y Z X Y Z
(1,1,1)
112 113
132 123
133 122
131 121
233 322
65 – 92
On en déduit alors l’algorithme de Hanoï :
Hanoï (N de X vers Z en passant par Y)
Début
Si N=1, alors X Z
Sinon
Début
Hanoï (N-1 de X vers Y en passant par Z)
XZ
Hanoï (N-1 de Y vers Z en passant par X)
Fin
Fin
T 1 1
T N 2 T n 1 1
On pose :
N1
a : T N
2i
i0
b : T N 1 2 T N 1
N1 N1 N N
b: 2 2i 1 2i1 1 2i 20 2i
i 0 i0 i 0 i0
Si e 2 et k N 1 , alors :
K
1 ek 1 1 2N
ek 1e
12
2N 1
k 0
Vérifié !
Donc, si une opération élémentaire dure une seconde, il faudra pour 64 disques :
T 64 264 1 585 000 000 années !!!
66 – 92
7. CLASSES DE COMPLEXITE
DE PROBLEMES
Rappel :
Une clique est un graphe non-orienté dont tous
les sommets sont reliés.
Exemple :
Est-il plus facile de vérifier que 267 1 n’est pas premier ou bien de montrer que
67
2 1 193707721 761838257287 ? Dans le premier cas, la démonstration est difficile, dans le second la
vérification est facile.
De manière générale, si on veut vérifier qu’un nombre N est premier, on cherche à vérifier qu’il est divisible par
1 ou par lui-même. On a donc intérêt à considérer les nombres supérieurs :
m 2,3, , N
67 – 92
La charge totale de vérification est de l’ordre de N.
B
N 2 2 et N 2B
Si on reprend l’exemple :
10
67 33
B 67 2 2 233 3
109 !!!
on se rend compte que vérifier si un nombre est premier est de l’ordre de l’exponentiel !
Une autre définition des problèmes de classe de complexité NP peut être donnée : c’est la classe des problèmes
de décision pour laquelle il est « facile » de vérifier qu’une solution est correcte mais pour lesquels il peut être
difficile de construire une solution.
L’un des meilleurs exemples de classe NP est le problème du coloriage d’un graphe avec K couleurs.
Conclusion :
Trouver une solution est difficile.
Vérifier une solution est facile (celle-ci se fait de manière polynomiale).
Exemple :
Q' : A x b
Si n m , alors :
Q' : A x b
Q : At A x At b
Si A t A est inversible :
1
x* A t A At b
7.2.2. ÉQUIVALENCE
Q et Q’ sont équivalents si Q’ est rapidement réductible en Q et inversement.
68 – 92
NP NP
?
P P NP-C
NP-C
Q'
NP
R A
P
Q0
NP C et P
R0A
P
solution
Ar AR 0
De manière générale, on connaît des algorithmes pour les problèmes de classe P. Pour tous les autres
problèmes, on cherche des solutions polynomiales approchées (=P).
Soit un ensemble de clauses. Existe-t-il une affectation de valeurs booléennes (V,F) aux variables, de façon à
ce que chaque clause soit vraie ?
Exemple 1
Soit 3 variables logiques (3-SAT) : x1, x2 , x3 .
On cherche : x1 x2 x1 x3 x2 x3 x1 x3 .
Exemple 2
Couleurs : j 1 à 3
Sommets : i 1 à 4
4 3
69 – 92
7.3. EXEMPLES
Destinations Dj
j
Origines i 1 M
Oi Qij
N M
Qij : min Cij Qij
i1 j1
M
Qij Oi i 1 à N
j1
N M
Oi
i1
Di
j1
N
Qij Di i 1 à N
i1
On a : ai aj .
iA iA
70 – 92
8. METHODES EXACTES
D’OPTIMISATION COMBINATOIRE
8.1. BACKTRACKING
On cherche à tirer le meilleur bénéfice zi possible compte tenu des variables xi : max zi .
xi
On a :
1 : si le tronçon du réseau est arrangé
xi
0 : sin on
et :
n
ci xi B
i1
ci : coût
B : budget
D’où l’idée de maximiser ou de minimiser le critère d’optimisation, en fonction des variables de décision, des
contraintes, et du domaine de définition.
La méthode du backtracking appliquée aux problèmes NP-Complets permet d’avoir des résultats de manière
très rapide, moyennement rapide, ou très lente selon le problème. Ainsi, du fait de ses performances aléatoires,
le choix de cette méthode est à retenir en dernier.
71 – 92
Exercice
Problème du plus grand ensemble de sommets indépendants d’un graphe :
niveau 1
{Ø}
sens de parcours
niveau 2
{1} {2} {3} {4} {5} {6}
niveau 3
{1,3} {1,6} {2,4} {2,5} {3,4} {3,5} {4,5}
niveau 4
{2,4,5} {3,4,5}
on s’aperçoit que l’on obtient 16 sommets indépendants (contre 26 64 sommets pour une recherche globale).
On montre que :
k k 1
N
0 NlnN
2
CkN 2
k 0 n' est pas
polynomial
L’ordre de résultat est dit « sub-exponentiel ». En effet, quelque soit le problème posé, l’ordre de solution sera
toujours plus petit que NN , N! , ou 2N .
72 – 92
On montre même que :
N
lnN
NlnN N N
lim 0
x 2N 2N
Si on désigne par :
nombre de sommets de l' arbre de résolution
IN
N2 N
tous les
graphes 2
2
alors, en moyenne :
N IN 2N
2 3. 4
3 5.6 8
4 8.5 16
5 12.2 32
10 52.0 102 4
15 149.8 32 768
min f x1, , xn
g1 x1, , xn 0
g2 x1, , xn 0
x1 domaine
0
x2 ou xi ou xi
1
etc.
73 – 92
Attention : il ne s’agit pas de dichotomie ! Il
{S} s’agit plutôt de séparer S d’après une
variable charnière.
xi=0 xi=1
On ne s’intéresse qu’aux solutions pour
lesquelles Si 1 .
{Si=0} {Si=1}
Nota : on peut très bien avoir Si 0 , ce
solution solution qui donne un coup pour rien : S ne sera alors
inintéressante intéressante pas subdivisé.
Au final, on obtient une solution x1, , xn qui semble la plus prometteuse. Mais on ignore s’il s’agit réellement
de la meilleure tant que l’ensemble de l’arbre n’a pas été exploré.
Ce n’est donc pas suffisant : il faut trouver dans chaque choix des bornes inférieures B telles que la meilleure
solution dans Bi 0 sera toujours moins bonne que celles pour Bi 1 .
{S}
B
xi=0 xi=1
b Bi 0
{Si=0} {Si=1}
Bi=0 Bi=1
etc.
Dans ces conditions, trouver B tient
de l’ordre de l’astuce !
x1, , xn b
Exercice
Soit :
min Z 3 x1 7 x2 5 x3 8 x 4 10 x5 4 x6 6 x7 9 x8
c1 : x1 x2 1
c2 : x3 x4 x5 1
c3 : x5 x6 x7 1
c : x x 1
4 7 8
c5 : x2 x4 x6 1
xi i 1 à 8
xi 0,1
Méthode : on va modifier les contraintes et les combiner entre elles afin de ne retenir que le meilleur des cas.
Z 4 c3 4 x2 3 x 4 5 x5 4 x6 6 x7 9 x8 8 4 x5 x6 x7 1
4 x2 3 x 4 x5 2 x7 9 x8 12
Z 2 c4 4 x2 3 x4 x5 2 x7 9 x8 12 2 x7 x8 1
4 x2 3 x 4 x5 7 x8 14
74 – 92
On ne peut en revanche pas utiliser la même méthode avec c5 car il n’y a déjà plus de x6 . On considère donc
que dans le meilleur des cas, on aura 14 :
{S} 14
? ?
Hypothèse 2 : on choisit de prendre à tour de rôle les variables manquantes x1, x3 , x6 , x7 , de leur affecter une
valeur (0 ou 1), et de voir quelle est la solution la plus prometteuse :
x1 0 c1 : x1 x2 1 0 0 x2 1 0 x2 1
4 x2 3 x 4 x5 7 x8 14 4 3 x4 x5 7 x8 14
La pénalité augmente de 4.
x1 1 c1 : x1 x2 1 0 1 x2 1 0 x2 0
4 x2 3 x 4 x5 7 x8 14 0 3 x 4 x5 7 x8 14
Dans ce cas il n’y a pas de pénalité.
En procédant ainsi pour les autres variables, on obtient au final :
x1 0 P1 4
x3 0 P3 3
x6 0 P6 4
x7 0 P7 7
xi 1 Pi 0
{S} 14
x7 1
x7=0 x7=1 c3 : x5 x6 0
c 4 : x8 0
21 14
75 – 92
On en déduit :
{S} 14
x1 1
x2 0
min Z" x2 17 min 0 17 17
x7=0 x7=1 x4 1
x 0
3
21 14
On obtient alors le résultat final.
x1=0 x1=1
A noter que nous aurions pu prendre indifféremment
x1 ou x 4 car la pénalité est la même : le résultat
18 17
aurait été identique.
3 2 1
Hypothèse de départ :
2
1
2 etc.
couleur
sommet 1
2
sommet
couleur 1
2
5 4
{S}
1 2
Avec K=2, on obtient un résultat mais pas un arbre
entier (faute de couleurs) : il est en effet impossible de
déterminer une couleur pour les sommets 3, 4, et5.
12 21
121 212
xnk 1 n 1 à N
12312 21321 31321
k
13123 23123 32132 x 1 si la couleur k est donnée au sommet n
nk
xnk 0 sin on
13213 23213 32312
Les xnk sont tels que G X,U est colorié
On remarque ainsi que plus le graphe est connexe (i.e. plus le graphe ressemble à une clique), plus le nombre
de couleurs se rapproche du nombre de sommets.
De la même manière, on montre que pour un graphe à arêtes de taille quelconque, le nombre moyen de nœuds
dans l’arbre des solutions pour le problème de coloration d’un graphe vaut 197.
Conclusion : résoudre ce problème avec la méthode du Bound & Branch est difficile, voire impossible.
76 – 92
Exemple : voyageur de commerce
A F
C D
Il n’est pas utile de s’intéresser au réseau. Seuls les coûts (=distances) sont utilisables :
A B C D E F
A 27 43 16 30 26
B 7 16 1 30 25
C 20 13 35 5 0
D 21 16 25 18 18
E 12 46 27 28 5
F 23 5 5 9 5
4 D xij 1 i 1 à N
i
Hypothèse de départ : on regarde quel est le coût minimal (par ligne) en partant d’un point :
A B C D E F
A 27 43 16 30 26 16
B 7 16 1 30 25 1
C 20 13 35 5 0 0
D 21 16 25 18 18 16
E 12 46 27 28 5 5
F 23 5 5 9 5 5
43
77 – 92
On peut supposer que CF=0 sera solution mais nous ne pouvons en être certain.
Si on ré-écrit la table des coûts :
A B C D E F
A-16 11 27 0 14 10
B-1 6 15 0 29 24
C-0 20 13 35 5 0
D-16 5 0 9 2 2
E-5 7 41 22 23 0
F-5 18 0 0 4 0
Seconde hypothèse : on remarque que seule la première colonne ne comporte pas de zéro. On fait donc en
sorte que colonne comporte au moins un zéro :
A-5 B C D E F
A-16 11 27 0 14 10
B-1 1 15 0 29 24
C-0 15 13 35 5 0
D-16 0 0 9 2 2
E-5 2 41 22 23 0
F-5 13 0 0 4 0
Puis on cumule le total retiré de la première hypothèse (43) avec celui de la seconde (5). On obtient alors notre
valeur charnière racine : 48.
Troisième hypothèse : on considère maintenant les solutions les moins coûteuses (par ligne). On remarque que
si il y a un arc entre les deux points, le coût est nul (cas des zéros). En revanche, s’il n’y a pas d’arc immédiat,
il faudra alors prendre un chemin détourné dans le réseau pour aller d’un point à un autre.
A-16 AD 11 27 0 14 10 0 10
B-1 BD 1 15 0 29 24 0 1
C-0 CF 15 13 35 5 0 0 5
D-16 DA 0 0 9 2 2 0 1
D-16 DB 0 0 9 2 2 0 0
E-5 EF 2 41 22 23 0 0 2
F-5 FB 13 0 0 4 0 0 0
F-5 FC 13 0 0 4 0 0 9
F-5 FE 13 0 0 4 0 0 2
78 – 92
48 On élimine alors la ligne A et la colonne D.
Arc Arc
Voyage A-5 B C D E F
présent absent
A-16 AD 11 27 0 14 10
B-1-1 BA 0 14 0 28 23 0 14+2=16
C-0 CF 15 13 35 5 0 0 5
D-16 DA 0 0 9 2 2
D-16 DB 0 0 9 2 2 0 2
E-5 EF 2 41 22 23 0 0 2
F-5 FB 13 0 0 4 0 0 0
F-5 FC 13 0 0 4 0 0 9
F-5 FE 13 0 0 4 0 0 2
48
La variable de décision devient alors BA
AD (+10) AD (+0) On élimine alors la ligne B.
58 48+1
Etc.
BA (+16) BA (+0)
Nota : le sommet ayant pour valeur 48 se voit
65 49 infligé une pénalité de 1 provenant du fait que
nous avons soustrait celle-ci pour la ligne B.
Finalement :
48
AD AD
58 49
BA BA
D’où :
65 51
A D C
EF EF
63
73 56
B F E
FB FB
64 63
DC ou CE
79 – 92
Attention : ce n’est pas vraiment fini. En effet, il nous faut maintenant vérifier le pire cas :
48
AD AD
On s’aperçoit alors qu’il est inutile de continuer
58 49 au-delà car nous avons déjà 63 au second
niveau.
FC FC
67 63
La première solution trouvée est donc l’une des meilleures. Pour être absolument certain qu’il s’agisse de la
meilleure de toutes, il faudrait parcourir l’arbre entièrement, ce qui est relativement long : il y a 230 solutions
3
finales ( 210 109 ).
Par exemple :
Pour que le problème soit séparable, il faut que
Variables de décision : xk k 1àK la fonction puisse s’écrire :
min f x1, , xk
K
f x1, , xk fk xk
g1 x1, , xk 0 k 1
Problème : g2 x1, , xk 5 et que les contraintes s’expriment sous la
forme :
g3 x1, , xk
K
etc. gi x1, , xk gik xk i 1àm
k 1
Ainsi, les étapes symbolisent les séparations, et les états les contraintes :
A
l1 > l min
C
On considère le chemin de longueur
minimale de proche en proche.
l min
B ?
l2 > l min
Quantité disponible x 4 3 4
Valeur énergétique V 15 10 4
80 – 92
Cela revient donc à :
3
max Vk xk
k 1
3
Pk xk Pmax
k 1
0 x1=0 0
0 0
x1=1 15
x1=2 30
impossible : > Pmax 14 !
0 x1=0 0 x2=0 0
0 0 0
x2=1 10
x2=2 20
10
x1=1 15
x2=0 15
x2=1 25
12
81 – 92
Enfin, en considérant toutes les catégories d’aliment :
x2=1 10
5 x3=3 10
6
x3=0 10 x2=1 10
5 5
x3=1 14 x3=0 10
7 5
18 x3=1 14
x3=2
9 7
22 x3=2 18
x3=3
11 9
x2=2 20
20 10
x2=2
10
x3=0 20
10
x3=0 20
x1=1 15
10
7 x3=1 24
12
x1=1 15 x3=1 24
x2=0 15
7 12
7
x2=0 15
x3=0 15
7
7
x3=0 15
x2=1 25 x3=0 25
7
12 12
x3=1 19
9
Nous pouvons alors observer la solution optimale :
x3=2 23
11 x1 1
x2 1
x2=1 25 x3=0 25 x 0
12 12
3
L’intérêt principal de cette méthode est qu’elle n’oblige pas à tout recommencer si des éléments viennent à être
modifiés.
Si on rajoute un quatrième aliment, il suffit juste de calculer les éléments correspondants en partant de x3
dans les branches de l’arbre précédent :
Catégorie d’aliment k I II III IV
Quantité disponible x 4 3 4 1
Valeur énergétique V 15 10 4 20
82 – 92
On obtient alors comme meilleure solution :
x1 1
35 x2 0
12
x3 0
x 1
4
Il est aussi possible d’envisager de modifier les conditions initiales, à savoir de modifier la masse admissible du
sac à dos.
Si Pmax 10 kg, on obtient alors :
x1 0
30 x2 1
10
x3 0
x 1
4
De manière générale, cette méthode est particulièrement bien adaptée aux changements (car l’arbre construit
est connexe et sans cycles).
Exercice
Soit plusieurs types d’emplois N pour lesquels la rémunération rij varie en fonction du nombre d’heures
travaillées. La proportion de temps disponible par une semaine vaut T heures au maximum.
Activités j
Rémunération r
1 2 3 4
0 0 0 0 0
1 26 23 16 19
Heures
travaillées 2 39 36 32 36
i
3 48 44 48 47
4 54 49 64 56
Avec :
xij 1 si i heures sont consacrées à l’activité j.
xij 0 sinon.
N T
j1 i1
xij T
T
i1
xij 1 j 1àN
xij 0,1 i1àT j 1àN
Rappel :
Étapes séparation
États contraintes de capacité
83 – 92
Ainsi :
Pour l’activité 1, on a : Pour l’activité 2 :
Rémunération
0 Activité 1 0 Activité 2 0
0 Activité 1 0
0 0h 0 0h 0
0 0h 0
Nombre 26 26
d'heures 26
travaillées 1h 1 0h 0
1h 1
39 49
39
2h 2 1h 1
2h 2
48 62
48
3h 3 3h 3 1h 1
54 54 75
4h 4 4h 4 2h 2
Le schéma suivant s’explique par les optimisations suivantes : lorsque l’on ajoute une heure d’activité
supplémentaire, on considère le meilleur rapport rémunération/heure. Il en résulte l’abandon d’options qui
seraient, dans tous les cas ultérieurs, moins rentables. Cette méthode a donc l’avantage d’éviter des calculs
inutiles.
Il en résulte au final :
La programmation dynamique fournit une « loi de commande » pour réagir à des perturbations. Cela implique
la construction du meilleur arbre depuis la solution optimale.
Ainsi, en cas de perturbation, il suffit de translater la condition devenue invalide vers la condition valide la plus
proche pour revenir dans la configuration du meilleur cas possible :
Début Fin
Attention : si le problème posé contient un nombre d’états par étape exponentiel, la programmation dynamique
devient inopérante.
84 – 92
9. METHODES HEURISTIQUES
D’OPTIMISATION COMBINATOIRE
9.1. DEFINITION
Ce sont des méthodes de résolution en temps polynomial d’un problème qui donne en général de « bonnes »
solutions et qui met en œuvre un principe d’optimisation partiel, local, etc.
Ces méthodes servent donc à résoudre des problèmes difficiles.
Nota : certaines méthodes exactes s’en rapprochent par leur principe. A cause de cela, les méthodes
heuristiques sont surnommées « myopes » (= « greedy »).
Une méthode myope permet donc la construction pas à pas de la solution globale en prenant à chaque fois la
décision locale optimale.
ri
Par exemple, on peut considérer le rapport comme étant la valeur massique, laquelle est optimale quand ri
ci
est maximal et ci est minimal. Alors :
r1 r r
2 n
c1 c2 cn
c1 C OUI : x1 1 NON : x1 0
c2 C c1 x1 OUI : x2 1 NON : x2 0
etc. N fois
85 – 92
Cela implique le rangement des arcs par poids croissant. Puis on rajoute dans l’ordre les arcs tant qu’on ne fait
pas de cycle ou de circuit jusqu’à l’obtention de la solution optimale.
Exemple 1
2
E 1,2,3, 4,5
1,2,3 1,2 1
1,2, 4 1,3 2
F 1,2,3, 4 , 1,2,5 , 1, 4 , 3
1,3, 4 1,5 4
5 1 3 5
Exemple 2
max 8 x1 50 x2 15 x3 17 x4 20 x5 10 x6 5 x7
14 x1 70 x2 92 x3 70 x4 86 x6 47 x7 250
0
x1 1 i1à7
E 1,2,3, 4,5,6,7
Sk 1,2,3
9.2.2. MATROÏDE
Un système d’indépendance E,F est un matroïde si et seulement si :
F
S1
S1 et S2 F : S1 S2 1 s tel que : S2 s F
S2
86 – 92
Exemple
Soit c : E une fonction objectif.
Soit E,F un matroïde.
La résolution du problème : max c s , s F par une méthode myope conduit à la solution optimale.
Algorithme général
Début
Ordonner les éléments de E de façon à ce que : c s1 c s2 c sn 0
S
Pour i 1 à n faire :
Écrire S, c s
Fin
* : optimal x*(I) ;
H : heuristique xH(I) ;
xH I x* I x* I
Si x I 0 , alors : x* I xH I 1 x* I
xij 0 sinon.
87 – 92
M
xij 1 i 1àN
j1
N
Tj xij ti : durée d’occupation de la machine j
i1
TG max Tj | j 1 à M
j1 à M
N
TG xij ti j 1àM
i1
Exemple :
Machines
Machines
On cherche à optimiser :
N
1
M=3
ti T* 3
M i1
TH
De manière optimale :
TH T *
1
Temps
TG
88 – 92
Soit t0 la tâche au temps zéro. Il faut t0 TG le plus petit possible.
M3 Machines
N 11
t1, , t11 5, 4, 4, 4, 4,3,3,2,2,2,1
TG 34
3 t3 t5 t9 t11
Attention : l’heuristique LPT n’est pas un schéma d’approximation, bien que cela y ressemble.
LPT
TM
Ainsi, si :
LPT 1 1
TM T * 1
3 3M
Attention : les machines elles-mêmes ayant un coût, on ne peut prendre non plus une infinité d’entre elles.
La dualité de ce problème nous amène à considérer la question suivante : « combien doit-on avoir de machines
sachant que le travail doit être fait en un temps imparti limité ? ».
89 – 92
9.4.2. BIN PACKING
Soient N tâches à effectuer en un temps T. On a à disposition un nombre illimité de machines. Il faut trouver le
nombre minimal de machines nécessaire à l’exécution des N tâches en T unités de temps.
xij 1 si la tâche i est affectée à la machine j
xij 0 sinon
y j 0 sinon
j 1, , J
D’où :
J
min yj
j1
N
i1
xij ti T y j j1àJ
J
xij 1 i 1àN
j1
Bien que les variables soient séparables, le problème posé est de nature exponentielle. Par conséquent, la
méthode exacte de programmation dynamique n’est d’aucun recours ici.
T 4
N5
t1, , t5 3,3,2,2,2 Machines
4
Peut-être… En effet, on
ignore ici si certaines t1 t2
tâches n’auraient pas pu t3 t5
être décomposées plus
encore afin d’optimiser
le remplissage ci-contre. 0
90 – 92
9.4.3. COLORIAGE DES SOMMETS D’UN GRAPHE
Nota : on part d’une méthode exacte vers une heuristique.
nouveau graphe G1 (pour lequel on obtient le nombre chromatique X uv G ), soit par condensation du
sommet v dans u : G2 (et respectivement X uv G . On a alors :
X G min X uv G , X uv G
Cette solution permet de ne pas perdre l’information sur le nombre chromatique tout en progressant vers la
solution.
G1 : addition d'arêtes
v
G
v
u
v
G2 : condensation de v dans u
Nota : le nombre chromatique d’une clique correspond à son nombre de sommets. Ainsi, en recherchant la
clique minimale, on obtient le nombre chromatique minimal.
Par exemple :
Etc.
Clique à 3 couleurs
Clique à 5 couleurs
91 – 92
Heuristique inspirée de l’algorithme de Zikov
On recherche la solution du coté le plus prometteur. De manière générale, la meilleure solution est associée
aux condensations.
Le nombre de possibilités envisageables est donc divisé par deux à chaque étape.
Soit :
S e1, , en
S1, ,Sk S
r éléments
k 2r 2
et deux couleurs : V ou F.
Le problème consiste à colorer tous les éléments de S en l’une ou l’autre couleur de façon à ce que dans les
Si i1, ,ir i 1 à k , il y ait au moins un élément de chaque couleur.
p Xi m Crm 2m 0 m r
où 2m est une distribution polynomiale.
car les deux probabilités ont la même valeur (à ne pas confondre avec la couleur). On en déduit :
1
Pe 2r 2 21r 21
2
1
Sur k r possibilités de coloration, on montre que Pe . C’est donc la procédure du type Monte-Carlo qui
2
l’emporte presque toujours.
92 – 92