• Aucun résultat trouvé

4 Sectorisation

4.1 Sectorisation équilibrée

La sectorisation équilibrée consiste en la création de secteurs de « taille » égale. La taille est dans ce cas une quantité à partager : surface, population, clients, … De plus, la localisation des secteurs n’est pas définie à l’avance. La sectorisation équilibrée est toutefois un problème largement étudié en théorie des graphes sous le nom de partitionnement de graphe (Graph Partitioning).

Il existe de nombreuses méthodes de partitionnement de graphe pour réaliser une sectorisation équilibrée [SKK03]. Nous ne les présenterons pas ici, car nous allons seulement présenter l’une des méthodes les plus efficaces, ainsi que ses évolutions. Il s’agit de la bipartition récursive. Cette méthode découpe itérativement le territoire en morceaux de plus en plus petits. Par exemple, pour une partition en 5 secteurs d’un territoire de taille 100, l’algorithme procède d’abord à un partage entre un grand secteur A de taille 40 et un autre secteur B de taille 60. Puis le secteur A est découpé à nouveau en deux secteurs A1 et A2 de tailles 20. On procède de même pour le secteur B. Le schéma suivant montre les ce partitionnement récursive.

Fig. 37 –Exemple de bissection (bi-partitionnement) récursive d’un territoire en 5

secteurs égaux.

Avant d’aller plus loin, nous allons définir les notions suivantes :

• Un nœud du graphe représente un objet qui sera regroupé avec d’autres dans une partition (secteur)

• Une arête du graphe lie deux nœuds voisins. Si deux noeuds ne sont pas voisins, il n’y a pas d’arête entre eux. La sectorisation coupe les arêtes du graphe.

• Le poids d’un nœud représente la quantité contenue par le nœud. La quantité totale d’une partition est la somme des poids des nœuds appartenant à cette partition. Une bonne sectorisation (partitionnement) équilibrée doit faire que la quantité soit la même dans chaque secteur (ou au moins s’en approche le plus possible).

• Le poids d’une arête représente le degré de voisinage entre deux nœuds. Un poids de 0 équivaut à l’absence d’une arête, c'est-à-dire à l’absence de lien de voisinage. Au contraire, un poids très élevé correspond à une forte proximité entre les nœuds qui sont alors fortement liés. Une bonne sectorisation fait que les nœuds fortement liés restent ensemble. C’est toutefois un critère beaucoup moins important que l’équilibre des quantités entre les secteurs.

Les méthodes de bissection (bi-partitionnement) récursive diffèrent dans la méthode de partitionnement d’un secteur en deux. Les méthodes de bissection les plus utilisées sont les suivantes :

• La bissection spectrale (Spectral Bisection) [PSL90] calcule les vecteurs propres (eigenvectors) afin d’ordonner les nœuds (les objets géographiques dans notre cas). Il suffit ensuite de prendre les nœuds les uns après les autres dans l’ordre jusqu’à ce que la somme des pondérations des nœuds atteigne la quantité désirée. Ces premiers

100

A=40

B=60

A1=20

B=60

A2=20

A1=20

B2=40

A2=20

B1

=

20

A1=20

A2=20

B1

=

20

B2A

=

20

B2B

=

20

nœuds forment alors le premier secteur tandis que les nœuds restant forment l’autre secteur.

• La croissance de graphe (Graph Growing Algorithm) [KK99] choisit un nœud de la bordure au hasard et ajoute les nœuds voisins dans l’ordre de leur degré de voisinage avec le nœud initial jusqu’à ce que la somme des pondérations des nœuds atteigne la valeur souhaitée. Cela forme le premier secteur tandis que les nœuds restant forme l’autre secteur.

• La croissance de graphe améliorée (Greedy Graph Growing Algorithm) [KK99] choisit un nœud de la bordure au hasard et ajoute le nœud voisin ayant le meilleur gain selon la formule de Fiduccia-Mattheyses. Le voisinage est mis à jour et les gains sont aussi mis à jour. On réitère le processus jusqu’à ce que la somme des pondérations des nœuds ajoutés atteigne la valeur souhaitée. Cela forme le premier secteur tandis que les nœuds restant forme l’autre secteur. Le gain d’un nœud est la différence entre le nombre de voisins déjà ajoutés et le nombre de voisins non ajoutés.

On remarquera que la croissance de graphe et la croissance de graphe adaptée conduisent systématiquement à des secteurs sans trous, c'est-à-dire qu’il n’existe pas de nœuds isolés. De plus, la croissance de graphe adaptée conduit naturellement à ce que les deux secteurs adoptent une forme compacte.

La technique de la bissection récursive est cependant inapplicable pour des « grands graphes ». La solution la plus utilisée consiste en l’ajout d’une étape de « compactage » du graphe avant le partitionnement et d’une étape de « décompactage » après le partitionnement. Le compactage consiste à agréger ensemble plusieurs nœuds et le décompactage est l’opération inverse. Le partitionnement est ainsi effectué sur un « petit graphe ». Le schéma suivant illustre ce mécanisme.

Fig. 38 –Exemple de partitionnement d’un graphe en trois secteurs égaux à partir de

son graphe compacté.

L’étape de compactage peut se faire selon plusieurs méthodes, dont les plus utilisées sont les suivantes :

• Le groupement aléatoire (Random Matching) [HL95] choisit aléatoirement un nœud et le regroupe avec un de ses voisins qui est aussi choisi au hasard. Les nœuds déjà groupés ne sont plus utilisables pour un regroupement ultérieur. Il est donc possible que certains nœuds ne puissent être regroupés car tous leur voisins sont déjà « pris » dans un autre groupe. Pour réduire, le graphe jusqu’à la taille désiré, il est nécessaire de réitérer cette méthode plusieurs fois car la taille du graphe est divisée à peu près par deux à chaque itération.

• Le groupement des arêtes les plus lourdes (Heavy Edge Matching) [KK99] suit le même principe que l’algorithme précédent mais lorsqu’un nœud est choisi, il ne choisit pas le nœud voisin au hasard : il prend celui dont le poids de l’arête commune entre les deux nœuds est le plus grand. Le but est ici de garder grouper les nœuds fortement liés. Une évolution de ce schéma est la bissection récursive multi-niveaux (Multilevel Recursive Bisection) qui gère la « propagation » de la bissection jusqu’au niveau non compacté en l’améliorant à chaque étape du décompactage. Le schéma suivant illustre ce mécanisme.

Compactage

Décompactage

Fig. 39 –Illustration d’une bissection multi-niveaux (5 niveaux ici) avec propagation et

amélioration lors du décompactage.

L’une des méthodes d’amélioration les plus utilisées est l’amélioration de la forme (compacité) selon le gain de Fiduccia-Mattheyses. Il s’agit de transférer des objets entre les deux secteurs afin d’améliorer la compacité. Cette méthode calcule pour chaque objet situé à la séparation entre les deux secteurs son gain de transfert. Ainsi, on transfère l’objet ayant le meilleur gain. On met à jour les gains et on réitère le processus jusqu’à ce que les gains soient nuls.

Une variante extrêmement rapide est le partitionnement multi-niveaux direct en k partitions au niveau le plus compacté (Multilevel k-way Partitioning) [KK98].

Compactage

Décompactage

&

Amélioration

Partitionnement

Partitionnement issu du niveau plus compact (ici G2) Partitionnement amélioré

Fig. 40 –Illustration du partitionnement multi-niveaux direct en k partitions au niveau

le plus compacté (5 niveaux ici) avec propagation et amélioration lors du décompactage.

C’est ce dernier algorithme que nous réutiliserons pour réaliser la sectorisation équilibrée de données géographiques.

Documents relatifs