From 020f33db8a17645b661339b6bf8234552203a218 Mon Sep 17 00:00:00 2001 From: Joshua Potter Date: Sun, 25 Aug 2024 13:37:42 -0600 Subject: [PATCH] Standard graph representations, absolute value, triangle inequality. --- .../plugins/obsidian-to-anki-plugin/data.json | 20 +- notes/_journal/2024-03/2024-03-18.md | 2 +- notes/_journal/2024-05/2024-05-13.md | 2 +- notes/_journal/2024-08-25.md | 5 +- notes/_journal/{ => 2024-08}/2024-08-24.md | 0 notes/algebra/abs-val.md | 160 +++++++++++++++ notes/algebra/images/abs-value-geom.png | Bin 0 -> 20936 bytes .../images/triangle-inequality-degenerate.png | Bin 0 -> 6954 bytes notes/algebra/images/triangle-inequality.png | Bin 0 -> 18589 bytes notes/data-structures/graphs.md | 194 ++++++++++++++++++ .../images/adj-list-representation.png | Bin 0 -> 25272 bytes .../images/adj-matrix-representation.png | Bin 0 -> 15564 bytes notes/set/natural-numbers.md | 88 ++++++++ notes/set/trees.md | 4 +- 14 files changed, 464 insertions(+), 11 deletions(-) rename notes/_journal/{ => 2024-08}/2024-08-24.md (100%) create mode 100644 notes/algebra/abs-val.md create mode 100644 notes/algebra/images/abs-value-geom.png create mode 100644 notes/algebra/images/triangle-inequality-degenerate.png create mode 100644 notes/algebra/images/triangle-inequality.png create mode 100644 notes/data-structures/graphs.md create mode 100644 notes/data-structures/images/adj-list-representation.png create mode 100644 notes/data-structures/images/adj-matrix-representation.png diff --git a/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json b/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json index 0885640..ecbd182 100644 --- a/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json +++ b/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json @@ -197,7 +197,12 @@ "lcrs-nodes.png", "binary-tree-nodes.png", "archimedean-property.png", - "infinite-cartesian-product.png" + "infinite-cartesian-product.png", + "abs-value-geom.png", + "triangle-inequality.png", + "triangle-inequality-degenerate.png", + "adj-list-representation.png", + "adj-matrix-representation.png" ], "File Hashes": { "algorithms/index.md": "3ac071354e55242919cc574eb43de6f8", @@ -380,7 +385,7 @@ "set/index.md": "91060cf5e604f7683a34710dda2ea10b", "set/graphs.md": "15aa43bf7f73347219f822e4b400e9bf", "_journal/2024-03-19.md": "a0807691819725bf44c0262405e97cbb", - "_journal/2024-03/2024-03-18.md": "63c3c843fc6cfc2cd289ac8b7b108391", + "_journal/2024-03/2024-03-18.md": "2c711c50247a9880f7ed0d33b16e1101", "awk/variables.md": "e40a20545358228319f789243d8b9f77", "awk/regexp.md": "4ce38103575a5321a1503b28e1d714dd", "awk/index.md": "257738d2d864933fb4bd21e8609c525d", @@ -398,7 +403,7 @@ "x86-64/declarations.md": "75bc7857cf2207a40cd7f0ee056af2f2", "x86-64/instructions.md": "06b7fbe1a7a9568b80239310eb72e87a", "git/refs.md": "e20c2c9b14ba6c2bd235416017c5c474", - "set/trees.md": "f5c6cd3bf1834b84fb0a55114a9c80f6", + "set/trees.md": "495fb5f29b20fbee9812cee2ea9e4504", "_journal/2024-03-24.md": "1974cdb9fc42c3a8bebb8ac76d4b1fd6", "_journal/2024-03/2024-03-23.md": "ad4e92cc2bf37f174a0758a0753bf69b", "_journal/2024-03/2024-03-22.md": "a509066c9cd2df692549e89f241d7bd9", @@ -503,7 +508,7 @@ "programming/pred-trans.md": "c02471c6c9728dd19f8df7bc180ef8b1", "set/axioms.md": "063955bf19c703e9ad23be2aee4f1ab7", "_journal/2024-05-14.md": "f6ece1d6c178d57875786f87345343c5", - "_journal/2024-05/2024-05-13.md": "71eb7924653eed5b6abd84d3a13b532b", + "_journal/2024-05/2024-05-13.md": "d549dd75fb42b4280d4914781edb0113", "x86-64/registers.md": "5cb49ae47fb0f95df6e15991274f4ad3", "_journal/2024-05-15.md": "4e6a7e6df32e93f0d8a56bc76613d908", "_journal/2024-05/2024-05-14.md": "f6ece1d6c178d57875786f87345343c5", @@ -766,7 +771,7 @@ "_journal/2024-08/2024-08-21.md": "1637b8ec8475cf3eb4f41d1d86cbf5df", "_journal/2024-08/2024-08-20.md": "e8bec308d1b29e411c6799ace7ef6571", "_journal/2024-08-23.md": "3b2feab2cc927e267263cb1e9c173d50", - "set/natural-numbers.md": "97ca466daf1173ed8973db1d1a1935cc", + "set/natural-numbers.md": "0646f917887830a8108bb8bcdfcff770", "_journal/2024-08-24.md": "563fad24740e44734a87d7c3ec46cec4", "_journal/2024-08/2024-08-23.md": "7b5a40e83d8f07ff54cd9708017d029c", "_journal/2024-08/2024-08-22.md": "050235d5dc772b542773743b57ce3afe", @@ -779,7 +784,10 @@ "c17/types/derived.md": "aff0d2b6d218fb67af3cc92ead924de3", "c17/types/basic.md": "5064e21e683c0218890058882e06b6f3", "c17/types/index.md": "b3e4f47b5f1f2a76d1d039e6263a41b8", - "_journal/2024-08-25.md": "316dcc41923e7c043bee51f434c90c85" + "_journal/2024-08-25.md": "e73a8edbd027d0f1a39289540eb512f2", + "_journal/2024-08/2024-08-24.md": "563fad24740e44734a87d7c3ec46cec4", + "algebra/abs-val.md": "a47bc08db62304eb526d15ede3e300cf", + "data-structures/graphs.md": "594d136ce637448641631c3647599c3a" }, "fields_dict": { "Basic": [ diff --git a/notes/_journal/2024-03/2024-03-18.md b/notes/_journal/2024-03/2024-03-18.md index a1bd73b..8e292fd 100644 --- a/notes/_journal/2024-03/2024-03-18.md +++ b/notes/_journal/2024-03/2024-03-18.md @@ -11,6 +11,6 @@ title: "2024-03-18" - [ ] Log Work Hours (Max 3 hours) * Finished [buffer pool manager project](https://15445.courses.cs.cmu.edu/fall2022/project1/). -* Added notes on [[graphs|graph]]-related terminology. Updated "Introduction to Algorithms" to fourth edition. +* Added notes on [[set/graphs|graph]]-related terminology. Updated "Introduction to Algorithms" to fourth edition. * Watched [How My Student Became 1 Dan](https://www.youtube.com/watch?v=ZvHL_lwfYYI&t=595s). * Reviewed and commented on Gus's latest pass of soft skills course. \ No newline at end of file diff --git a/notes/_journal/2024-05/2024-05-13.md b/notes/_journal/2024-05/2024-05-13.md index 3ea1a1f..b1b3d93 100644 --- a/notes/_journal/2024-05/2024-05-13.md +++ b/notes/_journal/2024-05/2024-05-13.md @@ -8,7 +8,7 @@ title: "2024-05-13" - [ ] Go (1 Life & Death Problem) - [ ] Korean (Read 1 Story) -* Notes on [[graphs#Subgraphs|subgraphs]] and induced subgraphs. +* Notes on [[set/graphs#Subgraphs|subgraphs]] and induced subgraphs. * Notes on [[remotes]]. * Read through chapter 7 of "The Science of Programming", touching on the $wp$ predicate transformer. * Read chapter 1 of "Elements of Set Theory". Made some progress on chapter 2 which touches on the basic axiomatic foundations. \ No newline at end of file diff --git a/notes/_journal/2024-08-25.md b/notes/_journal/2024-08-25.md index b413e3b..3afa679 100644 --- a/notes/_journal/2024-08-25.md +++ b/notes/_journal/2024-08-25.md @@ -6,4 +6,7 @@ title: "2024-08-25" - [x] KoL - [x] OGS - [ ] Sheet Music (10 min.) -- [ ] Korean (Read 1 Story) \ No newline at end of file +- [ ] Korean (Read 1 Story) + +* Standard [[data-structures/graphs|graph]] representations. +* [[abs-val|Absolute value]] and the [[abs-val#Triangle Inequality|triangle inequality]]. \ No newline at end of file diff --git a/notes/_journal/2024-08-24.md b/notes/_journal/2024-08/2024-08-24.md similarity index 100% rename from notes/_journal/2024-08-24.md rename to notes/_journal/2024-08/2024-08-24.md diff --git a/notes/algebra/abs-val.md b/notes/algebra/abs-val.md new file mode 100644 index 0000000..eae9d5c --- /dev/null +++ b/notes/algebra/abs-val.md @@ -0,0 +1,160 @@ +--- +title: Absolute Value +TARGET DECK: Obsidian::STEM +FILE TAGS: algebra::abs +tags: + - algebra +--- + +## Overview + +Let $x \in \mathbb{R}$. The **absolute value** of $x$, denoted $\lvert x \rvert$, is defined as $$\lvert x \rvert = \begin{cases} x & \text{if } x \geq 0 \\ -x & \text{if } x \leq 0 \end{cases}$$ + +%%ANKI +Basic +How is the absolute value of $x \in \mathbb{R}$ denoted? +Back: $\lvert x \rvert$ +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +How is the absolute value of $x \in \mathbb{R}$ defined? +Back: $\lvert x \rvert = \begin{cases} x & \text{if } x \geq 0 \\ -x & \text{if } x \leq 0 \end{cases}$ +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +The absolute value of $x \in \mathbb{R}$ considers what two cases? +Back: Whether $x \geq 0$ or $x \leq 0$. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +Let $x \in \mathbb{R}$. When is $-\lvert x \rvert \leq x < \lvert x \rvert$? +Back: When $x < 0$. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +Let $x \in \mathbb{R}$. When is $-\lvert x \rvert < x \leq \lvert x \rvert$? +Back: When $x > 0$. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +Let $x \in \mathbb{R}$. When is $-\lvert x \rvert \leq x \leq \lvert x \rvert$? +Back: Always. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +Let $x, a \in \mathbb{R}$ and $a \geq 0$. How is $\lvert x \rvert \leq a$ equivalently written as a chain of inequalities? +Back: $-a \leq x \leq a$ +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +Let $x, a \in \mathbb{R}$ and $a \geq 0$. How is $\lvert x \rvert \leq a$ geometricaly depicted? +Back: +![[abs-value-geom.png]] +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +Let $x, a \in \mathbb{R}$ and $a \geq 0$. How is $-a \leq x \leq a$ equivalently written using absolute value? +Back: $\lvert x \rvert \leq a$ +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +Let $x, a \in \mathbb{R}$ and $a \geq 0$. How is $-a \leq x \leq a$ geometrically depicted? +Back: +![[abs-value-geom.png]] +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +## Triangle Inequality + +Let $x, y \in \mathbb{R}$. Then the **triangle inequality** of $\mathbb{R}$ states $$\lvert x + y \rvert \leq \lvert x \rvert + \lvert y \rvert$$ + +%%ANKI +Basic +What does the triangle inequality of $\mathbb{R}$ state? +Back: For $x, y \in \mathbb{R}$, $\lvert x + y \rvert \leq \lvert x \rvert + \lvert y \rvert$. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +Why is the triangle inequality named the way it is? +Back: The length of a triangle side is $\leq$ the sum of the other two sides. +Reference: Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). + +END%% + +%%ANKI +Basic +What algebraic inequality is demonstrated in the following? +![[triangle-inequality.png]] +Back: The triangle inequality of $\mathbb{R}$. +Reference: “Triangle Inequality.” In _Wikipedia_, July 1, 2024. [https://en.wikipedia.org/w/index.php?title=Triangle_inequality](https://en.wikipedia.org/w/index.php?title=Triangle_inequality&oldid=1232015318). + +END%% + +%%ANKI +Basic +What degenerate triangle justifies use of $\leq$ over $<$ in the triangle inequality of $\mathbb{R}$? +Back: +![[triangle-inequality-degenerate.png]] +Reference: “Triangle Inequality.” In _Wikipedia_, July 1, 2024. [https://en.wikipedia.org/w/index.php?title=Triangle_inequality](https://en.wikipedia.org/w/index.php?title=Triangle_inequality&oldid=1232015318). + +END%% + +%%ANKI +Basic +What two chains of inequalities can be added together to prove the triangle inequality of $\mathbb{R}$? +Back: $-\lvert x \rvert \leq x \leq \lvert x \rvert$ and $-\lvert y \rvert \leq y \leq \lvert y \rvert$. +Reference: “Triangle Inequality.” In _Wikipedia_, July 1, 2024. [https://en.wikipedia.org/w/index.php?title=Triangle_inequality](https://en.wikipedia.org/w/index.php?title=Triangle_inequality&oldid=1232015318). + +END%% + +%%ANKI +Basic +What does the general triangle inequality of $\mathbb{R}$ state? +Back: For real numbers $a_1, \ldots, a_n$, $$\left\lvert \sum_{k=1}^n a_k \right\rvert \leq \sum_{k=1}^n \lvert a_k \rvert$$ +Reference: “Triangle Inequality.” In _Wikipedia_, July 1, 2024. [https://en.wikipedia.org/w/index.php?title=Triangle_inequality](https://en.wikipedia.org/w/index.php?title=Triangle_inequality&oldid=1232015318). + +END%% + +%%ANKI +Basic +Let $a_1\, \ldots, a_n \in \mathbb{R}$. What is the following a generalization of? $$\left\lvert \sum_{k=1}^n a_k \right\rvert \leq \sum_{k=1}^n \lvert a_k \rvert$$ +Back: The triangle inequality of $\mathbb{R}$. +Reference: “Triangle Inequality.” In _Wikipedia_, July 1, 2024. [https://en.wikipedia.org/w/index.php?title=Triangle_inequality](https://en.wikipedia.org/w/index.php?title=Triangle_inequality&oldid=1232015318). + +END%% + +## Bibliography + +* Tom M. Apostol, _Calculus, Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra_, 2nd ed. (New York: Wiley, 1980). +* “Triangle Inequality.” In _Wikipedia_, July 1, 2024. [https://en.wikipedia.org/w/index.php?title=Triangle_inequality](https://en.wikipedia.org/w/index.php?title=Triangle_inequality&oldid=1232015318). \ No newline at end of file diff --git a/notes/algebra/images/abs-value-geom.png b/notes/algebra/images/abs-value-geom.png new file mode 100644 index 0000000000000000000000000000000000000000..4230bf2ce538099904a1462852c24071688bffae GIT binary patch literal 20936 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 literal 0 HcmV?d00001 diff --git a/notes/algebra/images/triangle-inequality-degenerate.png b/notes/algebra/images/triangle-inequality-degenerate.png new file mode 100644 index 0000000000000000000000000000000000000000..1145d2716bb711e134e28bf4e5687a3f2d42c663 GIT binary patch literal 6954 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 z zP8M~-uF9(eXN56o2Zxb~IYLId%a7^xOxgJOjqh^>AGC2}e+cr2h#RFhB?x)2CjT?A zZ(1K##0tOpyL3Q`jB!~u-~tsB32yPeADZ%}&YGgAp_dG=tOwUpebT7?F(3T*qDFdF zq9k)836bTtq#6~}?faY0?T+5Di1dbUr}{otNBUnC#9r2Mfc!h9@{%N4Ru0cN`fgCJ zbfJCe5|t`AFi!qm=6^&0N>UvZL!GSqWFcbC=u#$}eBZV8AY7@vwQFgWf&ln5 zwMmJOHO^(l!G6~C7=W>r;~Y8gS++1bwAZ8C2I-WXOIYffEzAQo8Z7T{6ssqhuA=Zc zJNVH#NU9+O6bgFi!$xqYfUA=U?@Z2y$;zqeV5>2^ZWw=iwLdy~ibk}pz_=dSB|bXm(ur1=_^lij&hFTo^|In16rY!zQq+$U zb7XDZdlCHYt4f^igN?9t{yvcLL1u?9V%?2i76zz(AE2~by)n9 zK|2?i6RHfbtCrO^#<_a{^#_l&XlC{@!}VW8s_I98_~+U(oiGV(^AGsR?k^ulW&cwe z)%I)~U)w^LH5RU2MI-T-^+C|+1j>?q5Y(qZ39BW3rye&)Rt}v~4?_9Q0T!3R0``V34<}YoU16!&@OI38F(LIUA z6;IXmn_^MtjshX1wJFJ@^=M}rI^}%rHtNN_+q4m#fJNop{HvW&5iko2d5BZY*Gu-y zJdadj)d-7?bB$Hjt_G%k5xCdON4znM@i^0qRCqUBo&7XFZL<4 z#|eFN@?FK*k~WFWo9fKG{%WI#a~+fNh&P<%Z1KxZAXdct6&rh9i$@VAm1q-^m_ouw z!8(I zBv|C;V-*!)>m!bF1b9RY!KCa`FV^g-VTh?iOX7V{gr5zP;R=K}AtY||?Hp?SO;;X< zI1S!PFtuN7Qz7May7uuSAL{H2&VHyeJT0EDY+g|SkhUOVw@;k$B80EAaABkReGrrQ zxOfLv8;M@R@A}*KTfP^2D8pdQ$SR~wOZ#d)NFr-F z$Ohvjbi~hLhFs5{A<`eH<5C1VCm!+sh@H*9eKt2Hd>@�p&cnK97z#Ihp+C;+i`Q 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 a?wc(Q^!1MOMh~iW)EaKCp4b|fAlkpilomn& literal 0 HcmV?d00001 diff --git a/notes/data-structures/graphs.md b/notes/data-structures/graphs.md new file mode 100644 index 0000000..335b99f --- /dev/null +++ b/notes/data-structures/graphs.md @@ -0,0 +1,194 @@ +--- +title: Graphs +TARGET DECK: Obsidian::STEM +FILE TAGS: data_structure::graph +tags: + - data_structure + - graph +--- + +## Overview + +There are two standard ways of representing graphs in memory: **adjacency-list** representations and **adjacency-matrix** representations. + +%%ANKI +Basic +Using asymptotic notation, how do the number of edges in a graph relate to the number of vertices? +Back: $\lvert E \rvert = O(\lvert V^2 \rvert)$ +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +For graph $G = \langle V, E \rangle$, *why* is $\lvert E \rvert = O(\lvert V^2 \rvert)$? +Back: Because $E$ is a binary relation on $V$. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +What are the two standard ways of representing graphs in memory? +Back: The adjacency-list and adjacency-matrix representation. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +Which standard graph representation is preferred for sparse graphs? +Back: Adjacency-list representations. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +Which standard graph representation is preferred for dense graphs? +Back: Adjacency-matrix representations. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +When is a graph $G = \langle V, E \rangle$ considered dense? +Back: When $\lvert E \rvert \approx \lvert V \rvert^2$. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +## Adjacency-List + +Let $G = \langle V, E \rangle$ be a graph. An adjacency-list representation of $G$ has an array of size $\lvert V \rvert$. Given $v \in V$, the index corresponding to $v$ contains a linked list containing all adjacent vertices. + +%%ANKI +Basic +Let $G = \langle V, E \rangle$ be a graph. It's adjacency-list representation is an array of what size? +Back: $\lvert V \rvert$ +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +The following is an example of what kind of graph representation? +![[adj-list-representation.png]] +Back: An adjacency-list representation. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +Are adjacency-list representations used for directed or undirected graphs? +Back: Both. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +Let $G = \langle V, E \rangle$ be a graph. What is the sum of its adjacency-list representation's list lengths? +Back: N/A. This depends on whether $G$ is a directed or undirected graph. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +Let $G = \langle V, E \rangle$ be a digraph. What is the sum of its adjacency-list representation's list lengths? +Back: $\lvert E \rvert$ +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +Let $G = \langle V, E \rangle$ be an undirected graph. What is the sum of its adjacency-list representation's list lengths? +Back: $2\lvert E \rvert$ +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +Which lemma explains the sum of an undirected graph adjacency-list representation's list lengths? +Back: The handshake lemma. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +Let $G = \langle V, E \rangle$. What is the memory usage of its adjacency-list representation? +Back: $\Theta(\lvert V \rvert + \lvert E \rvert)$ +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +## Adjacency-Matrix + +Let $G = \langle V, E \rangle$ be a graph. An adjacency-matrix representation of $G$ is a $\lvert V \rvert \times \lvert V \rvert$ matrix $A = (a_{ij})$ such that $$a_{ij} = \begin{cases} 1 & \text{if } \langle i, j \rangle \in E \\ 0 & \text{otherwise} \end{cases}$$ + +%%ANKI +Basic +Let $G = \langle V, E \rangle$ be a graph. It's adjacency-matrix representation is a matrix of what dimensions? +Back: $\lvert V \rvert \times \lvert V \rvert$ +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +What values are found in an adjacency-matrix representation of a graph? +Back: $0$ and/or $1$. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +The following is an example of what kind of graph representation? +![[adj-matrix-representation.png]] +Back: An adjacency-matrix representation. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +Are adjacency-matrix representations used for directed or undirected graphs? +Back: Both. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +For what graphs are adjacency-matrix representations symmetric along its diagonal? +Back: Undirected graphs. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +*Why* is the adjacency-matrix representation of undirected graph $G = \langle V, E \rangle$ symmetric along its diagonal? +Back: If $\langle i, j \rangle \in E$ then $\langle j, i \rangle \in E$. +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +%%ANKI +Basic +Let $G = \langle V, E \rangle$. What is the memory usage of its adjacency-matrix representation? +Back: $\Theta(\lvert V \rvert^2)$ +Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). + +END%% + +## Bibliography + +* Thomas H. Cormen et al., _Introduction to Algorithms_, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). \ No newline at end of file diff --git a/notes/data-structures/images/adj-list-representation.png b/notes/data-structures/images/adj-list-representation.png new file mode 100644 index 0000000000000000000000000000000000000000..5d4d0cde16653bb718fa7546e8b84b55532b06df GIT binary patch literal 25272 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 Mvc}yCMT?OC0xU*2Z~y=R literal 0 HcmV?d00001 diff --git a/notes/data-structures/images/adj-matrix-representation.png b/notes/data-structures/images/adj-matrix-representation.png new file mode 100644 index 0000000000000000000000000000000000000000..5a041a6b823e78abcc17d5108a5f595319e6ef36 GIT binary patch literal 15564 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 END%% +%%ANKI +Basic +In set theory, $\omega$ denotes what set? +Back: The natural numbers. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + %%ANKI Basic What is the smallest inductive set? @@ -281,6 +289,86 @@ Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Pre END%% +%%ANKI +Basic +What can be said about a subset of $\omega$? +Back: N/A. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +What can be said about an inductive subset of $\omega$? +Back: It must coincide with $\omega$. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +Why must every inductive subset of $\omega$ coincide with $\omega$? +Back: Because $\omega$ is the smallest inductive set. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +What does the induction principle for $\omega$ state? +Back: Every inductive subset of $\omega$ coincides with $\omega$. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +What name is given to the principle, "every inductive subset of $\omega$ coincides with $\omega$?" +Back: The induction principle for $\omega$. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +Inductive sets correspond to what kind of proof method? +Back: Proof by induction. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +Prove $P(n)$ is true for all $n \in \mathbb{N}$ using induction. What set do we prove is inductive? +Back: $\{n \in \mathbb{N} \mid P(n)\}$ +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +*How* are inductive sets and proof by induction related? +Back: An induction proof corresponds to proving a related set is inductive. +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +What inductive set do we construct to prove the following by induction? $$\text{Every natural number is nonnegative}$$ +Back: $\{n \in \omega \mid 0 \leq n\}$ +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + +%%ANKI +Basic +What inductive set do we construct to prove the following by induction? $$\text{Every nonzero natural number is the successor of another natural number}$$ +Back: $\{n \in \omega \mid n = 0 \lor (\exists m \in \omega, n = m^+)\}$ +Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). + +END%% + ## Bibliography * Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977). \ No newline at end of file diff --git a/notes/set/trees.md b/notes/set/trees.md index 032ff08..6bdfb62 100644 --- a/notes/set/trees.md +++ b/notes/set/trees.md @@ -10,7 +10,7 @@ tags: ## Overview -A **free tree** is a connected, acyclic, undirected [[graphs|graph]]. If an undirected graph is acyclic but possibly disconnected, it is a **forest**. +A **free tree** is a connected, acyclic, undirected [[set/graphs|graph]]. If an undirected graph is acyclic but possibly disconnected, it is a **forest**. %%ANKI Basic @@ -126,7 +126,7 @@ END%% A **rooted tree** is a free tree in which one vertex is distinguished/blessed as the **root**. We call vertices of rooted trees **nodes**. -Let $T$ be a rooted tree with root $r$. Any node $y$ on the [[graphs#Paths|path]] from $r$ to node $x$ is an **ancestor** of $x$. Likewise, $x$ is a **descendant** of $y$. If the last edge on the path from $r$ to $x$ is $\{y, x\}$, $y$ is the **parent** of $x$ and $x$ is a **child** of $y$. Nodes with the same parent are called **siblings**. +Let $T$ be a rooted tree with root $r$. Any node $y$ on the [[set/graphs#Paths|path]] from $r$ to node $x$ is an **ancestor** of $x$. Likewise, $x$ is a **descendant** of $y$. If the last edge on the path from $r$ to $x$ is $\{y, x\}$, $y$ is the **parent** of $x$ and $x$ is a **child** of $y$. Nodes with the same parent are called **siblings**. A node with no children is an **external node** or **leaf**. A node with at least one child is an **internal node** or **nonleaf**. The number of children of a node is the **degree** of said node. The length of the path from the root to a node $x$ is the **depth** of $x$ in $T$. A **level** of a tree consists of all nodes at the same depth. The **height** of a node in a tree is the length of the longest path from the node to a leaf.