diff --git a/verslag/verslag.tex b/verslag/verslag.tex index 52534b9..06d213b 100644 --- a/verslag/verslag.tex +++ b/verslag/verslag.tex @@ -154,7 +154,7 @@ \subsection{Simpel algoritme} - Theoretisch zagen we dat het simpele algoritme een complexiteit $O(N^2)$ heeft. Dit wordt ook bevestigd door het doubling ratio experiment in tabel \ref{tab1}. In kolom 3 zien we dat de doubling ratio rond 4 fluctueert, terwijl de doubling ratio van een kwadratisch verband exact 4 is. We kunnen dus ook door de testresultaten zien dat het simpele algoritme een complexiteit van $O(N^2)$ heeft. + Theoretisch zagen we dat het simpele algoritme een complexiteit $O(N^2)$ heeft. Dit wordt ook bevestigd door het doubling ratio experiment in tabel \ref{tab1}. In kolom 3 zien we dat de doubling ratio rond $4$ fluctueert en als gemiddelde $4.12$ heeft, terwijl de doubling ratio van een kwadratisch verband exact $4$ is. Het verschil zou kunnen komen door minder goede nauwkeurigheid en hogere waarden bij de experimenten met relatief minder cirkels. De complexiteit is dan ook gebaseerd op het gedrag op lange termijn van een functie. We kunnen dus ook door de testresultaten zien dat het simpele algoritme een complexiteit van $O(N^2)$ heeft. \begin{figure}[H] \centering @@ -165,7 +165,7 @@ \subsection{Doorlooplijnalgoritme $O(N^2)$} - 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. + 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. De gemiddelde ratio van onze testwaarden is $2.56$ en die van $N*log_2(N)$ is $2.36$. De gemiddelde doubling ratio van $N^2$ is dan weer $4$. Hieruit kunnen we besluiten dat de doubling ratio van de testwaarden veel meer aansluit bij die van $N*log_2(N)$ dan bij een kwadratisch verband. Het is echter wel nog hoger dan $N*log_2(N)$, wat wijst op de aanwezigheid van extra factoren in de formule van de rekencomplexiteit. Aangezien we al derde algoritme een geoptimaliseerde versie van dit algoritme beschouwen, kan deze verhoging natuurlijk altijd liggen aan niet-doorgevoerde optimalisaties, die de rekencomplexiteit beïnvloeden. \begin{figure}[H] \centering @@ -175,7 +175,7 @@ \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 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. + 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)$. Het gemiddelde van de ratio's van onze testwaarden is $2.62$ en dat van $N*log_2(N)$ is $2.37$, 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