###### tags: `離散數學` :::info [回共筆首頁](https://hackmd.io/zrsmsRtEQ-OrnGslDxT0NQ) [回科目首頁](https://hackmd.io/OwMjUy0fRq2kEuCRiMwtkQ) ::: - [上課簡報](https://moodle2.ntust.edu.tw/pluginfile.php/229341/mod_resource/content/1/Chapter6_m.pdf) [TOC] # 6. Counting ## Product Rule ### Definition 如果要依序做兩個任務 $t_1,t_2$,而 $t_1$ 有 $n_1$ 種方法, $t_2$ 有 $n_2$ 種方法 那麼我們會有 $n_1\times n_2$ 種處理任務的方法 用在不會互相影響的方法上,像是 AND 的邏輯 ### Example 電話號碼的每一位都是獨立的,但是有不同的限制 像是某些位置只能出現 0~9 或者是 2~9 甚至只有 0 跟 1 那我們就針對每一位可以出現的數字數量去相乘就好  ### Term of Sets 對一些有限集合做 Cartesian product 後的元素個數 會等於每一個集合的元素個數相乘 $|A_1\times A_2\times\cdots\times A_m|=|A_1|\cdot|A_2|\cdot\;\cdots\;\cdot|A_m|$ ## Sum Rule 如果要做一個任務,而要不透過 $n_1$ 種方法,或者是透過 $n_2$ 種方法 那麼我們總共會有 $n_1+n_2$ 種方法來完成這個任務 用在有選擇的時候(不是這個就是那個),像是 OR 的邏輯 ### Term of Sets 假設有兩個集合而他們是 disjoint 的 兩個集合做聯集(Union)後的數量 會等於兩個集合的元素個數相加 $|A\cup B|=|A|+|B|$ 更廣泛的寫法: $|A_1\cup A_2\cup\cdots\cup A_m|=|A_1|+|A_2|+\cdots+|A_m|$ $\text{when}\;A_i\cap A_j=\varnothing\;\text{for all}\;i,j$ ## Subtraction Rule 排容原理 在介紹 Sum Rule 的時候有提到兩個集合必須要是 disjoint 而當兩個集合有重複的東西時,我們就需要把重複計算的扣掉 $|A\cup B|=|A|+|B|-|A\cap B|$ 當兩個事件並不會互斥的時候,就需要用排容原理扣掉重複計算的東西 ### Example 有一個長度為 8 的 bit string,開頭是 1 或者 00 結尾的 bit string 有多少個? 要計算下列幾種的方法數 - 開頭是 1 的 ($128$) - 結尾是 00 的 ($64$) - 開頭是 1,且結尾是 00 的 ($32$) 所以答案是 $128+64-32=160$  ## Division Rule ### Definition  如果我們要排除重複的值,就要使用除法去除 ### Example 常見例子: 1. 圓桌排列,因為繞成一個圓,所以用直線的方式去算的話會算到重複的 2. 當一個 array 裡面有元素是重複的 而我們想要去排序他,就會計算到重複的值 [來源](https://math.stackexchange.com/questions/1536479/how-to-explain-the-division-rule-in-counting-problem-in-a-easy-way) ## Pigeonhole Principle 鴿籠原理 如果有 $k + 1$ 隻鴿子,k 個籠子 把 $k + 1$ 隻鴿子都放進籠子裡面,就會有一個籠子裡有 $2$ 隻鴿子 因為籠子的個數比鴿子少,所以一定會有一個籠子有超過 $1$ 隻鴿子 ### Corollary 我們可以利用鴿籠原理來證 function $f$ 是不是 one-to-one 假設有 $k+1$ 個元素的集合 $A$ 要對應到 $k$ 個元素的集合 $B$ 而根據鴿籠原理,$B$ 至少會有一個元素被 $A$ 對應到不只一次 所以 $f$ 不能是 one-to-one ### Generalized Pigeonhole Principle 如果有 $N$ 個 object 要放到 $k$ 個箱子裡 則至少一個箱子會有 $\lceil\frac Nk\rceil$ 個 object 舉例來說, 有 $100$ 個人,至少會有 $9$ 人會在同一個月出生 因為 $\lceil\frac{100}{12}\rceil=9$ - 100 個人 -> 100 個 object - 12 個月 -> 12 個箱子 舉一反三, 我們也可以逆著推回去 假設有一副撲克牌 ($52$ 張) > 要抽出多少張牌,才可以確保出現三張同樣花色的牌? 我們只要想好誰是鴿子,誰是籠子就好了 - 籠子 -> 四個花色 - 鴿子 -> ? - 一個籠子裡面至少要有多少鴿子 -> 三張同樣花色 根據剛剛的公式 $\lceil\frac N{4}\rceil\geq 3$ 就可以算出來 $N$ 最小要是 $9$ > 要抽出多少張牌,才可以確保至少三張紅心被選到? 一種花色總共有 13 張,那如果我們選了 39 張(其他花色), 假設最壞的情況發生,39 張都沒有出現紅心, 那麼只要再選 3 張,就一定能選到 3 張紅心。 ## Permutations 排列 排列跟順序有關,不同順序會被當成兩個不一樣的情況 $P(n,r)$:總共有 $n$ 個,要排 $r$ 個 公式推導過程: $P(n,r)=n(n-1)(n-2)\cdots(n-r+1)$ (選完 $r$ 個就停) $P(n,r)=\frac{n!}{(n-r)!}$ (先全選,再把多選的除掉) ## Combinations 組合 組合跟順序無關,不同順序會被當成同一種情況 也就是說,組合在意的是**有沒有選到** $C(n,r)=\binom nr$ (可以被表示成二項式係數) $C(n,r)=\frac{n!}{(n-r)!r!}$ 跟剛剛的排列比起來,下面多除了一個 $r!$ 我們要去除重複的,因為順序不重要 ## Binomial Theorem 二項式定理 給一個式子 $(x+y)^n$ 在 $n$ 不同的情況下,我們想要去計算 $x$ 跟 $y$ 前面的係數是多少 公式:  我們可以想成總共有 $n$ 個選擇, 而對於第 $j$ 項,它可以選多少個 $x$ 跟多少個 $y$ 舉例來說,第一項 選了 $n$ 個 $x$,選了 $0$ 個 $y$ ### Corollary 當 $n\geq0$ 時 $\sum_{k=0}^n\binom nk=2^n$ 看起來是很酷的性質,但其實不難理解 我們可以把剛剛的 $x$ 跟 $y$ 都帶 $1$ 進去 就會變成 $(1+1)^n=2^n$ ### Pascal’s Identity 當 $n$ 跟 $k$ 是整數的時候 且 $n\geq k\geq 0$ 則 $\binom{n+1}k=\binom n{k-1}+\binom nk$ 我們可以利用集合內的元素個數來想 一個集合 $S$ 裡面有 $n$ 個元素 而另一個集合 $T=S$ 想要新增一個 $a$ 元素進去 所以 $T$ 會有 $\binom{n+1}k$ 個擁有 $k$ 個元素的 subset 而這些 subset 由兩種情況組成 - 選了 $a$,且有其他 $k-1$ 個元素 - 不選 $a$,只有其他 $k$ 個元素 酷酷的帕斯卡三角形 當前這項可以用簡單的加法從上一層推出來 不用做繁瑣的階乘運算 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up