Алгоритм Greedy Set Coverage, построенный на * удалении * множеств

Я пытаюсь реализовать решение для заданной проблемы покрытия, используя жадный алгоритм.

Классический алгоритм жадного приближения для него

input: collection C  of sets over universe U  , costs: C→R ≥0    
output: set cover S   
1. Let S←∅.  
2. Repeat until S covers all elements:  
3.   Add a set s to S, where s∈C maximizes the number of elements in s not yet covered by set s in S, divided by the cost c(s). 
4. Return S.  

У меня вопрос в 2 частях:

а. Будет ли выполнение алгоритма в обратном порядке действительным, т.е.

input: collection C  of sets over universe U  , costs: C→R ≥0    
output: set cover S   
1. Let S←C  .  
2. Repeat until there are no s∈S such that S-s=S (i.e. all elements in s are redundant):  
3.   Remove a set s from S, where s∈S minimises the number of elements in s, divided by the cost c(s). 
4. Return S.  

б. Природа проблемы такова, что легко получить C и будет ограниченное количество (<5) избыточных наборов - в этом случае этот алгоритм удаления будет работать лучше?

1 ответ

Решение

Алгоритм обязательно вернет действительное покрытие набора, так как на каждом шаге он проверяет, являются ли все элементы s избыточными. Интуитивно я чувствую, что часть b верна, хотя я не могу написать формальное доказательство этого. Прочитайте главу 2 Виджая Вазирани, так как это может помочь в части анализа.

Другие вопросы по тегам