From ca2af8e5bf4f6523dde2f56a17426a01e40f7eba Mon Sep 17 00:00:00 2001 From: Yigit Sever Date: Fri, 6 Nov 2020 03:02:23 +0300 Subject: Typeset the answer of 3rd question --- main.tex | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- structure.tex | 2 ++ 2 files changed, 58 insertions(+), 9 deletions(-) diff --git a/main.tex b/main.tex index c885da8..2676213 100644 --- a/main.tex +++ b/main.tex @@ -212,12 +212,57 @@ Matching z with c (a) \section{Asymptotics}% \label{sec:asymptotics} -% asymptotics TODO {{{1 % +% asymptotics ✅ {{{1 % \begin{question} - What is the running time of this algorithm as a function of n? Specify a function f such that the running time of the algorithm is $\Theta(f(n))$. + What is the running time of this algorithm as a function of $n$? Specify a function $f$ such that the running time of the algorithm is $\Theta(f(n))$. \end{question} +{\centering + \begin{minipage}{.7\linewidth} + \begin{algorithm}[H] + \For(\tcc*[f]{outer loop}){$i = 2$; $i < n$; $i += 1$ }{ + \For(\tcc*[f]{inner loop}){$j=1$; $j < n$; $j * = i$}{ + Some $\Theta(1)$ operation\; + } + } + \caption{Equivalent algorithm to one given in Question 3, edited for brevity}% + \label{alg:question_3} +\end{algorithm} +\end{minipage} +\par +} + +The outer loop runs in linear time $\mathcal{O}(n)$ whereas the inner loop requires some deconstruction; + +Take the first iteration of the inner loop, $i = 2$ and $j$ is initialized at $1$. + +\begin{align*}% + \label{eq:3_iterations} + 1^{\text{st}} ~ \text{iteration} &\rightarrow j = j * i \implies j = 2 \\ + 2^{\text{nd}} ~ \text{iteration} &\rightarrow j = 4 \\ + 3^{\text{rd}} ~ \text{iteration} &\rightarrow j = 8 \\ + \dots \\ + m^{\text{th}} ~ \text{iteration} &\rightarrow j = i^{m} < n \\ +\end{align*} + +$m$ is the last iteration of the inner loop because it hit the stopping condition $i^{m} < n$. +Using the Equations above we can find the running time for the inner loop to hit stopping condition; + +\begin{gather*} + i^{m} < n \\ + m < \log_{i} n +\end{gather*} + +In other words, the inner loop has a running time in the order of $\mathcal{O}(\log{n})$. By the product property of $\mathcal{O}$-notation we have the running time of $\mathcal{O}(n\log_{a}{n}), a > 1$ for the entire algorithm. The base $a$ is useful to answer the rest of the question; + +We can specify a function $f$ such as $f = n \log_{b}(n)$ where $b > 1$. From the course slides; + +\begin{equation*} + \lim_{n \to \infty}\frac{n\log_{a}{n}}{n \log_{b}{n}} = c +\end{equation*} + +And when the limit of two functions $f, g$ converge to some constant $c$, then $f(n) = \Theta(g(n))$. % 1}}} % @@ -280,11 +325,13 @@ By the definition of Big $\mathcal{O}$ notation, we have; For $c > 1$ and $n_{0} > 1$ we have; -\begin{eqnarray*}% - f(n) \le f(n)^{2} \quad \forall n \ge n_{0} \\ - g(n) = f(n)^{2} \\ - f(n) \le c\cdot g(n) \quad \forall n \ge n_{0} -\end{eqnarray*} +% TODO: this makes zero sense? <06-11-20, yigit> % + +\begin{align*}% + f(n) &\le f(n)^{2} \quad \forall n \ge n_{0} \\ + \text{take} ~ g(n) &= f(n)^{2} \\ + f(n) &\le c\cdot g(n) \quad \forall n \ge n_{0} +\end{align*} \begin{info}[] $f(n) + o(f(n)) = \Theta(f(n))$ @@ -337,11 +384,11 @@ Otherwise, indicate that H or L do not exist. \end{info} \begin{info}[] - $f(n) = \sum^{\lceil{log n}\rceil}_{k=0} \frac{n}{2^{k}}$ + $f(n) = \sum^{\lceil{\log{n}}\rceil}_{k=0} \frac{n}{2^{k}}$ \end{info} \begin{info}[] - $f(n) = n(log n)^{2}$ + $f(n) = n(\log n)^{2}$ \end{info} diff --git a/structure.tex b/structure.tex index 62deff6..e536c85 100644 --- a/structure.tex +++ b/structure.tex @@ -22,6 +22,8 @@ \usepackage{amsmath,amsfonts} % Math packages \usepackage{enumerate} % Custom item numbers for enumerations \usepackage[ruled]{algorithm2e} % Algorithms +% \usepackage{algorithm} +% \usepackage[noend]{algpseudocode} \usepackage[framemethod=tikz]{mdframed} % Allows defining custom boxed/framed environments \usepackage{listings} % File listings, with syntax highlighting \usepackage[super]{nth} -- cgit v1.2.3-70-g09d2