Lista 0

by Jerry Sky



Zadanie 1.

Udowodnić, że najdłuższa ścieżka od korzenia do liścia w dowolnym drzewie binarnym o nn wierzchołkach ma co najmniej log2n\lfloor\log_2n\rfloor krawędzi.

Musimy sprawdzić jak sytuacja wygląda dla drzew zbalansowanych, jako że to drzewa zbalansowane mają najkrótsze «drogi najdłuższe». Innymi słowy — chodzi o drzewa o jak najmniejszej wysokości.

Bez straty ogólności niech n=2k+lgdzie l[0;2k)N n = 2^k + l\\ \text{gdzie } l \in [0; 2^k) \cap \mathbb{N}

drzewo binarne

Warto zauważyć, że w przypadku drzewa zbalansowanego dodajemy kolejne węzły na tym samym „poziomie” i nie zaczynamy dodawać węzłów na następnych „poziomach” jeśli jest jeszcze miejsce na aktualnym.

drzewo binarne 2^(k+1) - 1

20+21+22++2k=2k+11 2^0 + 2^1 + 2^2 + \dotsb + 2^k = 2^{k+1} - 1

(korzystamy z zadania 3.2. przy tamtejszym k=2k=2)

Dalej, widzimy, że wysokość naszego drzewa jest taka sama dla liczby węzłów w przedziale [2k;2k+11][2^k; 2^{k+1} - 1] i wynosi ona dokładnie kk co zgadza się z tym czego oczekiwaliśmy:
wynik logarytmu „spłaszczamy”, bierzemy część całkowitą: log2(2k+l)=log2(2k)=k \lfloor \log_2(2^k + l) \rfloor = log_2(2^k) = k

kk — liczba o 1 mniejsza niż liczba węzłów na najdłuższej drodze czyli liczba krawędzi.


Zadanie 2.

Uogólnij zadanie 1. na drzewo, w którym każdy wierzchołek ma co najwyżej k\cancel{k} pp synów.

Dokonujemy zmian w powyższych rozważaniach:


Zadanie 3.

Mamy alfabet złożony z kk symboli. Policz ile jest:

  1. wszystkich różnych słów długości nn nad tym alfabetem

    1kkkn razy=kn 1 \cdot \underbrace{k \cdot k \cdot \dotsb k}_{n \text{ razy}} = k^n

    ponieważ za każdym razem mamy kk możliwości do wyboru litery a potrzebujemy dobrać nn liter.

    1. n=0n=0: 1=k01 = k^0 — mamy jedno słowo puste — zgadza się
    2. n    n+1n\implies n+1:
      mamy kkkn razy=kn\underbrace{k \cdot k \cdot \dotsb k}_{n \text{ razy}} = k^n
      doklejamy nową literę: dla każdej litery (mamy ich kk) mamy osobno nowych knk^n słów; zatem:
      kn+kn++knk razy=kkn=kn+1\underbrace{k^n + k^n + \dotsb + k^n}_{k\text{ razy}} = k \cdot k^n = k^{n+1}
  2. wszystkich różnych słów długości co najwyżej nn

    Dowód tradycyjny:
    Niech i=0nki=Sn \sum_{i=0}^{n}k^i = S_n

    Wówczas:

    Sn=i=0nki//kSnk=i=1n+1kiSnk=Sn1+kn+1//SnSn(k1)=kn+11 S_n = \sum_{i=0}^{n}k^i\\ //\cdot k \\ S_n \cdot k = \sum_{i=1}^{n+1}k^i \\ S_n \cdot k = S_n - 1 + k^{n+1}\\ //-S_n \\ S_n \cdot (k - 1) = k^{n+1} - 1 \\ \blacksquare

    Dowód indukcyjny: i=0nki=kn+11k1 \sum_{i=0}^{n}k^i = \frac{k^{n+1} - 1}{k-1}

    1. n=0n=0: 1=k0=k11k1=11 = k^0 = \frac{k^{1} - 1}{k-1} = 1zgadza się
    2. n    n+1n \implies n+1: i=0nki=kn+11k1//+kn+1i=0n+1ki=kn+11k1+kn+1(k1)k1i=0n+1ki=kn+11+kn+2kn+1k1i=0n+1ki=kn+21k1 \sum_{i=0}^{n}k^i = \frac{k^{n+1} - 1}{k-1}\\ // + k^{n+1} \\ \sum_{i=0}^{n+1}k^i = \frac{k^{n+1} - 1}{k-1} + \frac{k^{n+1} \cdot (k-1)}{k-1} \\ \sum_{i=0}^{n+1}k^i = \frac{k^{n+1} - 1 + k^{n+2} - k^{n+1}}{k-1} \\ \sum_{i=0}^{n+1}k^i = \frac{k^{n+2} - 1}{k-1} zgadza się
  3. wszystkich palindromów długości nn

    rozważamy dwa przypadki:

    1. nn jest parzyste
      dobieramy n2\frac{n}{2} liter z alfabetu kk-elementowego na jedną połówkę słowa: kn2 k^{\frac{n}{2}}
    2. nn jest nieparzyste
      dobieramy n2\left\lfloor \frac{n}{2} \right\rfloor liter z alfabetu kk-elementowego na jedną połówkę słowa: kn2 k^{\left\lfloor \frac{n}{2} \right\rfloor} dodatkowo dobieramy jedną literę środkową słowa spośród kk liter

    dowód taki sam jak dla «3.1.»

  4. wszystkich palindromów długości co najwyżej nn

    tak samo jak dla «3.2.» + «3.3.»