Bivariate generating functions (BGF)

by Jerry Sky

2020-12-07



1. Klasa kombinatoryczna (zmodyfikowana)

Tym razem oprócz funkcji rozmiaru ∣⋅∣|\cdot| mamy drugą funkcję wagi χ\chi. Czyli mamy trójkę
A=(A,∣⋅∣,χ)\mathcal{A} = (A, |\cdot|, \chi)
z BGF A(z,u)=∑n,kan,kznukA(z,u) = \sum_{n,k} a_{n,k} z^n u^k,
gdzie an,k=∣{a∈A:∣a∣=n∧χ(a)=k}∣a_{n,k} = \left\lvert \left\{a \in A: |a| = n \land \chi(a) = k\right\} \right\rvert.


2. Przykład

Mamy elementy:

Wówczas BGF: F(z,u)=zu3+zu2+z2u10F(z,u) = z u^3 + zu^2 + z^2 u^{10}.


3. Przykład

Mamy alfabet {0,1}\{0,1\} z funkcjami wag:

W(z,u)=∑k,n(nk)znuk=∑nzn(∑k(nk)uk)==∑nzn(1+u)n=11−z(1+u) W(z,u) = \sum_{k,n}\binom{n}{k} z^n u^k = \sum_{n} z^n \left( \sum_{k} \binom{n}{k} u^k \right)=\\ = \sum_n z^n (1 + u)^n = \frac{1}{1 - z(1+u)}

Ustalmy sobie pewne kk: W(k)(z)=∑n(nk)zn=zk(1−z)k+1W(z,u)=∑kuk⋅zk(1−z)k+1=11−z∑k(zu)k(1−z)k=11−z⋅11−zu1−z==11−z(1+u) W^{(k)}(z) = \sum_n \binom{n}{k} z^n = \frac{z^k}{(1-z)^{k+1}}\\ W(z,u) = \sum_k u^k \cdot \frac{z^k}{(1-z)^{k+1}} = \frac{1}{1-z} \sum_k \frac{(zu)^k}{(1-z)^k} = \frac{1}{1-z} \cdot \frac{1}{1 - \frac{zu}{1-z}} =\\ = \frac{1}{1-z(1+u)}


4. Liczba elementów wagi ana_n


5. Interpretacja graficzna

Mając F(z,u)=∑n,kfn,kznunF(z,u) = \sum_{n,k} f_{n,k} z^n u^n możemy podzielić na części:

Czyli dzielimy tę klasę na warstwy, przy czym możemy patrzeć na to z dwóch perspektyw — nn i kk (jak dwie złączone ze sobą klasy kombinatoryczne):

Zatem ∑nfn(u)zn=∑kukf<k>(z)=F(z,u). \sum_n f_n(u) z^n = \sum_k u^k f^{<k>}(z) = F(z,u).

5.1. Przykład

Kontynuacja przykładu wcześniejszego

Przez to, że F(u,z)=zu2+zu3+z2u10F(u,z) = z u^2 + z u^3 + z^2 u^{10} mamy:


6. Przykład (ciągi binarne)

Kontynuacja przykładu wcześniejszego

Mamy alfabet {0,1}\{0,1\} ze słowami oczywiście x∈{0,1}∗x \in \{0,1\}^*. Definiujemy funkcje wag:

Czyli np. ∣010∣=3, χ(010)=1|010| = 3,\, \chi(010) = 1.

Mamy W(z,u)=∑n,k(nk)ukznW(z,u) = \sum_{n,k} \binom{n}{k} u^k z^n, jako że ciągów długości nn i wadze Hamminga kk jest (nk)\binom{n}{k} (wybieramy kk jedynek).

Warto zauważyć, że W(z,u)=∑n≥0(1+u)n⋅zn W(z,u) = \sum_{n\ge0} (1+u)^n \cdot z^n bo przecież mamy tam zagnieżdżoną znaną równość ∑k=0n(nk)uk1n−k=(1+u)k \sum_{k=0}^n \binom{n}{k}u^k 1^{n-k} = (1 + u)^k gdzie to kk jest zależne od naszego nn. Zakładamy, że (nk)\binom{n}{k} dla k>nk > n jest równe zero, więc możemy to włożyć właśnie do naszej funkcji.

Dalej ∑n≥0(1+u)n⋅zn=11−z(1+u). \sum_{n\ge0} (1+u)^n \cdot z^n = \frac{1}{1-z(1+u)}.


7. PGF (Probability generating functions)

Mamy pewne prawdopodobieństwa p0,p1,…p_0,p_1,\dots. Funkcja PGF ma postać ∑piui\sum p_i u^i gdzie pi=Pr⁡[X=i]p_i = \operatorname{Pr}[X = i].

Inaczej Pr⁡(n),x[χ(x)=k]=an,kan\operatorname{Pr}_{(n),x} [\chi(x) = k] = \frac{a_{n,k}}{a_n} gdzie nn to jest oczywiście pewna stała. Czyli jakie jest prawdopodobieństwo, że wylosowane xx będzie akurat wagi kk.
Równoważny zapis: Pr⁡(n),x[χ(x)=k]=[uk]([zn](A(z,u)))[zn]A(z,1), \operatorname{Pr}_{(n),x} [\chi(x) = k] = \frac{[u^k]\left( [z^n](A(z,u)) \right)}{[z^n] A(z,1)}, a co za tym idzie ∑kPr⁡[χ(x)=k]uk=[zn]A(z,u)[zn]A(z,1). \sum_k \operatorname{Pr}[\chi(x) = k] u^k = \frac{[z^n] A(z,u)}{[z^n] A(z,1)}.


7.1. Wartość oczekiwana

Wszystkie momenty: E(χ(χ−1)…χ(χ−1)(χ−r+1))==[zn]∂urA(z,u)∣u=1[zn]A(z,1) \mathbb{E}\big(\chi (\chi -1) \dots \chi (\chi - 1) (\chi - r+1)\big) = \\[10pt] = \frac{[z^n] \partial^r_u A(z,u)|_{u=1}}{[z^n] A(z,1)} gdzie χ\chi jest zmienną losową oznaczającą wartość funkcji χ(x)\chi(x) dla xx losowy o rozmiarze ∣x∣=n|x| = n.

Patrzymy na wartość oczekiwaną E⁡(χ)=[zn]∂uA(z,u)∣u=1[zn]A(z,1) \operatorname{E}(\chi) = \frac{[z^n] \partial_u A(z,u) |_{u=1}}{[z^n] A(z,1)}

Mając A(z,u)=∑n,kan,kznukA(z,u) = \sum_{n,k} a_{n,k} z^n u^k liczymy pochodną: ∂uA(z,u)=∑n,kkan,kznuk−1∂uA(z,1)=∑n,kkan,kzn \partial_u A(z,u) = \sum_{n,k} k a_{n,k} z^n u^{k-1}\\ \partial_u A(z,1) = \sum_{n,k} k a_{n,k} z^n czyli [zn]∂uA(z,1)=∑kkan,k [z^n]\partial_u A(z,1) = \sum_k k a_{n,k}

i jeszcze [zn]A(z,1)=∑kan,k. [z^n] A(z,1) = \sum_k a_{n,k}.

7.1.1. Przykład

Kontynuacja przykładu wcześniejszego

Np. dla masy 1kg średnia cena (oczekiwana wartość) będzie wynosić 1⋅2+1⋅32=2.5\frac{1 \cdot 2 + 1 \cdot 3}{2} = 2.5.


7.2. Przykład

Kontynuacja przykładu wcześniejszego

Mamy W(z,u)=11−z(1+u)W(z,u) = \frac{1}{1 - z(1+u)}.

Wówczas E⁡(χ)=[zn]∂uW(z,u)∣u=1[zn]W(z,1)=[zn]z(1−2z)2[zn]11−2z=2n−1⋅n2n=n2 \operatorname{E}(\chi) = \frac{[z^n] \partial_u W(z,u) |_{u=1}}{[z^n] W(z,1)} = \frac{[z^n] \frac{z}{(1-2z)^2}}{[z^n] \frac{1}{1-2z}} = \frac{2^{n-1} \cdot n}{2^n} = \frac{n}{2} co się zgadza, bo liczba jedynek w losowych ciągach długości nn powinna być n2\frac{n}{2}, bo może być albo 11 albo 00 i oba te znaki mają takie samo p-o wystąpienia.


7.3. Wariancja

Ze wzoru ogólnego mamy E⁡(χ2)=[zn]∂2A(z,u)∣u=1[zn]A(z,1)+[zn]∂uA(z,u)∣u=1[zn]A(z,1)Var⁡(χ)=E⁡(χ2)−(E⁡(χ))2σ(χ)=Var⁡(χ)(odchylenie standardowe) \operatorname{E}(\chi^2) = \frac{[z^n] \partial^2 A(z,u) |_{u=1}}{[z^n] A(z,1)} + \frac{[z^n] \partial_u A(z,u) |_{u=1}}{[z^n] A(z,1)} \\[10pt] \operatorname{Var}(\chi) = \operatorname{E}(\chi^2) - \big(\operatorname{E}(\chi)\big)^2 \\[10pt] \sigma(\chi) = \sqrt{\operatorname{Var}(\chi)} \quad (\text{odchylenie standardowe})


7.4. Przykłady

Zadania 3. oraz 4. z listy 4. z laboratorium


7.5. Przykład

Motywacja: czasami chcielibyśmy wiedzieć ile mamy cykli w danym algorytmie w celu jego analizy.

Mamy losową permutację o długości nn.

Ile jest w niej cykli?

7.5.1. Liczby Stirlinga partycyjne (II rodzaju)

— określa nam liczbę sposobów na jakie możemy podzielić nn-elementowy zbiór na kk niepustych podzbiorów. {nk} {n \brace k}

7.5.2. Liczby Stirlinga permutacyjne (I rodzaju)

— określa nam liczbę permutacji nn-elementowych o kk cyklach. [nk] {n \brack k}

7.5.3. Jeszcze jedna maszynka

[zn]11−z⋅ln⁡11−z=[zn](∑n≥0zn)(∑n≥1znn)==[zn](∑k=1nznk)=1+12+13+⋯+1n=Hn [z^n] \frac{1}{1-z} \cdot \ln\frac{1}{1-z} = [z^n] \left( \sum_{n\ge0} z^n \right)\left( \sum_{n\ge1} \frac{z^n}{n} \right) = \\[10pt] = [z^n] \left( \sum_{k=1}^n \frac{z^n}{k} \right) = 1 + \frac{1}{2} + \frac{1}{3} + \dotsb + \frac{1}{n} = H_n A wiadomo, że Hn≈ln⁡n+γ+O(1n) H_n \approx \ln n + \gamma + O\left(\frac{1}{n}\right) gdzie γ≈0.52\gamma \approx 0.52.

7.5.4. Idea

CYC⁡(Z)↔ln⁡11−z \operatorname{CYC}(\mathcal{Z}) \leftrightarrow \ln\frac{1}{1-z}

Permutacje o kk cyklach: A=SEQ⁡=k(CYC⁡(Z))A(z)=1k!⏟bo nie obchodzi nas kolejnosˊcˊ(ln⁡11−z)k \mathcal{A} = \operatorname{SEQ}_{=k}(\operatorname{CYC}(\mathcal{Z})) \\[10pt] A(z) = \underbrace{\frac{1}{k!}}_{\text{bo nie obchodzi nas kolejność}} \left( \ln \frac{1}{1-z} \right)^k

Czyli [nk]=n![zn]1k!(ln⁡11−z)k {n \brack k} = n! [z^n] \frac{1}{k!} \left( \ln\frac{1}{1-z} \right)^k

Nasze rozwiązanie będzie wywodzić się z Pr⁡[#cykli jest k]=[nk]n!. \operatorname{Pr}[\#\text{cykli jest }k] = \frac{{n \brack k}}{n!}.

Mamy P<k>(z)=1k!(ln⁡11−z)k P^{<k>}(z) = \frac{1}{k!} \left( \ln\frac{1}{1-z} \right)^k co określa nam permutacja o dokładnie kk cyklach.
Dalej, chcemy wziąć wszystkie permutacje i tylko oznaczyć te, które mają kk cykli. P(z,u)=∑k≥0uk⋅P<k>(z)==∑k≥0ukk!(ln⁡11−z)k==exp⁡(uln⁡11−z)==(11−z)u==∑n,k[nk]⋅znuk \begin{aligned} P(z,u) &= \sum_{k\ge0} u^k \cdot P^{<k>}(z) =\\ &= \sum_{k\ge0} \frac{u^k}{k!} \left( \ln\frac{1}{1-z} \right)^k =\\ &= \exp(u \ln\frac{1}{1-z}) =\\ &= \left( \frac{1}{1-z} \right)^u =\\ &= \sum_{n,k} {n \brack k} \cdot z^n u^k \end{aligned} Oczywiście χ\chi określa liczbę cykli.

Liczymy: E⁡(χ)=[zn]∂uP(z,u)∣u=1[zn]P(z,1)==[zn](11−z)u⋅ln⁡11−z∣u=11==[zn]11−zln⁡11−z \begin{aligned} \operatorname{E}(\chi) &= \frac{[z^n] \partial_u P(z,u) |_{u=1}}{[z^n] P(z,1)} =\\[10pt] &= \frac{[z^n]\left( \frac{1}{1-z} \right)^u \cdot \ln \frac{1}{1-z}\big|_{u=1}}{1} =\\[10pt] &= [z^n] \frac{1}{1-z} \ln\frac{1}{1-z} \end{aligned} korzystamy z wcześniej obliczonego wyrażenia i mamy E⁡(χ)=Hn≈ln⁡n. \operatorname{E}(\chi) = H_n \approx \ln n.