Partitionnement de graphe

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

En théorie des graphes et en algorithmique, le partitionnement de graphe est la tâche qui consiste à diviser un graphe orienté ou non orienté en plusieurs parties. Plusieurs propriétés peuvent être recherchées pour ce découpage, par exemple on peut minimiser le nombre d'arêtes liant deux parties différentes.

Définitions[modifier | modifier le code]

Une partition d'un graphe est une partition de ses nœuds, ou plus rarement de ses arêtes. Si le nombre de groupe dans la partition est fixé à un entier k, on parle de k-partition. Pour k=2, on parle parfois de bisection[1].

Le partitionnement est le fait de calculer une partition. Le plus souvent le partitionnement de graphe consiste à créer une subdivision de l'ensemble des sommets de S en k sous ensembles de tailles réduites de façon à minimiser un ou plusieurs critères.

Problèmes[modifier | modifier le code]

On peut considérer plusieurs objectifs pour les partitionnements.

On cherche le plus souvent à minimiser une quantité liée à la coupe, c'est-à-dire le nombre d'arêtes dont les extrémités ne sont pas dans le même groupe, avec certaines contraintes sur les propriétés des groupes eux-mêmes. Par exemple, on peut minimiser la taille de la coupe avec la contrainte que les groupes doivent être de même taille (plus ou moins un)[1].

D'autres fonctions objectifs sont le ratio de coupe et la coupe normalisée[1].

Complexité des problèmes[modifier | modifier le code]

La plupart des problèmes de partitionnement de graphe sont NP-difficile[1].

Méthodes[modifier | modifier le code]

Parmi les méthodes classiques de partitionnement, on compte les méthodes inertielles (comme k-moyennes), le partitionnement spectral et des méthodes locales d'échange de points entre clusters (dans le même esprit que heuristique de Lin-Kernighan pour le problème du voyageur de commerce)[1].

Applications[modifier | modifier le code]

Les applications du partitionnement de graphe sont multiples, elles comprennent le calcul scientifique, le partitionnement de différentes étapes d'un circuit de type VLSI et la planification des tâches dans les systèmes multi-processeurs[1]. Récemment, le problème de partitionnement de graphe a gagné en importance en raison de son application pour le clustering et la détection des cliques dans les réseaux sociaux, pathologiques et biologiques.

Notes et références[modifier | modifier le code]

  1. a b c d e et f Charles-Edmond Bichot, « Introduction au partitionnement de graphe », sur ENS Lyon, .