poprawki natury typograficznej
This commit is contained in:
parent
be4c3652a9
commit
5051d6e5cb
144
2011.01.18.tex
144
2011.01.18.tex
@ -3,19 +3,19 @@
|
||||
\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
|
||||
\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. 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.
|
||||
W zadaniu zostało \textit{explicite} podane, że musimy zredukować problem \textit{Sumy Podzbioru} do naszego problemu \problem{POR}, i faktycznie wybór ten jest nieprzypadkowy.
|
||||
Na wstępie przypomnijmy: problem \textit{Sumy Podzbioru} to pytanie ,,Czy w danym (multi)zbiorze $A$ istnieje podzbiór $B$ ($B \subseteq A$) taki, że suma elementów $B$ jest równa $n$?''.
|
||||
Naszkicujmy schemat $\alpha$-redukcji dla tego problemu.
|
||||
|
||||
@ -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.}
|
||||
\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$?
|
||||
|
||||
\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$}
|
||||
\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.
|
||||
|
||||
\begin{figure}[H]
|
||||
@ -48,21 +48,21 @@ Czyli z $\alpha$-redukcji utrzymalibyśmy następujące parametry: $W = \text{wy
|
||||
\taskend
|
||||
|
||||
\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$.
|
||||
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.
|
||||
Sprawdzenie czy suma ich wag faktycznie jest mniejsza niż $p$ jest do wykonania w czasie liniowym. Aby sprawdzić czy pokrycie faktycznie
|
||||
mógłby potwierdzić, że odpowiedź na to pytanie jest poprawna - w tym wypadku oczywistym zdaje się być lista wierzchołków $V$ stanowiących to pokrycie.
|
||||
Sprawdzenie czy suma ich wag faktycznie jest mniejsza niż $p$ jest do wykonania w czasie liniowym. Aby sprawdzić czy pokrycie faktycznie
|
||||
pokrywa wszystkie krawędzie wystarczy przeiterować po wszystkich wierzchołkach usuwając z grafu krawędzie zawierające ten wierzchołek, co jest wykonywalne
|
||||
w czasie $O(m \cdot n)$. Jeżeli po tych operacjach uzyskamy graf pusty - to odpowiedź była poprawna.
|
||||
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
|
||||
ł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]
|
||||
\centering
|
||||
@ -86,20 +86,20 @@ Problem \problem{WPW} jest w zasadzie uogólnionym problemem \problem{PW}. Na og
|
||||
\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ą
|
||||
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$.
|
||||
|
||||
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
|
||||
\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
|
||||
\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
|
||||
@ -125,13 +125,13 @@ Analogicznie możemy postąpić dla grafu o 6 wierzchołkach, uzyskując:
|
||||
\input{gfx/mgp-6.tex}
|
||||
\caption{Kolejne etapy rysowania grafu planarnego o 6 wierzchołkach}
|
||||
\end{figure}
|
||||
Nie są to oczywiście jedyne możliwe (a na pewno nie najładniejsze) maksymalne grafy planarne,
|
||||
Nie są to oczywiście jedyne możliwe (a na pewno nie najładniejsze) maksymalne grafy planarne,
|
||||
jednak są one stosunkowo proste w narysowaniu i wymyśleniu.
|
||||
|
||||
\begin{shortcut}
|
||||
Twierdzenie Kuratowskiego mówi nam, że graf jest planarny wtedy i tylko wtedy kiedy nie zawiera podgrafu $K_5$
|
||||
i $K_{3,3}$ (dwudzielnego 3 na 3).
|
||||
|
||||
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
|
||||
@ -147,13 +147,13 @@ jednak są one stosunkowo proste w narysowaniu i wymyśleniu.
|
||||
\end{figure}
|
||||
\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.
|
||||
\end{shortcut}
|
||||
|
||||
Graf jest eulerowski (czyli posiada cykl eulera - pozwalający przejść po wszystkich krawędziach dokładnie raz),
|
||||
tylko jeżeli wszystkie wierzchołki są stopni parzystych. Jak widać w pierwszym grafie są 2 wierzchołki stopnia 3 a w drugim
|
||||
grafie mamy 2 pary wierzchołków o stopniach nieparzystych - zatem żaden graf nie jest eulerowski - a co za tym idzie
|
||||
tylko jeżeli wszystkie wierzchołki są stopni parzystych. Jak widać w pierwszym grafie są 2 wierzchołki stopnia 3 a w drugim
|
||||
grafie mamy 2 pary wierzchołków o stopniach nieparzystych - zatem żaden graf nie jest eulerowski - a co za tym idzie
|
||||
potrzebują one 4 kolorów aby je pokolorować. Wiemy to z twierdzenia o 4 kolorach, zgodnie z którym każdy graf planarny
|
||||
można pokolorować maksymalnie 4 kolorami ($\chi(G_P) \leq 4$).
|
||||
|
||||
@ -174,9 +174,9 @@ o tyle korzystna, że znamy ilość kolorów - możemy zatem łatwo zweryfikowa
|
||||
\caption{Kolorowanie grafów}
|
||||
\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
|
||||
dwudzielny. Z zadania wiemy, że $\chi(G_{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:
|
||||
Z poprzedniego zadania wiemy, że $\chi(G_\text{MGP}) = 1$ tylko kiedy graf jest grafem pustym, $\chi(G_\text{MGP}) = 2$ tylko gdy graf jest
|
||||
dwudzielny. Z zadania wiemy, że $\chi(G_\text{MGP}) = 3$ tylko gdy graf jest planarny, a z twierdzenia o 4 kolorach wiemy, że
|
||||
$\chi(G_\text{MGP}) \leq 4$. Możemy zatem ułożyc bardzo prosty algorym:
|
||||
|
||||
\begin{algorithm}[H]
|
||||
\caption{Algorytm określający liczbę chromatyczną dla \textbf{MGP}}
|
||||
@ -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$}
|
||||
\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
|
||||
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.
|
||||
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.
|
||||
|
||||
\task{Dany jest zbiór $n$ różnych liczb naturalnych $A = \{a_1, ..., a_n\}$. Wiadomo, że problem polegający na
|
||||
sprawdzeniu ,,czy zbiór $A$ można podzielić na sumę dwóch rozłącznych zbiorów $B$ i $C$ (tzn. takich, że
|
||||
$B \cup C = A$ i $B \cap C = \emptyset$) o równych sumach elementów'' jest \NPC. Czy pozostanie on \NPC czy też stanie
|
||||
\task{Dany jest zbiór $n$ różnych liczb naturalnych $A = \{a_1, ..., a_n\}$. Wiadomo, że problem polegający na
|
||||
sprawdzeniu ,,czy zbiór $A$ można podzielić na sumę dwóch rozłącznych zbiorów $B$ i $C$ (tzn. takich, że
|
||||
$B \cup C = A$ i $B \cap C = \emptyset$) o równych sumach elementów'' jest \NPC. Czy pozostanie on \NPC czy też stanie
|
||||
się wielomianowy przy następujących modyfikacjach?}
|
||||
\subtask{$n$ jest podzielne przez $3$}
|
||||
\subtask{$A$ to 33 kolejne wyrazy ciągu Fibonacciego}
|
||||
@ -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.
|
||||
|
||||
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
|
||||
nie zmieniają istoty problemu. Co za tym idzie $\Pi_a \in \NPC$.
|
||||
|
||||
W $\Pi_b$ z góry znamy zbiór A oraz jego wielkość - problem zatem jest trywialny - $\Pi_b \in \problem{TRY}$
|
||||
|
||||
$\Pi_c$ wiemy, że wszystkie liczby są podzielne przez 3 czyli, dla każdego elementu $a_i$ należącego do $A$ istnieje taka
|
||||
$\Pi_c$ wiemy, że wszystkie liczby są podzielne przez 3 czyli, dla każdego elementu $a_i$ należącego do $A$ istnieje taka
|
||||
liczba $k_{a_i} \in \mathbb{Z}$, że $a_i = 3k_{a_i}$. Problem dotyczy znalezienia takich rozłącznych zbiorów $B$ i $C$,
|
||||
że:
|
||||
\begin{equation}
|
||||
@ -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$
|
||||
|
||||
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
|
||||
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$.
|
||||
|
||||
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*}
|
||||
|
||||
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$.
|
||||
|
||||
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.
|
||||
|
||||
\begin{figure}[H]
|
||||
@ -319,65 +319,65 @@ $\problem{TRY} \subseteq \P \subseteq \NP$. Stąd możemy naszkicować graf rela
|
||||
\end{figure}
|
||||
\taskend
|
||||
|
||||
\task{Problem \textit{Maksymalizacji Liczby Zapamiętanych Programów} (\problem{MLZP}) określony jest następująco:
|
||||
,,Dany jest zbiór $n$ programów o długościach $I_1, I_2, ..., I_n$ i 2 dyskietki o pojemności $L$ każda. Znaleźć
|
||||
upakowanie jak największej liczby programów na tych dyskietkach''. Jak wiadomo, algorytm \textit{Shortest-First}
|
||||
(\problem{SF}) dla problemu \problem{MLZP} myli się o co najwyżej program i polega na tym, że dyskietki zapełniamy
|
||||
\task{Problem \textit{Maksymalizacji Liczby Zapamiętanych Programów} (\problem{MLZP}) określony jest następująco:
|
||||
,,Dany jest zbiór $n$ programów o długościach $I_1, I_2, ..., I_n$ i 2 dyskietki o pojemności $L$ każda. Znaleźć
|
||||
upakowanie jak największej liczby programów na tych dyskietkach''. Jak wiadomo, algorytm \textit{Shortest-First}
|
||||
(\problem{SF}) dla problemu \problem{MLZP} myli się o co najwyżej program i polega na tym, że dyskietki zapełniamy
|
||||
w kolejności od najkrótszego do najdłuższego programu. Pokaż, że:}
|
||||
|
||||
\subtask {\problem{SF} jest $\frac{4}{3}$-aproksymacyjny}
|
||||
\subtask {dla \problem{MLZP} nie istnieje schemat FPTAS, chyba że $\P = \NP$}
|
||||
|
||||
\solution
|
||||
Problem \problem{MLZP}, zgodnie z tytułem, jest problemem maksymalizacyjnym. Zatem wiemy, że $A_{opt} \geq A$, gdzie
|
||||
$A_{opt}$ to odpowiedź optymalna, a $A$ to odpowiedź naszego algorytmu. Dodatkowo wiemy, że $A, A_{opt} \in \mathbb{N}$
|
||||
Problem \problem{MLZP}, zgodnie z tytułem, jest problemem maksymalizacyjnym. Zatem wiemy, że $A_\text{opt} \geq A$, gdzie
|
||||
$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:
|
||||
\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}
|
||||
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*}
|
||||
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*}
|
||||
|
||||
Dodatkowo zauważamy, że jeżeli jest 1 program to algorytm zawsze zwróci wynik dokładny - zmieścił się na dyskietce
|
||||
albo nie. Dla 2 programów podobnie. Dla 3 natomiast, nie jest to już takie oczywiste, dla ułatwienia
|
||||
późniejszego zapisu uznajmy, że programy są posortowane rosnąco, tj
|
||||
późniejszego zapisu uznajmy, że programy są posortowane rosnąco, tj
|
||||
\begin{equation}\label{eqn:2011.6:assumption}
|
||||
I_1 \leq I_2 \leq I_3
|
||||
\end{equation}
|
||||
|
||||
Postarajmy się więc znaleźć kontrprzykład - bądź udowodnić, że nie może on istnieć. Ponieważ liczba programów wynosi
|
||||
zaledwie 3 możemy bez problemu rozważyć wszystkie możliwe kombinacje programów. Wiemy, że na pierwszej dyskietce na
|
||||
pewno znajdzie sie najmniejszy program o rozmiarze $I_1$ , jeżeli $I_1 + I_2 > L$ to program $I_2$ zostanie umieszczony
|
||||
na drugiej dyskietce i na pewno nie starczy już miejsca na 3 program (zgodnie z \eqref{eqn:2011.6:assumption}
|
||||
$I_1 + I_2 > L \Rightarrow I_2 + I_3 > L$). Ponieważ tym bardziej $I_1 + I_3 > I_1 + I_2$ to wiemy, że nie może
|
||||
istnieć lepsze ułożenie - wynik zatem jest dokładny. Jeżeli programy 1 i 2 mieszczą się na jednej dyskietce to tak jak
|
||||
w przypadku posiadania jednego programu - algorym zwróci 2 tylko jeżeli program nie mieści się na dyskietce - zatem nie
|
||||
Postarajmy się więc znaleźć kontrprzykład - bądź udowodnić, że nie może on istnieć. Ponieważ liczba programów wynosi
|
||||
zaledwie 3 możemy bez problemu rozważyć wszystkie możliwe kombinacje programów. Wiemy, że na pierwszej dyskietce na
|
||||
pewno znajdzie sie najmniejszy program o rozmiarze $I_1$ , jeżeli $I_1 + I_2 > L$ to program $I_2$ zostanie umieszczony
|
||||
na drugiej dyskietce i na pewno nie starczy już miejsca na 3 program (zgodnie z \eqref{eqn:2011.6:assumption}
|
||||
$I_1 + I_2 > L \Rightarrow I_2 + I_3 > L$). Ponieważ tym bardziej $I_1 + I_3 > I_1 + I_2$ to wiemy, że nie może
|
||||
istnieć lepsze ułożenie - wynik zatem jest dokładny. Jeżeli programy 1 i 2 mieszczą się na jednej dyskietce to tak jak
|
||||
w przypadku posiadania jednego programu - algorym zwróci 2 tylko jeżeli program nie mieści się na dyskietce - zatem nie
|
||||
istnieje kontrprzykład a algorytm \problem{SF} rozwiązuje problem \problem{MLZP} dokładnie.
|
||||
|
||||
Dla 4 dyskietek postarajmy się znaleźć kontrprzykład. Podobnie jak poprzednio uznajmy, że programy są indeksowane
|
||||
rosnąco. Potrzebujemy takich danych, dla których algorytm zwróci 3 a odpowiedź optymalna wyniesie 4. Ponieważ
|
||||
algorytm bierze liczby w kolejności rosnącej zróbmy tak, że dyskietkę możemy wypełnić najmniejszym i największym
|
||||
programem: $L = I_1 + I_4$ a drugą programami środkowymi: $I_2 + I_3 \leq L$. Z naszej definicji wynika, że \problem{SF}
|
||||
Dla 4 dyskietek postarajmy się znaleźć kontrprzykład. Podobnie jak poprzednio uznajmy, że programy są indeksowane
|
||||
rosnąco. Potrzebujemy takich danych, dla których algorytm zwróci 3 a odpowiedź optymalna wyniesie 4. Ponieważ
|
||||
algorytm bierze liczby w kolejności rosnącej zróbmy tak, że dyskietkę możemy wypełnić najmniejszym i największym
|
||||
programem: $L = I_1 + I_4$ a drugą programami środkowymi: $I_2 + I_3 \leq L$. Z naszej definicji wynika, że \problem{SF}
|
||||
będzie próbował wrzucić jak najwięcej programów na pierwszą dyskietkę biorąc po kolei najmniejsze programy. Nie dopuśćmy
|
||||
do wrzucenia 3 programów na dyskietkę pierwszą dobierając rozmiar $I_2$ i $I_3$ tak, że $I_1 + I_2 + I_3 > L$.
|
||||
do wrzucenia 3 programów na dyskietkę pierwszą dobierając rozmiar $I_2$ i $I_3$ tak, że $I_1 + I_2 + I_3 > L$.
|
||||
Ponieważ $I_3 > I_1$ a $I_1 + I_4 = L$ to na pewno $I_3 + I_4$ (czyli dwa pozostałe programy) nie zmieszczą się razem
|
||||
na jednej dyskietce. W ten sposób minimalne ułożenie to $\{\{I_1, I_4\}, \{I_2, I_3\}\}$ a \problem{SF} znajdize tylko
|
||||
$\set{\set{I_1, I_2}, \set{I_3}}$. Przykładowe rozmiary programów dla $L = 5$ to $\set{1, 2, 3, 4}$.
|
||||
|
||||
Zatem dla $n = 4$ algorytm ten daje wynik $\frac{4}{3}$-przybliżony, a w ogólności dla $n$ - $\frac{n+1}{n}$-przybliżony.
|
||||
Ponieważ $\frac{x+1}{x}$ jest funkcją ściśle malejącą dla $x > 3$ to $\frac{4}{3}$ jest największą możliwą jej
|
||||
Zatem dla $n = 4$ algorytm ten daje wynik $\frac{4}{3}$-przybliżony, a w ogólności dla $n$ - $\frac{n+1}{n}$-przybliżony.
|
||||
Ponieważ $\frac{x+1}{x}$ jest funkcją ściśle malejącą dla $x > 3$ to $\frac{4}{3}$ jest największą możliwą jej
|
||||
wartością. Co za tym idzie algorytm ten jest $\frac{4}{3}$-aproksymacyjny.
|
||||
|
||||
Przed udowodnieniem, że schemat redukcji wielomianowej nie może istnieć udowodnijmy, że problem jest \NP-trudny,
|
||||
Przed udowodnieniem, że schemat redukcji wielomianowej nie może istnieć udowodnijmy, że problem jest \NP-trudny,
|
||||
ponieważ w zasadzie nie zostało to nigdzie podane wprost.
|
||||
|
||||
Aby udowodnić że dany problem optymalizacyjny jest \NP-trudny należy udowodnić, że w wersji decyzyjnej ten problem byłby
|
||||
\NPC. Wersja decyzyjna może brzmieć następująco: ,,Czy na 2 dyskietkach o pojemności $L$ da się zapisać $k$ programów o
|
||||
wielkościach $I_1, I_2, ..., I_n$?''. Mając do dyspozycji zbiór liczb i 2 pojemniki powinniśmy powiązać ten problem z
|
||||
wielkościach $I_1, I_2, ..., I_n$?''. Mając do dyspozycji zbiór liczb i 2 pojemniki powinniśmy powiązać ten problem z
|
||||
problemem \textit{Podziału Zbioru} (\problem{PZ}). Spróbujmy przeprowadzić $\alpha$-redukcję tego problemu do \problem{MLZP}.
|
||||
|
||||
\begin{figure}[H]
|
||||
@ -386,29 +386,29 @@ problemem \textit{Podziału Zbioru} (\problem{PZ}). Spróbujmy przeprowadzić $\
|
||||
\caption{Schemat $\alpha$-redukcji z \problem{PZ} do \problem{MLPZ}}
|
||||
\end{figure}
|
||||
|
||||
W jednym z poprzednich zadań pokazaliśmy, że jeżeli istnieje taki podział zbioru $I$ to suma jednego podzbioru musi być
|
||||
W jednym z poprzednich zadań pokazaliśmy, że jeżeli istnieje taki podział zbioru $I$ to suma jednego podzbioru musi być
|
||||
równa $\frac{1}{2}\sum_{i \in I}i$ a dwa powstałe podzbiory muszą zawierać wszystkie elementy zbioru $I$. W takim razie
|
||||
rozdzielamy wszystkie elementy (których jest $k = |I|$) zbioru $I$ do dwóch ,,pojemników'' o wielkościach
|
||||
$L = \frac{1}{2}\sum_{i \in I}i$. Ponieważ przedstawiając problem z innej perspektywy otrzymaliśmy problem tożsamy z
|
||||
\problem{MLZP}, to nie ma potrzeby dokładniejszego dowodzenia poprawności przeprowadzonej redukcji - zatem
|
||||
rozdzielamy wszystkie elementy (których jest $k = |I|$) zbioru $I$ do dwóch ,,pojemników'' o wielkościach
|
||||
$L = \frac{1}{2}\sum_{i \in I}i$. Ponieważ przedstawiając problem z innej perspektywy otrzymaliśmy problem tożsamy z
|
||||
\problem{MLZP}, to nie ma potrzeby dokładniejszego dowodzenia poprawności przeprowadzonej redukcji - zatem
|
||||
\problem{PZ}$\ \alpha\ \mathtt{MLZP_d}$, czyli \problem{MLZP} jest \NP-trudny.
|
||||
|
||||
Tak jak poprzednio aby udowodnić, że schemat (F)PTAS może istnieć dla tego algorytmu tylko gdy $\P = \NP$ wystarczy
|
||||
udowodnić, że dla każdych danych wejściowych istnieje taki $\varepsilon$, że przybliżenie daje nam dokładny wynik. Ponieważ
|
||||
problem jest maksymalizacyjny otrzymamy:
|
||||
\begin{equation}\label{eqn:2011:6:fptas}
|
||||
\frac {A_{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}
|
||||
|
||||
Ponieważ $A, A_{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,
|
||||
Ponieważ $A, A_\text{opt} \in \mathbb N$ to pod warunkiem, że $A\varepsilon < 1$ nierówność \eqref{eqn:2011:6:fptas}
|
||||
zredukuje się do równania $A = A_\text{opt}$, czyli uzyskamy wynik dokładny w czasie wielomianowym. Oczywistym jest,
|
||||
że odpowiedź na problem nie może być większa niż $n$ - mając 4 programy nie możemy zapisać ich 8, brakłoby
|
||||
nam programów. Stąd otrzymujemy
|
||||
\begin{equation*}
|
||||
A \leq n \iff \frac{1}{n}A \leq 1
|
||||
\end{equation*}
|
||||
|
||||
Czyli jeżeli tylko $\varepsilon < \frac{1}{n}$ to otrzymany wynik będzie wynikiem dokładnym uzyskanym w czasie
|
||||
Czyli jeżeli tylko $\varepsilon < \frac{1}{n}$ to otrzymany wynik będzie wynikiem dokładnym uzyskanym w czasie
|
||||
wielomianowym (zgodnie z definicją schamatu (F)PTAS) czyli rozwiązalibyśmy problem \NPC w czasie wielomianowym
|
||||
co implikowałoby, że $\P = \NP$.
|
||||
|
||||
|
204
2013.01.26.tex
204
2013.01.26.tex
@ -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.
|
||||
|
||||
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.
|
||||
|
||||
\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 \\
|
||||
- & - & - & 3 & 1 & 1 \\
|
||||
- & - & 2 & 2 & 1 & 1 \\
|
||||
\vdots & \vdots & \vdots & \vdots & \vdots & \vdots
|
||||
\vdots & \vdots & \vdots & \vdots & \vdots & \vdots
|
||||
\end{tabular}
|
||||
\centering
|
||||
\caption{Możliwe kombinacje tworzące 100zł}
|
||||
\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)$.
|
||||
\taskend
|
||||
|
||||
\task{
|
||||
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
|
||||
wtedy kiedy na wejście poda się mu macierz sąsiedztwa grafu niehamiltonowskiego. Jak przerobisz macierz $A(G)$
|
||||
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
|
||||
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ść.
|
||||
}
|
||||
|
||||
\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
|
||||
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,
|
||||
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,
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
\begin{figure}[H]
|
||||
@ -58,43 +58,43 @@ który nie jest połączony z żadnym innym.
|
||||
\caption{Transformacja w graf niehamiltonowski}
|
||||
\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.
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
stałym, czyli $O(1)$ - obie odpowiedzi będą poprawne.
|
||||
\taskend
|
||||
|
||||
\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:}
|
||||
\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:}
|
||||
\subtask{$\problem{OPK} \in \problem{NP}$}
|
||||
\subtask{$\problem{OPK} \in \problem{NPC}$}
|
||||
|
||||
\solution
|
||||
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
|
||||
rozwiązanie tego problemu. Moim zdaniem, podejście drugie jest o wiele łatwiejsze i przyjemniejsze - zatem to właśnie
|
||||
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
|
||||
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ł.
|
||||
|
||||
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ą
|
||||
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.
|
||||
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ą
|
||||
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.
|
||||
|
||||
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ą
|
||||
klikę będzie wymagało sprawdzenia czy faktycznie każdy wierzchołek sąsiaduje z każdym innym wierzchołkiem z listy - co
|
||||
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
|
||||
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ć
|
||||
$\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$?,,
|
||||
|
||||
\begin{figure}[H]
|
||||
@ -103,36 +103,36 @@ wydaje się być problem kliki:
|
||||
\caption{schemat $\alpha$-redukcji \problem{kliki} do \problem{OPK}}
|
||||
\end{figure}
|
||||
|
||||
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
|
||||
w grafie $G_1$ będzie klika o rozmiarze $r$ takim, że $a \leq r \leq b$. Jeżeli chcemy znaleźć klikę konkretnego
|
||||
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
|
||||
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
|
||||
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.
|
||||
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.
|
||||
\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
|
||||
$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.}
|
||||
|
||||
\solution
|
||||
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
|
||||
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
|
||||
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
|
||||
krawędzi w $G$ musimy sprawdzić jej istnienie w $H$ to w najgorszym wypadku uzyskamy czas
|
||||
$O(m(H) \cdot m(G))$ - czyli wielomianowy.
|
||||
|
||||
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
|
||||
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
|
||||
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ć
|
||||
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.
|
||||
|
||||
\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.}
|
||||
\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 jest oczywiście problem kliki.
|
||||
grafie jest oczywiście problem kliki.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
@ -151,17 +151,17 @@ grafie jest oczywiście problem kliki.
|
||||
\caption{schemat $\alpha$-redukcji kliki do PZ}
|
||||
\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:
|
||||
$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
|
||||
kliki znalezionej w $G_0$ przypisać unikalny wierzchołek w $K_n$. W drugą stronę analogicznie, jeżeli istnieje takie
|
||||
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
|
||||
przypisanie to w grafie $G_0$ musi znajdować się klika $K_n$.
|
||||
\taskend
|
||||
|
||||
\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
|
||||
\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
|
||||
brzmi ona \textbf{tak} lub \textbf{nie}.}
|
||||
|
||||
\begin{minipage}{.5\linewidth}
|
||||
@ -177,21 +177,21 @@ brzmi ona \textbf{tak} lub \textbf{nie}.}
|
||||
\subtask{$\chi(X) \geq 4$}
|
||||
\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$)}
|
||||
|
||||
\solution
|
||||
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
|
||||
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$.
|
||||
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
|
||||
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$.
|
||||
|
||||
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
|
||||
$\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$
|
||||
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ż
|
||||
cykl nie jest 3-regularny, lub $G = K_4$, gdzyż klika rozmiaru 4 jest 3-regularna (Ogólnie kliki rozmiaru $n$
|
||||
są $(n - 1)$-regularne) i tylko w tym jednym wypadku będziemy potrzebować 4 kolorów, ale nigdy więcej.
|
||||
|
||||
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)$.
|
||||
\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.}
|
||||
|
||||
\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$?}
|
||||
|
||||
\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.
|
||||
W problemie chodzi o znalezienie największego podgrafu acyklicznego w digrafie $D$.
|
||||
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$.
|
||||
\begin{figure}[H]
|
||||
\begin{minipage}{.5\linewidth}%
|
||||
\centering
|
||||
@ -227,18 +227,18 @@ W problemie chodzi o znalezienie największego podgrafu acyklicznego w digrafie
|
||||
\begin{minipage}{.5\linewidth}%
|
||||
\begin{equation*}
|
||||
A_D = \begin{bmatrix}
|
||||
0 & 1 & 0 & 0 & 1 \\
|
||||
0 & 0 & 1 & 0 & 0 \\
|
||||
1 & 0 & 0 & 0 & 1 \\
|
||||
0 & 0 & 1 & 0 & 0 \\
|
||||
0 & 0 & 0 & 1 & 0 \\
|
||||
0 & 1 & 0 & 0 & 1 \\
|
||||
0 & 0 & 1 & 0 & 0 \\
|
||||
1 & 0 & 0 & 0 & 1 \\
|
||||
0 & 0 & 1 & 0 & 0 \\
|
||||
0 & 0 & 0 & 1 & 0 \\
|
||||
\end{bmatrix}
|
||||
\end{equation*}
|
||||
\end{minipage}%
|
||||
\caption{Przykładowy digraf $D$ wraz z maksymalnym podgrafem acyklicznym oraz macierzą sąsiedztwa.}
|
||||
\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ą:
|
||||
\begin{figure}[H]
|
||||
\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{equation*}
|
||||
A_D = \begin{bmatrix}
|
||||
0 & 1 & 0 & 0 & 1 \\
|
||||
& 0 & 1 & 0 & 0 \\
|
||||
& & 0 & 0 & 1 \\
|
||||
& & & 0 & 0 \\
|
||||
& & & & 0 \\
|
||||
0 & 1 & 0 & 0 & 1 \\
|
||||
& 0 & 1 & 0 & 0 \\
|
||||
& & 0 & 0 & 1 \\
|
||||
& & & 0 & 0 \\
|
||||
& & & & 0 \\
|
||||
\end{bmatrix}
|
||||
\end{equation*}
|
||||
\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{equation*}
|
||||
A_D = \begin{bmatrix}
|
||||
0 & & & & \\
|
||||
0 & 0 & & & \\
|
||||
1 & 0 & 0 & & \\
|
||||
0 & 0 & 1 & 0 & \\
|
||||
0 & 0 & 0 & 1 & 0 \\
|
||||
0 & & & & \\
|
||||
0 & 0 & & & \\
|
||||
1 & 0 & 0 & & \\
|
||||
0 & 0 & 1 & 0 & \\
|
||||
0 & 0 & 0 & 1 & 0 \\
|
||||
\end{bmatrix}
|
||||
\end{equation*}
|
||||
\end{minipage}%
|
||||
\caption{Graf opisany przez macierz trójkątną dolną macierzy $A_D$}
|
||||
\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
|
||||
wystąpić cykl ponieważ to wymagałoby powrotu do wierzchołka, który już rozpatrywaliśmy - a to jest niemożliwe w takiej
|
||||
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
|
||||
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.
|
||||
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,
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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,
|
||||
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
|
||||
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.
|
||||
|
||||
\begin{figure}[H]
|
||||
@ -304,27 +304,27 @@ ograniczeniem jest to, że nie mogą to być te same wierzchołki.
|
||||
\begin{minipage}{.5\linewidth}%
|
||||
\begin{equation*}
|
||||
A_D = \begin{bmatrix}
|
||||
0 & 1 & 0 \\
|
||||
0 & 0 & 0 \\
|
||||
0 & 1 & 0 \\
|
||||
0 & 1 & 0 \\
|
||||
0 & 0 & 0 \\
|
||||
0 & 1 & 0 \\
|
||||
\end{bmatrix}
|
||||
\end{equation*}
|
||||
\end{minipage}%
|
||||
\caption{Graf opisany przez macierz trójkątną dolną macierzy $A_D$}
|
||||
\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.
|
||||
|
||||
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
|
||||
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
|
||||
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ź
|
||||
równa od odpowiedzi naszego algorytmu $N$:
|
||||
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$:
|
||||
\begin{equation}
|
||||
N_{\text{opt}} \geq N
|
||||
\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
|
||||
\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
|
||||
|
||||
\begin{equation}
|
||||
@ -348,7 +348,7 @@ wystarczy że w nierówności \ref{eqn:2013:fptas} będzie spełniony warunek
|
||||
N\varepsilon < 1
|
||||
\end{equation}
|
||||
|
||||
A uzyskamy
|
||||
A uzyskamy
|
||||
|
||||
\begin{equation*}
|
||||
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}
|
||||
\begin{equation*}
|
||||
\frac{1}{m+1}N < 1
|
||||
\frac{1}{m+1}N < 1
|
||||
\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
|
||||
|
@ -10,7 +10,7 @@ w problem $\Pi \in \NP$ przekaż wiadomość, mówiącą, że:}
|
||||
\solution
|
||||
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
|
||||
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
|
||||
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:
|
||||
@ -25,15 +25,15 @@ to z definicji klasy \P
|
||||
\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 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
|
||||
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
|
||||
znaczyłoby że
|
||||
\begin{center}
|
||||
$\NP = \P$ - 4 symbole
|
||||
\end{center}
|
||||
|
||||
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 \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$
|
||||
możemy zredukować wszystko, czyli
|
||||
\begin{center}
|
||||
$\Pi \in \NPC$ - 5 symboli
|
||||
@ -47,7 +47,7 @@ wszystkie problemy $\NP$ (zgodnie z definicją klasy \NPC). W takim wypadku lepi
|
||||
\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
|
||||
minimalizacyjne.
|
||||
minimalizacyjne.
|
||||
\subtask Kolorowanie wierzchołków w grafie
|
||||
\subtask Znalezienie $k$-tego największego/najmniejszego elementu
|
||||
\subtask Problem komiwojażera
|
||||
@ -57,8 +57,8 @@ minimalizacyjne.
|
||||
|
||||
\solution
|
||||
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
|
||||
wierzchołek pokolorować na inny kolor, co da nam maksymalną możliwą liczbę kolorów. Wersja decyzyjna problemu
|
||||
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
|
||||
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
|
||||
@ -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
|
||||
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
|
||||
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
|
||||
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.
|
||||
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
|
||||
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.
|
||||
|
||||
Z twierdzenia kuratowskiego wiemy, że żaden graf nie może zawierać kliki $K_5$, zatem najwiekszą kliką w planarnym
|
||||
grafie jest klika $K_4$. Jesteśmy w stanie sprawdzić istnienie $K_4, K_3$ w grafie w czasie wielomianowym. 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ź. Stąd też
|
||||
wiemy, że wersja minimalizacyjna jest \P.
|
||||
Z twierdzenia Kuratowskiego wiemy, że żaden graf planarny nie może zawierać kliki $K_5$, zatem najwiekszą kliką w
|
||||
planarnym grafie jest klika $K_4$. Jesteśmy w stanie sprawdzić istnienie $K_4, K_3$ w grafie w czasie wielomianowym.
|
||||
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ź.
|
||||
Stąd też wiemy, że wersja minimalizacyjna jest \P.
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
@ -97,16 +97,16 @@ wiemy, że wersja minimalizacyjna jest \P.
|
||||
\end{table}
|
||||
\taskend
|
||||
|
||||
\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
|
||||
pytanie - ,,Czy w danym grafie istnieje klika o rozmiarze $k \geq p$?''. Jeżeli graf nie ma gwiazdy spinającej to
|
||||
skrzynka milczy.
|
||||
\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
|
||||
pytanie - ,,Czy w danym grafie istnieje klika o rozmiarze $k \geq p$?''. Jeżeli graf nie ma gwiazdy spinającej to
|
||||
skrzynka milczy.
|
||||
|
||||
\tip{Gwiazda spinająca to inaczej wierzchołek połączony ze wszystkimi innymi wierzchołkami.}
|
||||
\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.
|
||||
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.
|
||||
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.
|
||||
|
||||
Dodanie do grafu gwiazdy spinającej z definicji dodaje wierzchołek połączony ze wszystkimi innymi wierzchołkami.
|
||||
\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ę
|
||||
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
|
||||
rozmiarze $n$ wystarczy sprawdzić czy w grafie $H$, istnieje klika o rozmiarze $p = n+1$.
|
||||
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$.
|
||||
|
||||
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
|
||||
@ -142,21 +142,21 @@ który chce obejrzeć. Wiemy, że optymalny czas pracy wynosi 6h, jaką złożon
|
||||
kierownikowi obejrzeć mecz?
|
||||
|
||||
\solution
|
||||
Problem ten jest problemem minimalizacyjnym oraz wiemy, że $A_{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
|
||||
8 godzin skąd $A = 8$.
|
||||
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
|
||||
8 godzin skąd $A = 8$.
|
||||
|
||||
\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*}
|
||||
|
||||
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:
|
||||
\begin{equation}
|
||||
A = A_{opt} + \varepsilon A_{opt}
|
||||
A = A_\text{opt} + \varepsilon A_\text{opt}
|
||||
\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*}
|
||||
8 = 6 + 6\varepsilon \iff 2 = 6\varepsilon \iff \varepsilon = \frac{1}{3}
|
||||
\end{equation*}
|
||||
@ -192,8 +192,8 @@ Następujący algorytm rozwiązuje ten problem w sposób 2-przybliżony. Udowodn
|
||||
|
||||
\solution
|
||||
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
|
||||
najbardziej wysuniętym na prawo. Najprawdopodobniej jednak nasz punkt $1$ będzie znajdował się gdzieś między nimi.
|
||||
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.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
@ -203,7 +203,7 @@ najbardziej wysuniętym na prawo. Najprawdopodobniej jednak nasz punkt $1$ będz
|
||||
\end{tikzpicture}
|
||||
\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ść
|
||||
|
||||
\begin{equation*}
|
||||
@ -211,7 +211,7 @@ punktów nie jest punktem $1$. Na powyższym rysunku, dość wyraźnie widać za
|
||||
\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ć
|
||||
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.
|
||||
|
||||
\begin{figure}[H]
|
||||
@ -233,7 +233,7 @@ punkt 1 znajduje się idealnie po środku.
|
||||
\end{tikzpicture}
|
||||
\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
|
||||
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.
|
||||
@ -250,13 +250,13 @@ pomyłka o 2-krotność odpowiedzi optymalnej, czyli algorytm jest 2-aproksymacy
|
||||
\subtask Nie istnieje schemat PTAS
|
||||
|
||||
\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
|
||||
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$.
|
||||
|
||||
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$.
|
||||
|
||||
Zgodnie z powyższym, możemy uzyskać dowolnie dobre przybliżenie jakie chcemy czyli schemat PTAS powinien istnieć.
|
||||
|
@ -2,18 +2,18 @@
|
||||
\node[problem] (pz) {\problem{PZ}};
|
||||
\node[solution, right of=pz] (r-pz) {T/N};
|
||||
\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[left of=mlzp] (i-mlzp) {$k, L, I$};
|
||||
|
||||
|
||||
\draw[->, alpha, left] (i-pz) -- node[right] {$f$} (i-mlzp);
|
||||
|
||||
|
||||
\draw[->] (pz) -- (r-pz);
|
||||
\draw[->] (mlzp) -- (r-mlzp);
|
||||
|
||||
|
||||
\draw[->] (i-pz) -- (pz);
|
||||
\draw[->] (i-mlzp) -- (mlzp);
|
||||
|
||||
|
||||
\draw[Implies-Implies, double distance=2pt] (r-pz) -- (r-mlzp);
|
||||
\end{tikzpicture}
|
||||
|
6
main.tex
6
main.tex
@ -16,6 +16,7 @@
|
||||
\usepackage{enumerate}
|
||||
\usepackage{lmodern}
|
||||
\usepackage{amsfonts}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{mathtools}
|
||||
\usepackage{alphalph}
|
||||
\usepackage{algorithm}
|
||||
@ -33,7 +34,7 @@
|
||||
|
||||
\tikzstyle{problem} = [draw,outer sep=0,inner sep=5,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{vertex} = [draw, circle, thick]
|
||||
\tikzstyle{small vertex} = [draw, circle, scale=.75]
|
||||
@ -43,6 +44,9 @@
|
||||
\pgfdeclarelayer{foreground}
|
||||
\pgfsetlayers{background,main,foreground}
|
||||
|
||||
\renewcommand\leq\leqslant
|
||||
\renewcommand\geq\geqslant
|
||||
|
||||
% opening
|
||||
\title{PAA - Kolokwia, rozwiązania}
|
||||
\author{Kacper Donat}
|
||||
|
Loading…
Reference in New Issue
Block a user