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={aA: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=11z(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(1z)k+1W(z,u)=kukzk(1z)k+1=11zk(zu)k(1z)k=11z11zu1z==11z(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)=n0(1+u)nzn 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)uk1nk=(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 n0(1+u)nzn=11z(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,kznuk1uA(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ć 12+132=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)=11z(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(12z)2[zn]112z=2n1n2n=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]11zln11z=[zn](n0zn)(n1znn)==[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 Hnlnn+γ+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)ln11z \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ˊ(ln11z)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!(ln11z)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!(ln11z)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)=k0ukP<k>(z)==k0ukk!(ln11z)k==exp(uln11z)==(11z)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](11z)uln11zu=11==[zn]11zln11z \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(χ)=Hnlnn. \operatorname{E}(\chi) = H_n \approx \ln n.