Egzamin 2011/12 (27.01.2012)#
Zadanie 1. [25 punktów]#
Niech T będzie n-węzłowym drzewem binarnym, w którego węzłach zapisano liczby całkowite - klucze. Drzewo jest zadane przez wskaźnik do korzenia, a każdy węzeł ma wskaźniki do lewego i prawego syna oraz ojca (być może któryś z nich jest pusty).
[3 punktów] Zaprojektuj efektywny algorytm, który dla każdego węzła wyznaczy największy klucz z jego poddrzewa.
[22 punkty] Oto szkic rekurencyjnego algorytmu wyznaczania dla każdego węzła v liczby węzłów z jego poddrzewa z kluczami większymi od klucza z v. Rozwiąż zadanie rekurencyjnie dla lewego i prawego poddrzewa, a następnie obejdź całe drzewo i policz ile jest kluczy większych od tego w korzeniu.
(3 punkty): Ile wynosi pesymistyczna złożoność powyższego algorytmu?
(3 punkty): Podaj złożoność tego algorytmu w przypadku, gdy T jest pełnym drzewem binarnym.
(7 punktów): Zaproponuj algorytm, który w czasie \(O(|T| \log | T |)\) policzy dla każdego węzła v liczbę węzłów z kluczami większymi od klucza w v, na ścieżce z v do korzenia.
(9 punktów): Zaproponuj algorytm, który w czasie \(O(|T| \log |T|)\) policzy dla każdego węzła v liczbę węzłów w jego poddrzewie z większymi kluczami.
Zadanie 2. [6 punktów]#
Niech n będzie liczbą całkowitą większą od 2 i taką, że \(n = 2^k\) dla pewnego k > 1.
[3 punkty] Dla każdego n spełniającego powyższy warunek podaj przykład n wierzchołkowego grafu dwuspójnego o minimalnej liczbie krawędzi, dla którego jedno z drzew przeszukiwania w głąb (przy pewnym uporządkowaniu list sąsiedztw) jest zbudowane z korzenia r, jego jedynego syna u i pełnego drzewa binarnego (lewy, prawy syn nie mają tu znaczenia) o korzeniu w u. Poniżej przykład drzewa dla n=4.
[3 punkty] Ile maksymalnie krawędzi może być w dwuspójnym grafie n wierzchołkowym, którego pewne drzewo przeszukiwania wgłąb jest drzewem opisanym w poprzednim punkcie?
Zadanie 3. [9 punktów]#
Dana jest tablica a[1..n] liczb całkowitych, o których wiadomo, że dla każdej z nich tablica zawiera co najmniej \(\lceil \frac{n}{2012} \rceil\) liczb odległych od niej nie więcej niż o n. Zaproponuj liniowy algorytm sortowania tablicy a.
Uzasadnij poprawność swoich odpowiedzi i dokonaj analizy złożoności obliczeniowej zaproponowanych algorytmów. Uwaga: rozwiązanie każdego punktu należy zapisać czytelnie na co najwyżej dwóch stronach formatu A4, każdy punkt na oddzielnych podpisanych kartkach; rozwiązania nieczytelne nie będą sprawdzane.