{"id":191,"date":"2025-03-01T23:25:53","date_gmt":"2025-03-01T15:25:53","guid":{"rendered":"https:\/\/www.toothlessos.xyz\/?p=191"},"modified":"2025-03-02T00:40:32","modified_gmt":"2025-03-01T16:40:32","slug":"intro-to-discrete-math-art-of-counting","status":"publish","type":"post","link":"https:\/\/www.toothlessos.xyz\/index.php\/2025\/03\/01\/intro-to-discrete-math-art-of-counting\/","title":{"rendered":"Intro to discrete math: art of counting"},"content":{"rendered":"\n<p>I find it a good time to recap this session&#8217;s discrete math course, since I will be taking the finals on Monday. I hope you will enjoy this ride with me!<\/p>\n\n\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-sets-functions-logic-proof\">Sets, Functions, Logic &amp; Proof<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-sequences-series\">Sequences &amp; Series<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-convergence-for-sequences\">Convergence for sequences<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-convergence-for-series\">Convergence for series<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-counting-problems-tools-to\">Counting problems &amp; Tools<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-transform-a-hard-problem-via-bijection\">Transform a hard problem via bijection<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-generating-functions\">Generating Functions<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-induction\">Induction<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-exclusion-inclusion-formula\">The exclusion-inclusion formula<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-bijection-between-labelled-trees-prufer-code\">Bijection between labelled trees &amp; prufer code<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-recurrence\">Recurrence<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-graphs\">Graphs<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-epilogue\">Epilogue<\/a><\/li><\/ul><\/div>\n\n\n<p>By the way, the reason that I call discrete math &#8216;the art of counting&#8217; is that enumeration is indeed an important part of it. You will find them basically everywhere in the following sections!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-sets-functions-logic-proof\">Sets, Functions, Logic &amp; Proof<\/h2>\n\n\n\n<p>Sets and functions are fundamental since they are the notations for everything. <\/p>\n\n\n\n<p>There are loads of details, so they won&#8217;t fit into this log. Here, I will focus more on the function part that will be particular handy in the &#8216;counting problems&#8217; section.<\/p>\n\n\n\n<p>Simply put, a function is a mapping that maps one input to exactly one output. Any function can be described by its three main components: <strong>domain<\/strong>, <strong>codomain<\/strong> &amp; <strong>range<\/strong>. This slide from Prof. Cai is a good illustration of the three:<\/p>\n\n\n\n<p>(P.S. You can find these resources at his personal repo: <a href=\"https:\/\/newptcai.gitlab.io\/teaching\/\">My teachings | Throw All Things Away<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"779\" height=\"555\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image.png\" alt=\"\" class=\"wp-image-205\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image.png 779w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-300x214.png 300w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-768x547.png 768w\" sizes=\"auto, (max-width: 779px) 100vw, 779px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"780\" height=\"141\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-1.png\" alt=\"\" class=\"wp-image-206\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-1.png 780w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-1-300x54.png 300w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-1-768x139.png 768w\" sizes=\"auto, (max-width: 780px) 100vw, 780px\" \/><\/figure>\n\n\n\n<p>At the same time, three properties stem from the three main components. They are <strong>surjection<\/strong>(onto: range=codomain), <strong>injection<\/strong>(1-to-1: each element of the codomain is the image at most one element of the domain) and <strong>bijection<\/strong>(injection and surjection combined). <strong>Bijection<\/strong> is particularly useful property since it allows for the conversion between problem A &amp; B. Examples of this can be found in the later sections.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-sequences-series\">Sequences &amp; Series<\/h2>\n\n\n\n<p>For series &amp; sequences, the most important thing is to understand their convergence. So here I will post a cookbook for convergence tests:<\/p>\n\n\n\n<p>(The tables are taken from Elementary Calculus textbook)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-convergence-for-sequences\">Convergence for sequences<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"252\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-2-1024x252.png\" alt=\"\" class=\"wp-image-214\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-2-1024x252.png 1024w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-2-300x74.png 300w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-2-768x189.png 768w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-2.png 1099w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Procedures of the Monotone Bounded Test: Check monotone + check bounded. The <strong>ratio test<\/strong> is handy (Check the following example).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"782\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-5-1024x782.png\" alt=\"\" class=\"wp-image-220\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-5-1024x782.png 1024w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-5-300x229.png 300w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-5-768x587.png 768w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-5.png 1191w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-convergence-for-series\">Convergence for series<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"747\" height=\"893\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-4.png\" alt=\"\" class=\"wp-image-217\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-4.png 747w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-4-251x300.png 251w\" sizes=\"auto, (max-width: 747px) 100vw, 747px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-counting-problems-tools-to\">Counting problems &amp; Tools<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-transform-a-hard-problem-via-bijection\">Transform a hard problem via <strong>bijection<\/strong><\/h3>\n\n\n\n<p>A typical example: counting the number of labelled trees. For this task, we rely on the bijection between labelled trees and prufer code. This give us the <strong>Cayley&#8217;s Formula<\/strong> for counting labelled trees: n<sup>n-2<\/sup><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"588\" height=\"288\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-9.png\" alt=\"\" class=\"wp-image-234\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-9.png 588w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-9-300x147.png 300w\" sizes=\"auto, (max-width: 588px) 100vw, 588px\" \/><\/figure>\n\n\n\n<p> (Find the proof of the bijection in the &#8216;induction&#8217; section)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-generating-functions\">Generating Functions<\/h3>\n\n\n\n<p>First, we look at definition of generating functions:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"776\" height=\"514\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-10.png\" alt=\"\" class=\"wp-image-238\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-10.png 776w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-10-300x199.png 300w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-10-768x509.png 768w\" sizes=\"auto, (max-width: 776px) 100vw, 776px\" \/><\/figure>\n\n\n\n<p><strong>Rigorous speaking<\/strong>, generating functions are not functions. Mathematicians have constructed a new set of operations (add, subtract, multiply, multiplicative-inverse, derivatives, integration &#8230;) for them. My buddy Mr. Xie told me that to systematically learn about all of this, you can take the <strong>abstract algebra <\/strong>course.<\/p>\n\n\n\n<p>Nevertheless, when using generative functions as <strong>tools for enumeration<\/strong>, it is okay to consider them as a regular function (and just apply the same rules of <strong>multiplying polynomials<\/strong> when multiplying them). <\/p>\n\n\n\n<p>The following example illustrates how generating functions are used to compute <strong>integer compositions<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"783\" height=\"512\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-11.png\" alt=\"\" class=\"wp-image-239\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-11.png 783w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-11-300x196.png 300w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-11-768x502.png 768w\" sizes=\"auto, (max-width: 783px) 100vw, 783px\" \/><\/figure>\n\n\n\n<p>To make to computation easier, we usually write generating functions in their <strong>closed-forms<\/strong> before multiplying them. Then we expand them after the multiplication.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-12-1024x768.png\" alt=\"\" class=\"wp-image-242\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-12-1024x768.png 1024w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-12-300x225.png 300w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-12-768x576.png 768w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-12-1536x1152.png 1536w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-12-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Warning<\/strong>: Do NOT use the regular generating functions for compositions tasks where the <strong>sequence<\/strong> matters (e.g. Strings)! Use the <strong>exponential generating function<\/strong> instead:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"717\" height=\"270\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-13.png\" alt=\"\" class=\"wp-image-244\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-13.png 717w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-13-300x113.png 300w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/aea17c91194ef1db7da4fb8bf2e05ea-1024x768.jpg\" alt=\"\" class=\"wp-image-245\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/aea17c91194ef1db7da4fb8bf2e05ea-1024x768.jpg 1024w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/aea17c91194ef1db7da4fb8bf2e05ea-300x225.jpg 300w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/aea17c91194ef1db7da4fb8bf2e05ea-768x576.jpg 768w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/aea17c91194ef1db7da4fb8bf2e05ea-1536x1152.jpg 1536w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/aea17c91194ef1db7da4fb8bf2e05ea-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-induction\">Induction<\/h2>\n\n\n\n<p>Prove by induction is something that you should always pack in your tool box. The procedure: 1. Validate the base case (e.g. n = 1); 2. Set up the induction hypothesis (Argument is true for n = k, k &gt;= 1); 3. Prove that the argument is also true for n = k + 1.<\/p>\n\n\n\n<p>Prove by induction is useful for many proofs in discrete math. For instance:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-the-exclusion-inclusion-formula\">The exclusion-inclusion formula<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"727\" height=\"1024\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/67990069280ce75a06aa53520ac3e02-727x1024.jpg\" alt=\"\" class=\"wp-image-225\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/67990069280ce75a06aa53520ac3e02-727x1024.jpg 727w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/67990069280ce75a06aa53520ac3e02-213x300.jpg 213w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/67990069280ce75a06aa53520ac3e02-768x1082.jpg 768w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/67990069280ce75a06aa53520ac3e02-1091x1536.jpg 1091w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/67990069280ce75a06aa53520ac3e02-1454x2048.jpg 1454w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/67990069280ce75a06aa53520ac3e02-scaled.jpg 1818w\" sizes=\"auto, (max-width: 727px) 100vw, 727px\" \/><\/figure>\n\n\n\n<p><strong>Spin-off<\/strong>: the inclusion-exclusion formula can be used to derive many other useful formula. For example:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"593\" height=\"143\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-6.png\" alt=\"\" class=\"wp-image-226\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-6.png 593w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-6-300x72.png 300w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/figure>\n\n\n\n<p><strong>Surjections numbers<\/strong> can also be used to find the <strong>Stirling numbers<\/strong> (divide by m! to remove the sequence!)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"760\" height=\"368\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-7.png\" alt=\"\" class=\"wp-image-227\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-7.png 760w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-7-300x145.png 300w\" sizes=\"auto, (max-width: 760px) 100vw, 760px\" \/><\/figure>\n\n\n\n<p>Another example is the <strong>derangement<\/strong> numbers:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"769\" height=\"152\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/image-8.png\" alt=\"\" class=\"wp-image-228\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-8.png 769w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/image-8-300x59.png 300w\" sizes=\"auto, (max-width: 769px) 100vw, 769px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-bijection-between-labelled-trees-prufer-code\">Bijection between labelled trees &amp; prufer code<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"820\" height=\"1024\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/c7f51123aa99f32062113d992fc3820-820x1024.jpg\" alt=\"\" class=\"wp-image-237\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/c7f51123aa99f32062113d992fc3820-820x1024.jpg 820w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/c7f51123aa99f32062113d992fc3820-240x300.jpg 240w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/c7f51123aa99f32062113d992fc3820-768x959.jpg 768w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/c7f51123aa99f32062113d992fc3820-1230x1536.jpg 1230w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/c7f51123aa99f32062113d992fc3820-1640x2048.jpg 1640w\" sizes=\"auto, (max-width: 820px) 100vw, 820px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-recurrence\">Recurrence<\/h2>\n\n\n\n<p>Many real world problems can be modelled in the form of recurrence (You must recall the Fibonacci sequence and many other classical examples from CS101). In this section, the most important takeaways are the <strong>advancement operator<\/strong> and <strong>solving recurrences<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"999\" height=\"1024\" src=\"http:\/\/38.246.252.17:8080\/wp-content\/uploads\/2025\/03\/a2d914d5e686914fe0d8fcbdba57378-999x1024.jpg\" alt=\"\" class=\"wp-image-250\" srcset=\"https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/a2d914d5e686914fe0d8fcbdba57378-999x1024.jpg 999w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/a2d914d5e686914fe0d8fcbdba57378-293x300.jpg 293w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/a2d914d5e686914fe0d8fcbdba57378-768x787.jpg 768w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/a2d914d5e686914fe0d8fcbdba57378-1499x1536.jpg 1499w, https:\/\/www.toothlessos.xyz\/wp-content\/uploads\/2025\/03\/a2d914d5e686914fe0d8fcbdba57378-1998x2048.jpg 1998w\" sizes=\"auto, (max-width: 999px) 100vw, 999px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-graphs\">Graphs<\/h2>\n\n\n\n<p>Graph theory is perhaps the most fascinating part of discrete math: coloring problems, trees, eulerian and Hamiltonian graphs, and many more &#8230; Graph theory have important usages in the design of <strong>algorithms<\/strong>. It is also an comprehensive exercise of the proof methods, i.e., <strong>proof by contradiction<\/strong> and <strong>proof by induction<\/strong> (As you have seen in the previous example).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-epilogue\">Epilogue<\/h2>\n\n\n\n<p>Just as I mentioned in the beginning, it is impossible to cover all topics of discrete math in this piece of log. But I do hope that it gives you some idea about this intriguing subject. For me, writing this log do make the tedious preparations for the final more enjoyable!<\/p>\n\n\n\n<p>One last remark: discrete math is like a magical tool box. I will definitely come back to it when taking algorithm courses! (Maybe also for GNNs?)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I find it a good time to recap this session&#8217;s dis [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":120,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[30,9],"class_list":["post-191","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-math","tag-discrete-math","tag-review"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.toothlessos.xyz\/index.php\/wp-json\/wp\/v2\/posts\/191","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.toothlessos.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.toothlessos.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.toothlessos.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.toothlessos.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=191"}],"version-history":[{"count":43,"href":"https:\/\/www.toothlessos.xyz\/index.php\/wp-json\/wp\/v2\/posts\/191\/revisions"}],"predecessor-version":[{"id":253,"href":"https:\/\/www.toothlessos.xyz\/index.php\/wp-json\/wp\/v2\/posts\/191\/revisions\/253"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.toothlessos.xyz\/index.php\/wp-json\/wp\/v2\/media\/120"}],"wp:attachment":[{"href":"https:\/\/www.toothlessos.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=191"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.toothlessos.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=191"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.toothlessos.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}