|
|
Line 1: |
Line 1: |
| '''Karmarkar's algorithm''' is an [[algorithm]] introduced by [[Narendra Karmarkar]] in 1984 for solving [[linear programming]] problems. It was the first reasonably efficient algorithm that solves these problems in [[polynomial time]]. The [[ellipsoid method]] is also polynomial time but proved to be inefficient in practice.
| | Oscar is how he's called and he totally enjoys this title. To collect coins is what his family and him enjoy. Years ago we moved to North Dakota. Managing people has been his day occupation for a while.<br><br>Here is my website; at home std testing ([http://www.youporntime.com/blog/12800 simply click the following webpage]) |
| | |
| Where <math>n</math> is the number of variables and <math>L</math> is the number of bits of input to the algorithm, Karmarkar's algorithm requires <math>O(n^{3.5} L)</math> operations on <math>O(L)</math> digit numbers, as compared to <math>O(n^6 L)</math> such operations for the ellipsoid algorithm. The runtime of Karmarkar's algorithm is thus
| |
| :<math>O(n^{3.5} L^2 \cdot \log L \cdot \log \log L)</math>
| |
| | |
| using [[Schönhage–Strassen algorithm|FFT-based multiplication]] (see [[Big O notation]]).
| |
| | |
| Karmarkar's algorithm falls within the class of [[interior point method]]s: the current guess for the solution does not follow the boundary of the [[feasible set]] as in the [[simplex method]], but it moves through the interior of the feasible region, improving the approximation of the optimal solution by a definite fraction with every iteration, and converging to an optimal solution with rational data.<ref name="Strang">{{cite journal|last=Strang|first=Gilbert|authorlink=Gilbert Strang|title=Karmarkar’s algorithm and its place in applied mathematics|journal=[[The Mathematical Intelligencer]]|date=1 June 1987|publisher=Springer|location=New York|issn=0343-6993|pages=4–10|volume=9|number=2|doi=10.1007/BF03025891|mr='''883185'''|ref=harv}}</ref>
| |
| | |
| == The Algorithm ==
| |
| Consider a [[Linear Programming]] problem in matrix form:
| |
| {|
| |
| | colspan="2" | maximize ''c''<sup>''T''</sup>''x''
| |
| |-
| |
| | subject to
| |
| | ''Ax'' ≤ b.
| |
| |-
| |
| |}
| |
| The algorithm determines the next feasible direction toward optimality and scales back by a factor 0 < γ ≤ 1.
| |
| | |
| Karmarkar's algorithm is rather complicated. A simplified version, called the affine-scaling method, proposed and analyzed by others,<ref>
| |
| {{cite journal
| |
| | doi = 10.1007/BF01840454
| |
| | author = [[Robert J. Vanderbei]]
| |
| | coauthors = Meketon, Marc, Freedman, Barry
| |
| | year = 1986
| |
| | title = A Modification of Karmarkar's Linear Programming Algorithm
| |
| | journal = Algorithmica
| |
| | volume = 1
| |
| | pages = 395–407
| |
| }}</ref> can be described succinctly as follows. Note that the affine-scaling algorithm, while efficient in practice, is not a polynomial time algorithm.
| |
| {{algorithm-begin|name=Affine-Scaling}}
| |
| Input: A, b, c, <math>x^0</math>, ''stopping criterion'', <math>\gamma</math>.
| |
| | |
| <math> k \leftarrow 0 </math>
| |
| '''do while''' ''stopping criterion'' '''not satisfied'''
| |
| <math>v^k \leftarrow b-Ax^k</math>
| |
| <math>D_v \leftarrow \operatorname{diag}(v_1^k,\ldots,v_m^k)</math>
| |
| <math>h_x\leftarrow (A^TD_v^{-2}A)^{-1}c</math>
| |
| <math>h_v\leftarrow -Ah_x</math>
| |
| '''if''' <math>h_v \ge 0</math> '''then'''
| |
| '''return''' unbounded
| |
| '''end if'''
| |
| <math>\alpha \leftarrow \gamma\cdot \min\{-v_i^k/(h_v)_i \,\,|\,\, (h_v)_i < 0,\, i=1,\ldots,m\}</math>
| |
| <math>x^{k+1}\leftarrow x^k + \alpha h_x</math>
| |
| <math>k\leftarrow k+1</math>
| |
| '''end do'''
| |
| {{algorithm-end}}
| |
| | |
| == Example ==
| |
| [[File:karmarkar.png|thumb|200px|right|Example solution]]
| |
| Consider the linear program
| |
| {|
| |
| | maximize
| |
| |
| |
| | <math>x_1</math>
| |
| | +
| |
| | <math>x_2</math>
| |
| |-
| |
| | subject to
| |
| |
| |
| | <math>2p x_1</math>
| |
| | +
| |
| | <math>x_2</math>
| |
| | <math>\leq</math> <math>p^2+1</math>, <math>p=0.0, 0.1, 0.2,\ldots, 0.9, 1.0.</math>
| |
| |-
| |
| |}
| |
| That is, there are 2 variables <math>x_1, x_2</math> and 11 constraints associated with varying values of <math>p</math>. This figure shows each iteration of the algorithm as red circle points. The constraints are shown as blue lines.
| |
| | |
| == Patent controversy ==
| |
| | |
| At the time he invented the algorithm, Narendra Karmarkar was employed by [[AT&T]] and they realized that his invention could be of practical importance. In April 1985, AT&T promptly applied for a patent on Karmarkar's algorithm and that became more fuel for the ongoing controversy over the issue of [[software patent]]s.<ref name="kolata">
| |
| {{cite news
| |
| | first = Gina
| |
| | last = Kolata
| |
| | title = IDEAS & TRENDS; Mathematicians Are Troubled by Claims on Their Recipes
| |
| | url = http://query.nytimes.com/gst/fullpage.html?res=950DEFD61038F931A25750C0A96F948260
| |
| | work = [[The New York Times]]
| |
| | date = 1989-03-12
| |
| }}</ref> This left many mathematicians uneasy, such as [[Ronald Rivest]] (himself one of the holders of the patent on the [[RSA (algorithm)|RSA]] algorithm), who expressed the opinion that research proceeded on the basis that algorithms should be free. Even before the patent was actually granted, it seemed that there was [[prior art]] that might have been applicable.<ref name="saltzman">[http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15850c-s96/www/interiorpoint.txt Various posts by Matthew Saltzman, Clemson University]</ref> Mathematicians who specialize in [[numerical analysis]] such as [[Philip Gill]] and others showed that Karmarkar's algorithm is actually equivalent to a [[projected Newton barrier method]] with a logarithmic [[barrier function]], if the parameters are chosen suitably.<ref>
| |
| {{cite journal
| |
| | last = Gill
| |
| | first = Philip E.
| |
| | coauthors = Murray, Walter, Saunders, Michael A., Tomlin, J. A. and Wright, Margaret H.
| |
| | year = 1986
| |
| | title = On projected Newton barrier methods for linear programming and an equivalence to Karmarkar’s projective method
| |
| | journal = Mathematical Programming
| |
| | volume = 36
| |
| | issue = 2
| |
| | pages = 183–209
| |
| | url = http://www.springerlink.com/content/2781h35w87600923/
| |
| | doi = 10.1007/BF02592025
| |
| }}</ref> Methods referred to by Gill were widely used for [[nonlinear programming]] since the 1960s. In fact, one well-known book first published in 1968 described the technique specifically in the context of linear programming.<ref>
| |
| {{cite book
| |
| | author = [[Anthony V. Fiacco]]
| |
| | coauthors = [[Garth P. McCormick]]
| |
| | year = 1968
| |
| | title = Nonlinear Programming: Sequential Unconstrained Minimization Techniques.
| |
| | publisher = Wiley
| |
| | location = New York
| |
| | isbn = 978-0-471-25810-0
| |
| }} Reprinted by [[Society for Industrial and Applied Mathematics|SIAM]] in 1990 as ISBN 978-0-89871-254-4.
| |
| </ref> However, some say Gill's argument is flawed, insofar as the method they describe does not even qualify as an "algorithm", since it requires choices of parameters that don't follow from the internal logic of the method, but rely on external guidance, essentially from Karmarkar's algorithm.<ref name="chin">
| |
| {{cite journal
| |
| | author = Andrew Chin
| |
| | year = 2009
| |
| | title = On Abstraction and Equivalence in Software Patent Doctrine: A Response to Bessen, Meurer and Klemens
| |
| | journal = Journal Of Intellectual Property Law
| |
| | volume = 16
| |
| | pages = 214–223
| |
| | url = http://andrewchin.com/chin/scholarship/abstraction-equivalence.pdf
| |
| }}</ref> Furthermore, Karmarkar's contributions are considered far from obvious in light of all prior work, including Fiacco-McCormick, Gill and others cited by Saltzman.<ref name="chin"/><ref name="paley">Mark A. Paley (1995). "The Karmarkar Patent: Why Congress Should “Open the Door” to Algorithms as Patentable Subject Matter". 22 COMPUTER L. REP. 7</ref><ref name="wright">{{cite journal
| |
| | author = Margaret H. Wright
| |
| | year = 2004
| |
| | title = The Interior-Point Revolution in Optimization: History, Recent Developments, and Lasting Consequences
| |
| | journal = Bulletins of the American Mathematical Society
| |
| | volume = 42
| |
| | pages = 39–56
| |
| | url = http://www.ams.org/journals/bull/2005-42-01/S0273-0979-04-01040-7/S0273-0979-04-01040-7.pdf
| |
| }}</ref>
| |
| The patent was eventually granted as {{US patent|4744026}}: "Methods and apparatus for efficient resource allocation" in May 1988. The patent, however, proved to be of limited commercial value to AT&T. They built up the [[KORBX]]<ref>
| |
| {{cite journal
| |
| | author = Marc S. Meketon
| |
| | coauthors = Y.C. Cheng, D.J. Houck, J.M.Liu, L. Slutsman, [[Robert J. Vanderbei]], and P. Wang
| |
| | year = 1989
| |
| | title = The AT&T KORBX System
| |
| | journal = AT&T Technical Journal
| |
| | volume = 68
| |
| | pages = 7–19
| |
| }}</ref> system, an 8-processor [[Alliant Computer Systems|Alliant]] computer incorporating linear programming software using Karmarkar's algorithm, priced at US$8.9 million each, and they only managed to sell two such systems.<ref name="saltzman" /> Opponents of software patents have further alleged that the patents ruined the positive interaction cycles that previously characterized the relationship between researchers in linear programming and industry, and specifically it isolated Karmarkar himself from the network of mathematical researchers in his field.
| |
| <ref>{{Cite web
| |
| |url=http://eupat.ffii.org/papers/konno95/index.ja.html
| |
| |title=今野浩: カーマーカー特許とソフトウェア – 数学は 特許に なるか (Konno Hiroshi: The Kamarkar Patent and Software – Has Mathematics Become Patentable?)
| |
| |publisher=[[Foundation for a Free Information Infrastructure|FFII]]
| |
| |accessdate=2008-06-27}}</ref>
| |
| | |
| The patent itself expired in April 2006, and the algorithm is presently in the public domain.
| |
| | |
| == References ==
| |
| | |
| * Ilan Adler, Narendra Karmarkar, Mauricio G.C. Resende and Geraldo Veiga (1989). "An Implementation of Karmarkar's Algorithm for Linear Programming". ''Mathematical Programming'', Vol 44, p. 297–335.
| |
| * Narendra Karmarkar (1984). "[http://retis.sssup.it/~bini/teaching/optim2010/karmarkar.pdf A New Polynomial Time Algorithm for Linear Programming]", ''[[Combinatorica]]'', Vol '''4''', nr. 4, p. 373–395.
| |
| | |
| {{reflist|2}}
| |
| | |
| {{Optimization algorithms|convex}}
| |
| | |
| {{DEFAULTSORT:Karmarkar's Algorithm}}
| |
| [[Category:Optimization algorithms and methods]]
| |
| [[Category:Articles with example pseudocode]]
| |
| [[Category:Software patent law]]
| |