Algorithme de Kernighan-Lin

De testwiki
Version datée du 21 juin 2023 à 01:39 par imported>Parisii1976 (growthexperiments-addimage-summary-summary: 1)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Modèle:Autre4

Comptage bipartitionné avec taille de coupe = 2

L'algorithme de Kernighan–Lin est une heuristique pour réaliser un partitionnement de graphe. L'algorithme est notamment utilisé pour l'agencement des circuits intégrés et des composants pour l'intégration à très grande échelle (VLSI)[1]Modèle:,[2].

Description

L'algorithme prend en entrée un graphe non-orienté Modèle:Math, défini par l'ensemble de nœuds Modèle:Mvar, l'ensemble de liens Modèle:Mvar et potentiellement les coûts des liens de Modèle:Mvar. L'objectif est de réaliser une partition de l'ensemble Modèle:Mvar en deux ensembles disjoints Modèle:Mvar et Modèle:Mvar de tailles proches ou égales, de manière à minimiser la somme Modèle:Mvar des poids du sous-ensemble de liens allant de Modèle:Mvar à Modèle:Mvar. Si le graphe est non-pondéré, l'algorithme cherche à minimiser le nombre de liens allant de Modèle:Mvar à Modèle:Mvar, ce qui est équivalent à assigner un poids unitaire à tous les liens.

L'algorithme tient à jour une partition et l'améliore à chaque itération en utilisant une méthode gloutonne. Le principe est d'apparier des nœuds de Modèle:Mvar à des nœuds de Modèle:Mvar, de manière qu'intervertir les ensembles auxquels appartiennent les nœuds appariés améliore la qualité du partitionnement. Après association des nœuds, l'algorithme réalise un sous-ensemble des paires choisies pour obtenir la valeur minimum de Modèle:Mvar. Pour un graphe à Modèle:Mvar nœuds, chaque itération de l'algorithme est réalisée en Modèle:Math.

Plus précisément, pour tout aA, on appelle Ia le coût interne de Modèle:Mvar, c'est-à-dire la somme des coûts des liens entre Modèle:Mvar et les autres nœuds de Modèle:Mvar et Ea le coût externe de Modèle:Mvar, c'est-à-dire la somme des coûts des liens entre Modèle:Mvar et les nœuds de Modèle:Mvar. On définit de manière analogue Ib et Eb pour tout bB. On pose

Dx=ExIx

la différence entre les coûts externes et internes de Modèle:Mvar. Si Modèle:Mvar et Modèle:Mvar sont intervertis, alors la réduction de coût est:

ToldTnew=Da+Db2ca,b

ca,b est le coût d'un potentiel lien entre Modèle:Mvar et Modèle:Mvar.

L'algorithme cherche à trouver une suite optimale d'interversions entre éléments de A et de B qui maximise ToldTnew puis met à jour le partitionnement du graphe en Modèle:Mvar et Modèle:Mvar en réalisant effectivement ces opérations[1].

Pseudocode

Source[1]

fonction Kernighan-Lin(G(V, E))
    déterminer une partition initiale des nœuds équilibrée entre les ensembles A et B
    
    faire
        calculer les valeurs D pour tout a dans A et tout b dans B
        soient L_g, L_a, et L_b des listes vides 
        pour n := 1 à |V| faire
            trouver a dans A et b dans B tels que g = D[a] + D[b] − 2×c(a, b) est maximum
            on ne considère plus a et b dans la suite de cette itération
            ajouter g à L_g, a à L_a et b à L_b
            mettre à jour les valeurs D pour les éléments de A = A \ a et B = B \ b
        fin pour
        trouver k qui maximise g_max, la somme des L_g[1], ..., L_g[k]
        si g_max > 0 alors
            Mettre L_a[1], L_a[2], ..., L_a[k] dans B et L_b[1], L_b[2], ..., L_b[k] dans A
    jusqu'à (g_max ≤ 0)

    renvoyer A,B

Références

Modèle:Références Modèle:Traduction/Référence

Modèle:Portail