Vous êtes sur la page 1sur 6

Thème IX : Méthodes heuristiques et problèmes de Heure 36 : Problème du postier chinois

tournées de véhicules
Notes complémentaires
Notes complémentaires

Objectifs : Objectifs :

❏ Faire la différence entre un problème de postier ❏ Reconnaître le problème de postier chinois ;


chinois et un problème de commis voyageur;
❏ Utiliser l’algorithme pour résoudre ce type de
❏ Connaître les algorithmes pour résoudre ces problème pour un graphe orienté ou non orienté;
problèmes ;
❏ Connaître et comprendre le théorème d’Euler.
❏ Connaître et comprendre les méthodes heuristiques :
Tabou, Recuit simulé et Génétique.

835 836

Problème de tournées de véhicules Problème de tournées de véhicules

Couverture des arcs


Tournées sur les arcs

• Problème du postier chinois


Tournées sur les noeuds – Cas non-orienté
– Cas orienté }∃ algo polynomial

– Cas mixte } ∃ algo polynomial


• Problème des postiers chinois multiples

837 838

Problème de tournées de véhicules

Couverture des nœuds


• Problème du commis voyageur
Couverture des arcs -
• Tournées de véhicules avec capacité
Autres problèmes
Problème du postier chinois
• Tournées de véhicules avec dépôts multiples
• Tournées de véhicule avec des demandes
stochastiques
• Tournées sur des arcs ayant des capacités
839 840

1
Problème du postier chinois Problème du postier chinois
PPC:
Problème: Trouver un cycle qui traverse chaque arête au
Trouver une tournée de coût (longueur) moins une fois et tel que la somme:
minimal passant sur toutes les arêtes au moins
une fois.
1 seul véhicule Σ

n
(i,j)
l
(i,j) (i,j) soit minimale
Applications:
itinéraires de facteurs, collecte des ordures, où n(i,j) est le nombre de fois que l’arête (i,j) de
des parcomètres, déneigement, etc. longueur l(i,j) est traversée.

841 842

Les 7 ponts de Königsberg Le théorème d’Euler


Cycle d’Euler:

Cycle qui traverse chaque arête d’un graphe


exactement une fois (en commençant et se
terminant au même nœud)
Ile A Ile B Ex :
B C

A-B-C-D-A-C-A

A D
Euler 1736

843 844

Théorème d’Euler:
Le théorème d’Euler
Chaîne d’Euler: 1. ∃ un cycle d’Euler ⇔ chaque nœud est de
degré pair
Chaîne qui traverse chaque arête d’un graphe
exactement une fois (mais ne se termine pas au Ex :
nœud de départ) B C
C
Ex : A-B-C-D-A-C-A
B D
A D
A-B-C-D-E-A-D-B-E

A E

845 846

2
Théorème d’Euler: Théorème d’Euler:
2. ∃ une chaîne d’Euler ⇔ exactement 2 1. ∃ un cycle d’Euler ⇔ chaque nœud est de
nœuds sont de degré impair degré pair
2. ∃ une chaîne d’Euler ⇔ exactement 2
nœuds sont de degré impair
Ex :
B D ⇒ Ceci suggère une méthode pour obtenir
A-B-C-D-E-A-D-B-E un cycle d’Euler sur un graphe quelconque:
A E
Rendre tous les nœuds de degré pair en
Nœud de degré impair ajoutant des arêtes fictives (copies des
arêtes existantes)
847 848

Algorithme pour tracer un cycle d’Euler


Rendre tous les nœuds de degré pair en ajoutant
des arêtes fictives (copies des arêtes existantes) ISTHME:
Arête dont l’élimination «déconnecterait» le
graphe.

Ex : Rappel:
B D Aucun nœud ne doit être de degré impair.
Ainsi tous les nœuds sont
de degré pair
Algorithme:
A E Partir d’un sommet, choisir une arête qui n’est
pas un isthme, retirer cette arête, poursuivre à
partir du nouveau sommet. Répéter jusqu’à la fin.
arête fictive

849 850

Algorithme pour tracer un cycle d’Euler Problème du postier chinois


CAS NON-ORIENTÉ
n m Exemple
i j l
À partir du nœud « a »:
k
1. (a,b)
g 2. (b,g) Idée:
h f e
3. (g,j) ou (g,f) ...
Rendre le graphe «eulérien» en ajoutant un
a b c d
NOTE: nombre d’arêtes dont la longueur totale est
(g,h) ne peut être minimale.
utilisé car isthme

* Cette méthode se fait bien à l'œil mais, elle est difficilement programmable
851 852

3
Problème du postier chinois Problème du postier chinois
Algorithme: CAS NON-ORIENTÉ (Exemple)
1. Identifier tous les nœuds de degré impair. b
2. Réaliser un couplage de distance minimale 4
1
2

entre les nœuds de degré impair. 3 3 1


c
La distance entre 2 sommets est la longueur du plus a 2
court chemin entre ces sommets. 1. Les 4 nœuds de degré impair 3 5

3. Ajouter les arêtes correspondant au sont encerclés. d


couplage minimal. 2. Les couplages possibles sont:
4. Tracer un cycle eulérien sur le graphe couplage longueur
a-b et c-d 7 + 3 = 10
obtenu en 3. a-c et b-d 7 + 3 = 10
couplage minimal
a-d et b-c 6+2=8
853 854

Couverture des arcs - Problème du postier chinois


Problème du postier chinois CAS NON-ORIENTÉ - Suite
CAS NON-ORIENTÉ (Exemple) - Suite Pour résoudre le problème de couplage:

Algorithme exact d’Edmonds O(n3) opérations - difficile


3. On ajoute les arcs du à appliquer manuellement
couplage minimal.
Pour le problème du postier chinois dans un contexte
géographique, on peut obtenir une excellente solution par
4. Tracer un cycle eulérien. 11 «inspection» grâce à la propriété suivante:
4
10
12 5
9 « Dans un couplage de longueur minimal, il ne peut y
1 6 avoir d’arêtes en commun entre les chemins les plus
8
7 courts retenus »
2 3
Sinon, on pourrait améliorer la solution.
855 856

Problème du postier chinois Problème du postier chinois


CAS NON-ORIENTÉ - Suite Exemple :

I J K L M 1. Identifier les
nœuds de degré
impair.
2. Coupler les
L’arc l(p,q) ne peut faire partie de 2 plus courts C
F nœuds avec leurs
G
D E
chemins. voisins rapprochés.
⇒ Les nœuds seront couplés avec leurs voisins
rapprochés. A B H
857 858

4
Problème du postier chinois Problème du postier chinois
Exemple: CAS ORIENTÉ
Idée:
I J K L M Le degré intérieur de chaque nœud doit être
égal au degré extérieur.
Tout cycle d’Euler dans
ce graphe représente une
solution optimale!
F
C G
D E
3 = 3

B H
Sinon, on a un problème de transport entre les
A
859
nœuds qui ne respectent pas cette condition. 860

Problème du postier chinois Problème du postier chinois


CAS ORIENTÉ
CAS ORIENTÉ
Algorithme:
Définitions:
1. Identifier les nœuds déséquilibrés
nœuds-sources: (sources et puits).
ceux dont le degré intérieur est supérieur 2. Calculer les plus courts chemins (PCC)
au degré extérieur des sources vers les puits.
3. Résoudre le problème de transport.
nœuds-puits: 4. Ajouter les arcs correspondants aux PCC
l’inverse de la solution du problème de transport et
tracer le cycle eulérien.
861 862

Problème du postier chinois Problème du postier chinois


CAS ORIENTÉ CAS ORIENTÉ
Exemple: Exemple:
2. Calculer les plus
a 1. Identifier les a courts chemins
10 b 10 b
nœuds déséquilibrés vers les puits.
20 20
(sources et puits).
40
20
40
20 a c
30 10 30 10 10 70
10 Sources: b, d 10 b 1
20 20
d 10 Puits: a, c d 10 50 40
20 20 d 1
10 10 10 10
1 1
c c
863 Différence entre le nombre d’arcs entrants et sortants
864

5
Problème du postier chinois Problème des postiers chinois
CAS ORIENTÉ multiples
Exemple: 3. Résoudre le Algorithme heuristique :
problème de transport.
a rendre le graphe eulérien
10 b 4. Ajouter les arcs
20 correspondants essayer de séparer en plusieurs sous-graphes
40 aux PCC de la
20 en équilibrant la charge (chaque sous-graphe
30 10 solution du devrait être eulérien)
20 10
problème de
d 10
transport et tracer
20
10 10 le cycle eulérien.
c 865 866

Problème des postiers chinois


multiples
Exemple:
120 150 L
I J 80 K 100 M

distance totale = 120 150

3830
limite/tournée = 250 300 250 280 250 250

1500
120
150 80 F 100
C G
D E 100
120
150 150 260 180
120
A B H

867

Vous aimerez peut-être aussi