Salut, je cherche des idées ou des références sur des algo efficaces permettant de résoudre le problème suivant :
Vous avez un rectangle d'une certaine longueur (disons L) et largeur (disons D). Ce rectangle délimite un domaine à l'intérieur duquel vous devez faire un calcul.
Par exemple, pour fixer les idées, disons qu'il s'agit d'une pièce dans laquelle vous devez suivre le déplacement de plein de personnes.
Puisqu'il y a énormément de personnes, je veux diviser le rectangle en N sous-rectangles (N étant fixé à l'avance, il s'agit en fait du nombre de processeurs qui feront le calcul) comportant a peu près le même poids de calcul.
Dans mon exemple, le "poids" de calcul attribué à un sous-rectangle est simplement représenté par le nombre de personnes dans le sous-rectangle.
Pour se faire, j'adopte une méthode de bisection récursive : il s'agit de découper le rectangle principal en 2 sous rectangle... ensuite de découper chacun des sous-rectangles en deux sous-rectangles de poids a peu près égaux... A la fin on obtient N sous-rectangles de poids a peu près égaux.
J'ai besoin, pour chacun des sous-rectangles, de connaitre les sous-rectangles "voisins". Je construit donc, à chaque division, un lien entre chaque sous-rectangle, le tout donnant au final un graphe.
pour fixer les idées voici ce que ça peut donner (en oubliant les couleurs) :
Bon ok... maintenant les personnes bougent et j'ai besoin, parfois, de redimensionner les rectangles, tout en conservant leur nombre, afin de ré-équilibrer leur charge.
Auriez vous un conseil pour un algo qui permettrait de faire ça de manière efficace (plus rapide que de refaire le découpage entier) ?
Merci
Partager