Vous êtes sur la page 1sur 44

Chapitre 5 Les graphes et leurs algorithmes

1. Introduction : La notion de graphe est une structure combinatoire permettant de reprsenter de nombreuses situations rencontres dans des applications faisant intervenir des mathmatiques discrtes et ncessitant une solution informatique. Circuits lectriques, rseaux de transport (ferrs, routiers, ariens), rseaux d'ordinateurs, ordonnancement d'un ensemble de tches sont les principaux domaines d'application o la structure de graphe intervient. 2. Quelques exemples dapplication dans les graphes Exemple 1. Le problme des ponts de Knigsberg La ville de Knigsberg comprenait 4 quartiers, spars par des ponts. 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 :

Exemple 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 Question : 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 entre Bordeaux et Grenoble. Exemple 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 diffrentes.

Exemple 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

Il s'agit de dterminer la dure du plus long chemin du dbut la fin des travaux. De manire gnrale, un graphe permet de reprsenter simplement la structure, les connexions, les cheminements possibles dun ensemble complexe comprenant un grand nombre de situations, en exprimant les relations, les dpendances entre ses lments. En plus de son existence purement mathmatique, le graphe est aussi une structure de donnes puissante pour linformatique.

3. Dfinition Un graphe G est constitu de 2 ensembles V et E. V est un ensemble non vide de sommets.

E est un ensemble de paires de sommets de V. Ces paires sont appels artes. V(G) et E(G)

reprsentent, respectivement lensemble des sommets et dartes du graphe G. On crit aussi G = (V,E) pour reprsenter le graphe. Dans un graphe non orient, la paire de sommets reprsentant une arte nest pas

ordonnes. Autrement dit, les (v1, v2) et (v2, v1) reprsentent la mme arte. Dans un graphe orient (diagraphe diagraphe), diagraphe chaque arte est reprsente par la paire oriente <v1,

v2>; v1 tant lorigine et v2 lextrmit de larte dans ce cas, on ne parle plus darte mais
darc. Par consquent, <v2, v1> et <v1, v2> reprsentent deux arcs diffrents. La figure cidessous reprsentent deux graphes.

graphe orient

graphes non orient

4. Terminologie : avant de continuer, il est utile de prsenter la terminologie (mme rduite) utilise dans la thorie des graphes.
Terme adjacence arc arte boucle chane Signification deux arcs sont adjacents s'ils ont une extrmit commune; deux sommets sont adjacents s'il existe un arc, ou une arte, les reliant couple (x,y) dans un graphe orient nom d'un arc, dans un graphe non orient arc reliant un sommet lui-mme Nom d'un chemin dans un graphe non orient ; squence darcs avec une extrmit commune dans un graphe orient. suite d'arcs connexes reliant un sommet un autre. Par exemple (a;b) (b;c) (c;d) (d;b) (b;e) est un chemin reliant a e ; on le note (a,b,c,d,b,e). Un chemin est une chane, la rciproque tant fausse dsigne un chemin simple passant une fois et une seule par toutes les artes du graphe ; il nexiste pas toujours dsigne un chemin simple qui passe une fois et une seule par chaque sommet cest le nombre minimal de couleurs ncessaires pour colorier tous les sommets du graphe sans que deux sommets adjacents aient la mme couleur ; pour les cartes de gographie, le nombre chromatique est 4 ; ce fut, en 1976, la premire dmonstration informatique dun thorme mathmatiques, sous rserve quil ny ait pas eu de bug dans le programme il aura fallu 700 pages de listing ! chemin dont l'origine et l'extrmit sont identiques Un graphe est connexe sil existe toujours une chane, ou un chemin, entre deux sommets quelconques. Par exemple le plan dune ville doit tre connexe. un graphe est complet si quels que soient deux sommets distincts, il existe un arc (ou une arte) les reliant dans un sens ou dans l'autre nom d'un circuit dans un graphe non orient ; dans un graphe orient, un cycle est une chane dont l'extrmit initiale concide avec l'extrmit finale nombre d'arte issues d'un sommet dans un graphe non orient ; nombre darcs arrivant ou partant dun sommet dans un arc orient ; on peut vrifier facilement que la somme des degrs de tous les sommets, est donc le double du nombre des artes (puisque chacune est compte deux fois). le diamtre dun graphe est la plus grande chane (chemin) de toutes reliant deux sommets quelconques du graphe la distance entre deux sommets dun graphe est la plus petite longueur des chanes, ou des chemins, reliant ces deux sommets. dsigne un graphe o le couple (x,y) nimplique pas lexistence du couple (y,x) ; sur le dessin, les liens entre les sommets sont des flches dsigne un graphe non orient nayant pas de boucle ni plus dune arte reliant deux sommets. Sur le dessin, les liens entre les sommets sont des segments, et on ne parle alors plus d'arcs mais d'artes ; tout graphe orient peut donc tre transform en graphe simple, en remplaant les arcs par des artes nombre d'arcs du chemin (ou dartes de la chane) nombre de sommets du graphe Dans l'arc (x;y), x est prdcesseur de y

chemin

chemin eulrien chemin hamiltonien

chromatique (nombre)

circuit Connexit Complet Cycle

degr dun sommet

Diamtre Distance graphe orient

graphe simple

longueur d'un chemin (ou dune chane) Ordre dun graphe prdcesseur

Rang

sous graphe

le rang dun sommet est la plus grande longueur des arcs se terminant ce sommet le graphe G' est un sous graphe de G si l'ensemble des sommets de G' est inclus dans l'ensemble des sommets de G, et si l'ensemble des arcs de G' est gal au sousensemble des arcs de G reliant entre eux tous les sommets de G ; on a donc retir de G certains sommets, et tous les arcs adjacents ces sommets ; soit un graphe G (E ; R), et F un sous-ensemble de sommets. On dit que F est un sous ensemble stable de E sil nexiste aucun arc du graphe reliant deux sommets de F. dans l'arc (x;y), y est successeur de x nombre darcs (artes) dont une extrmit part de ce sommet. nombre darcs (artes) dont lextrmit finale arrive dans ce sommet nombre darcs (artes) dont lextrmit dorigine part de ce sommet

Stable successeur
Arcs( artes) incidents un sommet

Arcs incidents un sommet vers lintrieur Arcs incidents un sommet vers lextrieur

Un sommet pendant est un sommet de degr 1. Un pont est une arte telle que sa suppression disconnecte le graphe en question. Demi-degr intrieur (degr entrant) dun sommet x, d ( x) , est le nombre d,arcs entrant x, Demi-degr extrieur (degr sortant) dun sommet x, d + ( x) , est le nombre darcs sortant de x. Le degr d(x) est gal ( d + ( x) + d ( x) ) Un graphe valu (pondr) est un graphe o les arcs (artes) possdent un poids. Graphe partiel Soit G = (V, E) un graphe. Le graphe G' = (V, E') est un graphe partiel de G, si E' est inclus dans E. Autrement dit, on obtient G' en enlevant une ou plusieurs arte graphe G.

Exercice

Quels sont les cycles et les circuits de ce graphe?

Exercice :

successeurs (C)? prdcesseurs (B)? arcs incidents E vers l'extrieur? Exercice: Caractriser les graphes de diamtre 1. Trouver le diamtre des graphes ci-dessous.

5. Reprsentation d'un graphe a) Utilisation de matrices L'ensemble des sommets du graphe n'volue pas. On utilise un tableau de boolens, dite matrice d'adjacence, de dimension n x n o n= |V|.

L'lment d'indice i et j est vrai si et seulement si il existe un arc entre les sommets i et j.

Exemple: La matrice dadjacence du graphe

est comme suit:

Avantages : rapidit des recherches, compacit de la reprsentation, simplicit des algorithmes de calcul. Inconvnients : reprsentation ne convenant qu'aux graphes simples; redondance des informations pour les graphes non orients; stockage inutile de cas inintressants (les zros de la matrice), examiner quand on parcourt le graphe (pour la complexit des algorithmes, le nombre dartes E est remplacer par V 2 ). Exercice a) quelle est la matrice d'adjacence du graphe suivant? b) que se passe-t-il si le graphe est simple (non orient)? c) comment procder dans un graphe valu? d) comment traiter tous les successeurs du sommet S1? e) crire une fonction qui retourne le demi-degr extrieur de S3?

b. Matrice d'incidence Un graphe non oriente n sommets numrots et p arcs numrots peut tre reprsent par une matrice (n; p) d'entiers : l'lment M[i][j] vaut 1 si le sommet i est une extrmit de l'arte j, 0 sinon :

reprsentation par la matrice dincidence.

Avantages : rapidit des recherches, compacit de la reprsentation, informations non redondantes pour les graphes non orients; Inconvnients : stockage et examen inutile de zros; les calculs de matrices classiques ne s'appliquent pas.

b) Utilisation des listes d'adjacence

Exercice a) crire, en C-C++ ou en Java, les dclarations qui correspondent cette liste b) faire la distinction entre un graphe o le nombre de sommets volue c) comment faire si le graphe est valu d) avantages et inconvnients de cette solution e) crire une fonction qui retourne le demi-degr extrieur de x.

Quelques Proprits dans les graphes


Thorme : Un graphe ayant V sommets possde au plus n(n-1)/2 artes. Preuve : en classe !! Pour tout graphe : (1) La somme des degrs des sommets est gale au double du nombre dartes. (2) La somme des degrs des sommets est paire (3) Le nombre de sommets de degr impair est pair Dmonstration 1. Chaque arte du graphe relie exactement 2 sommets, une arte augmente donc de 2 la somme des degrs des sommets (1 pour chaque sommet). 2. Il est clair que, daprs ce qui prcde, la somme des degrs est paire. 3. Soit N le nombre de sommets de degr impair. Ces degrs valent 2k1+1, , 2kN+1. Les autres valent 2k'1, , 2k'm. La somme des degrs vaut

et cette somme est paire d'aprs (1) d'o le rsultat Un exemple Est-il possible de dessiner, dans le plan, 9 segments de telle manire que chacun en coupe exactement 3 autres ? En reprsentant chaque segment par un sommet dun graphe et en reliant deux sommets par une arte lorsque les deux segments se coupent, le problme se ramne la recherche dun graphe 9 sommets o tous les sommets sont dordre 3. Or le nombre de sommets de degrs impairs est ncessairement pair, 9 tant impair, le problme na pas de solutions. En modifiant lnonc comme suit:
Est-il possible de dessiner, dans le plan, 8 segments de telle manire que chacun en coupe exactement 3 autres ?

Il ny a plus de contradiction avec le thorme prcdent mais il nest pas sr que le problme admette une solution. Quelques ttonnements permettent cependant de rpondre positivement la question pose

10

Le graphe ci-contre rpond la question pose.

le graphe correspondant
Un dessin possible

Thorme Dans un graphe simple G, il y a au moins 2 sommets distincts ayant le mme degr. Preuve: Soit n le nombre de sommets de G et soit d(x) le degr du sommet x dans G. On a toujours 0
d(x) n-1. Si tous les degrs sont distincts, toutes les valeurs de d() sont atteintes, en particulier 0 et n1. Soit a un sommet de degr n-1. Alors les n-1 sommets restants sont extrmits dune arte ayant a comme autre extrmit. Les sommets ont donc tous un degr non nul, en contradiction avec lhypothse.

Soit A un graphe n sommets. Thorme - Les proprits suivantes sont quivalentes. (a) A est un arbre. (b) A ne contient aucun cycle et possde n-1 artes. (c) A est connexe et possde n-1 artes. (d) A est connexe, et chaque arte est un pont. (e) Deux sommets quelconques de A sont relis par un unique chemin. (f) A est acyclique mais l'addition d'une quelconque nouvelle arte cre exactement un cycle.

11

Dmonstration Lquivalence se fera comme suit : (a)

(b)

(c)

(d)

(e)

(f)

(a)

On raisonne par induction sur n. L'quivalence des six proprits est vidente pour n= 1. (a) (b) : il faut montrer que A possde n-1 artes. Supprimons une arte de A. Cela le disconnecte (sinon A contiendrait un cycle) en deux sous-graphes B et C tous deux connexes et sans cycle, donc possdant, d'aprs l'hypothse de rcurrence, p -1 et q -1 artes (o p+q=n). Il en rsulte que A possde (p -1) + (q -1) + 1 = n -1 artes. (b) (c) : il faut montrer que A est connexe. S'il ne l'tait pas, chacune de ses composantes serait connexe et sans circuit. Donc, par hypothse de rcurrence, elle possderait qi-1 artes. On aurait donc

(o k est le nombre de composantes). Par consquent, k=1, d'o la contradiction. (d) : il faut montrer que si l'on enlve une arte, le graphe n'est plus connexe, ou encore qu'un (c) graphe possdant n sommets et n-2 artes n'est pas connexe. S'il l'tait, il aurait forcment un sommet pendant (sommet de degr 1), puisque la somme des degrs est gale 2n-4, alors qu'elle vaut au moins 2n pour un graphe sans sommet pendant. Retirant ce sommet et l'arte qui lui correspond, on aurait un graphe n-1 sommets et n-3 artes qui serait connexe, ce qui est faux d'aprs l'hypothse de rcurrence (ou alors : qui entrane, en recommenant le mme raisonnement, l'existence d'un graphe connexe deux sommets et zro arte). (e) : puisque A est connexe, ce chemin existe. S'il y en avait deux, A contiendrait un circuit et la (d) suppression d'une arte quelconque de ce circuit laisserait A connexe, en contradiction avec l'hypothse que toutes les artes sont des ponts. (e) (f) : si A contenait un circuit, deux sommets sur ce circuit seraient relis par deux chemins. Si l'on ajoute une arte vw, puisque v et w taient dj relis dans A, on cre un circuit. On ne peut en crer qu'un : si l'on en crait deux, on aurait la figure suivante

et A aurait dj contenu auparavant le circuit mis en vidence en rouge.

12

(f) (a) : si A n'tait pas connexe, l'adjonction d'une arte entre deux composantes ne pourrait crer de circuit.

Parcours dans les graphes


tant donne la racine dun arbre, lune des tches les plus communes est la traverse de ce dernier en visitant tous ses noeuds dans un ordre bien dfini. Dans le chapitre sur les arbres, nous avons dfini trois procdures: postfixe, infixe et prefixe, pour effectuer cette visite. De la mme manire, dans un graphe G = (V,E) et un sommet v dans V(G), nous sommes intresss visiter tous les sommets quon peut atteindre partir de v. On peut rencontrer deux types de problmes dans les parcours de graphes: 1) Il se peut que tous les autres sommets ne soient pas accessibles partir du sommet de dpart. Tel est le cas des graphes non connexes (voir tableau ci-dessous pour dfinition). 2) Le graphe peut contenir des cycles, et on doit sassurer que lalgorithme ne rentre pas dans une boucle infinie. Pour remdier aux deux problmes cits, les algorithmes de parcours de graphes maintiennent en gnral un bit de marquage pour chaque sommet du graphe. Initialement, le bit est 0 pour tous les sommets du graphe. Le bit de marquage est mis 1 quand un sommet est visit pendant le parcours. Si un sommet marqu est rencontr nouveau pendant le parcours, il nest pas visit une deuxime fois. Ceci permet dviter les cycles. Une fois lalgorithme de parcours termin, on peut vrifier si tous les sommets ont t visit en consultant le tableau de marquage. La stratgie de parcours dun graphe est alors comme suit : Nous allons discuter, dans ce qui suit, deux procdures: exploration en largeur dabord et exploration en profondeur dabord. Parcours en largeur dabord (Breadth First Search, BFS) La stratgie de cette exploration est comme suit: on commence au sommet v et le marquer comme tant visit. Lensemble des sommets adjacents v sont visits. Ensuite, les sommets non visits de ces lments sont leur tour visits, et ainsi de suite, jusqu visiter tous les sommets. void BFS (int debut) // debut tant le sommet de dpart { 13

enfiler (debut) ; marquer[debut] = 1; tant que (file non vide) { s = defiler () ; // traitement ncessaire sur le sommet s pour tout w adjacent s faire si (Marque[w] == 0 ) { Marquer[w] = 1; enfiler (w); } }} Exemple sur un graphe

Ordre de parcours : 1, 2, 4, 5, 3 Un autre exemple: le parcours en BFS est indiqu par les numros rouges.

14

Ordre de parcours : A,C,E,D,F,B

Complexit : Il est clair que cette complexit est donne par celle de la boucle while. Comme un sommet nest jamais visit plus dune fois, cette boucle est au plus rpte n fois. Le nombre ditrations de la boucle for est proportionnel au degr de chaque sommet u+1 (le +1 car mme si degre(u)=0, la boucle fera quand mme le test) . En additionnant sur les sommets, on obtient :
T (n) = O (n + deg re(u ) + 1) = O (2n + 2e) = O (n + e)
uV

Parcours en profondeur dabord (Depth First Search, DFS)


La stratgie de cette mthode est comme suit: On commence par v quon marque comme visite. Ensuite, un sommet adjacent w adjacent v est choisi et un parcours en profondeur dabord est effectu partir de w. Quand un sommet u est atteint tel que tous les sommets quils lui sont adjacents sont visits, alors on choisit un sommet adjacent du dernier sommet visit et on recommence la procdure jusqu ne plus avoir de sommets adjacents non visit. En terme algorithmiques, on obtient ce qui suit : void DFS(int v) // v tant le sommet de dpart { pour i allant de 1 n faire initialiser marquer [i] = 0; marquer [v] = 1 Pour chaque sommet w adjacent v faire si marquer [w] = 0 alors DFS(w) finpour }

15

Exemple sur un graphe

Ordre de visite : 1, 2, 4, 3, 5;

Ordre de visite: visite: A, C, B, F, D, E.

Complexit Observons que DFS examine chaque sommet au plus une fois. Pour chaque sommet u, un temps proportionnel (degreexterne(u)+1) est ncessaire pour traiter les sommets adjacents de u (pourquoi le +1 ?). Par consquent, la complexit de DFS est :

T (n) = O(n + deg reexeterne(u ) + 1) = O(n + deg reexterne +n) = O(2n + e) = O(n + e)
uV uV

16

Quelques applications de parcours de graphes

Application 1 : Accessibilit Pour connatre les sommets accessibles depuis un sommet donn d'un graphe (orient ou non), il suffit de faire un parcours en profondeur partir de ce sommet, en marquant les sommets visits : marquage des sommets accessibles depuis un sommet s : visiter s visiter un sommet k: si k n'a pas encore t visit alors marquer k; visiter tous les sommets adjacents de k finsi

Application 2 : composantes connexes Dfinition : Un graphe est connexe si et seulement si, quelque soit deux sommets, ils sont relis par une chane (chemin).

Dfinition: Une composante connexe est un sous graphe connexe de taille maximale. Remarque : il est toujours possible de partitionner un graphe en composantes connexes. Par exemple, sur la figure ci-dessous, le graphe est scind en 3 composantes connexes.

17

Thorme Soit G un graphe simple n sommets. Si G possde k composantes connexes, le nombre m de ses artes vrifie

Preuve:

n-k m ?
Chaque composante connexe de G est un graphe simple connexe. Il est clair que le plus petit (en nombre dartes) graphe connexe est un arbre (pourquoi ?). Il en rsulte que chacune des k composantes connexes possde au moins n1-1 artes. Autrement dit :
m n1 1 + n 2 1 + ... + n k 1 = n k

m (n-k)(n - k +1)/2?
Nous pouvons supposer que chaque composante est un graphe complet. Supposons que nous ayons deux composantes Ci et Cj de G qui soient des graphes complets possdant respectivement ni et nj sommets, avec ni nj > 1. Remplaons Ci et Cj par des graphes complets ni+1 et nj -1 sommets respectivement (en d'autres termes. Dans une telle opration, le nombre de composantes et celui de sommets reste inchang. En revanche, le nombre d'artes augmente de:

Le nombre m sera donc maximal quand il n'y aura plus qu'une seule composante ayant plus d'un sommet, c'est--dire quand on aura k-1 sommets isols et un graphe complet n - k + 1 sommets et, par consquent, (n - k)(n - k + 1)/2 artes.

Comment dterminer les composantes connexes dun graphe?


En appliquant dune manire rptitive DFS ou BFS sur tous les sommets non encore visits. Il est clair quune composante connexe est constitue du sous graphe dont les sommets sont visits par un seul appel DFS ou BFS

for i = 1 to n do marquer(i) = 0 fin pour pour i = 1 n si marquer(i) = 0 alors DFS(i) (ou alors BFS); restituer le sous graphe visit par DFS (formant une composante connexe) fin pour Complexit : Si G est reprsent par sa liste adjacente, alors le temps total pris par DFS est en O(e), e tant le nombre dartes. La restitution peut tre complte en temps O(e) si DFS garde une liste de 18

tous les sommets nouvellement visits. Comme la boucle pour est en O(n), la complexit totale, pour gnrer toutes les composantes connexes est en O(n + e).

Exercice : quelles sont les composantes connexes du graphe ci-dessous

Application 4 : Graphe orient sans circuit


Un graphe orient comporte un circuit si et seulement si, lors du parcours des sommets accessibles depuis un sommet, on retombe sur ce sommet. Pour savoir si un graphe est sans circuit, il suffit donc d'adapter DFS ou BFS, en maintenant une liste des sommets critiques (en cours de visite): Pour tout sommet s Si s n'a pas encore t visit alors visiter s finsi finpour; rpondre ''il n'a pas de cycle'' visiter s : si s est dans la liste critique alors rpondre ``il y a un cycle ''; retour sinon ajouter s la liste critique; visiter tous les successeurs de s; enlever s de la liste critique finsi

19

Applications dans les graphes simples


Application 1 : chemins eulriens et hamiltoniens Dfinition: une chane eulrienne est une chane passant une et une seule fois par toutes les artes du graphe. Si le sommet initial et le sommet final sont confondus, on parle alors de cycle eulrien. Dfinition : Un graphe est dit eulrien sil admet un chemin ou un cycle eulrien.

Exemple : Un camion de ramassage des ordures part du dpt reprsent en noir ci-dessous et doit passer sur chaque route du rseau ci-dessous pour effectuer la collecte des dchets. Comment doit-il sy prendre ? On cherche ici un cycle eulrien.

Thorme dEuler : Un graphe simple connexe est eulrien si et seulement si pour tout sommet x, d(x) est pair. Preuve : Supposons G admet un cycle eulrien, soit alors c un cycle eulrien et x un sommet de G. Le cycle c contient toutes les artes de G, donc toutes les d(x) artes ayant x comme extrmit. Lors d'un parcourt de c on arrive en x autant de fois qu'on en repart, chaque arte de G tant prsente une et seule fois dans c, d(x) est ncessairement un nombre pair. Rciproquement, choisissons un sommet arbitraire x0, puis considrons lautre extrmit de cette arte : ce deuxime sommet tant de degr pair, on peut en repartir par une autre arte et atteindre ainsi un autre sommet nouveau. Et ainsi de suite, comme le graphe admet un nombre fini dartes, jusqua ce que la chane forme se referme sur elle pour former un cycle c (si elle ne se referme pas, alors lextrmit aura un degr impair). Si ce cycle est eulrien, on arrte. Sinon, chacune des composantes du graphe restant vrifie les proprits du thorme: elle est finie, connexe et chacun des sommets est de degr pair.

20

Cycle c

x0.

x1.

Cycle c1

Comme G est connexe, chacune des composantes restantes possde au moins un sommet commun avec le cycle c. Soit x1 un tel sommet. Construisons alors, de la mme manire que prcdemment, un cycle c1 dans cette composante partir de x1. Rallongeons le cycle c1 en insrant partir du sommet x1 le cycle c1 pour former un cycle c'1 de x0 x0. Si ce cycle c'1 possde toutes les artes de G, c'1 est le cycle eulrien cherch.
processus, qui se terminera car les sommets du graphe G sont en nombre fini. Sinon, on continue ce

Exercice : dmontrer le thorme suivant :


Un graphe connexe G admet une chane eulrienne si et seulement le nombre de sommet de degr impair est soit 0 ou 2.

Exemple dapplication le plus connu: le problme dit des 7 ponts de Knigsberg mentionn en introduction:

Comment partir de A et revenir A, en passant par chaque pont une fois et une seule ? Le problme revient chercher un cycle eulrien de A A.

21

Ce graphe est bien connexe (tout sommet peut tre reli un autre) et on a Sommet Degr A 3 B 3 C 3 D 5

Il y a quatre sommets de degr impair : il nexiste donc pas de chemin Eulrien. Autrement dit, le problme des 7 ponts de Knigsberg na donc pas de solution. Exercice Lequel des deux graphes ci-dessous admet une cycle eulrien.

figure 1

figure 2

Lalgorithme dEuler permet de trouver explicitement, lorsque cela est possible, une chane eulrienne dans un graphe. Les conditions dexistence dun parcours eulrien sont donnes comme suit :
Un graphe connexe admet une chane eulrienne si le nombre de sommets de degr impair est 0 ou 2. Un graphe connexe admet un cycle eulrien si tous ses sommets sont de degr pair.

Exemple de mise en uvre sur le graphe ci-dessous : dpart en D et arrive en A


Bien entendu, il faut s,assurer au pralable que ce graphe admet une chane eulrienne : calculer pour cela lordre de chaque sommet.

22

Chanes fermes tape 1 tape 2 tape 3 tape 4 tape 5 tape 6

Chane eulrienne DBCA

AEKA DFAD FGHEF GILJIHJG KJMK

DBCAEKA DFADBCAEKA DFGHEFADBCAEKA DFGILJIHJGHEFADBCAEKA DFGILJIHJGHEFADBCAEKJM KA

Note : Cet algorithme ne conduit pas une solution unique: le choix de la chane de dpart et des chanes fermes est arbitraire. Exercice : dduire un algorithme dterminant un cycle eulrien (en supposant que tous les degrs des sommet soient pairs). Quelle est sa complexit, en reprsentant le graphe comme : 1. matrice dadjacence 2. matrice dincidence 3. liste dadjacence.

Graphes hamiltoniens
Dfinition : une chane hamiltonienne est une chane passant une et une seule fois par tous les sommets du graphe. Si le sommet initial et le sommet final sont confondus, on parle alors de cycle eulrien.

23

Exemple : Un voyageur de commerce part tous les matins de son domicile reprsent en noir cidessous et doit rendre visite un ensemble de clients reprsents en blanc, puis retourner son domicile. Comment doit-il sy prendre pour minimiser la distance totale parcourue. (On suppose que les distances entre toutes les paires de clients ainsi quentre les clients et le domicile du voyageur de commerce sont connues). On cherche ici un cycle hamiltonien de longueur minimale.

Contrairement aux graphes eulriens, il nexiste pas de caractrisation simple des graphes hamiltoniens. On peut cependant noncer quelques proprits et conditions suffisantes. 1. Un graphe possdant un sommet de degr 1 ne peut tre hamiltonien. 2. Si un sommet dans un graphe est de degr 2, alors les deux artes incidentes ce sommet doivent faire partie du cycle hamiltonien. 3. Les graphes Kn sont hamiltoniens. (Kn tant un graphe complet de n sommets) Thorme (Ore) Soit G = (X,A) un graphe simple dordre n 3 . Si pour toute paire de sommets {x, y} non adjacents, on a d(x) + d(y) > |X | alors G est hamiltonien. Corollaire (Dirac) Soit G = (X,A) un graphe simple dordre n 3 Si pour tout sommet x de G on a n d ( x) alors G est hamiltonien. 2

Exemple : Lesquels des graphes suivants est hamiltonien ?

24

Lorsquon a affaire des gros graphes ou quon dsire obtenir des solutions trs rapidement, on utilise ce quon appelle des heuristiques qui fournissent des solutions de qualit raisonnable en des temps raisonnables. Heuristique du plus proche voisin 1) Choisir un sommet de dpart x 2) Tant que tous les sommets ne sont pas encore visits faire lopration suivante se rendre au sommet le plus proche pas encore visit Exemple

Toute heuristique, y compris celle du plus proche voisin, peut facilement tre amliore en rajoutant la fin une procdure de post-optimisation. Celle-ci consiste vrifier sil existe une paire dartes sur le cycle qui peut tre remplace par une autre paire dartes (il ny a quun remplacement possible par paire dartes) tout en diminuant la distance totale parcourue. Tant que de telles paires dartes existent, les changes sont effectus.

Illustration

Cette procdure de post-optimisation permet de rduire considrablement lcart loptimum. Par exemple, on a pu constater que la combinaison de lheuristique du plus proche voisin suivie dune postoptimisation a amlior la performance de lalgorithme en moyenne denviron 2 3%. Il existe des mthodes qui permettent de rduire cet cart quelques diximes de pourcent, mais ces mthodes sont beaucoup plus complexes mettre en place. 25

Application 2: Arbres couvrant de poids minimum


Introduction : Un rseau comporte des machines A, B, C, D, et E qui doivent pouvoir communiquer entre elles. Les liaisons envisages sont reprsentes par le graphe suivant (les artes sont tiquetes par la distance entre les machines):

Question : Comment cbler le rseau moindre cot ? Rponse : Il s'agit d'enlever des artes au graphe de faon qu'il reste connexe, et que la somme des pondrations des artes soit la plus petite possible. Remarquons que le graphe partiel recherch est sans cycle (pourquoi ?)
Ce problme se pose, par exemple, lorsqu'on dsire relier n villes par un rseau routier de cot minimum. Les sommets du graphe reprsentent les villes, les artes, les tronons qu'il est possible de construire et les poids des artes correspondent aux cots de construction du tronon correspondant. Le problme est ramen au problme suivant :

Dfinition : Le problme de l'arbre recouvrant de poids minimal est celui qui consiste dterminer un arbre qui soit un graphe partiel dun graphe G simple connexe et dont le poids total est minimal Exemple de solutions sur le graphe ci-dessus

Algorithme de Kruskal
La stratgie de cet algorithme consiste construire larbre en question comme suit : on part dune solution vide. On choisit, chaque fois, une arte de G de poids minimum et qui ne cre pas de cycle. Soit E l'ensemble des sommets de G. On utilisera un ensemble d'artes T qui sera en sortie l'arbre couvrant minimal et un ensemble d'artes F qui reprsentera les artes qui peuvent tre choisies.

26

T = { }; F= E; tant que |T| < n - 1 faire trouver une arte e de F de poids minimal F=F-e si T + e est acyclique alors T = T + e finsi fin tant que

Exemple 1:

Les diffrentes tape pour construire larbre T

Exemple 2 : Reprenons le graphe ci-dessus, et construisons larbre recouvrant de poids minimum laide de lalgorithme de Kruskal. Poids 2 2 3 4 4 5 6 Artes B-C D-E C-D B-D A-E A-B B-E

lmine lmine lmine

Preuve doptimalit: Soit n lordre du graphe. Lalgorithme produit bien un arbre recouvrant du graphe puisquil termine lorsque les n 1 artes sont choisies et T est acyclique. Supposons maintenant que larbre recouvrant T ne soit pas minimal. Si e1 , e2 ,..., en 1 alors p (e1 ) p (e2 ) ... p (en 1 ) par
construction ( p (ei ) tant le poids de larte ei ). Soit alors A un arbre couvrant minimal tel que lindice de la premire arte de T, qui ne soit pas une arte de A, soit maximum. Soit donc k cet indice. On a alors e1 , e2 ,..., ek T , e1 , e2 ,..., ek 1 A et ek A . Alors A + ek contient un unique cycle C. C ne peut pas tre constitu uniquement dartes de T (hormis ek ) car sinon T contiendrait un cycle. Soit alors e , une arte de C appartenant A mais non T. Nous avons alors A + ek e , est donc un arbre

27

couvrant du graphe, et p ( A + ek e , ) = p ( A) + p (ek ) p (e , ) . Dans lexcution de lalgorithme de


Kruskal, larte ek a t choisie de poids minimal tel que le graphe contenant le sous graphe contenant les artes e1 , e2 ,..., ek soit acyclique. Mais le sous graphe contenant les artes e1 , e2 ,..., ek 1 , e , est aussi acyclique, puisquil est sou graphe de A. Par consquent, p (e , ) p (ek ) et p ( A + ek e , ) p ( A) . On en dduit que A + ek e , est optimal et diffre de T par une arte strictement suprieur k : contradiction.

Complexit : Si les artes sont classes par ordre de cot croissant, ce qui peut se faire en O (e log e) ; e tant le nombre dartes dans le graphe, il reste valuer la complexit de test dacyclicit. Si les composantes connexes du graphe T sont connues, ce test se rduit vrifier que les extrmits de larte choisie sont dans eux composantes connexes distinctes. Il reste alors grer ces composantes connexes de manire fusionner deux composantes connexes relies par larte choisie. Cela peut se faire par la technique de fusion rapide en O (e log n) - comment? Lalgorithme de Kruskal a une complexit de lordre O (e max(log n, log e))

Algorithme de Prim
Lalgorithme de Kruskal veille maintenir la proprit dacyclicit dun arbre alors que lalgorithme de Prim se base sur la connexit dun arbre. Lalgorithme de Prim fait pousser un arbre couvrant minimal en ajoutant au sous-arbre T dj construit une nouvelle branche parmi les artes de poids minimal joignant un sommet de T un sommet qui nest pas dans ce dernier. Lalgorithme sarrte lorsque tus les sommets du graphe sont dans T. Soit X lensemble de sommets du graphe de dpart G. On utilisera un ensemble dartes qui sera en sortie larbre recouvrant en question, et S un ensemble qui contiendra les sommets de T. T = S= S x tant que S X faire trouver une arte e = {y,s} de poids minimal tel que yX-S et sS T = T {y,s} S=Sy findutantque

Les diffrentes tape pour construire larbre T


28

Preuve de lalgorithme : Soit n lordre du graphe G. Lalgorithme produit bien un arbre couvrant du graphe puisquil termine lorsque tous les sommets de X sont dans S, et chaque itration, une arte est choisie. Donc T contient les sommets de G et a exactement n 1 artes.
Supposons maintenant que larbre couvrant T ne soit pas minimal. Soit A un arbre couvrant minimal qui a le maximum dartes en commun avec T. Si e1 , e2 ,..., en 1 sont les artes de T dans lordre de choix de lalgorithme, alors p (T ) = p (ei ) . Soit
i =1 n 1

j = inf{i,1 i n, ei A} ( e j est la premire arte

de T qui ne soit pas dans A). On notera S i lensemble des sommets du sous-graphe induit par les artes e1 , e2 ,..., ei . Le graphe A + e j nest pas un arbre donc contient un unique cycle C. Or, par construction, e j relie ncessairement un sommet de S j 1 un sommet de X- S j 1 . Donc C doit contenir une arte e e j qui elle aussi relie un sommet de S j 1 un sommet de X- S j 1 . Le graphe A + e j e est alors un arbre couvrant du graphe de dpart G. Mais par construction de T, p (e j ) p (e) , do p ( A + e j e) p ( A) + p (e j ) p (e) : A + e j e est alors un arbre couvrant minimal qui a plus dartes en commun avec T ce qui contredit lhypothse sur A.

Complexit : Si S possde k sommets, pour choisir une arte de poids minimal reliant un sommet de S un sommet de X-S, on doit trouver le poids minimum parmi au plus k (n k ) artes puisque chaque sommet de S est adjacent au plus (n k ) sommets de X-S. Or k varie entre 1 et n, donc
k (n k ) < (n 1) 2 . Ce choix est effectue n fois dans la boule tant que. Donc la complexit est en O(n 3 ) .

Exercice : Proposez une structure de donnes pour le graphe G de telle manire que la complexit temporelle de lalgorithme de Prim soit en O (e log n) .

Rfrences : dautres solutions de meilleures complexits existent dans la littrature. Ainsi, ce problme peut rsolu en un temps linaire si les poids sont de petits entiers (Freedman and Willard : trans-dichotomous algorithms for minimum spanning trees and shorets paths, 31st IEEE Symp. Fournadations of Compu. Sci., 1990, pp. 719-725).
Autrement, la meilleure solution existant dans la littrature est proche de linaire. La borne exacte est O (e log (e, n)) o la fonction (e, n) est le plus petit indice i tel que log(log(log(... log(n)...))) plus e petit que (Gabow, Galil, Spencer et Tarjan : efficient algorithms for finding minimu spanning trees n in undirected and directed grahs, Combinatorica, Vol. 6, 1986, 109-122.

29

Application 3: chemin le plus court


Soit un graphe (orient ou non) pondr, c'est--dire chaque arc de ce graphe est muni d'un poids (nombre rel). Le poids dun chemin est dfini comme tant la somme des poids des arcs qui le constituent. Le problme du plus court chemin, dans ce chapitre, consiste dterminer le poids minimal d'un chemin d'un sommet tous les autres, en supposant des poids positifs. Lalgorithme prsent ci-dessous est celui de Dijkstra. La stratgie de cet algorithme est comme suit : On construit un ensemble fix (permanent) de sommets x ayant le plus court chemin Tx . Initialement, cet ensemble contient juste le sommet de dpart S, et son plus court chemin est Ts = 0 . chaque tape, on considre lensemble frontire des sommets qui ne sont pas encore fixs et sont adjacents ceux qui sont permanents. Si le sommet y qui est dans frontire est adjacent x1 , x 2 ,..., x k appartenant lensemble permanent, alors nous posons temporairement Ty gal au minimum de ( Tx1 + poids de

( x1 , y ) ,( Tx2 + poids de ( x 2 , y ) , ,( Txk + poids de ( x k , y ) ), comme illustr par la figure ci-dessous.


Parmi les sommets adjacents cet ensemble permanent, nous prenons w dont Tw est minimale. Il est alors mis dans lensemble fix et supprim de lensemble frontire. Cette procdure est rpte jusqu ce que lensemble frontire devient vide.

Ensemble permanent (fix)

Ensemble frontire (non fix)

Thorme : Si un sommet w dans frontire possde le plus petit chemin temporaires Tw parmi les sommets de cet ensemble, alors ce poids devient permanent. Preuve: La preuve est par contradiction. Supposons que Tw ne peut pas tre mis comme tant le plus petit chemin pour le sommet w. Alors, il doit exister un autre chemin de poids plus petit du sommet S au sommet w (voir figure ci-dessous).

30

Ce nouveau chemin contient le plus petit chemin de S x, ensuite, a continue vers v. Ensuite, une autre suite de sommets (reprsent dans la figure par des lignes courbes), avant darriver au sommet w. Autrement dit, Tv + poids du chemin en ligne courbe < Tw . Mais cette ingalit ne peut pas tre vraie pour la simple raison que le poids du chemin en ligne courbe est positive. Do le rsultat du thorme. S

v w

POUR tout sommet t d(s; t) := +infini FINPOUR; T[s] = 0; TANT QU'il reste des sommets non fixs choisir un sommet w non fix tel que T[t] soit minimal; supprimer w des sommets non fixs POUR tout (w,x) dans E SI T[x] > T[w] + poids (w,x) ALORS T[x] = T[w] + poids (w,x) Si x nest pas membre de frontiere Alors ajouter x frontiere FIN SI FIN POUR FIN TANT QUE

Exemple : Soit chercher les plus courts chemins depuis le sommet A vers tous les autre sommets dans le graphe suivant :

31

Le tableau suivant donne les distances depuis A et les arcs marqus au cours des diffrentes tapes de l'algorithme :

Parmanent
{} {A} {A,D} {A,D,C} {A,D,C,E} {A,D,C,E,B}

frontiere
{A} {B,C,D} {B,C} {E,B} {B} {}

poids temporaire du chemin Ta = 0 Tb =8 ;Tc=2 ;Td=1 Tb = 7, Tc = 2 Te = 5, Tb =7 Tb = 6

poids fixe du chemin


Ta =0 Td=1 Tc =2 Te = 5 Tb =6

Exercice : comment changer lalgorithme pour quil donne le plus court chemin un sommet donn dune manire explicite. Complexit et structure de donnes: Nous avons besoin dune structure de donnes pour supporter lensemble frontiere. Nous pouvons le reprsenter comme un TAS H et un vecteur dindices X dans le TAS. Utilisant ce vecteur, tant donn un sommet, sa location dans le TAS H est dtermin en O(1).

TAS H

v i

Vecteur X

i
32

X[v] = 0 si le sommet v nest pas dans le TAS. Si maintenant le sommet v est stock dans la location H[i], alors X[v] prendra la valeur i. Les oprations sur lensemble frontiere peuvent tre implantes comme suit : v
Ajouter (x, frontiere) : utiliser T comme un TAS et insrer x . chaque fois quun lment de T est mis jour (T[i] =j) mettre jour aussi le vecteur X (X[j] = i). Supprimer minimum (x, frontiere) : utiliser T comme un TAS et y supprimer x. De plus, chaque fois quune location du TAS est efface par un indice j, mettre jour le vecteur X en faisant X[j] =i. et aussi, comme x est supprim de lensemble frontiere, son indice doit aussi tre supprim (X[x] = 0). Modification de poids (x,frontiere): le nouveau poids de x est donn par T[x]. Par ailleurs, T doit tre maintenu comme un TAS en le remontant sa bonne location vers la racine. Chaque fois quun lment de T est mise jour (T[i] =j), on doit aussi mettre jour aussi le vecteur X (X[j] = i).

La complexit de ces oprations est comme suit : Ajouter(x,frontiere) : Supprimer-minimum(x,frontiere) : Membre(x,frontiere) : Modification de poids(x, frontiere) : O (log n) O (log n) O (1) O (log n)

Par consquent, la complexit de lalgorithme de Dijkstra est comme suit :

O(n +

n log n +

e+

max(n log n, e log n))

initialisation

supprimer_min

Membre

ajouter frontiere

modifier poids

Lalgorithme de Dijkstra et les distances ngatives : Cet algorithme ne gnre pas la bonne solution si les poids des artes sont ngatifs. Par exemple, considrons le graphe ci-dessous :
A 3 C 2 B

-2

33

Lalgorithme ne va jamais trouver que le plus court chemin allant de A vers B est 1(passant par C).

Application 4 : chemin le plus long


Le problme rsoudre est peu prs loppos du problme prcdent. Deux cas peuvent se prsenter :

Cas 1 : le graphe est acyclique


Dans le cas particulier d'un graphe acyclique, on peut adapter efficacement les algorithmes de plus court chemin la recherche des poids maximaux. La modification de l'algorithme de Dijkstra est comme suit (algorithme de Bellmann) : POUR tout sommet t T[t] = +infini FINPOUR; T[s] = 0; Fixer s; TANT QU'il reste des sommets non fixs choisir un sommet t non fix dont tous les prdcesseurs sont fixs; POUR tout successeur u de t SI T[u] > T[t] + poids de (t,u) ALORS T[u] = T[t] + poids de (t,u) FIN SI FIN POUR; Fixer t FIN TANT QUE

Exemple Soit chercher les plus longues distances depuis le sommet A dans le graphe suivant :

Le tableau suivant donne les plus longues distances depuis A calcules au cours des diffrentes tapes de l'algorithme:

34

Cas 2 : le graphe contient des cycles


Lide est de parcourir l'arbre des chemins acycliques partant d'un sommet s, au moyen d'un algorithme de parcours en profondeur utilisant une liste : parcourir le graphe : POUR tout sommet t diffrent de s T[t] := +infini FINPOUR; T[s] = 0; visiter s ; visiter t : ajouter t la liste; POUR tout successeur (sommet adjacent) u de t qui n'est pas dans la liste SI T[u] = +infini ou T[u] < T[t] + poids de (t, u) ALORS T[u] := T[t] + poids de (t,u) FIN SI; visiter u FIN POUR; enlever t de la liste

Optimalit de l'algorithme: on montre rcursivement que lorsqu'on visite un sommet t qui n'est pas dans la liste, la liste comporte la suite des sommets d'un chemin acyclique allant de s t; d'autre part, les tats de la liste sont distincts chacune des entres dans la procdure visiter. Par consquent l'algorithme termine (il ne peut y avoir qu'un nombre fini d'tats de la liste, correspondant aux chemins acycliques depuis le sommet s). Pour tout sommet t, tout instant, si T[t] < +infini, T[t] reprsente le poids d'un chemin acyclique allant de s t. Comme tous les chemins sont examins, on obtiendra bien le poids maximal. Complexit : dans le pire des cas (graphe complet), le nombre d'entres dans la procdure visiter est le nombre de chemins acycliques d'origine s, c'est--dire

35

(chaque terme de la somme est le nombre de chemins acycliques d'origine s comportant k sommets). chacun de ces appels, on examine les |S| successeurs du sommet que l'on visite. La complexit est par consquent de l'ordre de |S !|.

Un mot sur la reprsentation matricielle dun 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 pou rpondre cette interrogation.

Thorme Soit G = (X,A) un graphe orient, avec X = {x1, x2 ,,xn }; de matrice d'adjacence M = (m i,j). Pour tout entier naturel k, non nul notons Mk la kme puissance de la matrice. Alors m k ij est gal au nombre de chemins de longueur k du sommet xi au sommet xj . Dmonstration Effectuons une rcurrence sur k : m k ij = m i,j dsigne bien le nombre de chemins allant de xi xj. Supposons le rsultat vrai pour l'entier k - 1; comme Mk = Mk - 1 M , on a par dfinition :
mij = mil
k l =1 n k 1

mlj
k 1

Par hypothse de rcurrence, mil

est le nombre de chemins de longueur k - 1 allant de xi xl et mlj


k 1

est gal 1 si (xl, xj) est une arte de G et 0 sinon. Observons que mil mlj est le nombre de chemins de longueur k allant de xi xj dont la dernire arte est (xl, xj), la somme de ces termes est donc bien le nombre de chemins de longueur k allant de xi xj

Exemple

Dterminons le nombre de chemins de longueur 4 allant de a b dans le graphe G1

36

La matrice d'adjacence de G1 est :

Le nombre de chemins cherch est le terme (1, 2) de la matrice

c'est--dire 8.

37

Techniques gnrales de rsolution de problmes


Introduction: La question fondamentale que lon se pose est le suivante : comment approcher un problme pour le rsoudre. Il nexiste pas de recette pour rsoudre un problme. Nanmoins, certaines techniques gnrales sont notre disposition pour nous accompagner dans ce processus de rsolution.
Ce dernier chapitre na pas pour but de dtailler toutes ces techniques; cela est lobjet dautres cours. Toutefois, il est utile davoir une vue densemble sur ces techniques. Non seulement pour avoir un avant got sur les diffrentes stratgies dapproche de rsolution, mais aussi le choix dune stratgie peut influer sur le choix dune structure de donnes. Aprs une brve descriptions de quelques techniques, nous allons nous nous arrter un peu plus sur deux mthodes savoir la mthode de branch and bound et la mthode heuristique.

Les mthodes de rsolution


Elles peuvent tre rpertories en quatre catgories :

1. Concevoir des solutions en tant vorace (glouton): Cette approche consiste, partir dun solution vide, construire une solution partir de rgles simples qui, souvent obissent au bon sens. Le plus simple exemple que nous puissions donner est celui de lalgorithme de Kruskal. Comme nous lavons vu, chaque itration, cet algorithme expand sa solution partielle courante en choisissant larte de poids minimal qui ne cre pas de cycle. Dans certaine situations, tre glouton localement peut conduire une solution optimale globalement. 2. Concevoir des solutions en divisant et rgnant : Cette approche consiste subdiviser le problme de dpart en plusieurs sous-problmes de tailles plus petites. Dune manire rcursive, ce processus va tre continu en des sous problmes de taille de plus en plus petite jusqu arriver des problme de taille dont la rsolution est plutt facile. Ensuite, on remonte cette rcursivit en combinant les solutions de ces sous-problmes en des solutions des problmes qui les a subdivis. Ainsi de suite, jusqu arriver la solution du problme de dpart. Pour obtenir des solutions de meilleures complexits, il est conseill davoir des sous-problmes de tailles identiques ou presque. Lexemple que nous pouvons mentionner est celui du tri par fusion. Cet algorithme consiste diviser le tableau en deux partie gales. Dune manire rcursive, ces deux parties sont ensuite divises de la mme manire jusqu avoir deux tableau dun lment chacun. Ensuite, on remonte cette rcursivit en fusionnant deux parties dun tableau tries en un seul tableau tri jusqu arriver au tableau de dpart. 3. Concevoir des solutions en faisant attention la manire de diviser et rgner : Dans certaines situations, dans la mthode de diviser et rgner, la subdivision de haut en bas, telle que mentionne plus haut, est telle que les sous problmes gnrs peuvent tre rsolus plusieurs fois. Cela engendre des solutions de mauvaise complexit. Afin dviter ces rptitions, une autre approche consiste commencer rsoudre les problmes de taille plus petite et ensuite daller des tailles de plus en plus grande. Cette approche est connue sous le nom de programmation dynamique. Quand le nombre de sous-problmes diffrents nest pas trs lev,
38

cette approche gnre des algorithmes de complexit efficace. Un bon exemple mentionner est celui des nombres de Fibonacci. On a vu que limplantation directe de cette fonction conduisait une complexit exponentielle. La raison est que des sous-problmes sont excuts plusieurs fois (dessinez le schma dexcution des diffrents appels rcursifs pour, par exemple, n =5) .

4. Concevoir des solutions en faisant de lnumration intelligente: Dans certains situations, il est possible dnumrer toutes les solutions du problmes et prendre celle qui nous arrange. Linconvnient majeur de cette approche est le nombre prohibitif du nombre de solutions. La mthode de branch and bound (procdure par valuation et sparation progressive) consiste numrer ces solutions dun manire intelligente en ce sens, en utilisant certaines propits du problme en question, elle arrive liminer des solutions partielles qui ne mnent pas la solution que lon recherche. Bien entendu, dans le pire cas, on retombe toujours sur llimination explicite de toutes les solutions du problme.
Pour ce faire, cette mthode se dote dune fonction qui permet de mettre une borne sur certaine solutions pour les exclure de les maintenir comme des solutions potentielles. Bien entendu, la performance dune mthode de branch and bound depend, entre autres, de la qualit de cette fonction (de sa capacit dexclure des solutions partielles tt). Illustrons ce point, prenons lexemple du voyageur de commerce.

Dfinition : Soit un graphe G=(V,E). Un cycle est hamiltonien si et seulement si tous les sommets de G apparaissent une et seule fois dans ce cycle. Dfinition : Soit un graphe G=(V,E) valu. Le problme du voyageur de commerce consiste trouver un cycle hamiltonien dont la somme des poids est minimale.
Soit donc le graphe de la figure ci-dessous : C 4 4 E 8 D B 3 7 5 9 6 5 A

Nous pouvons rsoudre ce problme en commenant par exemple partir du sommet E. Soit la borne v pour ce sommet (on verra plus loin comment la trouver !) c'est--dire la valeur de toutes les solutions incluant le sommet E vont avoir un cot v . Le prochain sommet du cycle que nous recherchons est soit A, B, C ou D. Pour chacune de ces solutions partielles, nous calculons une nouvelle borne (signifiant que toutes les solutions comprenant cette solution partielle va avoir un cot cette nouvelle borne).

39

Initialement, nous pouvons mettre le cot de la meilleure solution trouve un trs grand nombre. Lide de cette mthode la suivante : toute solution partielle dont le cot est plus grand que celui de la meilleure solution trouve jusqu'`prsent va tre exclue de la recherche. Ce processus est continu jusqu' avoir une solution complte. Si le cot de cette solution complte est infrieure celui de la meilleure solution que nous avons, alors nous remplaons ce cot comme tant celui de la meilleure solution courante. Il existe plusieurs manires de dcider quelle solution partielle explorer en premier. Celle que nous allons dcrire ci-dessous est celle qui consiste choisir toujours la solution ayant la plus petite borne. Mais il existe dautres manires de procder. Les unes se valent que les autres. La partie cruciale de branch and bound est la qualit de la fonction F. Si elle est trop simple, probablement que lexclusion des solutions partielles se fera des moment avancs. Cela a pour effet de rallonger encore les temps dexcution des ces algorithmes. Une fonction F peut tre comme suit : Soit le cycle hamiltonien suivant : v1 , v 2, ,..., v n , v n +1 = v1 . Il est facile de voir que, quelque soit la solution, son cot est 1 n (arc vi1 + arc vi2 ) o 2 i =1 adjacents au sommet i ayant le plus petit poids.
arc vi1 et arc vi2 dsignent deux arcs

En commenant partir de E, on aura : Le cot est {(3+4)+(4+4)+(5+5)+(3+6)+(4+7)}= 22.5 Les prochain sommets dans le cycle peuvent tre : A, B, C ou D. Pour chacune des ces solutions partielles, une borne est calcule. Par exemple pour D, la nouvelle borne est : {(8+3)+(4+4)+(5+5)+(3+6)+(4+8)}= 25. Ceci est fait pour chacun des sommets. On obtient successivement : 22.5 pour le sommet C, 23 pour le sommet A et 22.5 pour le sommet B. Parmi ces quatre valeurs, nous allons explorer le sommet ayant la plus petite valeur, soit le sommet (remarquez quil existe dautre manires de procder dans le choix de la prochain solution partielle explorer; chacune a ses propres avantages et inconvnients. titre dexemple, nous pouvons citer DFS et BFS. Ce processus est ensuite rpt. Quand une solution complte est trouve, la meilleure solution courante est modifie si cela est ncessaire. Par exemple, dans notre exemple, la premire solution trouve a pour cot 26 remplaant ainsi lancienne valeur que nous avons initialise un grand nombre. Lide de Branch and Bound est rsume dans ce qui suit : Quand un sommet a une borne plus grande que cette valeur, il ny a plus lieu de le considrer tant donne que cette solution partielle ne mnera pas la solution minimale. Ce processus de gnration de solutions partielles, avec le calcul de leur borne, gnre une arborescence. Pour exemple ci-dessus, larborescence obtenue est la suivante :

40

41

Exercice : proposez une autre fonction F et la comparer celle prsente ci-dessus. Exercice : discuter la structure de donnes la mieux approprie pour implanter cette mthode, dans le contexte du problme de voyageur de commerce. Quels problmes, selon vous, cette mthode risque de poser lors de son excution ?

5. Concevoir des solutions en tant moins exigeant : Souvent on est en face dun dilemme pour rsoudre un problme: 1. obtenir la solution optimale mais, souvent, un prix extrmement lev en temps de calcul, comme cest le cas de la mthode de branch & bound. 2. ou alors obtenir une solution un prix raisonnable (en temps de calcul et espace). Seulement, souvent, cette solution produit des solutions qui ne sont pas optimales (solutions approches). Do le nom dapproche heuristique.
Une fois le choix de lapproche heuristique accept (pour certains problmes, ce choix est impos), ltape suivante est de savoir comment en concevoir une. Il existe plusieurs approches heuristiques. Les plus utilises sont : 1. mthodes voraces (gloutonnes) 2. mthodes itratives 3. mthodes lagrangiennes Celle qui nous intresse dans ce chapitre est la premire cite.

Mthode vorace (gloutonne)


Cette approche nous lavons dj prsente prcdemment. Comme cela a t dj mentionn, dans certains cas (lalgorithme de larbre de couvrement de poids minimum de Kruskal en est un bel exemple), cette approche produit une solution optimale. Cependant, cela nest, en gnral, pas le cas, mme si leur temps dexcution est en gnral raisonnable. Bien entendu, pour un problme donn, plusieurs heuristiques peuvent tre conues pour sa rsolution. Lapprciation de la qualit de la solution gnre par une heuristique donne se fait de deux manires. Il est utile de mentionner que ces deux approches sont plutt complmentaires. 1. Exprimentation (simulation): travers une batterie de donnes, gnres dune manire alatoire, ces diffrentes heuristiques sont excutes. Les solutions gnres sont soumises par la suite une comparaison statistique, pour dterminer la meilleure dentre-elles. 2. Analyse mathmatique : cette approche consiste calculer la distance qui spare la valeur de la solution gnre celle de la solution optimale. Dans ce qui suit, nous allons voir juste le cas de lvaluation de la distance maximale. Mais, il est clair que cette distance peut aussi tre value dune manire probabiliste (cest--dire en moyenne).

42

Exemple : Ordonnancement de tches sur des machines parallles


Soient m machines identiques mises en parallle pour excuter n tches. Chaque tche i doit passer un temps p i sur une seule des machines pour tre ralise. Le problme consiste rpartir les n tches sur les m machines de telle manire les terminer le plus tt possible. On suppose que lensemble des tche et machines sont disponibles continuellement ds linstant 0.

Solution : Une des solutions approches utilises consiste mettre les n tches dans une liste. Ensuite, ds quune machine devient libre, on lui affecte la premire tche de la liste. Illustration: Complexit : discuter en classe ! Qualit de la solution : Une manire dvaluer la qualit de la solution obtenue est de calculer lcart maximal qui spare le rsultat obtenu par cette heuristique et la rsultat obtenu par la solution optimale (quon ne connat pas). En gnral, lapproche utilis pour arriver ce genre de rsultats est lutilisation de borne infrieures (suprieures pour les problmes de maximisation).
En termes formels, si opt(I) est la valeur de la solution optimale et H(I) la valeur solution gnre par lheuristique H pour une instance quelconque I du problme, lanalyse dans le pire de lheuristique H consiste trouver deux valeurs et r tels que:
H ( I ) opt(I) +r

43

Rfrences et sources
1. Anne Dicky : Graphes et algorithmes, Conservatoire National des Arts et Mtiers Informatique - Cycle A - 1997/1998. 2. Joelle Cohen, Thorie des graphes et algorithmes MIAGE, 2002 3. Manoochehr Azmoodeh, abstract data types and algorithms, MacMillan, 1988. 4. T. H. Cormen et al. (1990): Algorithms, MCGraw Hill. 5. Anany Levitin (2003): Introduction to the design and analysis of algorithms, Addison Wesley. 6. O. Carton (2003): Notes de cours dalgorithmique avance en master de Bio-Info, Universit Paris

7. E. Sigward : Introduction la thorie des graphes, Universit de Metz.

44