Algorithme de Karmarkar - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

L'algorithme de Karmarkar est un algorithme introduit par Narenda Karmarkar en 1984 pour résoudre les problèmes de programmation linéaire. C'est le premier algorithme réellement efficace qui résout ces problèmes en un temps polynomial. La méthode des ellipsoïdes fonctionne aussi en temps polynomial mais est inefficace en pratique.

En posant n le nombre de variables et L le nombre de bits d'entrée de l'algorithme, l'algorithme de Karmarkar réalise O(n3,5L) opérations sur O(L) bits à comparer aux O(n6L) opérations pour la méthode des ellipsoïdes. Le temps d'exécution de l'algorithme de Karmarkar est ainsi O(n3,5L2lnLlnlnL) en utilisant l'algorithme de Schönhage-Strassen (voir Comparaison asymptotique).

L'algorithme de Karmakar est une méthode du point intérieur : la solution candidate courante ne suit pas les bornes de l'espace faisable comme dans l'algorithme du simplexe, mais approche par l'intérieur de l'espace faisable et atteint la solution optimale de manière asymptotique.

L'algorithme

Soit le problème de programmation linéaire sous forme matricielle suivant :

maximize cTx
subject to Ax ≤ b.

L'algorithme de Karmarkar est complexe. Une version simplifiée, appelée "affine scaling method", est succinctement décrite ci dessous. Il faut noter que cet algorithme, bien que efficace en pratique, ne tourne pas en temps polynomial.

        Entrées: A, b, c, x0, critère d'arrêt, γ.      
        

    
     k \leftarrow 0 
        do while critère d'arrêt non satisfait           

    
    v^k \leftarrow b-Ax^k
           

    
    D_v \leftarrow \operatorname{diag}(v_1^k,\ldots,v_m^k)
           

    
    h_x\leftarrow (A^TD_v^{-2}A)^{-1}c
           

    
    h_v\leftarrow -Ah_x
           if 

    
    h_v \ge 0
 then              return non bornée           end if           

    
    \alpha \leftarrow \gamma\cdot \min\{-v_i^k/(h_v)_i \,\,|\,\, (h_v)_i < 0,\, i=1,\ldots,m\}
           

    
    x^{k+1}\leftarrow x^k + \alpha h_x
           

    
    k\leftarrow k+1
        end do      

 Patent controversy  ⇔  Un brevet controversé

Au moment où il a découvert l'algorithme, Narenda Karmarkar était employé par AT&T. Comme la découverte pouvait avoir d'importantes applications, AT&T dépose un brevet pour l'algorithme de Karmarkar en avril 1985, ce qui a alimenté la controverse au sujet de la brevetabilité du logiciel. Cette controverse a provoqué la réaction de nombreux mathématiciens comme Ronald Rivest (lui même est l'un des bénéficiaire du brevet sur l'algorithme de Rivest Shamir Adleman), qui défendait que le fait d'avoir des algorithmes libre de droit est une base de la recherche. Même avant que le brevet soit réellement accordé, il semble que la  prior art  ⇔  règle d'antériorité s'appliquait. Les mathématiciens spécialisés en analyse numérique comme Philip Gill ont montré que l'algorithme de Karmarkar est équivalent à une  projected Newton barrier method  ⇔  méthode de Newton pénalisée projetée avec une  barrier function  ⇔  fonction de pénalité logarithmique, si les paramètres sont bien choisis.

Le brevet a expiré en avril 2006 et est à présent dans le domaine public.

Page générée en 0.194 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales | Partenaire: HD-Numérique
Version anglaise | Version allemande | Version espagnole | Version portugaise