Жадный алгоритм максимальной степени
Начинают с пустого покрытия \(C\). Пока в графе остаются непокрытые рёбра, выбирают вершину \(v\), инцидентную максимальному числу таких рёбер, добавляют \(v\) в \(C\) и удаляют все рёбра, инцидентные \(v\). Когда рёбер не остаётся, множество \(C\) является вершинным покрытием.1
Корректность как покрытия очевидна из правила остановки: алгоритм заканчивает работу только после удаления всех рёбер, а каждое удалённое ребро было покрыто выбранной вершиной.
Что можно гарантировать о качестве
Интуитивно выбор вершины, покрывающей максимум оставшихся рёбер, кажется сильным. Однако для минимального вершинного покрытия эта эвристика может систематически принимать локально привлекательные решения, несовместимые с глобальным оптимумом. В учебном источнике строится семейство «плохих» графов, на котором относительная погрешность жадного алгоритма растёт с размером экземпляра. Поэтому алгоритм 16 не обеспечивает даже постоянного коэффициента аппроксимации.1
Полезное сравнение: локальная 2-аппроксимация
Другой простой алгоритм выбирает произвольное непокрытое ребро \(\{u,v\}\), добавляет в покрытие сразу \(u\) и \(v\), а затем удаляет все рёбра, инцидентные этим вершинам. Выбранные на разных шагах рёбра образуют паросочетание \(M\). Любое вершинное покрытие должно содержать хотя бы один конец каждого ребра \(M\), поэтому \(OPT\ge|M|\). Локальный алгоритм выбирает ровно \(2|M|\) вершин, откуда \(|C|=2|M|\le2OPT\).2
Таким образом, в этой теме принципиально не смешивать два алгоритма: жадный алгоритм максимальной степени изучается как естественная эвристика с плохим худшим случаем, а алгоритм по непокрытому ребру имеет доказанную 2-аппроксимационную гарантию.