В информатике и исследовании операций многие задачи комбинаторной оптимизации вычислительно неподатливы[en] для решения задачи точно (т.е. для получения оптимального решения). Многие такие задачи допускают быстрые (полиномиального времени) аппроксимационные алгоритмы — то есть алгоритмы, гарантированное возвращающие приближённое к оптимальному решение для любого входа.
Вероятностное округление[1] — это широко используемый подход для разработки и анализа таких аппроксимационных алгоритмов[2][3]. Базовая идея — использование вероятностного метода для преобразования соответствующей оптимального решения задачи линейного программирования (ЛП) в приближённое к оптимальному решению исходной задачи.
Базовый подход имеет три шага:
(Хотя подход, в основном, использует линейное программирование, могут быть использованы и другие виды ослабления условий. Например, алгоритм Гоемана и Уильямсона использует приближённый алгоритм максимального разреза полуопределённого программирования.)
Целью первого шага является выбор подходящей постановки задачи целочисленного линейного программирования. Для этого требуется хорошее знание линейного программирования, и, в частности, понимание, как моделировать задачи с помощью линейного программирования и целочисленного линейного программирования. Однако для многих задач существует хорошо работающая естественная целочисленная задача линейного программирования, что показано в примере с задачей покрытия множества. (Целочисленная задача линейного программирования должна иметь небольшой зазор целочисленности. Более того, вероятностное округление часто используется для доказательства зазоров целочисленности.)
На втором шаге оптимальное дробное решение, обычно, может быть вычислено за полиномиального времени с помощью стандартного алгоритма линейного программирования.
На третьем шаге дробное решение должно быть преобразовано в целочисленное решение (и тем самым в решение исходной задачи). Этот процесс называется округлением дробного решения. Конечное целочисленное решение должно (доказуемо) иметь цену, не отличающуюся сильно от цены дробного решения. Тем самым обеспечивается, что цена целочисленного решения не намного больше цены оптимального целочисленного решения.
Основная техника, используемая на третьем шаге (округление) — использование вероятностного подхода, а затем использование вероятностных доводов для ограничения роста цены, возникающего при округлении. Здесь вероятностные доводы используются, чтобы показать существование дискретной структуры с желаемыми свойствами. В этом контексте используются вероятностные доводы, чтобы показать следующее:
Наконец, чтобы сделать третий шаг вычислительно эффективным, либо показывается, что является приближённым к с большой вероятностью (так что шаг остаётся вероятностным), либо дерандомизируется шаг округления, обычно с помощью метода условных вероятностей. Последний метод преобразует вероятностный процесс округления в эффективный детерминированный процесс, который гарантированно даёт хороший выход.
Шаг вероятностного округления отличается от большинства приложений вероятностного метода в двух отношениях:
Метод лучше всего проиллюстрировать на примере. Следующий пример показывает, как можно использовать случайное округление для создания аппроксимационого алгоритма для задачи о покрытии множества.
Возьмём любой экземпляр задачи покрытия множества с совокупностью .
Для шага 1, пусть целочисленная задача ЛП — это стандартная задача целочисленного линейного программирования для покрытия множества.
Для шага 2, пусть задача ЛП — это ослабление задачи ЦЛП до задачи ЛП, и пусть — это оптимальное решение этой ослабленной задачи, полученное любым стандартным алгоритмом линейного программирования. (На решение задачи ЛП тратится время, полиномиально зависящее от размера входа.)
(Допустимые решения задачи ЛП — это вектора , которые назначают каждому множеству неотрицательный вес , такой, что, для любого элемента , покрывает — суммарный вес, назначенный множествам, содержащим , не меньше 1, то есть
Оптимальное решение является допустимым решением, цена которого
настолько мала, насколько это возможно.)
Заметим, что любое покрытие множества для даёт a допустимое решение (где для , в противном случае). Цена этого покрытия равна цене , то есть
Другими словами, задача линейного программирования является ослаблением данной задачи покрытия множества.
Поскольку имеет минимальную цену среди допустимых решений задачи ЛП, цена является нижней границей цены оптимального покрытия множества.
Ниже описание третьего описания шага — шага округления, который должен преобразовать частичное покрытие множества минимальной цены в допустимое целочисленное решение (соответствующее правильному покрытию множества).
Шаг округления даст решение , которое с положительной вероятностью имеет цену, отличающуюся от цены на малый множитель. Тогда (поскольку цена является нижней границей цены оптимального покрытия множества), цена будет отличаться от оптимальной цены на малый множитель.
В качестве отправного пункта рассмотрим наиболее естественную схему округления:
Согласно этой схеме округления математическое ожидание цены выбранных множеств не превосходит , цены частичного покрытия. Это хорошо, но, к сожалению, покрытие не хорошее. Если переменные малы, вероятность, что элемент не покрыт, составляет примерно
Таким образом, математическое ожидание доли покрытых элементов будет постоянно.
Чтобы сделать покрывающим все элементы с большой вероятностью, стандартная схема округления сначала повышает вероятности округления на подходящий множитель . Стандартная схема округления:
Умножение вероятностей на увеличивает математическое ожидание цены на , но делает покрытие всех элементов более вероятным. Идея здесь выбрать с как можно меньшим значением так, что все элементы доказуемо будут покрыты с ненулевой вероятностью. Ниже приведён детальный анализ.
(Заметим, что при некоторой осторожности значение может быть сведено к .)
Выход схемы случайного округления имеет желаемые свойства, пока не случатся следующие «плохие» события:
Математическое ожидание каждого не превосходит . Ввиду линейности математического ожидания, ожидание не превосходит . Тогда, согласно неравенству Маркова, вероятность первого плохого события не превосходит .
Для оставшихся плохих событий (по одному для каждого элемента ) заметим, что, поскольку , для любого заданного элемента , вероятность, что не покрыто, равна
(Здесь использовано неравенство , которое строго выполняется для .)
Таким образом, для любого числа элементов, вероятность, что элемент не покрыт, меньше .
Вероятность, что одно из плохих событий случится, меньше . Тогда, вероятность отсутствия плохих событий больше нуля и является покрытием множества с ценой, не превосходящей .
Q.E.D. (Что и требовалось доказать)
Лемма выше показывает существование покрытия множества с ценой ). В этом контексте нашей целью является эффективный алгоритм аппроксимации, не просто доказательство существования, так что мы не закончили рассмотрение шага 3.
В качестве одного из подходов, можно было бы увеличить немножко , а затем показать, что вероятность успеха не меньше, скажем, 1/4. Используя эту модификацию, повторяя шаг случайного округления несколько раз, можно обеспечить успех с большой вероятностью.
Этот подход ослабляет гарантированную эффективность, но мы опишем другой подход, который даёт детерминированный алгоритм, который обеспечивает гарантированную эффективность, указанную выше. Подход называется методом условных вероятностей.
Детерминированный алгоритм эмулирует схему вероятностного округления — рассматривается каждое множество и выбирается , однако, вместо выбора случайно, основываясь на , алгоритм делает детерминированный выбор, таким образом, что условная вероятность неудачи, определённая выбором, остаётся меньшим 1.
Мы хотим иметь возможность установить значение каждой переменной , чтобы сохранять условную вероятность неудачи меньше 1. Чтобы достичь этого, нам нужна хорошая граница условной вероятности неудачи. Граница получается путём пересмотра исходного доказательства существования. Это доказательство неявным образом ограничивает вероятность неудачи математическим ожиданием случайной переменной
где
является набором элементов, оставшихся непокрытыми.
Случайная переменная может показаться несколько таинственной, но она отражает систематический поход вероятностного доказательства. Первый член в формуле для получается из применения неравенствв Маркова к границе вероятности первого плохого события (цена слишком велика). Этот член привносит по меньшей мере 1 в , если цена слишком велика. Второй член считает число плохих событий второго вида (непокрытые элементы). Он привносит по меньшей мере 1 в , если оставляет какой-либо элемент непокрытым. Таким образом, в любом выходном результате, когда меньше 1, решение должно покрывать все элементы и иметь цену, согласующуюся с желаемой границей из леммы. Кратко, если шаг округления завершается неудачей, . Из этого следует (согласно неравенству Маркова), что является верхней границей вероятности неудачи. Заметим, что приведённые выше доводы уже неявным образом присутствуют в доказательстве леммы, что также показывает, что .
Чтобы применить метод условных вероятностей, нам нужно расширить доводы для ограничения условной вероятности неудачи во время выполнения шага округления. Обычно это можно сделать систематически, хотя это технически может быть трудоёмким.
Итак, какова условная вероятность неудачи, когда шаг округления проходит через множества? Поскольку в любом результате означает, что шаг округления привёл к неудаче, согласно неравенству Маркова, условная вероятность неудачи не превосходит условного математического ожидания .
Затем мы вычисляем условное математическое ожидание , как мы вычисляли математическое ожидание в исходном доказательстве. Рассмотрим состояние процесса округления в конце каждой итерации . Пусть означает просмотренные множества (первые множеств в ). Пусть означает (частично назначенный) вектор (так что определён, только если ). Для такого множества , пусть означает вероятность, с которой будет назначен к 1. Пусть содержит непокрытые элементы. Тогда условное математическое ожидание , заданное выбором, то есть заданное решением , тогда
Заметим, что определено только после итерации .
Чтобы сохранять условную вероятность неудачи меньше 1, достаточно сохранять условное математическое ожидание меньше 1. Для этого достаточно избегать роста условного математического ожидания , и это то, что алгоритм будет делать. Алгоритм будет устанавливать на каждой итерации так, что
(где ).
На итерации как может алгоритм установить , чтобы ? Оказывается, что можно просто установить так, чтобы миимизировать значение .
Чтобы понять, почему, рассмотрим точку во времени, когда итерация начинается. В этот момент значение определено, но значение не определено — оно может принять два возможных значения, в зависимости от того, как устанавливается на итерации . Пусть означает значение . Пусть и означают два возможных значения , в зависимости от того, устанавливается в 0 или 1. По определению условного математического ожидания,
Поскольку взвешенное среднее двух величин всегда не меньше минимальной из них, отсюда следует
Таким образом, установка так, чтобы минимизировать результирующее значение , гарантирует, что . Это то, что алгоритм будет делать.
Детально, что это означает? Если рассматривать как функцию от (со всеми другими фиксированными величинами), эта функция является линейной от , и коэффициент при в этой функции равен
Таким образом, алгоритм должен установить в 0, если это выражение положительно, и в 1 в противном случае. Всё это даёт следующий алгоритм.
вход: набор множеств , совокупность , вектор цен
выход: покрытие множества (решение стандартной целочисленной задачи линейного программирования для покрытия множества)
Алгоритм обеспечивает, чтобы условное математическое ожидание не увеличивалось на каждой итерации. Поскольку это условное математическое ожидание первоначально было меньше 1 (как было показано выше), алгоритм обеспечивает, что условное математическое ожидание остаётся меньшим 1. Поскольку условная вероятность неудачи не превосходит условного математического ожидания , алгоритм обеспечивает, что условная вероятность неудачи остаётся меньшей 1. Таким образом, в конце алгоритма, когда все элементы определены, алгоритм получает успешный результат. То есть приведённый выше алгоритм возвращает покрытие множества с ценой, не превосходящей на множитель минимальной цены любого (дробного) покрытия множества.
В примере выше алгоритм опирался на условное математическое ожидание случайной пересенной . В некоторых случаях вместо точного условного математического ожидания используется верхняя граница (а иногда, нижняя граница) условного математического ожидания некоторой величины. Это называется пессимистической оценкой.
Для улучшения этой статьи желательно: |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .