diff --git a/verslag/doorloop_doubling.png b/verslag/doorloop_doubling.png new file mode 100644 index 0000000..1684007 Binary files /dev/null and b/verslag/doorloop_doubling.png differ diff --git a/verslag/verslag.tex b/verslag/verslag.tex index 31e88c1..4d97776 100644 --- a/verslag/verslag.tex +++ b/verslag/verslag.tex @@ -140,14 +140,23 @@ \subsection{Doorlooplijnalgoritme $O(N^2)$} - Grafiek + vermoedelijke complexiteit. + Theoretisch zagen we dat bij het gewone doorlooplijnalgoritme de worst-case tijdscomplexiteit kwadratisch was. De gemiddelde tijdscomplexiteit is echter veel beter dan dat, wat tabel \ref{tab2} dan ook bevestigd. In de derde kolom zien we dat de doubling ratio van de testwaarden veel dichter ligt bij de doubling ratio van $N*log_2(N)$ dan bij de doubling ratio van $N^2$. Het is echter wel hoger dan $N*log_2(N)$, wat wijst op de aanwezigheid van extra factoren in de formule van de rekencomplexiteit, wat duidt op de niet-doorgevoerde optimalisaties die we in het efficientere doorlooplijnalgoritme, besproken in de volgende secties, wel hebben. + + \begin{figure}[H] + \centering + \includegraphics[width=\textwidth]{doorloop_doubling.png} + \caption{Tabel met de doubling ratio van het gewone doorlooplijnalgoritme.} + \label{tab2} + \end{figure} \subsection{Doorlooplijnalgoritme $O((N+S)log_2(N))$} - Om de rekentijd van het derde algoritme na te gaan, maken we opnieuw gebruik van een doubling ratio experiment. We gaan na wat de doubling ratio van de verwachte complexiteit is en wat de doubling ratio van de testwaarden is. In dit geval zien we in de derde kolom de doubling ratio van onze testwaarden en in de vijde kolom de doubling ratio van $N*log_2(N)$. Deze fluctueren beide rond ongeveer $2.2$, wat op een gelijkaardige complexiteit wijst. De iets grotere waarde bij de testwaarden kan wijzen op de extra term van het aantal snijdingen bij de theoretische complexiteit van $(N+S)log_2(N)$. + Om de rekentijd van het derde algoritme na te gaan, maken we opnieuw gebruik van een doubling ratio experiment. We gaan na wat de doubling ratio van de verwachte complexiteit is en wat de doubling ratio van de testwaarden is. In dit geval zien we in de derde kolom van tabel \ref{tab3} de doubling ratio van onze testwaarden en in de vijde kolom de doubling ratio van $N*log_2(N)$. Deze fluctueren beide rond ongeveer $2.2$, wat op een gelijkaardige complexiteit wijst. De iets grotere waarde bij de testwaarden kan wijzen op de extra term van het aantal snijdingen bij de theoretische complexiteit van $(N+S)log_2(N)$, maar aangezien $N*log_2(N)$ ook $O((N+S)log_2(N))$ is wanneer $S \neq 0$, kunnen we besluiten dat het derde algoritme in rekencomplexiteit $O((N+S)log_2(N))$ loopt. \begin{figure}[H] \centering \includegraphics[width=.9\textwidth]{doorloopeff_doubling.png} + \caption{Tabel met de doubling ratio van het efficientere doorlooplijnalgoritme.} + \label{tab3} \end{figure} \end{document}