151 lines
7.9 KiB
TeX
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}
|