Poprawki natury typograficznej #1

Merged
kadet merged 1 commits from :master into master 2018-02-24 14:17:57 +01:00
5 changed files with 221 additions and 217 deletions

View File

@ -3,19 +3,19 @@
\section{18.01.2011 kolokwium \#2} \section{18.01.2011 kolokwium \#2}
\task{ \task{
\textit{Problem Optymalnego Rozkroju} (\problem{POR}) zdefiniowany jest następująco ,,Dany jest arkusz blachy o wymiarach \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 $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}) 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$ udowodnij, że $\problem{POR} \in \NPC$
} }
\solution \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 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. 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 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. 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. 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$?''. 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. Naszkicujmy schemat $\alpha$-redukcji dla tego problemu.
@ -25,7 +25,7 @@ Naszkicujmy schemat $\alpha$-redukcji dla tego problemu.
\caption{Schemat $\alpha$-redukcji z \problem{SP} do \problem{POR}, gdzie $W$ to zbiór wielokątów.} \caption{Schemat $\alpha$-redukcji z \problem{SP} do \problem{POR}, gdzie $W$ to zbiór wielokątów.}
\end{figure} \end{figure}
Wyobraźmy sobie problem \problem{SP} jako problem \problem{POR} tylko w jednym wymiarze - mamy odcinki różnej długości, 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$? pytanie brzmi czy jesteśmy z nich w stanie skonstruować odcinek o długości dokładnie $l$?
\begin{figure}[H] \begin{figure}[H]
@ -34,7 +34,7 @@ pytanie brzmi czy jesteśmy z nich w stanie skonstruować odcinek o długości d
\caption{W tym wypadku multizbiór $A = \{ 1, 3, 2, 5, 4, 2, 1 \}$, a poszukiwana długość $n = 6$} \caption{W tym wypadku multizbiór $A = \{ 1, 3, 2, 5, 4, 2, 1 \}$, a poszukiwana długość $n = 6$}
\end{figure} \end{figure}
Podejście takie powinno być dość intuicyjne i proste do wyprowadzenia. Aby przelożyć problem na 2 wymiary wystarczy, że 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. rozpatrzymy prostokąty o stałej szerokości równej szerokości blachy, i zmiennej długości.
\begin{figure}[H] \begin{figure}[H]
@ -48,21 +48,21 @@ Czyli z $\alpha$-redukcji utrzymalibyśmy następujące parametry: $W = \text{wy
\taskend \taskend
\task{ \task{
Problem \textit{Ważonego Pokrycia Wierzchołkowego} (\problem{WPW}) zdefiniowany jest następująco: ,,Dany jest graf $G_w$ z obciążonymi 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$. 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$ Udowodnij, że $\problem{WPW} \in \NPC$
} }
\solution \solution
Tak jak zwykle, zacznijmy od udowodnienia, że problem w istocie należy do klasy $\NP$. Potrzebujemy więc jakiegoś certyfikatu, który 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. 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 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 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. 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}). 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 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. łatwiejsza niż problemów ze sobą niepowiązanych bądź przypadku ogólnego do szczególnego.
\begin{figure}[H] \begin{figure}[H]
\centering \centering
@ -86,20 +86,20 @@ Problem \problem{WPW} jest w zasadzie uogólnionym problemem \problem{PW}. Na og
\end{minipage} \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. 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ą 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 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$. łą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 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. grafu $p = n$ mamy pewność, że taka $\alpha$-redukcja zachowuje problem.
\taskend \taskend
\task{Graf planarny jest maksymalny, gdy dodanie jakiejkolwiek krawędzi łączącej niesąsiednie wierzchołki psuje jego \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.} 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 5 wierzchołkach i pokoloruj go optymalnie.}
\subtask{Narysuj \textbf{MGP} o 6 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 \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$} wyznaczania jego liczby chromatycznej i oszacuj jego złożonosć przy użyciu symbolu $\Theta$}
\solution \solution
@ -125,13 +125,13 @@ Analogicznie możemy postąpić dla grafu o 6 wierzchołkach, uzyskując:
\input{gfx/mgp-6.tex} \input{gfx/mgp-6.tex}
\caption{Kolejne etapy rysowania grafu planarnego o 6 wierzchołkach} \caption{Kolejne etapy rysowania grafu planarnego o 6 wierzchołkach}
\end{figure} \end{figure}
Nie są to oczywiście jedyne możliwe (a na pewno nie najładniejsze) maksymalne grafy planarne, 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. jednak są one stosunkowo proste w narysowaniu i wymyśleniu.
\begin{shortcut} \begin{shortcut}
Twierdzenie Kuratowskiego mówi nam, że graf jest planarny wtedy i tylko wtedy kiedy nie zawiera podgrafu $K_5$ 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). i $K_{3,3}$ (dwudzielnego 3 na 3).
\begin{column}{.5}% \begin{column}{.5}%
\begin{figure}[H] \begin{figure}[H]
\centering \centering
@ -147,13 +147,13 @@ jednak są one stosunkowo proste w narysowaniu i wymyśleniu.
\end{figure} \end{figure}
\end{column} \end{column}
Pasuje nam to idealnie do zadania, ponieważ $K_5$ ma 5 wierzchołków a $K_{3,3}$ 6. 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. 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} \end{shortcut}
Graf jest eulerowski (czyli posiada cykl eulera - pozwalający przejść po wszystkich krawędziach dokładnie raz), 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 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 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 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$). można pokolorować maksymalnie 4 kolorami ($\chi(G_P) \leq 4$).
@ -174,9 +174,9 @@ o tyle korzystna, że znamy ilość kolorów - możemy zatem łatwo zweryfikowa
\caption{Kolorowanie grafów} \caption{Kolorowanie grafów}
\end{figure} \end{figure}
Z poprzedniego zadania wiemy, że $\chi(G_{MGP}) = 1$ tylko kiedy graf jest grafem pustym, $\chi(G_{MGP}) = 2$ tylko gdy graf jest 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_{MGP}) = 3$ tylko gdy graf jest planarny, a z twierdzenia o 4 kolorach wiemy, że 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_{MGP}) \leq 4$. Możemy zatem ułożyc bardzo prosty algorym: $\chi(G_\text{MGP}) \leq 4$. Możemy zatem ułożyc bardzo prosty algorym:
\begin{algorithm}[H] \begin{algorithm}[H]
\caption{Algorytm określający liczbę chromatyczną dla \textbf{MGP}} \caption{Algorytm określający liczbę chromatyczną dla \textbf{MGP}}
@ -226,17 +226,17 @@ te niepasującą krawędź uzyskując w ten sposób ścieżkę o 6 krawędziach,
\caption{Rozwiązanie problemu $\problem{MEC}(C_7, 2) = P_7$} \caption{Rozwiązanie problemu $\problem{MEC}(C_7, 2) = P_7$}
\end{figure} \end{figure}
Poprawne pokolorowanie krawędzi wymaga aby wszystkie krawędzie współdzielące wierzchołek miały inny kolor, zatem 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 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ć 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. 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 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 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. $\problem{MEC}(G, 2)$ będący z nim tożsamy też jest \NP-trudny.
\task{Dany jest zbiór $n$ różnych liczb naturalnych $A = \{a_1, ..., a_n\}$. Wiadomo, że problem polegający na \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 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 $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?} się wielomianowy przy następujących modyfikacjach?}
\subtask{$n$ jest podzielne przez $3$} \subtask{$n$ jest podzielne przez $3$}
\subtask{$A$ to 33 kolejne wyrazy ciągu Fibonacciego} \subtask{$A$ to 33 kolejne wyrazy ciągu Fibonacciego}
@ -250,13 +250,13 @@ Na wstępie oznaczmy nasz problem przez $\Pi$, a kolejne problemy przez $\Pi_a$
liczb dla modyfikacji a, a $n_a$ wielkość tego zbioru. Problem $\Pi$ to nic innego jak problem podziału zbioru. 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 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: 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 $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$. 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}$ 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 $\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$, 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: że:
\begin{equation} \begin{equation}
@ -276,9 +276,9 @@ ponieważ $B \subset A, C \subset A$ możemy zapisać
Czyli uzyskaliśmy problem analogiczny do $\Pi$. $\Pi_c \in \NPC$ 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ą 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 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 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$. 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 W zbiorze $A$ nie występują liczby ujemne, zatem wystarczy że $B = \{ \min A \}$ oraz $C = A - B$ i uzyskamy
@ -306,10 +306,10 @@ W problemie $\Pi$ mieliśmy analogiczne zależności
\end{equation*} \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$ 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 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$. 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 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. $\problem{TRY} \subseteq \P \subseteq \NP$. Stąd możemy naszkicować graf relacji $\alpha$ dla problemów.
\begin{figure}[H] \begin{figure}[H]
@ -319,65 +319,65 @@ $\problem{TRY} \subseteq \P \subseteq \NP$. Stąd możemy naszkicować graf rela
\end{figure} \end{figure}
\taskend \taskend
\task{Problem \textit{Maksymalizacji Liczby Zapamiętanych Programów} (\problem{MLZP}) określony jest następująco: \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źć ,,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} 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 (\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:} w kolejności od najkrótszego do najdłuższego programu. Pokaż, że:}
\subtask {\problem{SF} jest $\frac{4}{3}$-aproksymacyjny} \subtask {\problem{SF} jest $\frac{4}{3}$-aproksymacyjny}
\subtask {dla \problem{MLZP} nie istnieje schemat FPTAS, chyba że $\P = \NP$} \subtask {dla \problem{MLZP} nie istnieje schemat FPTAS, chyba że $\P = \NP$}
\solution \solution
Problem \problem{MLZP}, zgodnie z tytułem, jest problemem maksymalizacyjnym. Zatem wiemy, że $A_{opt} \geq A$, gdzie Problem \problem{MLZP}, zgodnie z tytułem, jest problemem maksymalizacyjnym. Zatem wiemy, że $A_\text{opt} \geq A$, gdzie
$A_{opt}$ to odpowiedź optymalna, a $A$ to odpowiedź naszego algorytmu. Dodatkowo wiemy, że $A, A_{opt} \in \mathbb{N}$ $A_\text{opt}$ to odpowiedź optymalna, a $A$ to odpowiedź naszego algorytmu. Dodatkowo wiemy, że $A, A_\text{opt} \in \mathbb{N}$
oraz, że algorytm \problem{SF} jest $1$-absolutnie aproksymacyjny czyli: oraz, że algorytm \problem{SF} jest $1$-absolutnie aproksymacyjny czyli:
\begin{equation} \begin{equation}
|A_{opt} - A| \leq 1 \overset{maksymalizacyjny}{\implies} A_{opt} - A \leq 1 \implies A \geq A_{opt} - 1 |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} \end{equation}
z tych 2 faktów z tych 2 faktów
wiemy, że A jest zawarta między dwiema kolejnymi liczbami naturalnymi począwszy od $A_{opt} - 1$: wiemy, że A jest zawarta między dwiema kolejnymi liczbami naturalnymi począwszy od $A_\text{opt} - 1$:
\begin{equation*} \begin{equation*}
A, A_{opt} \in \mathbb N \land A_{opt} \geq A \geq A_{opt} - 1 \Rightarrow A = A_{opt} \lor A = A_{opt} - 1 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*} \end{equation*}
Dodatkowo zauważamy, że jeżeli jest 1 program to algorytm zawsze zwróci wynik dokładny - zmieścił się na dyskietce 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 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 późniejszego zapisu uznajmy, że programy są posortowane rosnąco, tj
\begin{equation}\label{eqn:2011.6:assumption} \begin{equation}\label{eqn:2011.6:assumption}
I_1 \leq I_2 \leq I_3 I_1 \leq I_2 \leq I_3
\end{equation} \end{equation}
Postarajmy się więc znaleźć kontrprzykład - bądź udowodnić, że nie może on istnieć. Ponieważ liczba programów wynosi 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 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 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} 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 $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 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 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. 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 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ż 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 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} 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 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$. 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 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 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}$. $\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. 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 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. 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, 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. 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 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 \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 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}. problemem \textit{Podziału Zbioru} (\problem{PZ}). Spróbujmy przeprowadzić $\alpha$-redukcję tego problemu do \problem{MLZP}.
\begin{figure}[H] \begin{figure}[H]
@ -386,29 +386,29 @@ problemem \textit{Podziału Zbioru} (\problem{PZ}). Spróbujmy przeprowadzić $\
\caption{Schemat $\alpha$-redukcji z \problem{PZ} do \problem{MLPZ}} \caption{Schemat $\alpha$-redukcji z \problem{PZ} do \problem{MLPZ}}
\end{figure} \end{figure}
W jednym z poprzednich zadań pokazaliśmy, że jeżeli istnieje taki podział zbioru $I$ to suma jednego podzbioru musi być 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 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 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 $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{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. \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 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ż udowodnić, że dla każdych danych wejściowych istnieje taki $\varepsilon$, że przybliżenie daje nam dokładny wynik. Ponieważ
problem jest maksymalizacyjny otrzymamy: problem jest maksymalizacyjny otrzymamy:
\begin{equation}\label{eqn:2011:6:fptas} \begin{equation}\label{eqn:2011:6:fptas}
\frac {A_{opt}}{A} \leq 1 + \varepsilon \land A \leq A_{opt} \iff A \leq A_{opt} \leq A + \varepsilon A \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} \end{equation}
Ponieważ $A, A_{opt} \in \mathbb N$ to pod warunkiem, że $A\varepsilon < 1$ nierówność \eqref{eqn:2011:6:fptas} 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_{opt}$, czyli uzyskamy wynik dokładny w czasie wielomianowym. Oczywistym jest, 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 ż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 nam programów. Stąd otrzymujemy
\begin{equation*} \begin{equation*}
A \leq n \iff \frac{1}{n}A \leq 1 A \leq n \iff \frac{1}{n}A \leq 1
\end{equation*} \end{equation*}
Czyli jeżeli tylko $\varepsilon < \frac{1}{n}$ to otrzymany wynik będzie wynikiem dokładnym uzyskanym w czasie 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 wielomianowym (zgodnie z definicją schamatu (F)PTAS) czyli rozwiązalibyśmy problem \NPC w czasie wielomianowym
co implikowałoby, że $\P = \NP$. co implikowałoby, że $\P = \NP$.

View File

@ -10,7 +10,7 @@ Przy rozwiązywaniu tego zadania, jedną z pierwszych myśli może być, że jes
do problemu sumy podzbioru - i jest to prawdą, jest to specyficzny wypadek problemu sumy podzbioru. do problemu sumy podzbioru - i jest to prawdą, jest to specyficzny wypadek problemu sumy podzbioru.
Zauważmy jednak, że do dyspozycji mamy tylko i wyłącznie 6 wartości: 1, 2, 5, 10, 20, 50 oraz, że $n$ jest stałe i wynosi $100$. Zauważmy jednak, że do dyspozycji mamy tylko i wyłącznie 6 wartości: 1, 2, 5, 10, 20, 50 oraz, że $n$ jest stałe i wynosi $100$.
Łatwo zauważyć, że istnieją bardzo proste przypadki, które rozwiązują nasz problem. Przykładowo, jeżeli mamy 2 bankonoty 50zł to Łatwo zauważyć, że istnieją bardzo proste przypadki, które rozwiązują nasz problem. Przykładowo, jeżeli mamy 2 bankonoty 50zł to
jesteśmy w stanie zapłacić 100zł bez problemu, tak samo mając 5 banknotów 20zł czy nawet 100 złotówek. jesteśmy w stanie zapłacić 100zł bez problemu, tak samo mając 5 banknotów 20zł czy nawet 100 złotówek.
\begin{table}[H] \begin{table}[H]
@ -20,36 +20,36 @@ jesteśmy w stanie zapłacić 100zł bez problemu, tak samo mając 5 banknotów
- & - & - & 1 & 2 & 1 \\ - & - & - & 1 & 2 & 1 \\
- & - & - & 3 & 1 & 1 \\ - & - & - & 3 & 1 & 1 \\
- & - & 2 & 2 & 1 & 1 \\ - & - & 2 & 2 & 1 & 1 \\
\vdots & \vdots & \vdots & \vdots & \vdots & \vdots \vdots & \vdots & \vdots & \vdots & \vdots & \vdots
\end{tabular} \end{tabular}
\centering \centering
\caption{Możliwe kombinacje tworzące 100zł} \caption{Możliwe kombinacje tworzące 100zł}
\end{table} \end{table}
Stąd wynika, że istnieje jedynie skończona ilość kombinacji, którymi możemy utworzyć 100zł. Wystarczy zatem sprawdzić Stąd wynika, że istnieje jedynie skończona ilość kombinacji, którymi możemy utworzyć 100zł. Wystarczy zatem sprawdzić
je wszystkie, a to można wykonac zawsze w tym samym czasie - uzyskany algorytm jest $O(1)$. je wszystkie, a to można wykonac zawsze w tym samym czasie - uzyskany algorytm jest $O(1)$.
\taskend \taskend
\task{ \task{
Ty masz graf 100-wierzchołkowy $G$ zapisany w postaci macierzy sąsiedztwa $A(G)$ i bardzo Ci zależy na tym, Ty masz graf 100-wierzchołkowy $G$ zapisany w postaci macierzy sąsiedztwa $A(G)$ i bardzo Ci zależy na tym,
aby stwierdzić, czy $G$ zawiera klikę $K_{10}$ lub większą. Ja mam program, który rozwiązuje Twój problem, ale tylko aby stwierdzić, czy $G$ zawiera klikę $K_{10}$ lub większą. Ja mam program, który rozwiązuje Twój problem, ale tylko
wtedy kiedy na wejście poda się mu macierz sąsiedztwa grafu niehamiltonowskiego. Jak przerobisz macierz $A(G)$ wtedy kiedy na wejście poda się mu macierz sąsiedztwa grafu niehamiltonowskiego. Jak przerobisz macierz $A(G)$
byś mógł skorzystać z mojego programu? Zaprojektuj taki program i oszacuj jego złożoność. byś mógł skorzystać z mojego programu? Zaprojektuj taki program i oszacuj jego złożoność.
} }
\solution \solution
Nasz graf $G$ może być w zasadzie dowolnym grafem 100-wierzchołkowym, w szczególności nie wiemy nic o tym czy jest Nasz graf $G$ może być w zasadzie dowolnym grafem 100-wierzchołkowym, w szczególności nie wiemy nic o tym czy jest
hamiltonowski czy nie. Do dyspozycji mamy program, który jest w stanie odpowiedzieć na nasze pytanie, hamiltonowski czy nie. Do dyspozycji mamy program, który jest w stanie odpowiedzieć na nasze pytanie,
ale tylko jeżeli graf \textbf{nie} jest hamiltonowski. Potrzebujemy zatem sposobu na przetworzenie naszego grafu $G$ tak, ale tylko jeżeli graf \textbf{nie} jest hamiltonowski. Potrzebujemy zatem sposobu na przetworzenie naszego grafu $G$ tak,
aby nie miał szans być hamiltonowski - jednak to przekształcenie nie może wpływać na odpowiedź na nasze pytanie. aby nie miał szans być hamiltonowski - jednak to przekształcenie nie może wpływać na odpowiedź na nasze pytanie.
Na wstępie przypomnijmy, że graf hamiltonowski to taki, w którym istnieje cykl pozwalający przejść po Na wstępie przypomnijmy, że graf hamiltonowski to taki, w którym istnieje cykl pozwalający przejść po
wszystkich wierzchołkach dokładnie raz. Co znaczy, że każdy graf hamiltonowski musi być przede wszystkim grafem spójnym. wszystkich wierzchołkach dokładnie raz. Co znaczy, że każdy graf hamiltonowski musi być przede wszystkim grafem spójnym.
Co za tym idzie, jeżeli przekształcimy nasz graf G w taki sposób, że nie będzie spójny to będziemy mieli pewność, Co za tym idzie, jeżeli przekształcimy nasz graf G w taki sposób, że nie będzie spójny to będziemy mieli pewność,
że nie będzie hamiltonowski. że nie będzie hamiltonowski.
Nie możemy usuwać ani dodawać krawędzi między wierzchołkami naszego grafu $G$, ponieważ mogłoby to wpłynąć na istnienie Nie możemy usuwać ani dodawać krawędzi między wierzchołkami naszego grafu $G$, ponieważ mogłoby to wpłynąć na istnienie
w nim kliki - najprostszym rozwiązaniem będzie więc dodanie zupełnie nowego wierzchołka, nazwijmy go $v_{101}$, w nim kliki - najprostszym rozwiązaniem będzie więc dodanie zupełnie nowego wierzchołka, nazwijmy go $v_{101}$,
który nie jest połączony z żadnym innym. który nie jest połączony z żadnym innym.
\begin{figure}[H] \begin{figure}[H]
@ -58,43 +58,43 @@ który nie jest połączony z żadnym innym.
\caption{Transformacja w graf niehamiltonowski} \caption{Transformacja w graf niehamiltonowski}
\end{figure} \end{figure}
Dodanie jednego swobodnego wierzchołka nie wpłynie na istnienie kliki $K_{10}$ bądź większej ponieważ jeden wierzchołek Dodanie jednego swobodnego wierzchołka nie wpłynie na istnienie kliki $K_{10}$ bądź większej ponieważ jeden wierzchołek
nie wystarczy na utworzenie kliki, a nie dodajemy żadnych krawedzi, które mogłyby doprowadzić do tego, że klika nagle powstała. nie wystarczy na utworzenie kliki, a nie dodajemy żadnych krawedzi, które mogłyby doprowadzić do tego, że klika nagle powstała.
Innym możliwym rozwiązaniem jest dodanie wierzchołka połączonego z tylko jednym wierzchołkiem - jedyny sposób aby się Innym możliwym rozwiązaniem jest dodanie wierzchołka połączonego z tylko jednym wierzchołkiem - jedyny sposób aby się
do niego dostać będzie przez 1 wierzchołek, a żeby przejść dalej będziemy musieli się cofnąć do wierzchołka, w którym już byliśmy. do niego dostać będzie przez 1 wierzchołek, a żeby przejść dalej będziemy musieli się cofnąć do wierzchołka, w którym już byliśmy.
Jeżeli zaś chodzi o złożoność, to ważnym jest, że graf jest podany w formie macierzy sąsiedztwa, czyli aby dodać Jeżeli zaś chodzi o złożoność, to ważnym jest, że graf jest podany w formie macierzy sąsiedztwa, czyli aby dodać
wierzchołek musimy do macierzy dodać 1 wiersz i 1 kolumnę - czyli w zasadzie utworzyć nową macierz. Operacja ta wymaga wierzchołek musimy do macierzy dodać 1 wiersz i 1 kolumnę - czyli w zasadzie utworzyć nową macierz. Operacja ta wymaga
utworzenia $(n+1) \times (n+1)$ komórek, czyli teoretycznie jej złożoność to $O(n^2)$ jednak biorąc pod uwagę, że dla utworzenia $(n+1) \times (n+1)$ komórek, czyli teoretycznie jej złożoność to $O(n^2)$ jednak biorąc pod uwagę, że dla
grafu $G$ z definicji $n = 100$ możemy powiedzieć, że operacja ta dla każdego takiego grafu G jest do wykonania w czasie grafu $G$ z definicji $n = 100$ możemy powiedzieć, że operacja ta dla każdego takiego grafu G jest do wykonania w czasie
stałym, czyli $O(1)$ - obie odpowiedzi będą poprawne. stałym, czyli $O(1)$ - obie odpowiedzi będą poprawne.
\taskend \taskend
\task{\textit{OGRANICZONY PROBLEM KLIKI} - \problem{OPK} - zdefiniowany jest następująco: ``Dany jest graf $G$ i liczby \task{\textit{Ograniczony Problem Kliki} - \problem{OPK} - zdefiniowany jest następująco: ,,Dany jest graf $G$ i liczby
naturalne $a$, $b$ takie, że $a \leq b$, czy w $G$ istnieje klika o rozmiarze $r$ taka, że $a \leq r \leq b$?,,. Pokaż, że:} naturalne $a$, $b$ takie, że $a \leq b$, czy w $G$ istnieje klika o rozmiarze $r$ taka, że $a \leq r \leq b$?''. Pokaż, że:}
\subtask{$\problem{OPK} \in \problem{NP}$} \subtask{$\problem{OPK} \in \problem{NP}$}
\subtask{$\problem{OPK} \in \problem{NPC}$} \subtask{$\problem{OPK} \in \problem{NPC}$}
\solution \solution
Aby udowodnić, że dany problem należy do klasy \NP należy zrobić jedną z dwóch rzeczy - przedstawić niedeterministyczny Aby udowodnić, że dany problem należy do klasy \NP należy zrobić jedną z dwóch rzeczy - przedstawić niedeterministyczny
algorytm rozwiązujący ten problem w czasie wielomianowym, bądź zaprezentować wielomianowy algorytm sprawdzający algorytm rozwiązujący ten problem w czasie wielomianowym, bądź zaprezentować wielomianowy algorytm sprawdzający
rozwiązanie tego problemu. Moim zdaniem, podejście drugie jest o wiele łatwiejsze i przyjemniejsze - zatem to właśnie rozwiązanie tego problemu. Moim zdaniem, podejście drugie jest o wiele łatwiejsze i przyjemniejsze - zatem to właśnie
je zaprezentuję i będę wykorzystywał. je zaprezentuję i będę wykorzystywał.
Aby sprawdzić rozwiązanie, potrzebujemy więcej informacji niż proste \textbf{tak} lub \textbf{nie} - taką dodatkową Aby sprawdzić rozwiązanie, potrzebujemy więcej informacji niż proste \textbf{tak} lub \textbf{nie} - taką dodatkową
informację nazywamy \textit{certyfikatem}, przykładowo w wypadku pytania, czy liczba $n$ jest złożona, certyfikatem mogą informację nazywamy \textit{certyfikatem}, przykładowo w wypadku pytania, czy liczba $n$ jest złożona, certyfikatem mogą
być dwie liczby $p$ i $q$ takie, że $n = p \cdot q$ - mając taki certyfikat łatwo jest potwierdzić, że faktycznie być dwie liczby $p$ i $q$ takie, że $n = p \cdot q$ - mając taki certyfikat łatwo jest potwierdzić, że faktycznie
liczba jest złożona. liczba jest złożona.
W naszym wypadku certyfikatem może być lista wierzchołków tworząca klikę $K_n$. Określenie $r$ będzie wymagało W naszym wypadku certyfikatem może być lista wierzchołków tworząca klikę $K_n$. Określenie $r$ będzie wymagało
sprawdzenia długości listy, co z pewnością można wykonać w czasie wielomianowym, a sprawdzenie czy wierzchołki tworzą sprawdzenia długości listy, co z pewnością można wykonać w czasie wielomianowym, a sprawdzenie czy wierzchołki tworzą
klikę będzie wymagało sprawdzenia czy faktycznie każdy wierzchołek sąsiaduje z każdym innym wierzchołkiem z listy - co klikę będzie wymagało sprawdzenia czy faktycznie każdy wierzchołek sąsiaduje z każdym innym wierzchołkiem z listy - co
też można wykonać w czasie wielomianowym. Stąd wynika, że problem należy do klasy \NP. też można wykonać w czasie wielomianowym. Stąd wynika, że problem należy do klasy \NP.
Dowód, że problem należy do \NPC jest trochę trudniejszy do przeprowadzenia - należy mianowicie wykonać Dowód, że problem należy do \NPC jest trochę trudniejszy do przeprowadzenia - należy mianowicie wykonać
$\alpha$-redukcję jakiegoś problemu, który wiemy że jest \NPC do problemu, który badamy. Naturalnym kandydatem tutaj $\alpha$-redukcję jakiegoś problemu, który wiemy że jest \NPC do problemu, który badamy. Naturalnym kandydatem tutaj
wydaje się być problem kliki: wydaje się być problem kliki:
``Czy w grafie $G$ istnieje klika wielkości $n$?,, ``Czy w grafie $G$ istnieje klika wielkości $n$?,,
\begin{figure}[H] \begin{figure}[H]
@ -103,36 +103,36 @@ wydaje się być problem kliki:
\caption{schemat $\alpha$-redukcji \problem{kliki} do \problem{OPK}} \caption{schemat $\alpha$-redukcji \problem{kliki} do \problem{OPK}}
\end{figure} \end{figure}
Aby dokonać $\alpha$-redukcji musimy w wielomianowym czasie na podstawie danych $G, n$ znaleźć takie $G_1, a, b$ aby Aby dokonać $\alpha$-redukcji musimy w wielomianowym czasie na podstawie danych $G, n$ znaleźć takie $G_1, a, b$ aby
rozwiązując problem \problem{OPK} uzyskać odpowiedź na problem kliki. Wiemy, że \problem{OPK} zwróci nam prawdę jeżeli rozwiązując problem \problem{OPK} uzyskać odpowiedź na problem kliki. Wiemy, że \problem{OPK} zwróci nam prawdę jeżeli
w grafie $G_1$ będzie klika o rozmiarze $r$ takim, że $a \leq r \leq b$. Jeżeli chcemy znaleźć klikę konkretnego w grafie $G_1$ będzie klika o rozmiarze $r$ takim, że $a \leq r \leq b$. Jeżeli chcemy znaleźć klikę konkretnego
rozmiaru, wystarczy zauważyć, że jeżeli $a = b \land A \leq r \leq b$ to $a = b = r$. Nasza $\alpha$-redukcja mogłaby rozmiaru, wystarczy zauważyć, że jeżeli $a = b \land A \leq r \leq b$ to $a = b = r$. Nasza $\alpha$-redukcja mogłaby
zatem wyglądać następująco: $G_1 = G, a = n, b = n$. Co z pewnością możemy dokonać w czasie wielomianowym. Fakt, że zatem wyglądać następująco: $G_1 = G, a = n, b = n$. Co z pewnością możemy dokonać w czasie wielomianowym. Fakt, że
takie podstawienie zachowuje problem udowodniliśmy już powyżej. takie podstawienie zachowuje problem udowodniliśmy już powyżej.
\taskend \taskend
\task{\textit{Problem zanurzenia} (\problem{PZ}) grafu w innym grafie zdefiniowany jest następująco. Dane są dwa grafy: \task{\textit{Problem zanurzenia} (\problem{PZ}) grafu w innym grafie zdefiniowany jest następująco. Dane są dwa grafy:
$(G, H)$, gdzie $G$ jest \textit{gościem} a $H$ - \textit{gospodarzem}. Czy istnieje takie odwzorowanie wierzchołków $(G, H)$, gdzie $G$ jest \textit{gościem} a $H$ - \textit{gospodarzem}. Czy istnieje takie odwzorowanie wierzchołków
$f: V(G) \to V(H)$, że każdej krawędzi $\{u, v\} \in G$ odpowiada krawędź $\{f(u), f(v)\} \in H$? Pokaż, że PZ jest $f: V(G) \to V(H)$, że każdej krawędzi $\{u, v\} \in G$ odpowiada krawędź $\{f(u), f(v)\} \in H$? Pokaż, że PZ jest
problemem NP-zupełnym.} problemem NP-zupełnym.}
\solution \solution
Przed dowiedzeniem, że problem jest \NPC najpierw musimy udowodnić, że w ogóle znajduje się w klasie \NP. Po raz Przed dowiedzeniem, że problem jest \NPC najpierw musimy udowodnić, że w ogóle znajduje się w klasie \NP. Po raz
kolejny wykorzystamy tutaj podejście z certyfikatem, w tym wypadku będzie nim funkcja $f$. Nie rozważamy tutaj tego kolejny wykorzystamy tutaj podejście z certyfikatem, w tym wypadku będzie nim funkcja $f$. Nie rozważamy tutaj tego
jak trudno jest wyliczyć na komputerze wynik działania funkcji $f$, zatem zakładamy, że $f = O(1)$. Przetworzenie jak trudno jest wyliczyć na komputerze wynik działania funkcji $f$, zatem zakładamy, że $f = O(1)$. Przetworzenie
wszystkich krawędzi można zatem wykonać w czasie $O(m(G))$. Aby sprawdzić czy krawędź istnieje w grafie $H$ w wszystkich krawędzi można zatem wykonać w czasie $O(m(G))$. Aby sprawdzić czy krawędź istnieje w grafie $H$ w
najgorszym wypadku musimy przejrzeć wszystkie krawędzie - co daje nam czas $O(m(H))$, ponieważ dla każdej przetworzonej najgorszym wypadku musimy przejrzeć wszystkie krawędzie - co daje nam czas $O(m(H))$, ponieważ dla każdej przetworzonej
krawędzi w $G$ musimy sprawdzić jej istnienie w $H$ to w najgorszym wypadku uzyskamy czas krawędzi w $G$ musimy sprawdzić jej istnienie w $H$ to w najgorszym wypadku uzyskamy czas
$O(m(H) \cdot m(G))$ - czyli wielomianowy. $O(m(H) \cdot m(G))$ - czyli wielomianowy.
Aby udowodnić, że \problem{PZ} jest \NPC musimy znaleźć $\alpha$-redukcje jakiegoś innego, najlepiej zbliżonego Aby udowodnić, że \problem{PZ} jest \NPC musimy znaleźć $\alpha$-redukcje jakiegoś innego, najlepiej zbliżonego
problemu do \problem{PZ}. Na początek zauważmy, że $f$ musi być funkcją różnowartościową, ponieważ gdyby nie była, to problemu do \problem{PZ}. Na początek zauważmy, że $f$ musi być funkcją różnowartościową, ponieważ gdyby nie była, to
istniałyby takie $u_1 \neq u_2$, że $f(u_1) = f(u_2) = v$, co dawałoby nieistniejącą krawędź $\{ v, v \}$ istniałyby takie $u_1 \neq u_2$, że $f(u_1) = f(u_2) = v$, co dawałoby nieistniejącą krawędź $\{ v, v \}$
(tj. wierzchołek byłby połączony z samym sobą). Gdybyśmy natomiast rozpatrywali grafy mogące zawierać takie pętle (tj. wierzchołek byłby połączony z samym sobą). Gdybyśmy natomiast rozpatrywali grafy mogące zawierać takie pętle
własne, to problem dla takich grafów oraz funkcji nieróżnowartościowej stawałby się trywialny - wystarczyłoby zmapować własne, to problem dla takich grafów oraz funkcji nieróżnowartościowej stawałby się trywialny - wystarczyłoby zmapować
wszystkie wierzchołki na ten jeden z pętlą własną i taka funkcja istniałaby zawsze. wszystkie wierzchołki na ten jeden z pętlą własną i taka funkcja istniałaby zawsze.
Z tego, że $f$ jest różnowartościowa wynika, że jeżeli wierzchołek w grafie G $\deg u = \delta$ to w grafie H Z tego, że $f$ jest różnowartościowa wynika, że jeżeli wierzchołek w grafie G $\deg u = \delta$ to w grafie H
$\deg f(u) \geq \delta$. Można to zaobserwować na rysunku poniżej. $\deg f(u) \geq \delta$. Można to zaobserwować na rysunku poniżej.
\begin{figure}[H] \begin{figure}[H]
@ -141,9 +141,9 @@ $\deg f(u) \geq \delta$. Można to zaobserwować na rysunku poniżej.
\caption{Powiązane wierzchołki mają ten sam kolor w obu grafach.} \caption{Powiązane wierzchołki mają ten sam kolor w obu grafach.}
\end{figure} \end{figure}
Biorąc pod uwagę ten tok rozumowania, możemy zauważyć że problem ten jest nam w stanie łatwo odpowiedzieć czy w danym Biorąc pod uwagę ten tok rozumowania, możemy zauważyć że problem ten jest nam w stanie łatwo odpowiedzieć czy w danym
grafie $H$ występuje podgraf $G$. Znanym problemem \NPC, który wymaga sprawdzenia obecności danego podgrafu w innym grafie $H$ występuje podgraf $G$. Znanym problemem \NPC, który wymaga sprawdzenia obecności danego podgrafu w innym
grafie jest oczywiście problem kliki. grafie jest oczywiście problem kliki.
\begin{figure}[H] \begin{figure}[H]
\centering \centering
@ -151,17 +151,17 @@ grafie jest oczywiście problem kliki.
\caption{schemat $\alpha$-redukcji kliki do PZ} \caption{schemat $\alpha$-redukcji kliki do PZ}
\end{figure} \end{figure}
$\alpha$-redukcja polega na sprawdzeniu czy graf pełny $K_n$ jest podgrafem grafu $G_0$, czyli dla problemu \problem{PZ} $\alpha$-redukcja polega na sprawdzeniu czy graf pełny $K_n$ jest podgrafem grafu $G_0$, czyli dla problemu \problem{PZ}
otrzymalibyśmy tak skonstruowane dane wejściowe: otrzymalibyśmy tak skonstruowane dane wejściowe:
$G = K_n, H = G_0$. $G = K_n, H = G_0$.
Problem jest zachowany ponieważ jeżeli w grafie $G_0$ występuje klika o rozmiarze $n$ to możemy każdemu wierzchołkowi Problem jest zachowany ponieważ jeżeli w grafie $G_0$ występuje klika o rozmiarze $n$ to możemy każdemu wierzchołkowi
kliki znalezionej w $G_0$ przypisać unikalny wierzchołek w $K_n$. W drugą stronę analogicznie, jeżeli istnieje takie kliki znalezionej w $G_0$ przypisać unikalny wierzchołek w $K_n$. W drugą stronę analogicznie, jeżeli istnieje takie
przypisanie to w grafie $G_0$ musi znajdować się klika $K_n$. przypisanie to w grafie $G_0$ musi znajdować się klika $K_n$.
\taskend \taskend
\task{Przedyskutuj złożoność obliczeniową następujących problemów decyzyjnych, zakładając, że $G$ jest kubiczny \task{Przedyskutuj złożoność obliczeniową następujących problemów decyzyjnych, zakładając, że $G$ jest kubiczny
(tj. 3-regularny) i zapamiętany jest w postaci list sąsiedztwa. Ponadto, jeżeli odpowiedź jest oczywista napisz czy (tj. 3-regularny) i zapamiętany jest w postaci list sąsiedztwa. Ponadto, jeżeli odpowiedź jest oczywista napisz czy
brzmi ona \textbf{tak} lub \textbf{nie}.} brzmi ona \textbf{tak} lub \textbf{nie}.}
\begin{minipage}{.5\linewidth} \begin{minipage}{.5\linewidth}
@ -177,21 +177,21 @@ brzmi ona \textbf{tak} lub \textbf{nie}.}
\subtask{$\chi(X) \geq 4$} \subtask{$\chi(X) \geq 4$}
\end{minipage}% \end{minipage}%
\\ \\
\tip{Skorzystaj z twierdzenia Brooksa, które mówi, że $\chi(G) \leq \Delta$ za wyjątkiem \tip{Skorzystaj z twierdzenia Brooksa, które mówi, że $\chi(G) \leq \Delta$ za wyjątkiem
$G = C_{2k-1}$ (czyli będącego cyklem nieparzystym i $G = K_n$)} $G = C_{2k-1}$ (czyli będącego cyklem nieparzystym i $G = K_n$)}
\solution \solution
Problem dotyczy liczby chromatycznej grafu - $\chi(G)$ - czyli minimalnej liczby kolorów potrzebnej do poprawnego Problem dotyczy liczby chromatycznej grafu - $\chi(G)$ - czyli minimalnej liczby kolorów potrzebnej do poprawnego
pokolorowania grafu. Graf można pokolorować 1 kolorem $\chi(G) = 1$, tylko wtedy kiedy nie ma on krawędzi, a tym wypadku pokolorowania grafu. Graf można pokolorować 1 kolorem $\chi(G) = 1$, tylko wtedy kiedy nie ma on krawędzi, a tym wypadku
wiemy, że graf jest 3-regularny czyli dla każdego wierzhołka $v \in G$ wiemy, że jest połączony z 3 innymi wiemy, że graf jest 3-regularny czyli dla każdego wierzhołka $v \in G$ wiemy, że jest połączony z 3 innymi
wierzchołkami - stąd możemy wywnioskować, że dla tego typu grafów $\chi(G) \geq 2$. wierzchołkami - stąd możemy wywnioskować, że dla tego typu grafów $\chi(G) \geq 2$.
Dodatkowo wiemy, że każdy graf dwudzielny można pokolorować za pomocą dokładnie 2 kolorów ponieważ zawiera 2 grupy n Dodatkowo wiemy, że każdy graf dwudzielny można pokolorować za pomocą dokładnie 2 kolorów ponieważ zawiera 2 grupy n
iepołączonych ze sobą wierzchołków - a sprawdzenie dwudzielnosci grafu można osiągnąć za pomocą BFS-a lub DFS-a, czyli w złożoności $O(m+ n)$. iepołączonych ze sobą wierzchołków - a sprawdzenie dwudzielnosci grafu można osiągnąć za pomocą BFS-a lub DFS-a, czyli w złożoności $O(m+ n)$.
Z wskazówki znamy twierdzenie Brooksa - $\chi(G) \leq \Delta$, w naszym wypadku z 3-regularności oczywistym jest, że Z wskazówki znamy twierdzenie Brooksa - $\chi(G) \leq \Delta$, w naszym wypadku z 3-regularności oczywistym jest, że
$\Delta = 3$, czyli $\chi(G) \leq 3$, \textbf{CHYBA, że} graf jest nieparzystym cyklem - co możemy wyeliminować ponieważ $\Delta = 3$, czyli $\chi(G) \leq 3$, \textbf{CHYBA, że} graf jest nieparzystym cyklem - co możemy wyeliminować ponieważ
cykl nie jest 3-regularny, lub $G = K_4$, gdzyż klika rozmiaru 4 jest 3-regularna (Ogólnie kliki rozmiaru $n$ cykl nie jest 3-regularny, lub $G = K_4$, gdzyż klika rozmiaru 4 jest 3-regularna (Ogólnie kliki rozmiaru $n$
$(n - 1)$-regularne) i tylko w tym jednym wypadku będziemy potrzebować 4 kolorów, ale nigdy więcej. $(n - 1)$-regularne) i tylko w tym jednym wypadku będziemy potrzebować 4 kolorów, ale nigdy więcej.
Zatem podsumowując odpowiedzi: Zatem podsumowując odpowiedzi:
@ -207,7 +207,7 @@ Zatem podsumowując odpowiedzi:
\item $\chi(X) \geq 4$ - graf potrzebuje 4 kolorów tylko, gdy jest kliką $K_4$ - $O(1)$. \item $\chi(X) \geq 4$ - graf potrzebuje 4 kolorów tylko, gdy jest kliką $K_4$ - $O(1)$.
\end{enumerate} \end{enumerate}
\task{\NP-trudny problem \textit{Maximum Acyclic Subgraph} (\problem{MAS}) pyta o maksymalny zbiór łuków digrafu $D$, \task{\NP-trudny problem \textit{Maximum Acyclic Subgraph} (\problem{MAS}) pyta o maksymalny zbiór łuków digrafu $D$,
który generuje digraf acykliczny. Problem ten ma prosty algorym 2-aproksymacyjny, który polega na podzieleniu $D$ na dwa podgrafy.} który generuje digraf acykliczny. Problem ten ma prosty algorym 2-aproksymacyjny, który polega na podzieleniu $D$ na dwa podgrafy.}
\subtask{udowodnij 2-aproksymowalność tego algorytmu} \subtask{udowodnij 2-aproksymowalność tego algorytmu}
@ -217,8 +217,8 @@ który generuje digraf acykliczny. Problem ten ma prosty algorym 2-aproksymacyjn
\tip{Jaki digraf definiuje górna/dolna macierz trójkątna macierzy $A$?} \tip{Jaki digraf definiuje górna/dolna macierz trójkątna macierzy $A$?}
\solution \solution
Na wstępie - zadanie słabo opisuje problem i więcej informacji można wyciągnąć z nazwy problemu po angielsku niż jego opisu. Na wstępie - zadanie słabo opisuje problem i więcej informacji można wyciągnąć z nazwy problemu po angielsku niż jego opisu.
W problemie chodzi o znalezienie największego podgrafu acyklicznego w digrafie $D$. W problemie chodzi o znalezienie największego podgrafu acyklicznego w digrafie $D$.
\begin{figure}[H] \begin{figure}[H]
\begin{minipage}{.5\linewidth}% \begin{minipage}{.5\linewidth}%
\centering \centering
@ -227,18 +227,18 @@ W problemie chodzi o znalezienie największego podgrafu acyklicznego w digrafie
\begin{minipage}{.5\linewidth}% \begin{minipage}{.5\linewidth}%
\begin{equation*} \begin{equation*}
A_D = \begin{bmatrix} A_D = \begin{bmatrix}
0 & 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 & 1 \\
0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 \\
1 & 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 0 & 1 \\
0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 \\
0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 & 0 \\
\end{bmatrix} \end{bmatrix}
\end{equation*} \end{equation*}
\end{minipage}% \end{minipage}%
\caption{Przykładowy digraf $D$ wraz z maksymalnym podgrafem acyklicznym oraz macierzą sąsiedztwa.} \caption{Przykładowy digraf $D$ wraz z maksymalnym podgrafem acyklicznym oraz macierzą sąsiedztwa.}
\end{figure} \end{figure}
Z zadania wiemy, że algorytm dzieli digraf $D$ na dwie części, na podstawie wskazówki \#1 możemy się domyślać, że ma to Z zadania wiemy, że algorytm dzieli digraf $D$ na dwie części, na podstawie wskazówki \#1 możemy się domyślać, że ma to
coś wspólnego z macierzami trójkątnymi macierzy $A_D$. Zobaczmy, co te macierze reprezentują: coś wspólnego z macierzami trójkątnymi macierzy $A_D$. Zobaczmy, co te macierze reprezentują:
\begin{figure}[H] \begin{figure}[H]
\begin{minipage}{.5\linewidth}% \begin{minipage}{.5\linewidth}%
@ -248,11 +248,11 @@ coś wspólnego z macierzami trójkątnymi macierzy $A_D$. Zobaczmy, co te macie
\begin{minipage}{.5\linewidth}% \begin{minipage}{.5\linewidth}%
\begin{equation*} \begin{equation*}
A_D = \begin{bmatrix} A_D = \begin{bmatrix}
0 & 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 & 1 \\
& 0 & 1 & 0 & 0 \\ & 0 & 1 & 0 & 0 \\
& & 0 & 0 & 1 \\ & & 0 & 0 & 1 \\
& & & 0 & 0 \\ & & & 0 & 0 \\
& & & & 0 \\ & & & & 0 \\
\end{bmatrix} \end{bmatrix}
\end{equation*} \end{equation*}
\end{minipage}% \end{minipage}%
@ -267,33 +267,33 @@ coś wspólnego z macierzami trójkątnymi macierzy $A_D$. Zobaczmy, co te macie
\begin{minipage}{.5\linewidth}% \begin{minipage}{.5\linewidth}%
\begin{equation*} \begin{equation*}
A_D = \begin{bmatrix} A_D = \begin{bmatrix}
0 & & & & \\ 0 & & & & \\
0 & 0 & & & \\ 0 & 0 & & & \\
1 & 0 & 0 & & \\ 1 & 0 & 0 & & \\
0 & 0 & 1 & 0 & \\ 0 & 0 & 1 & 0 & \\
0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 & 0 \\
\end{bmatrix} \end{bmatrix}
\end{equation*} \end{equation*}
\end{minipage}% \end{minipage}%
\caption{Graf opisany przez macierz trójkątną dolną macierzy $A_D$} \caption{Graf opisany przez macierz trójkątną dolną macierzy $A_D$}
\end{figure} \end{figure}
Jak widać górna macierz trójkątna opisuje tylko takie krawędzie (łuki) $(u_1, u_2)$ że $u_1 < u_2$, czyli nie może Jak widać górna macierz trójkątna opisuje tylko takie krawędzie (łuki) $(u_1, u_2)$ że $u_1 < u_2$, czyli nie może
wystąpić cykl ponieważ to wymagałoby powrotu do wierzchołka, który już rozpatrywaliśmy - a to jest niemożliwe w takiej wystąpić cykl ponieważ to wymagałoby powrotu do wierzchołka, który już rozpatrywaliśmy - a to jest niemożliwe w takiej
macierzy. W macierzy dolnej sytuacja jest analogiczna, z tym że zachodzi warunek $u_1 > u_2$. macierzy. W macierzy dolnej sytuacja jest analogiczna, z tym że zachodzi warunek $u_1 > u_2$.
Rozwiązanie takie gwarantuje brak cyklu, jednak nie jest dokładne, zastanówmy się więc jaki może być najgorszy przypadek. Rozwiązanie takie gwarantuje brak cyklu, jednak nie jest dokładne, zastanówmy się więc jaki może być najgorszy przypadek.
Biorąc pod uwagę, że bierzemy połowę grafu możemy być pewni, że algorytm nie pomyli się bardziej niż 2-krotnie, ponieważ Biorąc pod uwagę, że bierzemy połowę grafu możemy być pewni, że algorytm nie pomyli się bardziej niż 2-krotnie, ponieważ
w najgorszym wypadku cały graf jest już acykliczny, a my bierzemy jego połowę. Nie mamy jednak pewności co do tego, w najgorszym wypadku cały graf jest już acykliczny, a my bierzemy jego połowę. Nie mamy jednak pewności co do tego,
czy faktycznie może istnieć acykliczny graf dokładnie 2 krotnie większy od swojej połówki i prawdopodobnie na tym można czy faktycznie może istnieć acykliczny graf dokładnie 2 krotnie większy od swojej połówki i prawdopodobnie na tym można
skończyć dowód, jednak udowodnijmy że faktycznie istnieje taki przypadek w którym algorytm zwróci dokładnie skończyć dowód, jednak udowodnijmy że faktycznie istnieje taki przypadek w którym algorytm zwróci dokładnie
2-przybliżony. 2-przybliżony.
Aby uzyskać taki graf w dolnej i górnej macierzy trójkątnej musimy mieć dokładnie taką samą ilość krawędzi, a ponadto Aby uzyskać taki graf w dolnej i górnej macierzy trójkątnej musimy mieć dokładnie taką samą ilość krawędzi, a ponadto
graf musi pozostać acykliczny. Nie jesteśmy w stanie stworzyć grafu o 2 wierzchołkach, który spełniałby ten warunek, graf musi pozostać acykliczny. Nie jesteśmy w stanie stworzyć grafu o 2 wierzchołkach, który spełniałby ten warunek,
ponieważ albo algorytm zwróci odpowiedź dokładną, albo graf będzie cykliczny tj. wierzchołek 1 będzie połączony z 2 oraz ponieważ albo algorytm zwróci odpowiedź dokładną, albo graf będzie cykliczny tj. wierzchołek 1 będzie połączony z 2 oraz
2 z 1. Jesteśmy w stanie skonstruować jednak taki graf 3 wierzchołkowy, ponieważ wystarczy że będziemy mieli dokładnie 2 z 1. Jesteśmy w stanie skonstruować jednak taki graf 3 wierzchołkowy, ponieważ wystarczy że będziemy mieli dokładnie
jedno połączenie wierzchołka "mniejszego" z "większym" oraz dokładnie jedno "większego" z "mniejszym" przy czym jedynym jedno połączenie wierzchołka "mniejszego" z "większym" oraz dokładnie jedno "większego" z "mniejszym" przy czym jedynym
ograniczeniem jest to, że nie mogą to być te same wierzchołki. ograniczeniem jest to, że nie mogą to być te same wierzchołki.
\begin{figure}[H] \begin{figure}[H]
@ -304,27 +304,27 @@ ograniczeniem jest to, że nie mogą to być te same wierzchołki.
\begin{minipage}{.5\linewidth}% \begin{minipage}{.5\linewidth}%
\begin{equation*} \begin{equation*}
A_D = \begin{bmatrix} A_D = \begin{bmatrix}
0 & 1 & 0 \\ 0 & 1 & 0 \\
0 & 0 & 0 \\ 0 & 0 & 0 \\
0 & 1 & 0 \\ 0 & 1 & 0 \\
\end{bmatrix} \end{bmatrix}
\end{equation*} \end{equation*}
\end{minipage}% \end{minipage}%
\caption{Graf opisany przez macierz trójkątną dolną macierzy $A_D$} \caption{Graf opisany przez macierz trójkątną dolną macierzy $A_D$}
\end{figure} \end{figure}
W tym wypadku digraf $D$ jest acykliczny, jednak algorytm będzie w stanie znaleźć tylko podgraf $\{ (1, 2) \}$ W tym wypadku digraf $D$ jest acykliczny, jednak algorytm będzie w stanie znaleźć tylko podgraf $\{ (1, 2) \}$
lub $\{ (1, 3) \}$, czyli zwróci 2-krotnie za mały wynik. lub $\{ (1, 3) \}$, czyli zwróci 2-krotnie za mały wynik.
Istnienie schematu (F)PTAS mówi nam, że jesteśmy w stanie znaleźć wielomianowy algorytm o dowolnie dobrym przybliżeniu, Istnienie schematu (F)PTAS mówi nam, że jesteśmy w stanie znaleźć wielomianowy algorytm o dowolnie dobrym przybliżeniu,
tj. algorytm $(1 + \varepsilon)$-aproksymacyjny, gdzie $\varepsilon > 0$. Znalezienie takiego schematu jest trudne i jak tj. algorytm $(1 + \varepsilon)$-aproksymacyjny, gdzie $\varepsilon > 0$. Znalezienie takiego schematu jest trudne i jak
mniemam wykraczające poza obszar przedmiotu a na pewno kolokwium, jednak stosunkowo prosto udowodnić, że taki schemat mniemam wykraczające poza obszar przedmiotu a na pewno kolokwium, jednak stosunkowo prosto udowodnić, że taki schemat
nie może istnieć. Wystarczy udowodnić, że dla każdych możliwych danych wejściowych istnieje taki epsilon, że z nie może istnieć. Wystarczy udowodnić, że dla każdych możliwych danych wejściowych istnieje taki epsilon, że z
odpowiedzi przybliżonej jesteśmy w stanie ze 100\% pewnością wywnioskować odpowiedź dokładną - a to znaczyłoby, że odpowiedzi przybliżonej jesteśmy w stanie ze 100\% pewnością wywnioskować odpowiedź dokładną - a to znaczyłoby, że
posiadamy wielomianowy algorytm rozwiązujący dany problem \NP-trudny dokładnie, co znaczyłoby, że $\P = \NP$ posiadamy wielomianowy algorytm rozwiązujący dany problem \NP-trudny dokładnie, co znaczyłoby, że $\P = \NP$
W tym wypadku rozważamy problem maksymalizacyjny, czyli wiemy że odpowiedź dokładna $N_\text{opt}$ jest większa bądź W tym wypadku rozważamy problem maksymalizacyjny, czyli wiemy że odpowiedź dokładna $N_\text{opt}$ jest większa bądź
równa od odpowiedzi naszego algorytmu $N$: równa od odpowiedzi naszego algorytmu $N$:
\begin{equation} \begin{equation}
N_{\text{opt}} \geq N N_{\text{opt}} \geq N
\end{equation} \end{equation}
@ -340,7 +340,7 @@ Co za tym idzie, z definicji przybliżalności wynika, że:
N \leq N_\text{opt} \leq N + N\varepsilon N \leq N_\text{opt} \leq N + N\varepsilon
\end{equation} \end{equation}
ponieważ wiemy, że liczba krawędzi w grafie jest zawsze liczbą naturalną ($N_\text{opt} \in \mathbb{N}$ oraz $N \in \mathbb{N}$), ponieważ wiemy, że liczba krawędzi w grafie jest zawsze liczbą naturalną ($N_\text{opt} \in \mathbb{N}$ oraz $N \in \mathbb{N}$),
wystarczy że w nierówności \ref{eqn:2013:fptas} będzie spełniony warunek wystarczy że w nierówności \ref{eqn:2013:fptas} będzie spełniony warunek
\begin{equation} \begin{equation}
@ -348,7 +348,7 @@ wystarczy że w nierówności \ref{eqn:2013:fptas} będzie spełniony warunek
N\varepsilon < 1 N\varepsilon < 1
\end{equation} \end{equation}
A uzyskamy A uzyskamy
\begin{equation*} \begin{equation*}
N \leq N_\text{opt} \leq N + N\varepsilon \Rightarrow N \leq N_\text{opt} \leq N N \leq N_\text{opt} \leq N + N\varepsilon \Rightarrow N \leq N_\text{opt} \leq N
@ -366,8 +366,8 @@ Należy więc udowodnić że dla każdych danych wejściowych jesteśmy w stanie
Jeżeli teraz przedzielimy obie strony nierówności przez $m + 1$ uzyskamy po prawej stronie 1, dokładnie tak jak w nierówności \ref{eqn:2013:fptas-condition} Jeżeli teraz przedzielimy obie strony nierówności przez $m + 1$ uzyskamy po prawej stronie 1, dokładnie tak jak w nierówności \ref{eqn:2013:fptas-condition}
\begin{equation*} \begin{equation*}
\frac{1}{m+1}N < 1 \frac{1}{m+1}N < 1
\end{equation*} \end{equation*}
a co za tym idzie wystarczy, że $\varepsilon < \frac{1}{m+1}$ a będziemy w stanie wywnioskować dokładny wynik w czasie wielomianowym, co jest możliwe tylko gdy $\P = \NP$. a co za tym idzie wystarczy, że $\varepsilon < \frac{1}{m+1}$ a będziemy w stanie wywnioskować dokładny wynik w czasie wielomianowym, co jest możliwe tylko gdy $\P = \NP$.
\taskend \taskend

View File

@ -10,7 +10,7 @@ w problem $\Pi \in \NP$ przekaż wiadomość, mówiącą, że:}
\solution \solution
Wiemy, że nasz problem $\Pi \in \NP$ istnieje więc niedeterministyczny algorytm wielomianowy, który jest w stanie Wiemy, że nasz problem $\Pi \in \NP$ istnieje więc niedeterministyczny algorytm wielomianowy, który jest w stanie
go rozwiązać. Mamy pewność, że złożoność dowolnego algorytmu \textbf{deterministycznego} jest $\Omega(2^n)$ czyli go rozwiązać. Mamy pewność, że złożoność dowolnego algorytmu \textbf{deterministycznego} jest $\Omega(2^n)$ czyli
ograniczona przez funkcję wykładniczą z dołu. Ponieważ każda funkcja wykładnicza o podstawie większej niż 1 ograniczona przez funkcję wykładniczą z dołu. Ponieważ każda funkcja wykładnicza o podstawie większej niż 1
rośnie szybciej niż dowolna funkcja wielomianowa wiemy, że na pewno nie ma \textbf{deterministycznego} algorytmu rośnie szybciej niż dowolna funkcja wielomianowa wiemy, że na pewno nie ma \textbf{deterministycznego} algorytmu
rozwiązującego nasz problem $\Pi$ w czasie wielomianowym co znaczyłoby, że $\Pi \not \in \P$. Łącząc to z założeniem rozwiązującego nasz problem $\Pi$ w czasie wielomianowym co znaczyłoby, że $\Pi \not \in \P$. Łącząc to z założeniem
otrzymalibyśmy, że problem $\Pi$ jest w \NP a nie jest w \P, czyli: otrzymalibyśmy, że problem $\Pi$ jest w \NP a nie jest w \P, czyli:
@ -25,15 +25,15 @@ to z definicji klasy \P
\end{center} \end{center}
Jeżeli $\Pi \in \NPC$ to wiemy, że każdy problem z klasy \NP możemy sprowadzić do tego problemu w czasie wielomianowym. Jeżeli $\Pi \in \NPC$ to wiemy, że każdy problem z klasy \NP możemy sprowadzić do tego problemu w czasie wielomianowym.
Jeżeli dodatkowo potrafilibyśmy rozwiązać $\Pi$ w czasie wielomianowym to łączny potrzebny czas na rozwiązanie Jeżeli dodatkowo potrafilibyśmy rozwiązać $\Pi$ w czasie wielomianowym to łączny potrzebny czas na rozwiązanie
dowolnego problemu \NP byłby sumą dwóch wielomianów - redukcji oraz rozwiązania $\Pi$ - czyli również wielomianem, a to dowolnego problemu \NP byłby sumą dwóch wielomianów - redukcji oraz rozwiązania $\Pi$ - czyli również wielomianem, a to
znaczyłoby że znaczyłoby że
\begin{center} \begin{center}
$\NP = \P$ - 4 symbole $\NP = \P$ - 4 symbole
\end{center} \end{center}
Problem \problem{3SAT} jest problemem \NPC, zatem jeżeli możemy wszystko $\alpha$-redukowac do \problem{3SAT} a Problem \problem{3SAT} jest problemem \NPC, zatem jeżeli możemy wszystko $\alpha$-redukowac do \problem{3SAT} a
\problem{3SAT} możemy $\alpha$-redukować do $\Pi$ to na podstawie przechodniości relacji $\alpha$-redukcji do $\Pi$ \problem{3SAT} możemy $\alpha$-redukować do $\Pi$ to na podstawie przechodniości relacji $\alpha$-redukcji do $\Pi$
możemy zredukować wszystko, czyli możemy zredukować wszystko, czyli
\begin{center} \begin{center}
$\Pi \in \NPC$ - 5 symboli $\Pi \in \NPC$ - 5 symboli
@ -47,7 +47,7 @@ wszystkie problemy $\NP$ (zgodnie z definicją klasy \NPC). W takim wypadku lepi
\taskend \taskend
\task Podaj status problemów (tj. czy są \P czy \NP-trudne) optymalizacyjnych podanych poniżej w podziałem na ich wersje maksymalizacyjne oraz wersje \task Podaj status problemów (tj. czy są \P czy \NP-trudne) optymalizacyjnych podanych poniżej w podziałem na ich wersje maksymalizacyjne oraz wersje
minimalizacyjne. minimalizacyjne.
\subtask Kolorowanie wierzchołków w grafie \subtask Kolorowanie wierzchołków w grafie
\subtask Znalezienie $k$-tego największego/najmniejszego elementu \subtask Znalezienie $k$-tego największego/najmniejszego elementu
\subtask Problem komiwojażera \subtask Problem komiwojażera
@ -57,8 +57,8 @@ minimalizacyjne.
\solution \solution
Biorąc pod uwagę, że jedynym wymaganiem kolorowania wierzchołków w grafie jest to, żeby 2 sąsiednie wierzchołki nie Biorąc pod uwagę, że jedynym wymaganiem kolorowania wierzchołków w grafie jest to, żeby 2 sąsiednie wierzchołki nie
miały tego samego koloru to wersja maksymalizacyjna problemu jest problemem wielomianowym - wystarczy każdy miały tego samego koloru to wersja maksymalizacyjna problemu jest problemem wielomianowym - wystarczy każdy
wierzchołek pokolorować na inny kolor, co da nam maksymalną możliwą liczbę kolorów. Wersja decyzyjna problemu wierzchołek pokolorować na inny kolor, co da nam maksymalną możliwą liczbę kolorów. Wersja decyzyjna problemu
kolorowania wierzchołków jest natomiast problemem \NPC zatem optymalizacyjnie jest to problem \NP-trudny. kolorowania wierzchołków jest natomiast problemem \NPC zatem optymalizacyjnie jest to problem \NP-trudny.
Znalezienie $k$-tego najmniejszego bądź największego elementu jest zadaniem prostym pod warunkiem, że nasz zbiór jest Znalezienie $k$-tego najmniejszego bądź największego elementu jest zadaniem prostym pod warunkiem, że nasz zbiór jest
@ -68,7 +68,7 @@ Problem komiwojażera bez względu na to czy jest minimalizacyjny czy maksymaliz
w danym grafie - co jest zadaniem trudnym obliczeniowo - problem szukania cyklu hamiltona jest \NPC. Dodatkowo w danym grafie - co jest zadaniem trudnym obliczeniowo - problem szukania cyklu hamiltona jest \NPC. Dodatkowo
musimy znaleźć cykl o największej bądź najmniejszej możliwie sumie wag - to znaczy, że problem ten musi być \NP-trudny. musimy znaleźć cykl o największej bądź najmniejszej możliwie sumie wag - to znaczy, że problem ten musi być \NP-trudny.
Problem minimalnego drzewa spinającego można rozwiązać algorytmem kruskala. Jeżeli zastąpimy wybieranie minimalnej Problem minimalnego drzewa spinającego można rozwiązać algorytmem Kruskala. Jeżeli zastąpimy wybieranie minimalnej
krawędzi wybieraniem krawędzi maksymalnej to otrzymamy algorytm szukający maksymalnego drzewa spinającego. Kruskal jest krawędzi wybieraniem krawędzi maksymalnej to otrzymamy algorytm szukający maksymalnego drzewa spinającego. Kruskal jest
algorytmem wielomianowym, zatem cały problem jest w klasie \P. algorytmem wielomianowym, zatem cały problem jest w klasie \P.
@ -76,15 +76,15 @@ Znalezienie najkrótszej drogi w grafie jest bardzo proste, wystarczy wziąć do
krótszej niż 1. Szukanie najdłuższej ścieżki już takie proste nie jest. W grafie jest $n$ wierzchołków, maksymalna krótszej niż 1. Szukanie najdłuższej ścieżki już takie proste nie jest. W grafie jest $n$ wierzchołków, maksymalna
droga jaką możemy stworzyć bez tworzenia cyklu to droga $n$ wierzchołkowa, zawierająca $n-1$ krawędzi. Ścieżka, która droga jaką możemy stworzyć bez tworzenia cyklu to droga $n$ wierzchołkowa, zawierająca $n-1$ krawędzi. Ścieżka, która
przechodzi przez dokładnie wszystkie wierzchołki jest ścieżką hamiltona, a problem ścieżki hamiltona jest problemem \NPC. przechodzi przez dokładnie wszystkie wierzchołki jest ścieżką hamiltona, a problem ścieżki hamiltona jest problemem \NPC.
Zatem zakładając, że rozpatrujemy wersję decyzyjną tego problemu zdefiniowaną następująco: ,,W grafie $G$ istnieje Zatem zakładając, że rozpatrujemy wersję decyzyjną tego problemu zdefiniowaną następująco: ,,W grafie $G$ istnieje
ścieżka długości $l$'' to dość łatwo możemy przeprowadzić $\alpha$-redukcję problemu ścieżki hamiltona do problemu ścieżka długości $l$'' to dość łatwo możemy przeprowadzić $\alpha$-redukcję problemu ścieżki hamiltona do problemu
drogi w grafie - graf pozostaje bez zmian, natomiast za długość ścieżki przyjmujemy liczbę wierzchołków w grafie. drogi w grafie - graf pozostaje bez zmian, natomiast za długość ścieżki przyjmujemy liczbę wierzchołków w grafie.
Wersja decyzyjna jest zatem \NPC, a co za tym idzie problem w wersji maksymalizacyjnej jest \NP-trudny. Wersja decyzyjna jest zatem \NPC, a co za tym idzie problem w wersji maksymalizacyjnej jest \NP-trudny.
Z twierdzenia kuratowskiego wiemy, że żaden graf nie może zawierać kliki $K_5$, zatem najwiekszą kliką w planarnym Z twierdzenia Kuratowskiego wiemy, że żaden graf planarny nie może zawierać kliki $K_5$, zatem najwiekszą kliką w
grafie jest klika $K_4$. Jesteśmy w stanie sprawdzić istnienie $K_4, K_3$ w grafie w czasie wielomianowym. Przypadki planarnym grafie jest klika $K_4$. Jesteśmy w stanie sprawdzić istnienie $K_4, K_3$ w grafie w czasie wielomianowym.
$K_1$ i $K_2$ są jeszcze łatwiejsze ponieważ klika $K_1$ to nic innego jak wierzchołek, a $K_2$ to krawędź. Stąd też Przypadki $K_1$ i $K_2$ są jeszcze łatwiejsze ponieważ klika $K_1$ to nic innego jak wierzchołek, a $K_2$ to krawędź.
wiemy, że wersja minimalizacyjna jest \P. Stąd też wiemy, że wersja minimalizacyjna jest \P.
\begin{table}[H] \begin{table}[H]
\centering \centering
@ -97,16 +97,16 @@ wiemy, że wersja minimalizacyjna jest \P.
\end{table} \end{table}
\taskend \taskend
\task Masz dany graf $G$ oraz liczbę $k$. Czy graf $G$ zawiera klikę o rozmiarze $k$? Do pomocy masz czarną skrzynkę. \task Masz dany graf $G$ oraz liczbę $k$. Czy graf $G$ zawiera klikę o rozmiarze $k$? Do pomocy masz czarną skrzynkę.
Możesz do niej włożyć tylko graf $G$ posiadający gwiazdę spinającą oraz liczbę $p$ będącą progiem. Skrzynka odpowie na Możesz do niej włożyć tylko graf $G$ posiadający gwiazdę spinającą oraz liczbę $p$ będącą progiem. Skrzynka odpowie na
pytanie - ,,Czy w danym grafie istnieje klika o rozmiarze $k \geq p$?''. Jeżeli graf nie ma gwiazdy spinającej to pytanie - ,,Czy w danym grafie istnieje klika o rozmiarze $k \geq p$?''. Jeżeli graf nie ma gwiazdy spinającej to
skrzynka milczy. skrzynka milczy.
\tip{Gwiazda spinająca to inaczej wierzchołek połączony ze wszystkimi innymi wierzchołkami.} \tip{Gwiazda spinająca to inaczej wierzchołek połączony ze wszystkimi innymi wierzchołkami.}
\solution \solution
Przypomnijmy że klika to graf pełny, czyli inaczej taki graf, w którym każdy wierzchołek jest połączony z każdym innym. Przypomnijmy że klika to graf pełny, czyli inaczej taki graf, w którym każdy wierzchołek jest połączony z każdym innym.
Co za tym idzie, aby zwiększyć klikę o 1 należy dodać nowy wierzchołek, który jest połączony ze wszystkimi innymi Co za tym idzie, aby zwiększyć klikę o 1 należy dodać nowy wierzchołek, który jest połączony ze wszystkimi innymi
już istniejącymi wierzchołkami. już istniejącymi wierzchołkami.
Dodanie do grafu gwiazdy spinającej z definicji dodaje wierzchołek połączony ze wszystkimi innymi wierzchołkami. Dodanie do grafu gwiazdy spinającej z definicji dodaje wierzchołek połączony ze wszystkimi innymi wierzchołkami.
\begin{figure}[H] \begin{figure}[H]
@ -128,8 +128,8 @@ Dodanie do grafu gwiazdy spinającej z definicji dodaje wierzchołek połączony
Zauważmy, że w grafie \ref{fig:2018:3:G} istnieje klika $K_4$ składająca się z wierzchołków $(1, 2, 6, 5)$. Ponieważ dodaliśmy gwiazdę Zauważmy, że w grafie \ref{fig:2018:3:G} istnieje klika $K_4$ składająca się z wierzchołków $(1, 2, 6, 5)$. Ponieważ dodaliśmy gwiazdę
spinajacą klika razem z dodanym wierzchołkiem stanowi klikę $K_5$. Wiemy zatem, że po dodaniu do grafu gwiazdy spinającej spinajacą klika razem z dodanym wierzchołkiem stanowi klikę $K_5$. Wiemy zatem, że po dodaniu do grafu gwiazdy spinającej
wszystkie kliki ,,awansują'' w rozmiarze o 1. Zatem aby sprawdzić czy w grafie przed dodaniem gwiazdy istnieje klika o wszystkie kliki ,,awansują'' w rozmiarze o 1. Zatem aby sprawdzić czy w grafie przed dodaniem gwiazdy istnieje klika o
rozmiarze $n$ wystarczy sprawdzić czy w grafie $H$, istnieje klika o rozmiarze $p = n+1$. rozmiarze $n$ wystarczy sprawdzić czy w grafie $H$, istnieje klika o rozmiarze $p = n+1$.
Skrzynka odpowiada nam na pytanie czy w grafie istnieje klika $k \geq p$, jednak pamiętajmy, że zgodnie z powyższym Skrzynka odpowiada nam na pytanie czy w grafie istnieje klika $k \geq p$, jednak pamiętajmy, że zgodnie z powyższym
rozumowaniem mniejsze kliki są podgrafami klik większych, zatem nawet jeżeli skrzynka znajdzie podgraf $K_{10}$ a my rozumowaniem mniejsze kliki są podgrafami klik większych, zatem nawet jeżeli skrzynka znajdzie podgraf $K_{10}$ a my
@ -142,21 +142,21 @@ który chce obejrzeć. Wiemy, że optymalny czas pracy wynosi 6h, jaką złożon
kierownikowi obejrzeć mecz? kierownikowi obejrzeć mecz?
\solution \solution
Problem ten jest problemem minimalizacyjnym oraz wiemy, że $A_{opt} = 6$. Aby zdążyć obejrzeć mecz musimy skończyć Problem ten jest problemem minimalizacyjnym oraz wiemy, że $A_\text{opt} = 6$. Aby zdążyć obejrzeć mecz musimy skończyć
pracę o 15:00, zatem wystarczy że algorytm przydzieli pracę tak, aby wszystkie elementy zostały obrobione w czasie pracę o 15:00, zatem wystarczy że algorytm przydzieli pracę tak, aby wszystkie elementy zostały obrobione w czasie
8 godzin skąd $A = 8$. 8 godzin skąd $A = 8$.
\begin{equation*} \begin{equation*}
\frac{A}{A_{opt}} \leq 1 + \varepsilon \iff A \leq A_{opt} + \varepsilon A_{opt} \frac{A}{A_\text{opt}} \leq 1 + \varepsilon \iff A \leq A_\text{opt} + \varepsilon A_\text{opt}
\end{equation*} \end{equation*}
Ponieważ nie chcemy męczyć naszego komputera, a dokładne obliczenia są coraz cięższe wystarczy że rozpatrzymy przypadek Ponieważ nie chcemy męczyć naszego komputera, a dokładne obliczenia są coraz cięższe wystarczy że rozpatrzymy przypadek
rozwiązujący problem dla dokładnie 8 godzin: rozwiązujący problem dla dokładnie 8 godzin:
\begin{equation} \begin{equation}
A = A_{opt} + \varepsilon A_{opt} A = A_\text{opt} + \varepsilon A_\text{opt}
\end{equation} \end{equation}
Ponieważ znamy zarówno $A$ jak i $A_{opt}$ z łatwością możemy wyznaczyć $\varepsilon$ Ponieważ znamy zarówno $A$ jak i $A_\text{opt}$ z łatwością możemy wyznaczyć $\varepsilon$
\begin{equation*} \begin{equation*}
8 = 6 + 6\varepsilon \iff 2 = 6\varepsilon \iff \varepsilon = \frac{1}{3} 8 = 6 + 6\varepsilon \iff 2 = 6\varepsilon \iff \varepsilon = \frac{1}{3}
\end{equation*} \end{equation*}
@ -192,8 +192,8 @@ Następujący algorytm rozwiązuje ten problem w sposób 2-przybliżony. Udowodn
\solution \solution
Aby rozwiązać ten problem najpierw spróbujmy rozważyc jego uporoszczoną wersję - w jednym wymiarze. W tym wypadku Aby rozwiązać ten problem najpierw spróbujmy rozważyc jego uporoszczoną wersję - w jednym wymiarze. W tym wypadku
rozwiązanie problemu zawsze będzie dość proste - średnica będzie między punktem wysuniętym najbardziej na lewo i punktem rozwiązanie problemu zawsze będzie dość proste - średnica będzie między punktem wysuniętym najbardziej na lewo i punktem
najbardziej wysuniętym na prawo. Najprawdopodobniej jednak nasz punkt $1$ będzie znajdował się gdzieś między nimi. najbardziej wysuniętym na prawo. Najprawdopodobniej jednak nasz punkt $1$ będzie znajdował się gdzieś między nimi.
\begin{figure}[H] \begin{figure}[H]
\centering \centering
@ -203,7 +203,7 @@ najbardziej wysuniętym na prawo. Najprawdopodobniej jednak nasz punkt $1$ będz
\end{tikzpicture} \end{tikzpicture}
\end{figure} \end{figure}
Na całą resztę zadania przyjmijmy, że punkty tworzące średnice nazwiemy $\alpha$ i $\Omega$, przy czym żaden z tych Na całą resztę zadania przyjmijmy, że punkty tworzące średnice nazwiemy $\alpha$ i $\Omega$, przy czym żaden z tych
punktów nie jest punktem $1$. Na powyższym rysunku, dość wyraźnie widać zależność punktów nie jest punktem $1$. Na powyższym rysunku, dość wyraźnie widać zależność
\begin{equation*} \begin{equation*}
@ -211,7 +211,7 @@ punktów nie jest punktem $1$. Na powyższym rysunku, dość wyraźnie widać za
\end{equation*} \end{equation*}
Ponieważ z par punktów $\alpha, 1$ i $1, \Omega$ zawsze wybieramy tę, między którymi jest większa odległość, możemy mieć Ponieważ z par punktów $\alpha, 1$ i $1, \Omega$ zawsze wybieramy tę, między którymi jest większa odległość, możemy mieć
pewność że $d_{\alpha,\Omega} \leq 2\cdot d$, gdzie $d$ to wybrana przez nas średnica. $d_{\alpha,\Omega} = 2d$ gdy pewność że $d_{\alpha,\Omega} \leq 2\cdot d$, gdzie $d$ to wybrana przez nas średnica. $d_{\alpha,\Omega} = 2d$ gdy
punkt 1 znajduje się idealnie po środku. punkt 1 znajduje się idealnie po środku.
\begin{figure}[H] \begin{figure}[H]
@ -233,7 +233,7 @@ punkt 1 znajduje się idealnie po środku.
\end{tikzpicture} \end{tikzpicture}
\end{figure} \end{figure}
Z poprzednich rozważań wiemy, że w wypadku punktu oznaczonego teraz jako $1'$ algorytm może pomylić się maksymalnie Z poprzednich rozważań wiemy, że w wypadku punktu oznaczonego teraz jako $1'$ algorytm może pomylić się maksymalnie
2-krotność swojej odpowiedzi. Odległość pomiędzy punktem 1 a jednym z punktów średnicy jest teraz na pewno większa 2-krotność swojej odpowiedzi. Odległość pomiędzy punktem 1 a jednym z punktów średnicy jest teraz na pewno większa
niż w wypadku $1'$ a co za tym idzie odpowiedź będzie bliższa tej poprawnej, czyli najgorszym wypadkiem wciąż pozostaje niż w wypadku $1'$ a co za tym idzie odpowiedź będzie bliższa tej poprawnej, czyli najgorszym wypadkiem wciąż pozostaje
pomyłka o 2-krotność odpowiedzi optymalnej, czyli algorytm jest 2-aproksymacyjny. pomyłka o 2-krotność odpowiedzi optymalnej, czyli algorytm jest 2-aproksymacyjny.
@ -250,13 +250,13 @@ pomyłka o 2-krotność odpowiedzi optymalnej, czyli algorytm jest 2-aproksymacy
\subtask Nie istnieje schemat PTAS \subtask Nie istnieje schemat PTAS
\solution \solution
Aby znaleźć największą odległość między parami punktów na płaszczyźnie wystarczy sprawdzić wszystkie możliwe pary, Aby znaleźć największą odległość między parami punktów na płaszczyźnie wystarczy sprawdzić wszystkie możliwe pary,
których jest ${n \choose 2} = O(n^2)$, algorytm zatem jest wielomianowy, czyli należy do klasy \P. Co za tym których jest ${n \choose 2} = O(n^2)$, algorytm zatem jest wielomianowy, czyli należy do klasy \P. Co za tym
idzie nie może być problemem \NPC a tym bardziej \NP-trudnym. Warto jednak zaznaczyć, że gdyby pytanie dotyczyło idzie nie może być problemem \NPC a tym bardziej \NP-trudnym. Warto jednak zaznaczyć, że gdyby pytanie dotyczyło
tego czy problem ten jest \NP to odpowiedź byłaby twierdząca ponieważ $\P \subseteq \NP$. tego czy problem ten jest \NP to odpowiedź byłaby twierdząca ponieważ $\P \subseteq \NP$.
Ponieważ problem jest wielomianowy, wszystkie aproksymacje są możliwe - chcąc uzyskać algorytm $x$-aproksymacyjny wystarczy, Ponieważ problem jest wielomianowy, wszystkie aproksymacje są możliwe - chcąc uzyskać algorytm $x$-aproksymacyjny wystarczy,
że przemnożymy wynik dokładny przez $x$ - jest to operacją wielomianową ponieważ znalezienie wyniku dokładnego jest że przemnożymy wynik dokładny przez $x$ - jest to operacją wielomianową ponieważ znalezienie wyniku dokładnego jest
wielomianowe a mnożenie tym bardziej. Tak samo możemy postąpić z absolutną aproksymacją - wystarczy dodać bądź odjąć $x$. wielomianowe a mnożenie tym bardziej. Tak samo możemy postąpić z absolutną aproksymacją - wystarczy dodać bądź odjąć $x$.
Zgodnie z powyższym, możemy uzyskać dowolnie dobre przybliżenie jakie chcemy czyli schemat PTAS powinien istnieć. Zgodnie z powyższym, możemy uzyskać dowolnie dobre przybliżenie jakie chcemy czyli schemat PTAS powinien istnieć.

View File

@ -2,18 +2,18 @@
\node[problem] (pz) {\problem{PZ}}; \node[problem] (pz) {\problem{PZ}};
\node[solution, right of=pz] (r-pz) {T/N}; \node[solution, right of=pz] (r-pz) {T/N};
\node[left of=pz] (i-pz) {$A$}; \node[left of=pz] (i-pz) {$A$};
\node[problem, below of=pz] (mlzp) {\problem{$MLZP_d$}}; \node[problem, below of=pz] (mlzp) {\problem{MLZP$_d$}};
\node[solution, right of=mlzp] (r-mlzp) {T/N}; \node[solution, right of=mlzp] (r-mlzp) {T/N};
\node[left of=mlzp] (i-mlzp) {$k, L, I$}; \node[left of=mlzp] (i-mlzp) {$k, L, I$};
\draw[->, alpha, left] (i-pz) -- node[right] {$f$} (i-mlzp); \draw[->, alpha, left] (i-pz) -- node[right] {$f$} (i-mlzp);
\draw[->] (pz) -- (r-pz); \draw[->] (pz) -- (r-pz);
\draw[->] (mlzp) -- (r-mlzp); \draw[->] (mlzp) -- (r-mlzp);
\draw[->] (i-pz) -- (pz); \draw[->] (i-pz) -- (pz);
\draw[->] (i-mlzp) -- (mlzp); \draw[->] (i-mlzp) -- (mlzp);
\draw[Implies-Implies, double distance=2pt] (r-pz) -- (r-mlzp); \draw[Implies-Implies, double distance=2pt] (r-pz) -- (r-mlzp);
\end{tikzpicture} \end{tikzpicture}

View File

@ -16,6 +16,7 @@
\usepackage{enumerate} \usepackage{enumerate}
\usepackage{lmodern} \usepackage{lmodern}
\usepackage{amsfonts} \usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{mathtools} \usepackage{mathtools}
\usepackage{alphalph} \usepackage{alphalph}
\usepackage{algorithm} \usepackage{algorithm}
@ -33,7 +34,7 @@
\tikzstyle{problem} = [draw,outer sep=0,inner sep=5,minimum size=10] \tikzstyle{problem} = [draw,outer sep=0,inner sep=5,minimum size=10]
\tikzstyle{solution} = [outer sep=0,inner sep=1,minimum size=10] \tikzstyle{solution} = [outer sep=0,inner sep=1,minimum size=10]
\tikzstyle{alpha} = [decorate, decoration={snake, amplitude=.5mm}, help lines] \tikzstyle{alpha} = [decorate, decoration={snake, amplitude=.5mm}, help lines]
\tikzstyle{max edge} = [very thick, blue] \tikzstyle{max edge} = [very thick, blue]
\tikzstyle{vertex} = [draw, circle, thick] \tikzstyle{vertex} = [draw, circle, thick]
\tikzstyle{small vertex} = [draw, circle, scale=.75] \tikzstyle{small vertex} = [draw, circle, scale=.75]
@ -43,6 +44,9 @@
\pgfdeclarelayer{foreground} \pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground} \pgfsetlayers{background,main,foreground}
\renewcommand\leq\leqslant
\renewcommand\geq\geqslant
% opening % opening
\title{PAA - Kolokwia, rozwiązania} \title{PAA - Kolokwia, rozwiązania}
\author{Kacper Donat} \author{Kacper Donat}