420 lines
24 KiB
TeX
420 lines
24 KiB
TeX
%! TEX root = main.tex
|
|
|
|
\section{18.01.2011 kolokwium \#2}
|
|
|
|
\task
|
|
\textit{Problem Optymalnego Rozkroju} (\problem{POR}) zdefiniowany jest następująco ,,Dany jest arkusz blachy o wymiarach
|
|
$d \times sz$ oraz różne wielokąty wypukłe, które należy wykroić z tego arkusza. Czy można wybrać podzbiór
|
|
tych wielokątów i tak zaplanowac to wykrajanie aby odpady blachy były zerowe?'' W oparciu o problem \textit{Sumy Podzbioru} (\problem{SP})
|
|
udowodnij, że $\problem{POR} \in \NPC$
|
|
|
|
\begin{solution}
|
|
Tak jak w poprzednio, aby udowodnić, że problem należy do klasy \NP, powinniśmy sprawdzić czy jesteśmy w stanie sprawdzić poprawność rozwiązania
|
|
w czasie wielomianowym. Jeżeli za certyfikat przyjmiemy wielokąty w postaciu listy punktów i krawędzi to sprawdzenia można dokonać
|
|
w czasie wielomianowym - wystarczy sprawdzić, że żaden wierzchołek nie znajduje się w żadnym innym wielokącie a suma pól wielokątów
|
|
jest równa $sz \times d$. Obie te operacje są wykonywalne w czasie wielomianowym.
|
|
|
|
W zadaniu zostało \textit{explicite} podane, że musimy zredukować problem \textit{Sumy Podzbioru} do naszego problemu \problem{POR}, i faktycznie wybór ten jest nieprzypadkowy.
|
|
Na wstępie przypomnijmy: problem \textit{Sumy Podzbioru} to pytanie ,,Czy w danym (multi)zbiorze $A$ istnieje podzbiór $B$ ($B \subseteq A$) taki, że suma elementów $B$ jest równa $n$?''.
|
|
Naszkicujmy schemat $\alpha$-redukcji dla tego problemu.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/sp-por.tex}
|
|
\caption{Schemat $\alpha$-redukcji z \problem{SP} do \problem{POR}, gdzie $W$ to zbiór wielokątów.}
|
|
\end{figure}
|
|
|
|
Wyobraźmy sobie problem \problem{SP} jako problem \problem{POR} tylko w jednym wymiarze - mamy odcinki różnej długości,
|
|
pytanie brzmi czy jesteśmy z nich w stanie skonstruować odcinek o długości dokładnie $l$?
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/por-1.tex}
|
|
\caption{W tym wypadku multizbiór $A = \{ 1, 3, 2, 5, 4, 2, 1 \}$, a poszukiwana długość $n = 6$}
|
|
\end{figure}
|
|
|
|
Podejście takie powinno być dość intuicyjne i proste do wyprowadzenia. Aby przelożyć problem na 2 wymiary wystarczy, że
|
|
rozpatrzymy prostokąty o stałej szerokości równej szerokości blachy, i zmiennej długości.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/por-2.tex}
|
|
\caption{Ten sam multizbiór przedstawiony w formie problemu w 2 wymiarach.}
|
|
\end{figure}
|
|
|
|
Dla uproszeczenia, załóżmy że nasza długość $d = 1$, w takim wypadadku aby przekstałcić zbiór $A$ musimy utworzyć prostokąty o wymiarach $a_1 \times 1$, $a_2 \times 1$, itd.
|
|
Czyli z $\alpha$-redukcji utrzymalibyśmy następujące parametry: $W = \text{wygenerowane prostokąty}$, $sz = n$, $d = 1$. Jak dowiedliśmy powyżej, takie przekształcenie zachowuje problem.
|
|
\end{solution}
|
|
|
|
\task
|
|
Problem \textit{Ważonego Pokrycia Wierzchołkowego} (\problem{WPW}) zdefiniowany jest następująco: ,,Dany jest graf $G_w$ z obciążonymi
|
|
wierzchołkami (tj. wierzchołki mają wagi) oraz próg $p$; czy w $G_w$ istnieje pokrycie wierzchołkowe o łącznej wadze $\leq p$.
|
|
Udowodnij, że $\problem{WPW} \in \NPC$ \label{task:2:wpw}
|
|
|
|
\begin{solution}
|
|
Tak jak zwykle, zacznijmy od udowodnienia, że problem w istocie należy do klasy $\NP$. Potrzebujemy więc jakiegoś certyfikatu, który
|
|
mógłby potwierdzić, że odpowiedź na to pytanie jest poprawna - w tym wypadku oczywistym zdaje się być lista wierzchołków $V$ stanowiących to pokrycie.
|
|
Sprawdzenie czy suma ich wag faktycznie jest mniejsza niż $p$ jest do wykonania w czasie liniowym. Aby sprawdzić czy pokrycie faktycznie
|
|
pokrywa wszystkie krawędzie wystarczy przeiterować po wszystkich wierzchołkach usuwając z grafu krawędzie zawierające ten wierzchołek, co jest wykonywalne
|
|
w czasie $O(m \cdot n)$. Jeżeli po tych operacjach uzyskamy graf pusty - to odpowiedź była poprawna.
|
|
|
|
Nie będzie zaskoczeniem, że najbliższym problemem, który możemy zredukować do \problem{WPW} będzie problem \textit{Pokrycia Wierzchołkowego} (\problem{PW}).
|
|
Problem \problem{WPW} jest w zasadzie uogólnionym problemem \problem{PW}. Na ogół redukcja problemów szczegółowych do uogólnionych jest dużo
|
|
łatwiejsza niż problemów ze sobą niepowiązanych bądź przypadku ogólnego do szczególnego.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/pw-wpw.tex}
|
|
\caption{Schemat $\alpha$-redukcji z problemu \problem{PW} do \problem{WPW}}
|
|
\end{figure}
|
|
|
|
\begin{minipage}{.5\linewidth}%
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/wpw-1.tex}
|
|
\caption{Przykładowy graf nieważony $G$}
|
|
\end{figure}
|
|
\end{minipage}%
|
|
\begin{minipage}{.5\linewidth}%
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/wpw-2.tex}
|
|
\caption{Przykładowy graf ważony $G_W$}
|
|
\end{figure}
|
|
\end{minipage}
|
|
|
|
Można powiedzieć, że - w pewnym sensie - w grafie nieważonym wszystkie wierzchołki są równie ważne, a w grafie ważonym niektóre są ważniejsze.
|
|
Biorąc pod uwagę to podejście aby uzyskać graf ważony z grafu nieważonego o podobnych właściwościach należy wszystkim wierzchołkom nadać te samą
|
|
wagę $w$. Przy takim podejściu, jeżeli w grafie $G$ pokrycie stanowiło $n$ wierzchołków, to w grafie $G_W$ takie samo pokrycie będzie miało
|
|
łączną wagę $p = n \cdot w$ a $n = \frac{p}{w}$. Dla uproszczenia możemy przyjąć, że $w = 1$ i wtedy uzyskamy $p = n$.
|
|
|
|
Przypisania wagi do wierzchołków możemy dokonać w czasie liniowym, wyliczenie $p$ jest w zasadzie darmowe. Ponieważ uzyskaliśmy, że dla tak skonstruowanego
|
|
grafu $p = n$ mamy pewność, że taka $\alpha$-redukcja zachowuje problem.
|
|
\end{solution}
|
|
|
|
\task{Graf planarny jest maksymalny, gdy dodanie jakiejkolwiek krawędzi łączącej niesąsiednie wierzchołki psuje jego
|
|
planarność. \textit{Maksymalny Graf Planarny} (\textbf{MGP}) jest 3-barwny wtedy, gdy jest eulerowski.}
|
|
\subtask{Narysuj \textbf{MGP} o 5 wierzchołkach i pokoloruj go optymalnie.}
|
|
\subtask{Narysuj \textbf{MGP} o 6 wierzchołkach i pokoloruj go optymalnie.}
|
|
\subtask{Przyjmując, że \textbf{MGP} dany jest w postaci macierzy sąsiedztwa wierzchołków, naszkicuj algorytm dla
|
|
wyznaczania jego liczby chromatycznej i oszacuj jego złożonosć przy użyciu symbolu $\Theta$}
|
|
|
|
\begin{solution}
|
|
Przypomnijmy - graf planarny to graf, w którym nie istnieją przecinające się krawędzie. Naszym zadaniem jest narysować
|
|
taki graf planarny że ma 5 lub 6 wierzchołków oraz dodanie krawędzi niszczyłoby planarność. Najprostszym podejściem jest
|
|
narysowanie grafu pustego (tj. wierzchołków tak jakbyśmy chcieli rysować wielokąt foremny) i dorysowywać kolejno:
|
|
|
|
\begin{enumerate}[a)]
|
|
\item Cykl łączący wszystkie wierzchołki
|
|
\item W środku powstałego wielokąta łączymy niepołączone wierzchołki "zygzakiem"
|
|
\item Pozostałe wierzchołki łączymy na zewnątrz.
|
|
\end{enumerate}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/mgp-5.tex}
|
|
\caption{Kolejne etapy rysoowania grafu planarnego o 5 wierzchołkach}
|
|
\end{figure}
|
|
|
|
Analogicznie możemy postąpić dla grafu o 6 wierzchołkach, uzyskując:
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/mgp-6.tex}
|
|
\caption{Kolejne etapy rysowania grafu planarnego o 6 wierzchołkach}
|
|
\end{figure}
|
|
Nie są to oczywiście jedyne możliwe (a na pewno nie najładniejsze) maksymalne grafy planarne,
|
|
jednak są one stosunkowo proste w narysowaniu i wymyśleniu.
|
|
|
|
\begin{shortcut}
|
|
Twierdzenie Kuratowskiego mówi nam, że graf jest planarny wtedy i tylko wtedy kiedy nie zawiera podgrafu $K_5$
|
|
i $K_{3,3}$ (dwudzielnego 3 na 3).
|
|
|
|
\begin{column}{.5}%
|
|
\begin{figure}[H]
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\input{gfx/k3-3.tex}
|
|
\end{tikzpicture}
|
|
\caption{Graf $K_{3,3}$}
|
|
\end{figure}
|
|
\end{column}%
|
|
\begin{column}{.5}%
|
|
\begin{figure}[H]
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\input{gfx/k5.tex}
|
|
\end{tikzpicture}
|
|
\caption{Graf $K_{5}$}
|
|
\end{figure}
|
|
\end{column}
|
|
|
|
Pasuje nam to idealnie do zadania, ponieważ $K_5$ ma 5 wierzchołków a $K_{3,3}$ 6.
|
|
Wystarczy zatem z $K_5$ usunąć krawędź, a z $K_{3,3}$ usunąć jedną krawędź i dodawać nowe póki jest planarny.
|
|
\end{shortcut}
|
|
|
|
Graf jest eulerowski (czyli posiada cykl eulera - pozwalający przejść po wszystkich krawędziach dokładnie raz),
|
|
tylko jeżeli wszystkie wierzchołki są stopni parzystych. Jak widać w pierwszym grafie są 2 wierzchołki stopnia 3 a w drugim
|
|
grafie mamy 2 pary wierzchołków o stopniach nieparzystych - zatem żaden graf nie jest eulerowski - a co za tym idzie
|
|
potrzebują one 4 kolorów aby je pokolorować. Wiemy to z twierdzenia o 4 kolorach, zgodnie z którym każdy graf planarny
|
|
można pokolorować maksymalnie 4 kolorami ($\chi(G_P) \leq 4$).
|
|
|
|
Jak wiadomo minimalne kolorowanie grafów jest problemem \NP-trudnym, zatem trudno przedstawić prosty algorytm
|
|
który pozwoliłby poprawnie pokolorować taki graf na kartce. Osobiście proponowałbym zaczać kolorowanie
|
|
od wierzchołka o największym stopniu, nadać mu pierwszy kolor. W tym wypadku sytuacja jest dla nas
|
|
o tyle korzystna, że znamy ilość kolorów - możemy zatem łatwo zweryfikować czy pokolorowaliśmy graf poprawnie.
|
|
|
|
\begin{figure}[H]
|
|
\begin{column}{.5}%
|
|
\centering
|
|
\input{gfx/mgp-5c.tex}
|
|
\end{column}%
|
|
\begin{column}{.5}%
|
|
\centering
|
|
\input{gfx/mgp-6c.tex}
|
|
\end{column}
|
|
\caption{Kolorowanie grafów}
|
|
\end{figure}
|
|
|
|
Z poprzedniego zadania wiemy, że $\chi(G_\text{MGP}) = 1$ tylko kiedy graf jest grafem pustym, $\chi(G_\text{MGP}) = 2$ tylko gdy graf jest
|
|
dwudzielny. Z zadania wiemy, że $\chi(G_\text{MGP}) = 3$ tylko gdy graf jest planarny, a z twierdzenia o 4 kolorach wiemy, że
|
|
$\chi(G_\text{MGP}) \leq 4$. Możemy zatem ułożyc bardzo prosty algorym:
|
|
|
|
\begin{algorithm}[H]
|
|
\caption{Algorytm określający liczbę chromatyczną dla \textbf{MGP}}
|
|
\begin{algorithmic}[1]
|
|
\Require
|
|
\Statex $G$ - Maksymalny Graf Planarny
|
|
\Statex
|
|
\If {$m(G) = 0$} \Comment{Brak krawędzi - $\Theta(n^2)$}
|
|
\State \Return 1
|
|
\ElsIf {$G$ - dwudzielny} \Comment{DFS lub BFS $O(m+n)$}
|
|
\State \Return 2
|
|
\ElsIf {$G$ - eulerowski} \Comment{Sprawdzenie stopni wszystkich wierzchołków - $\Theta(n^2)$}
|
|
\State \Return 3
|
|
\Else
|
|
\State \Return 4 \Comment{Z twierdzenia o 4 kolorach}
|
|
\EndIf
|
|
\end{algorithmic}
|
|
\end{algorithm}
|
|
|
|
Złożoność $\Theta(n^2)$ wynika z tego, że graf jest zapisany w macierzy sąsiedztwa. Policzenie wszystkich krawędzi
|
|
wymaga przejścia po wszystkich komórkach w macierzy a tych jest $n^2$.
|
|
\end{solution}
|
|
|
|
\task{Problem \textit{Maximum Edge Coloring} $\problem{MEC}(G, k)$ zdefiniowany jest następująco:
|
|
,,Dane są: graf $G$ i liczba $k \in \mathbb{N}$; znaleźć spójny podgraf $G' \subset G$ zawierający największą możliwą liczbę krawędzi, który jest k-barwny krawędziowo.''}
|
|
\subtask{Podaj rozwiązanie problemu $\problem{MEC}(C_7, 2)$}
|
|
\subtask{Pokaż, że $\problem{MEC}(G, 2)$} jest \NP-trudny
|
|
|
|
\begin{solution}
|
|
Spróbujmy pokolorować krawędziowo graf $C_7$, aby tego dokonać wybierzmy sobie dowolną pierwszą krawędź i pokolorujmy ją
|
|
na dany kolor, oznaczmy go \#1. Krawędzi sąsiadujące musimy więc pokolorować na inny kolor - \#2. Przechodzimy do następnej
|
|
krawędzi (kierunek dowolny, ważne aby iść cały czas w tym samym), krawędź ta ma kolor \#2, więc następna musi być \#1.
|
|
Postępując w ten sposób na koniec uzyskamy poniższe (niepoprawne) kolorowanie krawędziowe grafu $C_7$.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/mec-1.tex}
|
|
\end{figure}
|
|
|
|
Dla tej ostatniej krawędzi potrzebowalibyśmy jakiegoś koloru \#3 - ale to by znaczyło, że graf jest 3-barwny
|
|
krawędziowo co stałoby w sprzeczności z wymaganiami jakie postawiliśmy. Nie pozostaje nam więc nic innego jak usunąć
|
|
te niepasującą krawędź uzyskując w ten sposób ścieżkę o 6 krawędziach, ale 7 wierzchołkach czyli $P_7$.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/mec-2.tex}
|
|
\caption{Rozwiązanie problemu $\problem{MEC}(C_7, 2) = P_7$}
|
|
\end{figure}
|
|
|
|
Poprawne pokolorowanie krawędzi wymaga aby wszystkie krawędzie współdzielące wierzchołek miały inny kolor, zatem
|
|
jasnym jest, że minimalną liczbą wymaganą do pokolorowania krawędziowo grafu $G$ jest $\Delta(G)$. Dodatkowo Wizing
|
|
udowodnił, że liczba ta nigdy nie będzie większa niż $\Delta(G) + 1$. Z pierwszego faktu oraz tego, że $G'$ musi być
|
|
spójny możemy wywnioskować, że dla problemu $\problem{MEC}(G, 2)$ jedynymi możliwymi stopniami wierzchołków są 1 i 2.
|
|
Czyli $G'$ jest ścieżką lub cyklem przechodzącymi przez wszystkie wierzchołki - czyli odpowiednio ścieżki hamiltona
|
|
bądź cyklu hamiltona. Znalezienie zarówno ścieżki jak i cyklu hamiltona jest problemem \NP-trudnym, zatem
|
|
$\problem{MEC}(G, 2)$ będący z nim tożsamy też jest \NP-trudny.
|
|
\end{solution}
|
|
|
|
\task{Dany jest zbiór $n$ różnych liczb naturalnych $A = \{a_1, ..., a_n\}$. Wiadomo, że problem polegający na
|
|
sprawdzeniu ,,czy zbiór $A$ można podzielić na sumę dwóch rozłącznych zbiorów $B$ i $C$ (tzn. takich, że
|
|
$B \cup C = A$ i $B \cap C = \emptyset$) o równych sumach elementów'' jest \NPC. Czy pozostanie on \NPC czy też stanie
|
|
się wielomianowy przy następujących modyfikacjach?}
|
|
\subtask{$n$ jest podzielne przez $3$}
|
|
\subtask{$A$ to 33 kolejne wyrazy ciągu Fibonacciego}
|
|
\subtask{wszystkie liczby w $A$ są podzielne przez 3}
|
|
\subtask{sumy elementów zbiorów $B$ i $C$ nie muszą być równe, lecz mogą się różnić o co najwyżej 3.}
|
|
\subtask{sumy te muszą się różnić o więcej niż 3}
|
|
\subtask{rozpatrujemy 3 zbiory zamiast 2}
|
|
|
|
\begin{solution}
|
|
Na wstępie oznaczmy nasz problem przez $\Pi$, a kolejne problemy przez $\Pi_a$ itd. Do tego $A_a$ będzie stanowić zbiór
|
|
liczb dla modyfikacji a, a $n_a$ wielkość tego zbioru. Problem $\Pi$ to nic innego jak problem podziału zbioru.
|
|
|
|
Aby udowodnić że $\Pi_a \in \NPC$ wystarczy zredukować do niego problem $\Pi$, jedyne różnica to to, że w $\Pi_a$ liczba
|
|
elementów musi być wielokrotnością 3. Zatem dla każdego elementu w zbiorze $A$ w zbiorze $A_a$ tworzymy 3 elementy:
|
|
$a_i, 0, 0$ dzięki temu będziemy wiedzieli, że $n_a = 3n$ jest podzielna przez 3 a zera nie wpływają na sumę zatem
|
|
nie zmieniają istoty problemu. Co za tym idzie $\Pi_a \in \NPC$.
|
|
|
|
W $\Pi_b$ z góry znamy zbiór A oraz jego wielkość - problem zatem jest trywialny - $\Pi_b \in \problem{TRY}$
|
|
|
|
$\Pi_c$ wiemy, że wszystkie liczby są podzielne przez 3 czyli, dla każdego elementu $a_i$ należącego do $A$ istnieje taka
|
|
liczba $k_{a_i} \in \mathbb{Z}$, że $a_i = 3k_{a_i}$. Problem dotyczy znalezienia takich rozłącznych zbiorów $B$ i $C$,
|
|
że:
|
|
\begin{equation}
|
|
\sum_{b \in B} b = \sum_{c \in C} c
|
|
\end{equation}
|
|
|
|
ponieważ $B \subset A, C \subset A$ możemy zapisać
|
|
\begin{equation*}
|
|
\sum_{b \in B} 3k_b = \sum_{c \in C} 3k_c
|
|
\end{equation*}
|
|
\begin{equation*}
|
|
3\sum_{b \in B} k_b = 3\sum_{c \in C} k_c
|
|
\end{equation*}
|
|
\begin{equation*}
|
|
\sum_{b \in B} k_b = \sum_{c \in C} k_c
|
|
\end{equation*}
|
|
|
|
Czyli uzyskaliśmy problem analogiczny do $\Pi$. $\Pi_c \in \NPC$
|
|
|
|
Ponieważ wiemy, że zbiór $A$ składa się tylko z liczb naturalnych, to wiemy, że jeżeli sumy zbiorów $A$ i $B$ nie są
|
|
równe to różnią się o co najmniej 1. Jeżeli zatem przemnożymy wszystkie elementy zbioru $A$ przez 4, co zgodnie z
|
|
powyższym wnioskowaniem nie wpływa na problem to będziemy mieli pewność, że różnica ta wyniesie minimum 4. Co za tym
|
|
idzie odpowiadając na problem $\Pi$ będziemy w stanie uzyskać odpowiedź na $\Pi_a$. $\Pi_d \in \NPC$.
|
|
|
|
W zbiorze $A$ nie występują liczby ujemne, zatem wystarczy że $B = \{ \min A \}$ oraz $C = A - B$ i uzyskamy
|
|
największą możliwą różnicę między zbiorami $B$ i $C$ - wystarczy teraz sprawdzić, czy różnica ta jest większa niż 3.
|
|
Innym podejściem jest przyjęcie że $B = \emptyset$, a co za tym idzie suma elementów w nim wynosi 0. Z takiej definicji
|
|
wynika że $A = C$ zatem jeżeli tylko suma wszystkich elementów w $A$ jest większa niż 3 możemy utworzyć takie ,,zbiory''.
|
|
$\Pi_e \in \P$.
|
|
|
|
Rozpatraując problem na 3 zbiorach czyli - problem $\Pi_f$ - szukamy takich rozłącznych zbiorów $B, C, D \subset A$, że
|
|
\begin{equation}
|
|
\sum_{b \in B} b = \sum_{c \in C} c = \sum_{d \in D} d = \sigma_f
|
|
\end{equation}
|
|
|
|
Ponieważ zbiory są rozłączone:
|
|
\begin{equation*}
|
|
\sum_{b \in B} b + \sum_{c \in C} c + \sum_{d \in D} d = \sum_{a \in A} a = S_f \Rightarrow S_f = 3\sigma_f
|
|
\end{equation*}
|
|
|
|
W problemie $\Pi$ mieliśmy analogiczne zależności
|
|
\begin{equation*}
|
|
\sum_{b \in B} b = \sum_{c \in C} c = \sigma
|
|
\end{equation*}
|
|
\begin{equation*}
|
|
\sum_{b \in B} b + \sum_{c \in C} c = \sum_{a \in A} a = S \Rightarrow S = 2\sigma
|
|
\end{equation*}
|
|
|
|
Nawet nie znając dokładnie zbiorów $A$ i $B$ wiemy, że ich sumy muszą wynosić $\sigma = \frac{S}{2}$. W wypadku problemu $\Pi_f$
|
|
sumy muszą wynosić $\sigma_f = \frac{S_f}{3}$. Stąd aby przeprowadzić $\alpha$-redukcję problemu $\Pi$ do $\Pi_f$ do
|
|
zbioru $A$ wystarczy dodać 1 element wynoszący $\frac{S}{2}$. $\Pi_f \in \NPC$.
|
|
|
|
Z definicji wszystkie problemy \NP da się zredukować do \NPC. Dodatkowo wiemy, że
|
|
$\problem{TRY} \subseteq \P \subseteq \NP$. Stąd możemy naszkicować graf relacji $\alpha$ dla problemów.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/ss-redukcje.tex}
|
|
\caption{Graf relacji redukcji $\alpha$ między modyfikacjami problemu $\Pi$}
|
|
\end{figure}
|
|
\end{solution}
|
|
|
|
\task{Problem \textit{Maksymalizacji Liczby Zapamiętanych Programów} (\problem{MLZP}) określony jest następująco:
|
|
,,Dany jest zbiór $n$ programów o długościach $I_1, I_2, ..., I_n$ i 2 dyskietki o pojemności $L$ każda. Znaleźć
|
|
upakowanie jak największej liczby programów na tych dyskietkach''. Jak wiadomo, algorytm \textit{Shortest-First}
|
|
(\problem{SF}) dla problemu \problem{MLZP} myli się o co najwyżej program i polega na tym, że dyskietki zapełniamy
|
|
w kolejności od najkrótszego do najdłuższego programu. Pokaż, że:}
|
|
|
|
\subtask {\problem{SF} jest $\frac{4}{3}$-aproksymacyjny}
|
|
\subtask {dla \problem{MLZP} nie istnieje schemat FPTAS, chyba że $\P = \NP$}
|
|
|
|
\begin{solution}
|
|
Problem \problem{MLZP}, zgodnie z tytułem, jest problemem maksymalizacyjnym. Zatem wiemy, że $A_{opt} \geq A$, gdzie
|
|
$A_{opt}$ to odpowiedź optymalna, a $A$ to odpowiedź naszego algorytmu. Dodatkowo wiemy, że $A, A_{opt} \in \mathbb{N}$
|
|
oraz, że algorytm \problem{SF} jest $1$-absolutnie aproksymacyjny czyli:
|
|
|
|
\begin{equation}
|
|
|A_\text{opt} - A| \leq 1 \overset{\text{maksymalizacyjny}}{\implies} A_\text{opt} - A \leq 1 \implies A \geq A_\text{opt} - 1
|
|
\end{equation}
|
|
|
|
z tych 2 faktów
|
|
wiemy, że A jest zawarta między dwiema kolejnymi liczbami naturalnymi począwszy od $A_\text{opt} - 1$:
|
|
|
|
\begin{equation*}
|
|
A, A_\text{opt} \in \mathbb N \land A_\text{opt} \geq A \geq A_\text{opt} - 1 \Rightarrow A = A_\text{opt} \lor A = A_\text{opt} - 1
|
|
\end{equation*}
|
|
|
|
Dodatkowo zauważamy, że jeżeli jest 1 program to algorytm zawsze zwróci wynik dokładny - zmieścił się na dyskietce
|
|
albo nie. Dla 2 programów podobnie. Dla 3 natomiast, nie jest to już takie oczywiste, dla ułatwienia
|
|
późniejszego zapisu uznajmy, że programy są posortowane rosnąco, tj
|
|
\begin{equation}\label{eqn:2011.6:assumption}
|
|
I_1 \leq I_2 \leq I_3
|
|
\end{equation}
|
|
|
|
Postarajmy się więc znaleźć kontrprzykład - bądź udowodnić, że nie może on istnieć. Ponieważ liczba programów wynosi
|
|
zaledwie 3 możemy bez problemu rozważyć wszystkie możliwe kombinacje programów. Wiemy, że na pierwszej dyskietce na
|
|
pewno znajdzie sie najmniejszy program o rozmiarze $I_1$ , jeżeli $I_1 + I_2 > L$ to program $I_2$ zostanie umieszczony
|
|
na drugiej dyskietce i na pewno nie starczy już miejsca na 3 program (zgodnie z \eqref{eqn:2011.6:assumption}
|
|
$I_1 + I_2 > L \Rightarrow I_2 + I_3 > L$). Ponieważ tym bardziej $I_1 + I_3 > I_1 + I_2$ to wiemy, że nie może
|
|
istnieć lepsze ułożenie - wynik zatem jest dokładny. Jeżeli programy 1 i 2 mieszczą się na jednej dyskietce to tak jak
|
|
w przypadku posiadania jednego programu - algorym zwróci 2 tylko jeżeli program nie mieści się na dyskietce - zatem nie
|
|
istnieje kontrprzykład a algorytm \problem{SF} rozwiązuje problem \problem{MLZP} dokładnie.
|
|
|
|
Dla 4 dyskietek postarajmy się znaleźć kontrprzykład. Podobnie jak poprzednio uznajmy, że programy są indeksowane
|
|
rosnąco. Potrzebujemy takich danych, dla których algorytm zwróci 3 a odpowiedź optymalna wyniesie 4. Ponieważ
|
|
algorytm bierze liczby w kolejności rosnącej zróbmy tak, że dyskietkę możemy wypełnić najmniejszym i największym
|
|
programem: $L = I_1 + I_4$ a drugą programami środkowymi: $I_2 + I_3 \leq L$. Z naszej definicji wynika, że \problem{SF}
|
|
będzie próbował wrzucić jak najwięcej programów na pierwszą dyskietkę biorąc po kolei najmniejsze programy. Nie dopuśćmy
|
|
do wrzucenia 3 programów na dyskietkę pierwszą dobierając rozmiar $I_2$ i $I_3$ tak, że $I_1 + I_2 + I_3 > L$.
|
|
Ponieważ $I_3 > I_1$ a $I_1 + I_4 = L$ to na pewno $I_3 + I_4$ (czyli dwa pozostałe programy) nie zmieszczą się razem
|
|
na jednej dyskietce. W ten sposób minimalne ułożenie to $\{\{I_1, I_4\}, \{I_2, I_3\}\}$ a \problem{SF} znajdize tylko
|
|
$\set{\set{I_1, I_2}, \set{I_3}}$. Przykładowe rozmiary programów dla $L = 5$ to $\set{1, 2, 3, 4}$.
|
|
|
|
Zatem dla $n = 4$ algorytm ten daje wynik $\frac{4}{3}$-przybliżony, a w ogólności dla $n$ - $\frac{n+1}{n}$-przybliżony.
|
|
Ponieważ $\frac{x+1}{x}$ jest funkcją ściśle malejącą dla $x > 3$ to $\frac{4}{3}$ jest największą możliwą jej
|
|
wartością. Co za tym idzie algorytm ten jest $\frac{4}{3}$-aproksymacyjny.
|
|
|
|
Przed udowodnieniem, że schemat redukcji wielomianowej nie może istnieć udowodnijmy, że problem jest \NP-trudny,
|
|
ponieważ w zasadzie nie zostało to nigdzie podane wprost.
|
|
|
|
Aby udowodnić że dany problem optymalizacyjny jest \NP-trudny należy udowodnić, że w wersji decyzyjnej ten problem byłby
|
|
\NPC. Wersja decyzyjna może brzmieć następująco: ,,Czy na 2 dyskietkach o pojemności $L$ da się zapisać $k$ programów o
|
|
wielkościach $I_1, I_2, ..., I_n$?''. Mając do dyspozycji zbiór liczb i 2 pojemniki powinniśmy powiązać ten problem z
|
|
problemem \textit{Podziału Zbioru} (\problem{PZ}). Spróbujmy przeprowadzić $\alpha$-redukcję tego problemu do \problem{MLZP}.
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\input{gfx/pz-mlzp.tex}
|
|
\caption{Schemat $\alpha$-redukcji z \problem{PZ} do \problem{MLPZ}}
|
|
\end{figure}
|
|
|
|
W jednym z poprzednich zadań pokazaliśmy, że jeżeli istnieje taki podział zbioru $I$ to suma jednego podzbioru musi być
|
|
równa $\frac{1}{2}\sum_{i \in I}i$ a dwa powstałe podzbiory muszą zawierać wszystkie elementy zbioru $I$. W takim razie
|
|
rozdzielamy wszystkie elementy (których jest $k = |I|$) zbioru $I$ do dwóch ,,pojemników'' o wielkościach
|
|
$L = \frac{1}{2}\sum_{i \in I}i$. Ponieważ przedstawiając problem z innej perspektywy otrzymaliśmy problem tożsamy z
|
|
\problem{MLZP}, to nie ma potrzeby dokładniejszego dowodzenia poprawności przeprowadzonej redukcji - zatem
|
|
\problem{PZ}$\ \alpha\ \mathtt{MLZP_d}$, czyli \problem{MLZP} jest \NP-trudny.
|
|
|
|
Tak jak poprzednio aby udowodnić, że schemat (F)PTAS może istnieć dla tego algorytmu tylko gdy $\P = \NP$ wystarczy
|
|
udowodnić, że dla każdych danych wejściowych istnieje taki $\varepsilon$, że przybliżenie daje nam dokładny wynik. Ponieważ
|
|
problem jest maksymalizacyjny otrzymamy:
|
|
\begin{equation}\label{eqn:2011:6:fptas}
|
|
\frac {A_\text{opt}}{A} \leq 1 + \varepsilon \land A \leq A_\text{opt} \iff A \leq A_\text{opt} \leq A + \varepsilon A
|
|
\end{equation}
|
|
|
|
Ponieważ $A, A_\text{opt} \in \mathbb N$ to pod warunkiem, że $A\varepsilon < 1$ nierówność \eqref{eqn:2011:6:fptas}
|
|
zredukuje się do równania $A = A_\text{opt}$, czyli uzyskamy wynik dokładny w czasie wielomianowym. Oczywistym jest,
|
|
że odpowiedź na problem nie może być większa niż $n$ - mając 4 programy nie możemy zapisać ich 8, brakłoby
|
|
nam programów. Stąd otrzymujemy
|
|
\begin{equation*}
|
|
A \leq n \iff \frac{1}{n}A \leq 1
|
|
\end{equation*}
|
|
|
|
Czyli jeżeli tylko $\varepsilon < \frac{1}{n}$ to otrzymany wynik będzie wynikiem dokładnym uzyskanym w czasie
|
|
wielomianowym (zgodnie z definicją schamatu (F)PTAS) czyli rozwiązalibyśmy problem \NPC w czasie wielomianowym
|
|
co implikowałoby, że $\P = \NP$.
|
|
|
|
\end{solution}
|