diff --git a/verslag/verslag.tex b/verslag/verslag.tex index 265a481..107828d 100644 --- a/verslag/verslag.tex +++ b/verslag/verslag.tex @@ -64,6 +64,43 @@ } \caption{Doorlooplijnalgoritme $O(N^2)$} \end{algorithm} + + \subsection{Doorlooplijnalgoritme $O((N+S)log_2(N))$} + \begin{algorithm}[H] + \{$cirkels$: lijst van cirkels met een middelpunt en een straal\}\\ + $E \gets \emptyset$ \{$E$: gesorteerde rij met de horizontale begin- en eindpunten van elke cirkel (ook wel de 'Events' van de doorlooplijn)\}\\ + \For{iedere $c$ in $cirkels$}{ + $p_1 \gets$ Beginpunt($c$)\\ + $p_2 \gets$ Eindpunt($c$)\\ + Voegtoe($E$, $p_1$)\\ + Voegtoe($E$, $p_2$) + } + $S \gets \emptyset$ \{$S$: lijst met alle snijpunten\}\\ + $A \gets \emptyset$ \{$A$: (gesorteerde) binaire boom met cirkels die snijden met de doorlooplijn\}\\ + \While{$E \neq \emptyset$}{ + $e \gets$ Kleinste($E$)\\ + $c \gets$ Cirkel($e$)\\ + Verwijder($E$, $e$)\\ + \If{$e$ is een beginpunt}{ + + Voegtoe($A$, $c$)\\ + $c_v \gets$ Voorganger($c$)\\ + $c_o \gets$ Opvolger($c$)\\ + $snpt \gets$ Snijpunten($c$,$c_v$)\\ + \If{$snpt \neq \emptyset$}{ + Voegtoe($S$,$snpt$) + } + $snpt \gets$ Snijpunten($c$,$c_o$)\\ + \If{$snpt \neq \emptyset$}{ + Voegtoe($S$,$snpt$) + } + } + \If{$e$ is een eindpunt}{ + Verwijder($A$, $c$) + } + } + \caption{Doorlooplijnalgoritme $O(N^2)$} + \end{algorithm} \section{Beschrijving experimenten en correctheid} \section{Bespreking resultaten en rekentijden}