Geometria obliczeniowa Lista dodatkowa, zadanie 1

Transkrypt

Geometria obliczeniowa Lista dodatkowa, zadanie 1
Geometria obliczeniowa
Lista dodatkowa, zadanie 1
28 stycznia 2009
Zadanie
Pokaż NP-zupełność następującego problemu:
Dane: Wielokąt prosty P i liczba naturalna k.
Wynik: tak wtw istnieje możliwość rozmieszczenia zbioru k strażników/punktów
S w P tak, że każdy punkt P jest widoczny z co najmniej jednego punktu z S.
Rozwiązanie
Nazwijmy nasz zbiór STRAZ, zatem para (P, k) należy do STRAZ wtedy i
tylko wtedy, jeśli wystarczy k strażników do inwigilacji całego wielokąta P .
Pokażemy redukcję z 3SATu, który jak wiemy jest NP-zupełny. Niech φ
będzie formułą zapisaną w 3-CNFie taką, że φ ma n zmiennych i k klauzul. Bez
straty ogólności możemy przyjąć, że każda z k klauzul to alternatywa dokładnie
3 literałów. (Gdyby bowiem było ich mniej, to możemy jeden z występujących
literałów napisać dwukrotnie lub trzykrotnie.) Dla φ zbudujemy wielokąt prosty
Pφ taki, że będzie zachodziła następująca równoważność:
φ ∈ 3SAT ⇐⇒ (Pφ , n + 2k + 1) ∈ ST RAZ.
Nasz wielokąt Pφ będzie to prostokąt, który na jednym z boków będzie miał
"doczepione" n gadżetów odpowiadających zmiennym, a na przeciwległym k
gadżetów odpowiadającym klauzulom, w dolnym rogu będzie miał jeszcze 2
wypustki.
W gadżetach zmiennych wyróżniamy punkty odpowiadające wartościowaniu
danych zmiennych (zaznaczone na rys. 1).
Odnogi literałów są ustawione pod takimi kątami by ich dolna krawędź była
widziana przez punkt odpowiedniego literału.
Na rysunku całego wielokąta gadżety doczepione na dolnej krawędzi symbolizują gadżety klauzul zdefiniowane wyżej. Dla uproszczenia rysunku postanowiłam zastąpić kieszenie o małej szerokości przez pojedyncze linie.
1
Rysunek 1: Gadżet zmiennej.
Rysunek 2: Gadżet klauzuli.
Rysunek 3: Poglądowy rysunek naszego wielokąta.
2
Pozostaje jeszcze pokazać, że rzeczywiście zachodzi powyższa równoważność.
Pokażemy zatem dwie implikacje.
• (⇒)
Załóżmy, że φ ∈ 3SAT , wobec czego istnieje wartościowanie σ takie, że
σ(φ) = T , weźmy to wartościowanie. Ustawiamy teraz n strażników w
gadżetach zmiennych na punktach odpowiadającym wartości zmiennej,
pozostałych 2k strażników ustawiamy w gadżetach dla klauzul tak, by
każdy z nich widział po jednej odnogi dla literału i jednej odnogi bocznej.
Ostatniego strażnika ustawiamy tak, by widział obie wypustki z dolnego
lewego rogu. Łatwo zauważyć, że każdy z punktów w wielokącie jest widziany przez któregoś strażnika, zatem wystarczy n + 2k + 1 strażników
do monitorowania całego wielokąta.
• (⇐)
Załóżmy, że wystarczy n + 2k + 1 strażników do monitorowania wielokąta. Zauważmy, że w każdym gadżecie klauzulowym musi stać co najmniej
2 strażników – żeby mogli obserwować odnogi boczne gadżetu. Z drugiej
strony, w każdym gadżecie dla zmiennej musi stać po jednym strażniku, żeby było widać obszar tego gadżetu. Ponadto jeden strażnik musi
pilnować odnóg w lewym dolnym kącie prostokąta. Wykorzystaliśmy już
n + 2k + 1 strażników, a w gadżecie każdej klauzuli nie zadbaliśmy jeszcze
o co najmniej jedną odnogę literałową. Nie jest ona widziana przez strażników klauzulowych, ani strażnika z rogu, zatem musi być widziana przez
strażnika z jego zmiennej.
Skonstruujmy na podstawie rozmieszczenia strażników wartościowanie spełniające σ. Dla każdej klauzuli C niech LC będzie literałem, którego odnoga jest widziana przez strażnika odpowiadającej mu zmiennej. Wtedy
kładziemy σ(LC ) = T . Jest to wartościowanie niesprzeczne, ponieważ odnogi są tak dobrane, aby żaden strażnik w gadżecie zmiennej nie widział
jednocześnie sprzecznych literałów w gadżetach klauzulowych. Rozszerzamy to wartościowanie do pełnego, które spełnia φ. Pokazaliśmy zatem, że
jeśli dla wielokąta P wystarczy n + 2k + 1 strażników, to formuła φ jest
spełnialna.
Wobec tego 3SAT ¬P ST RAZ, a zatem znalezienie wielomianowego algorytmu, który dla danego wielokąta wyznacza minimalną liczbę potrzebnych
strażników zdaje się być wysoce nieprawdopodobne.
3