Partitionnement de graphe

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 24 juillet 2017 à 11:42 et modifiée en dernier par Lito9876 (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

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

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

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

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

Méthodes

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

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

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