feat: misc updates
This commit is contained in:
parent
2edb27da30
commit
8015bcec22
4
.gitignore
vendored
4
.gitignore
vendored
@ -628,3 +628,7 @@ poetry.toml
|
|||||||
pyrightconfig.json
|
pyrightconfig.json
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/python,jupyternotebooks,c,c++,java,latex
|
# End of https://www.toptal.com/developers/gitignore/api/python,jupyternotebooks,c,c++,java,latex
|
||||||
|
cs2109s/labs/ps6/MNIST/raw
|
||||||
|
cs2109s/labs/ps7/MNIST/raw
|
||||||
|
cs2109s/labs/.idea
|
||||||
|
cs2109s/labs/ps7/cifar-10-batches-py
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
matplotlib==3.5.2
|
|
||||||
numpy==1.21.5
|
|
||||||
pandas==1.5.2
|
|
||||||
scikit-learn==1.0.2
|
|
||||||
seaborn==0.12.0
|
|
||||||
timeout-decorator==0.5.0
|
|
||||||
torch==1.11.0
|
|
||||||
torchvision==0.12.0
|
|
BIN
cs3230/pa3.pdf
Normal file
BIN
cs3230/pa3.pdf
Normal file
Binary file not shown.
82
cs3230/pa3.typ
Normal file
82
cs3230/pa3.typ
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#let project(title: "", authors: (), body) = {
|
||||||
|
// Set the document's basic properties.
|
||||||
|
set document(author: authors, title: title)
|
||||||
|
set page(numbering: "1", number-align: center)
|
||||||
|
set text(font: "Linux Libertine", lang: "en")
|
||||||
|
|
||||||
|
// Title row.
|
||||||
|
align(center)[
|
||||||
|
#block(text(weight: 700, 1.75em, title))
|
||||||
|
]
|
||||||
|
|
||||||
|
// Author information.
|
||||||
|
pad(
|
||||||
|
top: 0.5em,
|
||||||
|
bottom: 0.5em,
|
||||||
|
x: 2em,
|
||||||
|
grid(
|
||||||
|
columns: (1fr,) * calc.min(3, authors.len()),
|
||||||
|
gutter: 1em,
|
||||||
|
..authors.map(author => align(center, strong(author))),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
// Main body.
|
||||||
|
set par(justify: true)
|
||||||
|
|
||||||
|
body
|
||||||
|
}
|
||||||
|
|
||||||
|
// Take a look at the file `template.typ` in the file panel
|
||||||
|
// to customize this template and discover how it works.
|
||||||
|
#show: project.with(
|
||||||
|
title: "CS3230 PA3",
|
||||||
|
authors: (
|
||||||
|
"Yadunand Prem, A0253252M",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
= Q1
|
||||||
|
== Optimal Substructure
|
||||||
|
|
||||||
|
Let $j$ be the number of houses you're visiting and $S_j$ be the smallest sum of anger that is attainable from $j$ houses, $A_j$ be the $j$th smallest anger that they can attain Then $S_j = A_j + S_(j-1)$
|
||||||
|
|
||||||
|
Optimal solution of $j$ houses is the sum of the optimal solution of $j-1$ houses, and the anger of the house with $j$th smallest anger.
|
||||||
|
|
||||||
|
|
||||||
|
== Proof of Correctness
|
||||||
|
|
||||||
|
1. Let $S_j$ be the minimum anger attainable through visitng $j$ houses (Optimal)
|
||||||
|
2. Suppose that the $S_(j-1)$ solution is not optimal.
|
||||||
|
3. Then there exists a min anger $x$ of $j-1$ houses where $x < S_(j-1)$
|
||||||
|
4. Combining $x + A_j$ would then give a solution that is less than $S_j$ contradicting our initial clause.
|
||||||
|
5. Thus, this optimal substructure exists
|
||||||
|
|
||||||
|
== Greedy Choice
|
||||||
|
Greedy Choice: Let $x$ be the house with the minimum anger. Then there exists an optimal solution containing $x$, called $S$.
|
||||||
|
|
||||||
|
== Proof of Greedy
|
||||||
|
1. Suppose not, that $i in.not S$
|
||||||
|
2. Then, we can replace any $x$ in $S$ with $i$ and get a sum with a lower anger (Cannot be same anger as $i$ is distinct). This contradicts the initial statement of $S$ being the optimal solution.
|
||||||
|
|
||||||
|
== Last Step
|
||||||
|
1. To get the house with $j$th smallest anger, we can sort the houses by its anger values. This can be done in $O(n log(n)$ timing. Without this, it would take $O(k)$ time to get the k-th smallest anger each time.
|
||||||
|
2. We can then build a prefix-sum on the anger values in $O(n)$ time. Now by accessing the $i-1$th element of the array (as its 0 indexed), we can immediately retrieve the min anger attainable in $i$ houses in $O(1)$ timing.
|
||||||
|
|
||||||
|
Total Time Complexity: $O(n log(n) + n + 1) = O(n log(n))$
|
||||||
|
|
||||||
|
|
||||||
|
= Q2
|
||||||
|
|
||||||
|
== Optimal Substructure
|
||||||
|
Let $S(m)$ be the number of ways that frank can arrange the menu items in $m$ minutes. Then $S(m) = sum (S(m-T_i))$, where $T_i$ is the time taken for the $i$th item. To note: repetition is allowed and $S(k) = 0, forall k < 0)$.
|
||||||
|
|
||||||
|
== Overlapping Subproblems
|
||||||
|
There are overlapping subproblems when there are 2 courses with the same time. For example, if there are 2 courses $a$ and $b$, each with time $T_a = T_b = 1$, then $S(m-T_a) = S(m-T_b)$. Thus, there are overlapping subproblems.
|
||||||
|
|
||||||
|
If all subproblems are recomputed, the time complexity would be $O(n^m)$ in the worst case, where $n$ is the number of minutes and $m$ is the number of courses. This has an exponential time complexity.
|
||||||
|
|
||||||
|
If the overlapping subproblems are avoided, then this has an complexity of $O(n m)$. The DP problem has 1 parameter $m$, and in each subproblem, it calculates the sum of $n$ integers, which runs in $O(n)$ time. Thus, $O(n m)$. This has a pseudopolynomial timing
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user