Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe...

14
OPTIMISATION ET COMPLEXITÉ Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B

Transcript of Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe...

Page 1: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

OPTIMISATION ET COMPLEXITÉ

Algorithmes de Bloch et Ford Fulkerson

Florent DELAHAYEChristophe DE BATZ

Thibault LE BRAS

Groupe B

Page 2: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Sommaire Introduction

Présentation du sujet Étapes Graphe d’exemple

Première étape: Bloch Algorithme

Seconde étape: Ford-Fulkerson Algorithme

Conclusion

Page 3: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Présentation du sujet

Première étape:

A partir du flot nul (Flot = 0), nous devons pouvoir être capable de trouver un flot complet par l’algorithme de Bloch.

Seconde étape:

A partir du flot trouvé à la première étape, notre programme devra être capable de trouver un flot maximal par l’algorithme de Ford-Fulkerson.

Page 4: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Introduction Langage utilisée: C++

Orienté objet modularité du code et clarté STL gain de temps Bas niveau rapide et robuste

Fonctionnalités du programme Rechercher un flot complet. Rechercher un flot maximal à partir d’un flot complet. Vérifier si le flot complet était maximal. Traiter le cas des graphes avec circuit.

Structures utilisées La classe Graph La classe Arc

Page 5: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Graphe d’exemple

Page 6: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Algorithme de Bloch

Apparence dans la console:

1ére étape:

2éme étape:

etc.

Page 7: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Bloch : principe général Initialiser le Flot par addition des flots des arcs d’entrée

Marqué comme saturer les chemins où Flots = Capacité Les chemins saturés ne sont pas empruntables.

Etablir un chemin (Relier point d’entrée à point de sortie) Choisir le prochain sommet disponible dans l’ordre alphabétique Les arcs ne sont pas empruntable dans le sens contraire Les sommets parcourus sont enregistrés et vérifié à chaque recherche du

sommet suivant afin d’éviter les boucles.

Calculer la différence flot / Capacité de chaque arc du chemin Prendre le minimum de ces valeurs, le stoker dans un entier α Ajouter α au flot de chaque arc du chemin. Ajouter α au flot initial Recommencer à l’étape 2 jusqu’à ce qu’il n’y ai plus de chemin entre le

point d’entrée et le point de sortie du graphe.

Page 8: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Algorithme de Bloch

Graphe du flot complet

Résultat en console

Page 9: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Algorithme de Ford -FulkersonRappel : Arc dans le bon sens => Chemin saturé quand : Flot =

Capacité Arc dans le sens inverse => Chemin saturé quand :

Flot = 0

Calcule la valeur du flot maximal: Pour les arcs ( i , j ) parcourus dans le sens des flèches

Pour les arcs ( i , j ) parcourus en sens opposé des flèches

Page 10: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Ford –Fulkerson : principe général

1 : Trouver un chemin A partir du point d’entrée, prendre prochain sommet dispo dans l’ordre

alphabétique. Prochains sommets dispo = Arcs sortant non-saturés (donc tant que flot ≠

capacité) + Arcs entrant non nuls (donc tant que flot ≠ 0) A chaque arc parcouru,

○ Marquer si l’arc est parcouru dans le bon sens ou dans le sens inverse.○ enregistrer des valeurs ∆:

La différence flot/capacité pour les arcs parcourus dans le bon sens. Le flot pour les arcs parcourus dans le sens inverse.

2 : Quand le chemin a été trouvé (Point d’entré du graphe relié au point de sortie) Prendre le minimum des ∆  Ajouter ∆ aux flots des arcs marqués dans le bon sens Soustraire ∆ aux flots des arcs marqués dans le sens inverse Ajouter ∆ à l’int représentant le flot complet/max (1)

Continuer l’algorithme tant qu’un chemin est possible entre le point d’entré et le point de sortie.

Page 11: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Algorithme de Ford -Fulkerson

Apparence dans la console: 1ére étape :

Page 12: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Algorithme de Ford -Fulkerson

Graphe du flot maximal

Console

Page 13: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Conclusion Un problème de réseau peut toujours être optimisé.

Problématiques d’apparences simples mais qui mettent en jeu de réels algorithmes.

Prise en charge des circuits dans Bloch

Les applications de cette recherche opérationnelle sont multiples travail concret !

Problématique routière, réseaux informatiques, urbanisme

Page 14: Algorithmes de Bloch et Ford Fulkerson Florent DELAHAYE Christophe DE BATZ Thibault LE BRAS Groupe B.

Fin de la présentationMerci de nous avoir écouté