---
# System prepended metadata

title: Homework 1 - Answer and Analysis
tags: [2023DS]

---

---
tags: 2023DS
---
# Homework 1 - Answer and Analysis
* **You don't worry about the midterm, which may require you to calculate time complexity. TA will give hints to help you to assess it.**
## Assessment
* Submit the homework and answer at least one question: 60%
* Each question: 10% * 4 = 40%
* 格式錯誤為額外扣分,名字位置扣2分，題號扣2分
## Problem 1
Determine the frequency counts for **all statements** in the following two program segments:
:::warning
* 這題題目有點爭議，跟老師討論後的結果是有寫出x++ 為多少或是有把全部的statement列出來的人都給對，但如果你沒有全部列出來又沒有明確寫出x++是多少或是標示不清處，均不給分，
* 至於將全部加總起來，我會斟酌各扣1分，因為題目並沒有說要計算total，
:::
### (a)
```c=
for (i = 1; i <= n; i++)         //(1)
    for (j = 1; j <= i; j++)     //(2)
        for (k = 1; k <= j; k++) //(3)
            x++;                 //(4)
```

* 5%
    * (1) : $n+1$ times

    * (2) : $\frac{(n+1)n}{2}$ + $n$ times

    * (3) : $\frac{n(n+1)(n+2)}{6}$ + $\frac{(n+1)n}{2}$ times

    * (4) : $\frac{n(n+1)(n+2)}{6}$ times

    * or 只寫 $\frac{n(n+1)(n+2)}{6}$ times

(4)的求法:

$\sum_{i=1}^n \sum_{j=1}^i \sum_{k=1}^j 1$

= $\sum_{i=1}^n \sum_{j=1}^i  j$

= $\sum_{i=1}^n  \frac{i(i + 1)}{2}$ 

= $\sum_{i=1}^n  \frac{i^2 + i}{2}$ 

= $\frac{1}{2}\sum_{i=1}^ni^2+\frac{1}{2}\sum_{i=1}^ni$

= $\frac{1}{2}\frac{n(n+1)(2n+1)}{6}+\frac{1}{2}\frac{n(n+1)}{2}$

= $\frac{n^3+3n^2+2n}{6}$ or $\frac{n(n+1)(n+2)}{6}$ (5%)

* 2%
    * answer the time complexity: $O(n^3)$

### (b)
```c=
i = 1;              //(1)
while (i <= n) {    //(2)
    x++;            //(3)
    i++;            //(4)
}
```

* 5%
    * (1) : $1$ times
    
    * (2) : $n + 1$ times
    
    * (3) : $n$ times
    
    * (4) : $n$ times
    
    * or 只寫 $n$ times
* 2%
    * answer the time complexity: $O(n)$
## Problem 2
Show that the following equatities are incorrect

**Review the definition of Big-O, Omega and Delta:**
* $f(n) = O(g(n))\iff \exists\ c, n_0 > 0 \to |f(n)| \le c|g(n)|, for\ all\ n > n_0$
* $f(n) = \Omega(g(n))\iff \exists\ c, n_0 > 0 \to |f(n)| \ge c|g(n)|, for\ all\ n > n_0$
* $f(n) = \Theta(g(n))\iff \exists\ c_1, c_2, n_0 > 0 \to c_1|g(n)| \le |f(n)| \le c_2|g(n)|, for\ all\ n > n_0$
---
For each question

* **Write the correct definition: 1.5% (very important)**
* **Answer: 1% (只寫答案沒有其他說明)**
* **Use error definition**: **0%** for this question
:::warning
* 有些人會被改錯是因為你沒清楚地寫出是對還是錯 ，有疑慮下次上課可以問
* 基本上，這題你有寫出定義，寫對或錯就給你對
:::
a) $10n^{2} + 9 = O(n)$

$10n^{2} + 9 \le c \cdot n$
$\to n(10n - c) + 9 \le 0$
We cannot find a constant $c$ and $n_0$ to let the inequation be established.
Ex: $n = \frac{c}{10}$

---
b) $n^{2}\log{n} = \Theta(n^2)$

$c_1n^2\le n^{2}\log{n} \le c_2n^2$
$\to c_1 \le \log{n} \le c_2$
Because $c_1$ and $c_2$ are just constants, and n is a positive variable so that always can find a $n_0$ let the $\log{n}$ leave the range $[c_1, c_2]$.
Ex: $n \ge 2^{c_2 + 1}$

---
c) $n^{2}/\log{n} = \Theta(n^2)$

$c_1n^2\le n^{2}/\log{n} \le c_2n^2$
$\to c_1 \le \frac{1}{\log{n}} \le c_2$
Because $c_1$ and $c_2$ are just constants, and n is a positive variable so that always can find a $n_0$ let the $\frac{1}{\log{n}}$ leave the range $[c_1, c_2]$.
Ex: $n \ge 2^{\frac{1}{c_1 - 1}}$

---
d) $n^{3}2^{n} + 6n^{2}3^{n} = O(n^{3}2^{n})$

$n^{3}2^{n} + 6n^{2}3^{n} \le c \cdot n^{3}2^{n}$
$\to 1 + 6\frac{3^n}{n2^n} \le c$
We cannot find a constant $c$ and $n_0$ to let the inequation be established.
Because $\frac{3^n}{n2^n} = \frac{1.5^n}{n}$ and it will increase when increasing $n$, it can find a $n_0$ so that let the fraction $\frac{3^n}{n2^n}$ greater than the constant $c$

## Problem 3
Analyze the computing time of function SelectionSort
```c=
void SelectionSort(int *a, const int n) {
    for (int i = 0; i < n; i++) {
        int j = i;
        for (int k = i + 1; k < n; k++)
            if (a[k] < a[j])
                j = k;
        swap(a[i], a[j]);
    }
}
```

We can parse the key line - ```line-7: j = k``` directly because the statement $j = k$ is in the nested loop and needs to be executed most times.

So, It just discusses the problem: Find the all combinations of the pair $(i, j)$ when $0 <= i < k < n$
* Find two different numbers in the range $[0, n)$
    * $\to C^{n}_{2} = \frac{n(n - 1)}{2}$ times (**10%**)
    * Time complexity: $O(n^2)$
## Problem 4
A complex-valued matrix X is represented by a pair of matrices $(A,B)$ where $A$ and $B$ contain real values. Write a program that computes the product of two complex-valued matrices $(A,B)$ and $(C,D)$, where $(A,B)*(C,D) = (A+iB) * (C + iD) = (AC - BD) + i(AD + BC)$. Determine the number of additions and multiplications if the matrices are all $n \cdot n$

### The times of addition/subtraction

\begin{gather}
\begin{bmatrix}
    a_{11} & a_{12} & a_{13} & \dots & a_{1n} \\
    a_{21} & a_{22} & a_{23} & \dots & a_{2n} \\
    \vdots & \vdots & \vdots & \ddots & \vdots\\
    a_{n1} & a_{n2} & a_{n3} & \dots & a_{nn} \\
\end{bmatrix} +
\begin{bmatrix}
    b_{11} & b_{12} & b_{13} & \dots & b_{1n} \\
    b_{21} & b_{22} & b_{23} & \dots & b_{2n} \\
    \vdots & \vdots & \vdots & \ddots & \vdots\\
    b_{n1} & b_{n2} & b_{n3} & \dots & b_{nn} \\
\end{bmatrix} \\ =
\begin{bmatrix}
    a_{11} + b_{11} & a_{12} + b_{12} & a_{13} + b_{13} & \dots & a_{1n} + b_{1n} \\
    a_{21} + b_{21} & a_{22} + b_{22} & a_{23} + b_{23} & \dots & a_{2n} + b_{2n} \\
    \vdots & \vdots & \vdots & \ddots & \vdots\\
    a_{n1} + b_{n1} & a_{n2} + b_{n2} & a_{n3} + b_{n3} & \dots & a_{nn} + b_{nn} \\
\end{bmatrix}
\end{gather}

It needs to add two elements $n^2$ times
### The times of product

\begin{gather}
\begin{bmatrix}
    a_{11} & a_{12} & a_{13} & \dots & a_{1n} \\
    a_{21} & a_{22} & a_{23} & \dots & a_{2n} \\
    \vdots & \vdots & \vdots & \ddots & \vdots\\
    a_{n1} & a_{n2} & a_{n3} & \dots & a_{nn} \\
\end{bmatrix} \cdot
\begin{bmatrix}
    b_{11} & b_{12} & b_{13} & \dots & b_{1n} \\
    b_{21} & b_{22} & b_{23} & \dots & b_{2n} \\
    \vdots & \vdots & \vdots & \ddots & \vdots\\
    b_{n1} & b_{n2} & b_{n3} & \dots & b_{nn} \\
\end{bmatrix}
\end{gather}

It needs $n^2 \cdot n$ times of multiplications and $n^2 \cdot (n - 1)$ times of additions.
* The result is also a $n\cdot n$ matrix, and it has $n^2$ elements.
* For each element of the result, each of them needs 
    * $n$ times of multiplications 
    * and $n - 1$ times of additions.
### Let's summarize
$(AC - BD) + i(AD + BC)$
* The product with **imaginary unit** $i$ should be ignored)
* $AC$, $BD$, $AD$, $BC$: are...
    * $n^3$ times of multiplications: total $4n^3$ times.
    * $n^3 - n^2$ times of additions: total $4n^3 - 4n^2$ times

:::warning
有以下兩種答案，原本解答寫的是加負號，但把它當作是減法也給對
:::
* $AC + (-BD$), $AD + BC$: are $n^2$ times $\to 2n^2$ times
* $AD + BC$: are $n^2$ times $\to n^2$ times

Total $4n^3 - 2n^2$ or $4n^3 - 3n^2$ times of additions **(5%)**
$4n^3$ times of multiplications **(5%)**