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 ⌊log⁡2n⌋\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+1−1 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+1−1][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ą: ⌊log⁡2(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

    1⋅k⋅k⋅⋯k⏟n 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 k⋅k⋅⋯k⏟n 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+⋯+kn⏟k razy=k⋅kn=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//⋅kSn⋅k=∑i=1n+1kiSn⋅k=Sn−1+kn+1//−SnSn⋅(k−1)=kn+1−1■ 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+1−1k−1 \sum_{i=0}^{n}k^i = \frac{k^{n+1} - 1}{k-1}

    1. n=0n=0: 1=k0=k1−1k−1=11 = k^0 = \frac{k^{1} - 1}{k-1} = 1 — zgadza się
    2. n  ⟹  n+1n \implies n+1: ∑i=0nki=kn+1−1k−1//+kn+1∑i=0n+1ki=kn+1−1k−1+kn+1⋅(k−1)k−1∑i=0n+1ki=kn+1−1+kn+2−kn+1k−1∑i=0n+1ki=kn+2−1k−1 \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: k⌊n2⌋ 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.»