Changes between Version 19 and Version 20 of CaoCourseTme8


Ignore:
Timestamp:
May 1, 2007, 12:06:50 PM (18 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CaoCourseTme8

    v19 v20  
    11{{{
    22#!html
    3 <h1>TME 8 : Méthode de partitionnement de graphe Min-Cut</h1>
     3<h1>TME 8 : Méthode de partitionnement de graphe : Min-Cut</h1>
    44}}}
    55[[PageOutline]]
     
    4343= B) Algorithme !MinCut glouton =
    4444
    45 On défini comme suit la fonction de coût du problème d'optimisation !MinCut:
     45On défini comme suit la fonction de coût du problème d'optimisation !MinCut,
     46dont la valeur dépend du nombre d'arcs qui traversent la frontière :
    4647{{{
    4748FC = Somme  Aij * Kij
     
    7374appartenant à R).
    7475
    75 On transfère la première cellule Ci de la liste ordonnée GAIN_L vers R,
    76 on met à jour les gains des cellules adjacentes à Ci, ainsi que l'ordre des
    77 listes GAIN_L et GAIN_R. La cellule Ci transférée dans R n'est pas rangée
     76Un mouvement élémentaire consiste à échanger deux cellules i et j :
     77 * une cellule i appartenant à l'ensemble R passe dans l'ensemble L
     78 * une cellule j appartenant à l'ensemble L passe dans l'ensemble R
     79
     80La variation de la fonction de coût résultant du mouvement des cellules i et j
     81peut être calculée de la façon suivante:
     82{{{
     83DFC(i<->j) = G(i) + G(j) - 2Aij
     84}}}
     85
     86L'algorithme d'optimisation proposé est "glouton", car il n'y a pas de retour en arrière:
     87Lorsqu'un mouvement a été accepté, les deux cellules déplacées i et j ne sont plus autorisées à bouger:
     88
     89On prend la cellule i appartenant à R possédant le gain G(i) maximum, et la cellule j appartenant à L possédant le gain G(j) maximum.
     90On calcule la variation de la fonction de coût associé à l'échange i <-> j, et on accepte le mouvement
     91tant que celui-ci n'entraîne une augmentation de la fonction de coût.
     92
     93Accepter un mouvement consiste à effectuer les actions suivantes:
     94 * On transfère la première cellule i de la liste ordonnée GAIN_R vers L, on met à jour les gains des cellules adjacentes à i, ainsi que l'ordre des listes GAIN_L et GAIN_R. La cellule i transférée dans L n'est pas rangée
     95dans GAIN_L, car elle n'est plus autorisée à bouger.
     96 * On transfère la première cellule j de la liste ordonnée GAIN_L vers R, on met à jour les gains des cellules adjacentes à j, ainsi que l'ordre des listes GAIN_L et GAIN_R. La cellule j transférée dans R n'est pas rangée
    7897dans GAIN_R, car elle n'est plus autorisée à bouger.
    79 
    80 On transfère la première cellule Ci de la liste ordonnée GAIN_R vers L,
    81 on met à jour les gains des cellules adjacentes à Ci, ainsi que l'ordre des
    82 listes GAIN_L et GAIN_R. La cellule Ci transférée dans L n'est pas rangée
    83 dans GAIN_L, car elle n'est plus autorisée à bouger.
    84 
    85 On recommence les deux étapes ci-dessus tant que cet échange entraîne une
    86 diminution de la fonction de coût.
    8798
    8899= C) Structures de données =
     
    275286
    276287 '''2. Ecriture de l'algorithme !MinCut glouton'''::
    277        Complétez le programme main() en ajoutant
     288       Complétez le programme main() en ajoutant la fonction mincut()
    278289       la boucle réalisant les transferts de cellules tant que le transfert
    279290       d'une paire de cellules améliore la fonction de coût FC.