diff options
author | Yigit Sever | 2020-11-06 03:02:23 +0300 |
---|---|---|
committer | Yigit Sever | 2020-11-06 03:02:23 +0300 |
commit | ca2af8e5bf4f6523dde2f56a17426a01e40f7eba (patch) | |
tree | 1a13d303cfdfa95a10777ae8e3a1dc4bb8191b2b | |
parent | 053eba43648e9f74dae2c81a51bf7eea92800e31 (diff) | |
download | hw1-ca2af8e5bf4f6523dde2f56a17426a01e40f7eba.tar.gz hw1-ca2af8e5bf4f6523dde2f56a17426a01e40f7eba.tar.bz2 hw1-ca2af8e5bf4f6523dde2f56a17426a01e40f7eba.zip |
Typeset the answer of 3rd question
-rw-r--r-- | main.tex | 65 | ||||
-rw-r--r-- | structure.tex | 2 |
2 files changed, 58 insertions, 9 deletions
@@ -212,12 +212,57 @@ Matching z with c (a) | |||
212 | \section{Asymptotics}% | 212 | \section{Asymptotics}% |
213 | \label{sec:asymptotics} | 213 | \label{sec:asymptotics} |
214 | 214 | ||
215 | % asymptotics TODO {{{1 % | 215 | % asymptotics ✅ {{{1 % |
216 | 216 | ||
217 | \begin{question} | 217 | \begin{question} |
218 | 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))$. | 218 | 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))$. |
219 | \end{question} | 219 | \end{question} |
220 | 220 | ||
221 | {\centering | ||
222 | \begin{minipage}{.7\linewidth} | ||
223 | \begin{algorithm}[H] | ||
224 | \For(\tcc*[f]{outer loop}){$i = 2$; $i < n$; $i += 1$ }{ | ||
225 | \For(\tcc*[f]{inner loop}){$j=1$; $j < n$; $j * = i$}{ | ||
226 | Some $\Theta(1)$ operation\; | ||
227 | } | ||
228 | } | ||
229 | \caption{Equivalent algorithm to one given in Question 3, edited for brevity}% | ||
230 | \label{alg:question_3} | ||
231 | \end{algorithm} | ||
232 | \end{minipage} | ||
233 | \par | ||
234 | } | ||
235 | |||
236 | The outer loop runs in linear time $\mathcal{O}(n)$ whereas the inner loop requires some deconstruction; | ||
237 | |||
238 | Take the first iteration of the inner loop, $i = 2$ and $j$ is initialized at $1$. | ||
239 | |||
240 | \begin{align*}% | ||
241 | \label{eq:3_iterations} | ||
242 | 1^{\text{st}} ~ \text{iteration} &\rightarrow j = j * i \implies j = 2 \\ | ||
243 | 2^{\text{nd}} ~ \text{iteration} &\rightarrow j = 4 \\ | ||
244 | 3^{\text{rd}} ~ \text{iteration} &\rightarrow j = 8 \\ | ||
245 | \dots \\ | ||
246 | m^{\text{th}} ~ \text{iteration} &\rightarrow j = i^{m} < n \\ | ||
247 | \end{align*} | ||
248 | |||
249 | $m$ is the last iteration of the inner loop because it hit the stopping condition $i^{m} < n$. | ||
250 | Using the Equations above we can find the running time for the inner loop to hit stopping condition; | ||
251 | |||
252 | \begin{gather*} | ||
253 | i^{m} < n \\ | ||
254 | m < \log_{i} n | ||
255 | \end{gather*} | ||
256 | |||
257 | 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; | ||
258 | |||
259 | We can specify a function $f$ such as $f = n \log_{b}(n)$ where $b > 1$. From the course slides; | ||
260 | |||
261 | \begin{equation*} | ||
262 | \lim_{n \to \infty}\frac{n\log_{a}{n}}{n \log_{b}{n}} = c | ||
263 | \end{equation*} | ||
264 | |||
265 | And when the limit of two functions $f, g$ converge to some constant $c$, then $f(n) = \Theta(g(n))$. | ||
221 | 266 | ||
222 | % 1}}} % | 267 | % 1}}} % |
223 | 268 | ||
@@ -280,11 +325,13 @@ By the definition of Big $\mathcal{O}$ notation, we have; | |||
280 | 325 | ||
281 | For $c > 1$ and $n_{0} > 1$ we have; | 326 | For $c > 1$ and $n_{0} > 1$ we have; |
282 | 327 | ||
283 | \begin{eqnarray*}% | 328 | % TODO: this makes zero sense? <06-11-20, yigit> % |
284 | f(n) \le f(n)^{2} \quad \forall n \ge n_{0} \\ | 329 | |
285 | g(n) = f(n)^{2} \\ | 330 | \begin{align*}% |
286 | f(n) \le c\cdot g(n) \quad \forall n \ge n_{0} | 331 | f(n) &\le f(n)^{2} \quad \forall n \ge n_{0} \\ |
287 | \end{eqnarray*} | 332 | \text{take} ~ g(n) &= f(n)^{2} \\ |
333 | f(n) &\le c\cdot g(n) \quad \forall n \ge n_{0} | ||
334 | \end{align*} | ||
288 | 335 | ||
289 | \begin{info}[] | 336 | \begin{info}[] |
290 | $f(n) + o(f(n)) = \Theta(f(n))$ | 337 | $f(n) + o(f(n)) = \Theta(f(n))$ |
@@ -337,11 +384,11 @@ Otherwise, indicate that H or L do not exist. | |||
337 | \end{info} | 384 | \end{info} |
338 | 385 | ||
339 | \begin{info}[] | 386 | \begin{info}[] |
340 | $f(n) = \sum^{\lceil{log n}\rceil}_{k=0} \frac{n}{2^{k}}$ | 387 | $f(n) = \sum^{\lceil{\log{n}}\rceil}_{k=0} \frac{n}{2^{k}}$ |
341 | \end{info} | 388 | \end{info} |
342 | 389 | ||
343 | \begin{info}[] | 390 | \begin{info}[] |
344 | $f(n) = n(log n)^{2}$ | 391 | $f(n) = n(\log n)^{2}$ |
345 | \end{info} | 392 | \end{info} |
346 | 393 | ||
347 | 394 | ||
diff --git a/structure.tex b/structure.tex index 62deff6..e536c85 100644 --- a/structure.tex +++ b/structure.tex | |||
@@ -22,6 +22,8 @@ | |||
22 | \usepackage{amsmath,amsfonts} % Math packages | 22 | \usepackage{amsmath,amsfonts} % Math packages |
23 | \usepackage{enumerate} % Custom item numbers for enumerations | 23 | \usepackage{enumerate} % Custom item numbers for enumerations |
24 | \usepackage[ruled]{algorithm2e} % Algorithms | 24 | \usepackage[ruled]{algorithm2e} % Algorithms |
25 | % \usepackage{algorithm} | ||
26 | % \usepackage[noend]{algpseudocode} | ||
25 | \usepackage[framemethod=tikz]{mdframed} % Allows defining custom boxed/framed environments | 27 | \usepackage[framemethod=tikz]{mdframed} % Allows defining custom boxed/framed environments |
26 | \usepackage{listings} % File listings, with syntax highlighting | 28 | \usepackage{listings} % File listings, with syntax highlighting |
27 | \usepackage[super]{nth} | 29 | \usepackage[super]{nth} |