PAA/2011.01.18.tex
2018-01-22 17:28:54 +01:00

151 lines
7.9 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$
}
\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 excplicite zostało 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.
\taskend
\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$
}
\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.
Sprawdzenia czy ich suma ich wag faktycznie jest mniejsza niż $p$ jest do wykonania w czasie liniowym. Aby sprawdzić 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 zredukowac 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ąznych 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 podejsciu, 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.
\taskend
\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$}
\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ść. Najprostrzym podejściem jest
narysowanie graf 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 rosyowania grafu planarengo 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 rosyowania grafu planarengo o 6 wierzchołkach}
\end{figure}
\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
\input{gfx/k3-3.tex}
\caption{Przykładowy graf nieważony $G$}
\end{figure}
\end{column}%
\begin{column}{.5}%
\begin{figure}[H]
\centering
\input{gfx/k5.tex}
\caption{Przykładowy graf ważony $G_W$}
\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 dodawac nowe póki jest planarny.
\end{shortcut}