Введение

Алгоритм Кармаркара — это алгоритм, предложенный Нарендрой Кармаркаром в 1984 году для решения задач линейного программирования. Он стал первым достаточно эффективным алгоритмом, решающим эти задачи за полиномиальное время. Эллипсоидный метод также является полиномиальным, но на практике оказался неэффективным. Обозначим число переменных как *n*, число неравенств как *m*, а число битов входных данных алгоритма как *L*. Алгоритм Кармаркара требует *O(n<sup>2</sup>L log n)* операций с *L*-битовыми числами, в то время как эллипсоидному алгоритму требуется *O(n<sup>6</sup>L log n)* таких операций. В "квадратных" задачах, когда *m* находится в *O(n)*, алгоритм Кармаркара требует *O(n<sup>3</sup>L log n)* операций с *L*-битовыми числами, в то время как эллипсоидному алгоритму требуется *O(n<sup>6</sup>L log n)* таких операций. Таким образом, время работы алгоритма Кармаркара составляет

при использовании умножения на основе БПФ (см. нотацию «Большое О»). Алгоритм Кармаркара относится к классу методов внутренней точки: текущее приближение решения не следует по границе допустимой области, как в симплекс-методе, а перемещается внутри допустимой области, улучшая приближение оптимального решения на определенную долю с каждой итерацией и сходясь к оптимальному решению при рациональных данных.

Спор о патентах

В то время, когда он изобрел алгоритм, Кармаркар работал в IBM в качестве постдокторанта в Исследовательской лаборатории IBM в Сан-Хосе, Калифорния. 11 августа 1983 года он выступил с семинаром в Стэнфордском университете, представляя алгоритм, при этом его принадлежность по-прежнему указывалась как IBM. Осенью 1983 года Кармаркар начал работать в AT&T и представил свою работу на Симпозиуме ACM по теории вычислений (STOC, проходившем с 30 апреля по 2 мая 1984 года), указав AT&T Bell Laboratories в качестве своей организации. После применения алгоритма для оптимизации телефонной сети AT&T, они осознали, что его изобретение может иметь практическую ценность. В апреле 1985 года AT&T незамедлительно подала заявку на патент на его алгоритм. Патент стал дополнительным аргументом в продолжающихся спорах о патентовании программного обеспечения. Это вызвало обеспокоенность у многих математиков, таких как Рональд Ривест (сам являющийся одним из владельцев патента на алгоритм RSA), который выразил мнение, что исследования должны основываться на принципе свободы алгоритмов. Еще до выдачи патента, высказывались предположения о существовании предшествующего уровня техники. Математики, специализирующиеся на численном анализе, включая Филипа Гилла и других, утверждали, что алгоритм Кармаркара эквивалентен методу Ньютона с барьером и логарифмической функцией барьера, при соответствующем выборе параметров. Юрист Эндрю Чин считает, что аргумент Гилла был несостоятелен, поскольку описанный ими метод не является "алгоритмом", так как требует выбора параметров, не вытекающих из внутренней логики метода, а зависящих от внешнего управления, по сути, от алгоритма Кармаркара. Более того, вклад Кармаркара считается весьма неочевидным в свете всех предшествующих работ, включая работы Фиакко-Маккормика, Гилла и других, упомянутых Солтцманом. Патент обсуждался в Сенате США и был выдан в мае 1988 года в знак признания существенной оригинальности работы Кармаркара под названием: "Методы и аппаратура для эффективного распределения ресурсов". AT&T разработала векторную мультипроцессорную компьютерную систему специально для запуска алгоритма Кармаркара, назвав полученную комбинацию аппаратного и программного обеспечения KORBX, и продавала эту систему по цене 8,9 миллиона долларов США. Первым клиентом стал Пентагон. Противники патентов на программное обеспечение утверждали, что патенты разрушили положительные циклы взаимодействия, которые ранее характеризовали отношения между исследователями в области линейного программирования и промышленностью, и, в частности, изолировали самого Кармаркара от сети математических исследователей в его области. Срок действия патента истек в апреле 2006 года, и в настоящее время алгоритм находится в общественном достоянии. Верховный суд США постановил в деле Gottschalk v. Benson, что математику нельзя патентовать. В этом деле суд впервые рассмотрел вопрос о возможности патентования компьютерных алгоритмов и постановил, что это невозможно, поскольку патентная система не защищает идеи и подобные абстракции. В деле Diamond v. Diehr Верховный суд заявил: "Математическая формула сама по себе не подлежит защите наших патентных законов, и этот принцип нельзя обойти, пытаясь ограничить использование формулы определенной технологической средой". В деле Mayo Collaborative Services v. Prometheus Labs., Inc. Верховный суд далее пояснил, что "простое применение математического принципа на физической машине, а именно на компьютере, не является патентоспособным применением этого принципа".

Приложения

Алгоритм Кармаркара использовался армией США для логистического планирования во время войны в Персидском заливе.