From 8d6978c429ce139c0a1162279545a103a2d0ad3b Mon Sep 17 00:00:00 2001 From: Joshua Potter Date: Tue, 20 Feb 2024 07:13:03 -0700 Subject: [PATCH] More combination-related notes and PIE. --- .../plugins/obsidian-to-anki-plugin/data.json | 13 ++- notes/_journal/2024-02-20.md | 21 ++++ notes/_journal/{ => 2024-02}/2024-02-19.md | 2 +- notes/binary/index.md | 2 +- notes/binary/shifts.md | 2 +- notes/c/declarations.md | 45 +++++++-- notes/c/strings.md | 98 +++++++++++++++---- notes/combinatorics/combinations.md | 74 +++++++++++++- notes/combinatorics/inclusion-exclusion.md | 96 ++++++++++++++++++ 9 files changed, 312 insertions(+), 41 deletions(-) create mode 100644 notes/_journal/2024-02-20.md rename notes/_journal/{ => 2024-02}/2024-02-19.md (89%) create mode 100644 notes/combinatorics/inclusion-exclusion.md diff --git a/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json b/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json index cad9233..f6eded9 100644 --- a/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json +++ b/notes/.obsidian/plugins/obsidian-to-anki-plugin/data.json @@ -128,11 +128,11 @@ "algorithms/sorting/selection-sort.md": "fcd0dc2ebaabd0a4db1baf7e7ef9f7a9", "algorithms/index 1.md": "6fada1f3d5d3af64687719eb465a5b97", "binary/hexadecimal.md": "c3d485f1fd869fe600334ecbef7d5d70", - "binary/index.md": "b4db8fe8ae874a682a5acf81271e303b", + "binary/index.md": "ab345e75dc01f890faa31bc26676d526", "_journal/2024-02-09.md": "a798d35f0b2bd1da130f7ac766166109", "c/types.md": "cf3e66e5aee58a94db3fdf0783908555", "logic/quantification.md": "5d7579a511e9ff683edeec62bcc291b8", - "c/declarations.md": "d2e7dcb5bbf6644651f4f25503b165e1", + "c/declarations.md": "7b0277d89b83fb330970deeb37e664c4", "algorithms/sorting/bubble-sort.md": "16dad1016dc6555163e42ba20f1d152d", "_journal/2024-02-10.md": "562b01f60ea36a3c78181e39b1c02b9f", "_journal/2024-01/2024-01-31.md": "7c7fbfccabc316f9e676826bf8dfe970", @@ -153,13 +153,13 @@ "_journal/2024-02/2024-02-11.md": "afee9f502b61e17de231cf2f824fbb32", "encoding/ascii.md": "c01e50f96d0493d94dc4d520c0b6bb71", "encoding/index.md": "071cfa6a5152efeda127b684f420d438", - "c/strings.md": "813aa7b27c4d9e75b9076681726e11ee", + "c/strings.md": "d3a5405f5d5237ee169a8894ff4e21ab", "logic/truth-tables.md": "7892ceaa416c9a65acc79ca1e6ff778f", "logic/short-circuit.md": "26d300f407f14883022d0ef8dc4f7300", "logic/boolean-algebra.md": "f9101b2dfdedb73dc13c34c1a70a0010", "_journal/2024-02-13.md": "6242ed4fecabf95df6b45d892fee8eb0", "_journal/2024-02/2024-02-12.md": "618c0035a69b48227119379236a02f44", - "binary/shifts.md": "146ee4898faa13b26f00a31024020c2e", + "binary/shifts.md": "c7fb2a5722a69bb23047b603edcd0b91", "_journal/2024-02-14.md": "76d1b607470305fb3f00a47b8e9ece27", "_journal/2024-02/2024-02-13.md": "6242ed4fecabf95df6b45d892fee8eb0", "_journal/2024-02-15.md": "575ba46d692795d9606de9e635d1f4ac", @@ -180,7 +180,10 @@ "_journal/2024-02-19.md": "30d16c5373deb9cb128d2e7934ae256a", "_journal/2024-02/2024-02-18.md": "67e36dbbb2cac699d4533b5a2eaeb629", "combinatorics/permutations.md": "3c76f548e22f7271280b9ed82ae584ec", - "combinatorics/combinations.md": "8957575cef86f05918a47fcb5bc5f8c1" + "combinatorics/combinations.md": "c00ae174e8a172be1c3f89c231a2dd03", + "_journal/2024-02-20.md": "4e6ff95c5c3163fb909f37c078759b13", + "_journal/2024-02/2024-02-19.md": "df1a9ab7ab89244021b3003c84640c78", + "combinatorics/inclusion-exclusion.md": "0c63d52507b87cf276615715977218cb" }, "fields_dict": { "Basic": [ diff --git a/notes/_journal/2024-02-20.md b/notes/_journal/2024-02-20.md new file mode 100644 index 0000000..e1d3b27 --- /dev/null +++ b/notes/_journal/2024-02-20.md @@ -0,0 +1,21 @@ +--- +title: "2024-02-20" +--- + +- [x] Anki Flashcards +- [x] KoL +- [ ] Sheet Music (10 min.) +- [x] OGS (1 Life & Death Problem) +- [ ] Korean (Read 1 Story) +- [ ] Interview Prep (1 Practice Problem) +- [ ] Log Work Hours (Max 3 hours) + +* Added `printf` `length` field notes. +* 101weiqi (serial numbers) + * Q-138432 + * Q-266721 + * Q-110886 + * Q-267289 + * Q-275961 + * Q-324650 + * Q-83832 \ No newline at end of file diff --git a/notes/_journal/2024-02-19.md b/notes/_journal/2024-02/2024-02-19.md similarity index 89% rename from notes/_journal/2024-02-19.md rename to notes/_journal/2024-02/2024-02-19.md index b9af1ef..e3626a5 100644 --- a/notes/_journal/2024-02-19.md +++ b/notes/_journal/2024-02/2024-02-19.md @@ -4,7 +4,7 @@ title: "2024-02-19" - [x] Anki Flashcards - [x] KoL -- [ ] Sheet Music (10 min.) +- [x] Sheet Music (10 min.) - [ ] OGS (1 Life & Death Problem) - [ ] Korean (Read 1 Story) - [ ] Interview Prep (1 Practice Problem) diff --git a/notes/binary/index.md b/notes/binary/index.md index 20ebce5..2651419 100644 --- a/notes/binary/index.md +++ b/notes/binary/index.md @@ -8,7 +8,7 @@ tags: ## Overview -A binary digit or **bit** is a `0` or `1` character. A bit string is then a contiguous sequence of bits. It's **weight** is a reference to the number of `1`s in the bit string. Compare the below operation to the method for converting from one numerical base to another (e.g. [[hexadecimal]]). +A binary digit or **bit** is a `0` or `1` character. A **bit string** is then a contiguous sequence of bits. It's **weight** is a reference to the number of `1`s in the bit string. Compare the below operation to the method for converting from one numerical base to another (e.g. [[hexadecimal]]). ```c unsigned int bit_weight(int64_t n) { diff --git a/notes/binary/shifts.md b/notes/binary/shifts.md index 832a652..9d3efee 100644 --- a/notes/binary/shifts.md +++ b/notes/binary/shifts.md @@ -105,7 +105,7 @@ END%% %%ANKI Basic How is $x \bmod 2^k$ equivalently written as a bit mask? -Back: `x & (k - 1)` +Back: `x & ((1 << k) - 1)` Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. Tags: c diff --git a/notes/c/declarations.md b/notes/c/declarations.md index 1d18595..156558c 100644 --- a/notes/c/declarations.md +++ b/notes/c/declarations.md @@ -8,15 +8,17 @@ tags: ## Overview -Signed | Unsigned | 32-bit | 64-bit ------------ | -------------- | ------ | ------ -signed char | unsigned char | 1 | 1 -short | unsigned short | 2 | 2 -int | unsigned | 4 | 4 -long | unsigned long | 4 | 8 -char * | - | 4 | 8 -float | - | 4 | 4 -double | - | 8 | 8 +Signed | Unsigned | 32-bit | 64-bit +----------- | ------------------- | ------ | ------ +signed char | unsigned char | 1 | 1 +short | unsigned short | 2 | 2 +int | unsigned | 4 | 4 +long | unsigned long | 4 | 8 +long long | unsigned long long | 8 | 8 +char * | - | 4 | 8 +float | - | 4 | 4 +double | - | 8 | 8 + Fixed width data integral types (e.g. `int32_t`) can be found by including ``. %%ANKI @@ -103,6 +105,29 @@ Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Program END%% +%%ANKI +Cloze +`long long` *typically* represents {8} bytes(s) on a 64-bit platform. +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + +%%ANKI +Basic +What distinguishes `long` from `long long`? +Back: `long long`s are guaranteed to be at least 64-bit wide. +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + +%%ANKI +Basic +*Why* is there both a `long` and `long long`? +Back: `long long`s are at least 64-bit wide, even on 32-bit platforms. +Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. + +END%% + %%ANKI Cloze `char *` *typically* represents {8} bytes(s) on a 64-bit platform. @@ -182,4 +207,4 @@ END%% ## References -* Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. \ No newline at end of file +* Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. diff --git a/notes/c/strings.md b/notes/c/strings.md index b428995..a59c592 100644 --- a/notes/c/strings.md +++ b/notes/c/strings.md @@ -61,6 +61,13 @@ Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia END%% +%%ANKI +Cloze +The {`width` and `precision`} fields are output related whereas the {`length`} field is input related. +Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). + +END%% + Flag | Description --------- | ----------- `-` | Left-aligns the output @@ -232,6 +239,57 @@ Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia END%% +Length | Description +--------- | ----------- +`hh` | `int` sized integer argument promoted from a `char` +`h` | `int` sized integer argument promoted from a `short` +`l` | `long` sized integer argument +`ll` | `long long` sized integer argument +`z` | `size_t` sized integer argument + +%%ANKI +Basic +*Why* do length modifiers for e.g. `char` exist? +Back: For maximum portability in the face of default argument promotions. +Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). + +END%% + +%%ANKI +Cloze +The {`hh`} length corresponds to the {`char`} type declaration. +Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). + +END%% + +%%ANKI +Cloze +The {`h`} length corresponds to the {`short`} type declaration. +Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). + +END%% + +%%ANKI +Cloze +The {`l`} length corresponds to the {`long`} type declaration. +Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). + +END%% + +%%ANKI +Cloze +The {`ll`} length corresponds to the {`long long`} type declaration. +Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). + +END%% + +%%ANKI +Cloze +The {`z`} length corresponds to the {`size_t`} type declaration. +Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). + +END%% + Specifier | Description --------- | ----------- `d`, `i` | a decimal `signed int` @@ -263,7 +321,7 @@ END%% %%ANKI Cloze -The {`d` and `i`} format specifers work on a {decimal `signed int`}. +The {`%d` and `%i`} format specifers work on a {decimal `signed int`}. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -271,7 +329,7 @@ END%% %%ANKI Cloze -{`d` and `i`} are to `signed` as {`u`} is to `unsigned`. +{`%d` and `%i`} are to `signed` as {`%u`} is to `unsigned`. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -279,7 +337,7 @@ END%% %%ANKI Cloze -The {`u`} format specifier outputs a {decimal `unsigned int`}. +The {`%u`} format specifier outputs a {decimal `unsigned int`}. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -287,7 +345,7 @@ END%% %%ANKI Basic -What distinguishes format specifiers `d` and `i`? +What distinguishes format specifiers `%d` and `%i`? Back: Nothing. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -297,7 +355,7 @@ END%% %%ANKI Basic Which format specifiers were probably used to yield `printf` output `-12`? -Back: `d` or `i` +Back: `%d` or `%i` Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -305,7 +363,7 @@ END%% %%ANKI Basic -What distinguishes format specifiers `d` and `u`? +What distinguishes format specifiers `%d` and `%u`? Back: The former is for signed integers, the latter unsigned. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -314,7 +372,7 @@ END%% %%ANKI Cloze -The {`x`} format specifier outputs a {lowercase hexadecimal `unsigned int`}. +The {`%x`} format specifier outputs a {lowercase hexadecimal `unsigned int`}. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -323,7 +381,7 @@ END%% %%ANKI Basic Which format specifier were probably used to yield `printf` output `7af`? -Back: `x` +Back: `%x` Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -331,7 +389,7 @@ END%% %%ANKI Cloze -The {`X`} format specifier outputs an {uppercase hexadecimal `unsigned int`}. +The {`%X`} format specifier outputs an {uppercase hexadecimal `unsigned int`}. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -340,7 +398,7 @@ END%% %%ANKI Basic Which format specifier were probably used to yield `printf` output `7AF`? -Back: `X` +Back: `%X` Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -348,7 +406,7 @@ END%% %%ANKI Basic -What distinguishes format specifiers `x` and `X`? +What distinguishes format specifiers `%x` and `%X`? Back: The former outputs lowercase hex digits, the latter uppercase. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -357,7 +415,7 @@ END%% %%ANKI Cloze -The {`o`} format specifier outputs an {octal `unsigned int`}. +The {`%o`} format specifier outputs an {octal `unsigned int`}. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -365,7 +423,7 @@ END%% %%ANKI Basic -Why doesn't the `o` format specifier have a corresponding `O` specifier? +Why doesn't the `%o` format specifier have a corresponding `%O` specifier? Back: There is no distinction between lower and uppercase octal digits. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -374,7 +432,7 @@ END%% %%ANKI Cloze -The {`s`} format specifiers outputs a {`NUL`-terminated string}. +The {`%s`} format specifiers outputs a {`NUL`-terminated string}. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -383,7 +441,7 @@ END%% %%ANKI Basic Which format specifier was probably used to yield `printf` output `abc`? -Back: `s` +Back: `%s` Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -391,7 +449,7 @@ END%% %%ANKI Cloze -The {`c`} format specifier outputs a {`char` character}. +The {`%c`} format specifier outputs a {`char` character}. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -400,7 +458,7 @@ END%% %%ANKI Basic Which format specifier was probably used to yield `printf` output `a`? -Back: `c` +Back: `%c` Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -408,7 +466,7 @@ END%% %%ANKI Cloze -The {`p`} format specifier outputs a {`void*` address}. +The {`%p`} format specifier outputs a {`void*` address}. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -417,7 +475,7 @@ END%% %%ANKI Basic Which format specifier was probably used to yield `printf` output `0b80000000`? -Back: `p` +Back: `%p` Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf @@ -425,7 +483,7 @@ END%% %%ANKI Basic -How is the address outputted by the `p` format specifier written? +How is the address outputted by the `%p` format specifier written? Back: In an implementation-specific way. Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962). Tags: printf diff --git a/notes/combinatorics/combinations.md b/notes/combinatorics/combinations.md index 5472061..92e2522 100644 --- a/notes/combinatorics/combinations.md +++ b/notes/combinatorics/combinations.md @@ -238,9 +238,77 @@ Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n END%% +## Bit Strings + +A [[binary/index|bit string]] can be used to represent subsets of some finite set. A `1` value usually corresponds to inclusion in a subset, whereas a `0` value corresponds to exclusion. Thus, given set e.g. $A = \{1, 2, 3, 4\}$, $0110_2$ would correspond to subset $\{2, 3\}$. + +%%ANKI +Basic +Given $A = \{1, 2, 3, 4\}$, what subset does $1010_2$ correspond to? +Back: $\{1, 3\}$ +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Cloze +Representing subsets with bit strings, {$0000_2$} maps to {$\varnothing$} $\subseteq \{1, 2, 3, 4\}$. +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Cloze +Representing subsets with bit strings, {$1111_2$} maps to {$\{1, 2, 3, 4\}$} $\subseteq \{1, 2, 3, 4\}$. +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +Bit strings also make it clear that the number of subsets with even cardinality must be equal to the number of subsets with odd cardinality. Hence, $$\binom{n}{0} - \binom{n}{1} + \cdots + (-1)^n \binom{n}{n} = 0$$ + +%%ANKI +Basic +What does $\sum_{k=0}^n (-1)^k \binom{n}{k}$ evaluate to? +Back: $0$ +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +What does expression $\sum_{k=0}^n (-1)^k \binom{n}{k} = 0$ indicate about sets? +Back: There is an equal number of even-sized subsets as odd-sized subsets. +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +What isomorphism shows finite sets have an equal number of even-sized subsets as odd-sized subsets? +Back: The one-to-one relationship between subsets and bit strings. +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +Given finite set $A$, how many subsets of even cardinality does $A$ have? +Back: Let $n = |A|$. Then $2^{n-1}$. +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +Given finite set $A$, how many subsets of odd cardinality does $A$ have? +Back: Let $n = |A|$. Then $2^{n-1}$. +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + ## Lattice Paths -A **lattice path** is one of the shorted possible paths connecting two points on a lattice, moving only horizontally and vertically. By representing each horizontal move by "1" and each vertical move by "0", we see every lattice path has a corresponding bit string. +A **lattice path** is one of the shorted possible paths connecting two points on a lattice, moving only horizontally and vertically. By representing each horizontal move by `1` and each vertical move by `1`, we see every lattice path has a corresponding [[#Bit Strings|bit string]]. ![[lattice-path-example.png]] @@ -330,9 +398,9 @@ Back: END%% -## Binomials +## Binomial Coefficients -A **binomial** is a polynomial containing two terms. Consider $(x + y)^n$. +A **binomial** is a polynomial containing two terms. Consider $(x + y)^n$. We see that term $x^ky^{n-k}$ maps to *some* bit string containing $k$ `1`s and $n - k$ `0`s. This might feel more obvious when expanding to $x \cdot x \cdots x \cdot y \cdots y$. Since multiplication is commutative, the number of matching "bit strings" is the same as $\binom{n}{k}$. %%ANKI Basic diff --git a/notes/combinatorics/inclusion-exclusion.md b/notes/combinatorics/inclusion-exclusion.md new file mode 100644 index 0000000..bd30105 --- /dev/null +++ b/notes/combinatorics/inclusion-exclusion.md @@ -0,0 +1,96 @@ +--- +title: Principle of Inclusion/Exclusion +TARGET DECK: Obsidian::STEM +FILE TAGS: combinatorics set +tags: + - combinatorics + - set +--- + +## Overview + +The **principle of inclusion/exclusion** refers to the oscillating adding and subtracting used to find the cardinality of potentially overlapping sets. Consider sets $A$, $B$, and $C$. Then + +$$|A \cup B| = |A| + |B| - |AB|$$ + +and + +$$|A \cup B \cup C| = |A| + |B| + |C| - |AB| - |AC| - |BC| + |ABC|$$ + +Notice the number of terms containing one set, two sets, three sets, etc. match the [[combinations#Binomial Coefficients|binomial coefficients]]. + +%%ANKI +Basic +Given finite sets $A$ and $B$ and using PIE, what is $|A \cup B|$? +Back: $|AB| = |A| + |B| - |AB|$ +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +Given finite sets $A$ and $B$, what combinatorial concept is used to find $|A \cup B|$? +Back: The principle of inclusion/exclusion. +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +Why is the principle of inclusion/exclusion named the way it is? +Back: Because it involves an alternating adding and subtracting of terms. +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +What concept does PIE typically refer to? +Back: The **p**rinciple of **i**nclusion/**e**xclusion. +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +Given finite sets $A$ and $B$, what is $|A \cup B \cup C|$? +Back: $|A| + |B| + |C| - |AB| - |AC| - |BC| + |ABC|$ +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +Using sigma notation, what identity is used to prove PIE correctly counts members? +Back: $\sum_{k=0}^n (-1)^k \binom{n}{k} = 0$ +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +Why might PIE be considered a top-down approach to counting? +Back: It starts by counting every member of each union operand. +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +What is the bottom-up approach contrasting PIE? +Back: Apply the additive property to all disjoint sets the union operands can make. +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +%%ANKI +Basic +Given finite sets $A$ and $B$ and using a bottom-up approach (i.e. *not* PIE), what is $|A \cup B|$? +Back: $|A \cup B| = |AB| + |A - AB| + |B - AB|$ +Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). + +END%% + +## References + +* Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). \ No newline at end of file