1 | %
|
---|
2 | % $Id: report.tex 571 2008-04-20 17:31:04Z rick $
|
---|
3 | %
|
---|
4 |
|
---|
5 | \documentclass[12pt,a4paper]{article}
|
---|
6 |
|
---|
7 | \frenchspacing
|
---|
8 | \usepackage[english,dutch]{babel}
|
---|
9 | \usepackage{amssymb,amsmath,amsthm}
|
---|
10 | \selectlanguage{dutch}
|
---|
11 |
|
---|
12 | \author{Rick van der Zwet, Universiteit Leiden}
|
---|
13 | \title{Complexiteit\\
|
---|
14 | \large{Derde huiswerkopgave}}
|
---|
15 | \author{Rick van der Zwet\\
|
---|
16 | \texttt{<hvdzwet@liacs.nl>}\\
|
---|
17 | \\
|
---|
18 | LIACS\\
|
---|
19 | Leiden University\\
|
---|
20 | Niels Bohrweg 1\\
|
---|
21 | 2333 CA Leiden\\
|
---|
22 | The Netherlands}
|
---|
23 | \date{\today}
|
---|
24 |
|
---|
25 |
|
---|
26 | \begin{document}
|
---|
27 | \appendix
|
---|
28 | \maketitle
|
---|
29 | \section*{Inleiding}
|
---|
30 | Het doel van deze huiswerkopgave is het begrijpen en toepassen van
|
---|
31 | niet-deterministische algoritmen en kennis maken met de begrippen
|
---|
32 | $NP$-compleet en $NP$-volledig. Deze kennis wordt opgedaan door te
|
---|
33 | kijken naar 2 verschillende problemen:
|
---|
34 |
|
---|
35 | \theoremstyle{definition} \newtheorem{sat}{SAT}
|
---|
36 | \newtheorem{mcis}{MaxColorIndependentSet (MCIS)}
|
---|
37 |
|
---|
38 | \begin{description}
|
---|
39 | \item[SAT] Gegeven is een logische expressie $\phi$ in de variablen
|
---|
40 | $x_1, x_2,..., x_n$ in CNF (dus een AND van clausules waarbij elke
|
---|
41 | clausule de OR van een willekeurig aantal literals is; een literal is
|
---|
42 | een $x_1$ of een $\neg x_1$). \\
|
---|
43 | Vraag: is er een waardering (waarheidstoekenning) van de $x_i$'s zodanig
|
---|
44 | dat $\phi$ wordt waargemaakt, dat wil zeggen dat per clausule minstens
|
---|
45 | \'e\'en literal waar is?
|
---|
46 | \item[MaxColorIndependentSet (MCIS)] Gegeven een ongerichte graaf
|
---|
47 | $G=V(,E)$, waarbij de knopen wit of zwart gekleurd zijn. $V$ bevat dus
|
---|
48 | de knopen m\`et hun kleur. \\
|
---|
49 | Vraag: bestaat er een maximaal onafhankelijke knoopverzameling $I (I
|
---|
50 | \subseteq V)$ die alleen zwarte knopen bevat? \\
|
---|
51 | Een deelverzameling $J$ van de knopen $V$ heet \emph{onafhankelijk} als
|
---|
52 | geldt: voor alle $i,j \in J$ is er \emph{geen} tak tussen $i$ en $j$.
|
---|
53 | Zo'n onafhankelijke verzameling is \emph{maximaal} als er geen knopen
|
---|
54 | meer aan kunnen worden toegevoegd zonder dat de
|
---|
55 | onafhankelijkheidseigenschap verloren gaat.
|
---|
56 | \end{description}
|
---|
57 |
|
---|
58 |
|
---|
59 | \section{\normalsize Laat zien dat MCIS $\in NP$ door een \emph{niet-deterministisch
|
---|
60 | polynomiaal} algoritme voor MCIS te geven.}
|
---|
61 | Het algoritme bestaat uit drie fases:
|
---|
62 | \begin{description}
|
---|
63 | \item[Fase 1 (gokfase)]
|
---|
64 | Genereer een random string $s$ gehele getallen welke als de volgende
|
---|
65 | syntax wordt geinterpeteerd $knoopnummer;kleur;lid MCIS;buren;$
|
---|
66 | \item[Fase 2 (verificatiefase)]
|
---|
67 | Er wordt gecontroleerd of $s$ daarwerkelijk een MCIS is:
|
---|
68 | \begin{enumerate}
|
---|
69 | \item controleer dat er precies $n$ knopen in staan: $O(\left|s\right|)$
|
---|
70 | \item controleer of kleurcode wit/zwart (1/0) is: $O(\left|s\right|)$
|
---|
71 | \item controleer of elke knoop tussen 0 en $n$ ligt: $O(\left|s\right|)$
|
---|
72 | \item controleer of alle knopen verschillend zijn: $O({\left|s\right|}^2)$
|
---|
73 | \item controleer of alle buren geldig zijn: $O({\left|s\right|}^2)$
|
---|
74 | \item controleer of knop welke lid is, zwart is: $O(\left|s\right|)$
|
---|
75 | \item controleer of alle buren van zwarte `lid' knoop niet lid zijn:
|
---|
76 | $O({\left|s\right|}^2)$
|
---|
77 | \item controleer of alle niet `lid' knopen, buren zijn van een `lid'
|
---|
78 | knoop: $O({\left|s\right|}^2)$
|
---|
79 | \end{enumerate}
|
---|
80 | Stap 1 t/m 5 zijn eigenlijk simpele controle stapjes om te kijken of de
|
---|
81 | invoer string voldoet aan de eisen die gesteld worden. De daadwerkelijke
|
---|
82 | intelligentie zit in de laatste stappen, welke kijkt of de eisen van de
|
---|
83 | zwarte MCIS voldaan worden. Dat wil zeggen zoveel mogelijk knopen die
|
---|
84 | geen buurtjes van elkaar zijn en geen witte knopen in de `leden' kring.
|
---|
85 |
|
---|
86 | \item[Fase 3]
|
---|
87 | Als Fase 2 True opleverd (e.g. alle punten goed doorlopen) wordt ``ja''
|
---|
88 | uitgevoerd, anders geen uitvoer.
|
---|
89 | \end{description}
|
---|
90 |
|
---|
91 | In de meeste stappen van het algoritme volstaat een keer doorlopen van
|
---|
92 | $s$ als voldoende, bijvoorbeeld bij controle kleur invoer. Bij het de
|
---|
93 | buren controle echter moet per item in $s$ de string nog een keer extra
|
---|
94 | worden doorlopen om te kijken of deze knoop daarwerkelijk voorkomt. Maar
|
---|
95 | in het totaal is $O({\left|s\right|}^2)$ voldoende.
|
---|
96 |
|
---|
97 | \section{\normalsize Laat zien dat de transformatie $T$ in polynomiaal begrensde
|
---|
98 | tijd uitgevoerd kan worden}
|
---|
99 | $T$ is hierbij de transformatie van SAT naar MCIS, waarbij $\phi$ een
|
---|
100 | logische expressie in de variablen $x_1, x_2,..., x_n$ in conjunctieve
|
---|
101 | normaalvorm (CNF). Daaruit wordt een een ongerichte graag $G_\phi$
|
---|
102 | geconstrueerd, waarvan de knopen zwart of wit gekleurd zijn. Maak 2$n$
|
---|
103 | zwarte knopen, corresponderd met de $n$ voorkomende variablen en hun
|
---|
104 | negaties (alle mogelijke literals dus). Voor elke in $\phi$ voorkomende
|
---|
105 | clausule komt een witte knoop. Elke witte knoop wordt verbonden met de
|
---|
106 | (zwarte) knopen die corresponderen met de in de betreffende clausule
|
---|
107 | voorkomende literals ($x_i$ and $\neg x_i$). Defineer nu $T(\phi) =
|
---|
108 | G_\phi$
|
---|
109 |
|
---|
110 | De stappen noodzakelijk zijn:
|
---|
111 | \begin{enumerate}
|
---|
112 | \item Alle clausulen tellen en witte knopen maken voor elke clausule:
|
---|
113 | $O(\phi)$
|
---|
114 | \item Door de clausulen lopen en zwarte knopen maken en hun negaties:
|
---|
115 | $O(\phi)$
|
---|
116 | \item Clausule knoop met literal knopen verbinden: $O(\phi)$
|
---|
117 | \item Tak aanleggen tussen aanwezige complementaire literals $O({\phi}^2)$
|
---|
118 | \end{enumerate}
|
---|
119 |
|
---|
120 | Dit allen is dus uit te voeren in $O({\phi}^2)$
|
---|
121 |
|
---|
122 | \section{\normalsize Bewijs: als er een waardering $w$ van de $x_i$ bestaat die
|
---|
123 | $\phi$ waarmaakt, dan heeft $G_\phi$ een maximale onafhankelijke
|
---|
124 | knoopverzameling die alleen uit zwarte knopen bestaat}
|
---|
125 |
|
---|
126 | Als $w$ waar is dan geld dat voor elke clausule $C_r$ een literal heeft die
|
---|
127 | minimal waargemaakt moet worden wil $\phi$ True worden. Alle
|
---|
128 | $l_i^r$ hebben een corresponderende knoop $v_i^r$ in $G_\phi$. Echter de
|
---|
129 | literals (zwarte knopen) kunnen niet met elkaar verbonden zijn, vanwege
|
---|
130 | de complementaire eigenschap. Dit betekend dat van een paar $l_i^r$ en
|
---|
131 | $\neg l_i^r$ slecht een enkele actief kan zijn.
|
---|
132 | Het maximale eigenschap wordt bereikt doordat knopen binnen dezelfde
|
---|
133 | clausule van elkaar gescheiden zijn van een $C$ (witte clausule) knoop.
|
---|
134 |
|
---|
135 |
|
---|
136 | \section{\normalsize Bewijs: als $G_\phi$ een maximale onafhankelijke
|
---|
137 | knoopverzameling $J$ heeft die alleen uit zwarte knopen bestaat, dat is
|
---|
138 | er een waardering $w$ van de $x_i$ die $\phi$ waarmaakt}
|
---|
139 |
|
---|
140 | Kies $w$ van de in $\phi$ voorkomende logische variablen die precies
|
---|
141 | True oplevert op litterals correspondered met de knopen in $G_\phi$. In
|
---|
142 | $w$ zullen $m$ clausulen voorkomen. Deze $m$ witte knopen zullen altijd
|
---|
143 | verbonden zijn met een knoop $\in J$.Doordat elke cluasule waar moet
|
---|
144 | zijn zal er altijd een knoop bevinden tussen de witte cluasule knopen en
|
---|
145 | minstens \'e\'en van de literals.
|
---|
146 |
|
---|
147 |
|
---|
148 |
|
---|
149 |
|
---|
150 | \end{document}
|
---|