cours de grf du 05/06, besoin de mise en page

This commit is contained in:
Benjamin Frottier 2012-06-10 14:05:45 +02:00
parent 033dc24696
commit 07894cfb0e
1 changed files with 173 additions and 0 deletions

View File

@ -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)