Вершинне покриття

Матеріал з testwiki
Версія від 05:38, 2 січня 2024, створена imported>InternetArchiveBot (Bluelink 1 book for Перевірність (20240101)) #IABot (v2.0.9.5) (GreenC bot)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Вершинне покриття графа  — це множина вершин така, що кожне ребро графа інцидентне хоча б одній вершині цієї множини. Задача знаходження найменшого вершинного покриття є класичною задачею оптимізації в інформатиці і типовим прикладом NP-складної задачі оптимізації, для якої відомий апроксимаційний алгоритм. Її версія у вигляді проблеми вибору, задача вершинного покриття, була однією з 21 NP-повної задачі Карпа і, отже, класичною NP-повною задачею в теорії складності обчислень.

Задачу найменшого вершинного покриття можна сформулювати як напівцілочисельну задачу лінійного програмування чия дуальна лінійна програма є задача найбільшого парування.

Означення

Формально, вершинне покриття неорієнтованого графа G=(V,E) це підмножина V′ множини вершин V така, що для кожного ребра (u, v) графа G або u у V′, або v у V′, або обидві вершини. Кажуть, що множина V′ «покриває» ребра G. Наступні зображення показують приклади вершинних покриттів в двох графах (і множина V′ позначена червоним).

Найменше вершинне покриття це покриття з найменшого можливого розміру. Число вершинного покриття τ це розмір найменшого такого покриття. Наступні зображення показують приклади найменших вершинних покриттів у наведених вище графах.

Приклади

Властивості

  • Множина вершин є вершинним покриттям тоді і тільки тоді, якщо його доповнення є незалежною множиною.
  • Тому, кількість вершин у графі дорівнює кількості вершин у його найменшому вершинному покриттю плюс найбільшій незалежній множині.

Обчислювальна задача

Задача найменшого вершинного покриття це задача оптимізації щодо знаходження найменшого вершинного покриття певного графа.

ПРИМІРНИК: Граф G
ВИХІД: Найменше число k таке, що G має вершинне покриття розміру k.

Якщо задача сформульована як проблема вибору, її називають задача вершинного покриття:

ПРИМІРНИК: Граф G і додатне ціле число k.
ПИТАННЯ: Чи має G вершинне покриття розміру не більше k?

Задача вершинного покриття — це NP-повна задача: вона була серед задач Карпа. В теорії складності обчислень часто використовується як відправна точка для доведення NP-складності.

Формулювання у термінах ЦЛП

Припустимо, що кожна вершина має пов'язану вартість c(v)0. Задачу найменшого зваженого вершинного покриття можна сформулювати як таку цілочисельну програму (ЦЛП).[1]

мінімізувати vVc(v)xv    (мінімізувати підсумкову вартість)
за умов xu+xv1 для всіх {u,v}E (покрити кожне ребро графа)
xv{0,1} для всіх vV. (кожна вершина або належить до вершинного покриття, або ні)

ЦЛП належить до загальнішого класу ЦЛП задач покриття.

Апроксимаційний алгоритм

Шаблон:Докладніше Незважаючи на те, що ми не знаємо як знайти оптимальне/найменше вершинне покриття у графі G за поліноміальний час, ми можемо ефективно знайти вершинне покриття, яке буде близьким до оптимального. Наведемо алгоритм, який повертає вершинне покриття гарантовано не більше ніж вдвічі більше за розміром порівняно з оптимальним покриттям.

НАБЛИЖЕНЕ-ВЕРШИННЕ-ПОКРИТТЯ (G)

  1. C=
  2. E=G.E
  3. поки E0
  4.  нехай (u,v) буде довільним ребром з E
  5. C=C{u,v}
  6.  видалити з E кожне ребро інцидентне до u чи v
  7. повернути C

За умов використання списків суміжності час виконання цього алгоритму O(V+E).

Див. також

Примітки

Шаблон:Reflist

Джерела

Посилання