2. Klasówka 2023/24 (11.01.2024)#
Zadanie 1 [7 punktów]#
Blokiem w ciągu binarnym nazywamy każdy maksymalny, spójny podciąg złożony z tych samych cyfr - zer (0) lub jedynek (1). Kompresją binarnego zapisu nieujemnej liczby całkowitej n nazywamy skończony ciąg nieujemnych liczb całkowitych K(n) zdefiniowany następująco:
jeśli n = 0, to K(n) = <0>;
dla n > 0,
, gdzie jest długością bloku zbudowanego z najmniej znaczących
zer,
Przykład
K(0) = <0>, K(1) = <0, 1>, K(2) = <1, 1>, K(3) = <0, 2>, K(13) = <0, 1, 1, 2>.
Zaprojektuj strukturę danych, która umożliwia efektywne wykonywanie następujących operacji na kompresji K(n) dynamicznie zmieniającej się liczby n:
Ini::
; {operacja jest wykonywana tylko raz na samym początku}Dodaj(j)::
gdzie j jest nieujemną liczbą całkowitą;Odejmij(j)::
, gdzie j jest nieujemną liczbą całkowitą taką, że ;Mod(j)::
, gdzie j jest nieujemną liczbą całkowitą;MaxBlok():: podaj długość najdłuższego bloku w K(n).
Zadanie 2 [6 punktów]#
Grafem trójkątów nazywamy graf spójny, w którym każda dwuspójna składowa jest cyklem o długości 3.
[2 punkty] Rozważmy następujący graf trójkątów:
Zaznacz w tym grafie DFS-drzewa odpowiednio o najmniejszej i największej wysokości.
[4 punkty] Zaprojektuj efektywny algorytm, który dla danego grafu trójkątów oblicza wysokość możliwie najwyższego DFS-drzewa.
Zadanie 3 [7 punktów]#
Powiemy, że AVL-drzewo T jest wysoce niezrównoważone, jeśli dla każdego wierzchołka w drzewie T różnego od liścia (bez następników), wysokości jego poddrzew zawsze się różnią.
[2 punkty] Podaj wszystkie wartości
, dla których istnieją wysoce niezrównoważone AVL-drzewa zawierające n wierzchołków.
Liczbę n, dla której istnieje n-wierzchołkowe wysoce
niezrównoważone AVL-drzewo nazywamy liczbą wyjątkową.
Niech n będzie liczbą wyjątkową i niech
[4 punkty] Zaproponuj efektywny algorytm, który wyznaczy permutację
, dla której dostaniemy wysoce niezrównoważone AVL-drzewo.[1 punkt] Dla ilu permutacji
budując 4-wierzchołkowe AVL-drzewo nie wykonamy żadnej rotacji.