cours de grf du 05/06, besoin de mise en page
This commit is contained in:
parent
033dc24696
commit
07894cfb0e
173
grf/cours.tex
173
grf/cours.tex
@ -1123,3 +1123,176 @@ X=\bordermatrix{~ & 1 & 2 & 3 & 4 & 5 & 6 & ~\cr
|
||||
& {\color{yellow}28} & {\color{yellow}6}
|
||||
& {\color{yellow}14} & {\color{yellow}5} & {\color{yellow}73}\cr}
|
||||
\]
|
||||
|
||||
%cours du 5/06
|
||||
\section{Problèmes de flot maximal}
|
||||
Applications de 2 sortes :
|
||||
-> type réseau (de communication, routier, fluvial)
|
||||
Comment faire passer les éléments pour acheminer le débit maximun tout en
|
||||
respectant toutes les contraintes de capacité ?
|
||||
%ici faire petit dessin :)
|
||||
-> type affectation -> exemple : graphe biparti
|
||||
%ici faire petit dessin :)
|
||||
employés :
|
||||
-couplage de cardinal maximun (employé, tâche)
|
||||
(1, b) -> coupable de cardinal 1
|
||||
(1, a)
|
||||
(2, b) cardinal 2
|
||||
|
||||
Définitions :
|
||||
Un réseau de transport est un graphe sans boucle qui comporte une entrée ou une
|
||||
source et une sortie ou puits.
|
||||
%graphe ici
|
||||
-Chaque arc u est doté d'une capacité c(u)
|
||||
On s'intéresse à une fonction, appelée le flot. On associe à chaque arc une
|
||||
fonction f(u) = flux transitant dans l'arc u.
|
||||
$flot = \{\ flux\ \}_\text{tous les arcs}$
|
||||
f(u): inconnue
|
||||
c(u): donnée
|
||||
-Le flot doit respecter 2 types de contraintes :
|
||||
(1) $\forall{u}: 0=<f(u)<=c(u)$
|
||||
(2) $\forall$ le noeud x dans le réseau, loi de kirshoff.
|
||||
[si f(u)=c(u), on dit que l'arc u est saturé]
|
||||
|
||||
|
||||
$$\sum\text{flux entrants}=\sum\text{flux sortants}$$ $\forall$ le noeud x
|
||||
-Tout flot qui respect dans le réseau les contraintes de type (1) et (2) est
|
||||
dit valide:
|
||||
exemple : flot nul.
|
||||
val(f) se définit de 3 manières différentes.
|
||||
(1) Valeur à la source [hypothès: pas de flux entrants dans s]
|
||||
$$val(f)=\sum\text{flux des arcs issues de s}$$
|
||||
= Chaque arc u est doté d'une capacité c(u)
|
||||
(2) Valeur au puits p [pas de flux sortants de p]
|
||||
$$val(f)=\sum\text{flux des arcs entrants dans p}$$
|
||||
(3) Valeur au niveau d'une coupe $$(S, \bar{S})$$ séparant la source du puits.
|
||||
S=ensemble de sommets du réseau qui contient
|
||||
obligatoirement s et qui ne contient pas p.
|
||||
$$\bar{S} = \text{ensemble de sonnets complémentaires}$$.
|
||||
$$val(f)=(\sum{f(S,\bar{S})}) - (\sum{f(\bar(S), S)})$$
|
||||
$\sum{f(S,\bar{S})}$ : somme des flux des ars ayant leur origine dans S
|
||||
et leur extrémité dans $$\bar{S}$$
|
||||
$\sum{f(\bar(S), S)}$ : somme des flux des arcs ayant leur origine dans
|
||||
$$\bar{S}$$ et leur extrémité dans S
|
||||
Propriété : $\forall$ la coupe $$(S, \bar{S})$$ considérée, la valeur du flot
|
||||
mesurée au niveau de cette coupe est la même : c'est val(f)
|
||||
|
||||
-Capacité d'une coupe $$(S,\bar{S})$$
|
||||
$c(S,\bar{S}) = \sum{c(u)}_{arcs allant de S vers \bar{S}}$
|
||||
Propriétés (admises) :
|
||||
[1] $\forall$ la coupe $$(S,\bar{S})$$ considérée, la valeur du flot mesurée
|
||||
au niveau de cette coupe est la même
|
||||
[2] Soit f un flot $\forall$ établi dans un réseau de transport
|
||||
(1) $$val(f) =< c(S,\bar{S})$$, $\forall$ la coupe $$(S,\bar{S})$$ considérée
|
||||
(2) Si on trouve un flot f et une coupe $$(S,\bar{S})$$ tels que :
|
||||
$$val(f) = c(S,\bar{S})$$, alors le flot est de valeur maximale
|
||||
-> c'est le flot optimal
|
||||
|
||||
Théoreme de la coupe et du flot :
|
||||
Flot de valeur maximum $$\equiv$$ coupe de capacité minimal
|
||||
(3) Lorsque le flot maximal (et la coupe de $$(S,\bar{S})$$ capacité minimale) :
|
||||
{ Pour tout arc de $$(S,\bar{S})$$, il est saturé: $$f(u)=c(u)$$
|
||||
{ Pour tout arc de $$(\bar{S},S)$$, il est de flux nul: $$f(u) = 0$$
|
||||
|
||||
Détermination du flot maximal; algorithme de FORD-FULKERSON
|
||||
-On suppose établi un certain flot dans le réseau de transport (peut être
|
||||
un flôt de bonne qualité déterminé empiriquement, ou alors peut être le
|
||||
flot nul)
|
||||
-On cherche s'il existe dans le réseau une chaîne augmentante:
|
||||
-> si oui, alors on exploite cette chaine => nouveau flot de valeur supérieur
|
||||
-> si non, alors le flot considéré est optimal.
|
||||
-Chaîne augmentante : chaîne reliant s à p:
|
||||
%ici schema
|
||||
-Cette chaîne est dite augmentante si et seulement si il existe un nombre
|
||||
positif $\alpha$ que l'on peut ajouter au flux de tous les arcs à l'endroit
|
||||
(sans aller au delà de leur saturation) et retrancher de tous les arcs à
|
||||
l'envers (sans aller en-dessous du flux nul)
|
||||
-Exploiter une chaine augmentante, c'est rechercher le $\alpha$ maximum.
|
||||
$$\alpha = [Min(c(u)-f(u)); Min f(u)]$$
|
||||
Algo de Ford-Fullkerson
|
||||
(1) Faire passer un flot au pigé
|
||||
(2) Améliorer ce flot pour le rendre complet -> tout chemin de s à p comporte
|
||||
au moins 1 arc saturé.
|
||||
|
||||
(3) * marquer l'entrée du réseau
|
||||
* marquer l'extrémité terminale J de tout arc (I,J) non saturé dont
|
||||
l'extrémité initiale est déjà marquée
|
||||
* marquer l'extrémité initiale K de tout arc (K,L) de flux non nul dont
|
||||
l'extrémité terminale L est déjà marquée.
|
||||
|
||||
Ces deux phaes de marquage avant et en arriere sont alternées jusqu'au blocage
|
||||
-> 2 cas de figure :
|
||||
(a) on a pu marquer p -> alors il existe une chaîne augmentante identifiée à
|
||||
l'aide des marques. On explicite cette chaîne (recherche du $\alpha$)
|
||||
=> augmentationn de $\alpha$ de la valeur du flot
|
||||
(b) on n'a pas pu marquer p => il n'existe pas de chaîne augmentante reliant
|
||||
s à p : le flot considéré est optimal.
|
||||
Remarque : à l'issue de l'étape p, la coupe $$(S,\bar{S})$$ où S = liste des
|
||||
sommets marqués est la coupe de capacité minimale.
|
||||
|
||||
Application (polycop. p103)
|
||||
-2 ports A et B -> quantités 10 et 10
|
||||
-marchandises demadée dans 3 ports C, D et E selon les quantités 9, 12 et 7
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.5cm,
|
||||
thick,main node/.style={circle,fill=blue!20,draw,font=\sffamily\Large\bfseries}]
|
||||
\node[main node] (s) {$s$};
|
||||
\node[main node] (A) [right of=s]{$A$};
|
||||
\node[main node] (C) [right of=A]{$C$};
|
||||
\node[main node] (D) [below right of=A]{$D$};
|
||||
\node[main node] (B) [left of=D]{$B$};
|
||||
\node[main node] (E) [below right of=B]{$C$};
|
||||
\node[main node] (p) [right of=D]{$p$};
|
||||
|
||||
\path[every node/.style={font=\sffamily\small}]
|
||||
(A) edge [right] node[right] {[7]} (C)
|
||||
(A) edge [right] node[right] {[4]} (D)
|
||||
(B) edge [right] node[right] {[5]} (C)
|
||||
(B) edge [right] node[right] {[5]} (E)
|
||||
;
|
||||
\end{tikzpicture}
|
||||
\end{figure}
|
||||
|
||||
(1) Peut-on satisfaire toutes les demandes ? Non.
|
||||
offre totale = $10+10=20$
|
||||
demande totale = $9+12+7=28$
|
||||
|
||||
(2) Comment organiser les expéditions de façon à louer un maximun
|
||||
de marchandise ?
|
||||
|
||||
-transformer ce problème en un problème de recherche du flot maximal dans
|
||||
un réseau de transport.
|
||||
-résoudre par l'algo de Ford-Fulkerson
|
||||
-Initialisation -> on s'efforce de démarrer l'algo à partir d'un flot complet
|
||||
(tout chemin de s à p comporte au moins 1 arc saturé :
|
||||
* flux 7 de A vers C
|
||||
* flux 9 de C vers p
|
||||
* Kirschoff au noeud C => flux 2 de B vers C (OK car < capacité de 5)
|
||||
* flux 10 de s vers A
|
||||
* Kirschoff en A => flux 3 de A vers D (OK car < capacité de 4)
|
||||
* Kirschoff en D => flux 3 de D vers p (OK car < capacité de 12)
|
||||
* on sature B-E
|
||||
* Kirschoff au moeud E => flux de 5 sur E-p (OK car < capacité de 7)
|
||||
* Kirshchoff au noeud B => flux de 7 sur s-B (OK car < capacité de 10)
|
||||
|
||||
On a un flot complet de valeur 17.
|
||||
|
||||
On a pu marquer p => le flot considéré n'est pas optimal :
|
||||
%faire un graphe avec ça : s ->[10](7) B ->[5](2) C <-[7](7) A ->[4](3) D ->[12](3) p
|
||||
%devient 8, 3, 6, 4, 4
|
||||
$\alpha=1$ -> flot: de 17 à 18.
|
||||
-Le nouveau flot est encore complet.
|
||||
-Le nouveau flot est de valeur 18 ($10 + 8$ ou $9 + 4 + 5$)
|
||||
2e itération -> on ne peut pas marquer p => le flot optimal est de valeur 18
|
||||
-> La coupe où S = ensemble des sommets marqués en dernière itération
|
||||
La capacité de la coupe $$(S,\bar{S})$$ est :
|
||||
$c(C,p) + c(A,D) + c(B,E) = [9] + [4] + [5] = 18$
|
||||
On a trouvé une coupe dont la capacité est alors à la valeur d'un flot.
|
||||
-> C'est que le flot es de valeur maximum et la coupe est de la capacité mini
|
||||
Remarque: tous les acs de $$(S,\bar{S})$$ sont saturés
|
||||
(tous les arcs de $$(\bar{S},S)$$ sont de flux nul)
|
||||
|
||||
%ici graphe et tableau exo
|
||||
|
||||
Flot max de 4 (En partant du flot nul)
|
||||
|
Reference in New Issue
Block a user