K-aproximace sady úderů k - K-approximation of k-hitting set
v počítačová věda, k-aproximace k-bít množiny je aproximační algoritmus pro vážené bít set. Vstup je a sbírka S z podmnožiny nějakého vesmíru T a a mapování Ž z T na nezáporná čísla, která se nazývají váhy prvků T. v k-bít set velikost sad v S nemůže být větší než k. To znamená, . Nyní je problém vybrat nějakou podmnožinu T'z T tak, že každý vstup S obsahuje nějaký prvek z T"a taková, že celková hmotnost všech prvků v T„je co nejmenší.
Algoritmus
Pro každou sadu v S je udržován a cena, , což je zpočátku 0. Pro prvek A v T, nechť S(A) být sbírkou sad z S obsahující A. Během algoritmu je zachován následující invariant
Říkáme, že prvek, A, z T je těsný -li . Hlavní část algoritmu se skládá ze smyčky: Dokud je nastaven vstup S který neobsahuje žádný prvek z T což je těsné, cena této sady se zvýší co nejvíce, aniž by došlo k porušení výše uvedeného invariantu. Když tato smyčka skončí, všechny sady obsahují nějaký těsný prvek. Vyberte všechny těsné prvky, které mají být údernou sadou.
Správnost
Algoritmus vždy končí, protože v každé iteraci smyčky je cena nějakého nastavena S je dostatečně zvětšen, aby se z něj vytvořil ještě jeden prvek T těsný. Pokud nemůže zvýšit žádnou cenu, opustí se. Spouští se v polynomiálním čase, protože smyčka neprovede více iterací, než je počet prvků ve spojení všech sad S. Vrátí úderovou sadu, protože když smyčka skončí, všechny sady se vrátí S obsahují těsný prvek z Ta sada těchto těsných prvků se vrátí.
Všimněte si, že pro každou zasaženou sadu T * a případné ceny kde je invariant z algoritmu pravdivý, je celková váha sady úderů horní limit součtu přes všechny členy T * ze součtu cen sad obsahujících tento prvek, tedy: . To vyplývá z invariantní vlastnosti. Dále, protože cena každé sady se musí alespoň jednou objevit na levé straně, dostaneme . Zvláště tato vlastnost platí pro optimální sadu úderů.
Dále pro úderovou sadu H vrátili jsme se z výše uvedeného algoritmu . Od jakékoli ceny se může objevit maximálně k krát na levé straně (od podmnožin S nesmí obsahovat více než k prvek z T) dostaneme V kombinaci s předchozím odstavcem dostaneme , kde T * je optimální sada úderů. To je přesně záruka, že se jedná o algoritmus k-aproximace.
Vztah k lineárnímu programování
Tento algoritmus je instancí metoda primal-dual, také zvaný způsob stanovení cen. Intuice je, že je dvojí do a lineární programování algoritmus. Vysvětlení viz http://algo.inria.fr/seminars/sem00-01/vazirani.html.
Reference
- Kleinberg, J.; Tardos, E. (2006). Návrh algoritmu. ISBN 0-321-29535-8..
- S. Dokonce; R. Bar-Jehuda (1981). „Algoritmus aproximace lineárního času pro problém váženého vrcholového krytu“. J. Algoritmy. 2 (2): 198–203. doi:10.1016/0196-6774(81)90020-1.
- Goemans, M. X.; Williamson, D. P. (1997). "Metoda primal-dual pro aproximační algoritmy a její aplikace na problémy návrhu sítě". v Hochbaum, Dorit S. (vyd.). Aproximační algoritmy pro NP-těžké problémy. Nakladatelská společnost PWS. ISBN 0-534-94968-1..