3.4. Точность алгоритма для почти всех входов 131
двух направлениях: во-первых, мы рассматриваем не только
точные алгоритмы, но и приближенные, а во-вторых, анализ
сложности в среднем заменяется на анализ для «почти всех»
исходных данных.
Ранее мы доказали, что для задачи о покрытии жадный
алгоритм (см. раздел 2.1.1) в худшем случае гарантирует на-
хождение покрытия, размер которого превосходит размер ми-
нимального покрытия не более чем в логарифмическое число
раз (по m). Наша цель сейчас — показать, что для «типичных»
данных (в отличие от худшего случая, см. упражнение 2.1.2)
это отношение близко к единице, т. е. размер покрытия, найден-
ного жадным алгоритмом, почти равен размеру минимального
покрытия.
Как и в предыдущем разделе, мы будем использовать фор-
мулировку задачи о покрытии на языке (0, 1)-матриц и цело-
численных линейных программ:
cx → min,
Ax ≥ b,
∀j x
j
∈ {0, 1}.
(3.5)
В этой целочисленной линейной программе n столбцов-пе-
ременных x
1
, . . . , x
n
соответствуют подмножествам S
1
, . . . , S
n
и их включению в решение-покрытие. Матрица A также явля-
ется матрицей инцидентности, а векторы стоимости и ограни-
чений — также векторы размерности n и m соответственно,
состоящие полностью из единиц.
Таким образом, m строк-ограничений, соответствующих m
предметам, очевидным образом выражают ограничение на обя-
зательное включение предмета хотя бы в одно из покрывающих
подмножеств, а целевая функция равна числу таких подмно-
жеств.
Как и в разделе 3.2, предположим, что A = (a
ij
) — случай-