Przykładowe zestawy zadań z poprzednich egzaminów
Transkrypt
Przykładowe zestawy zadań z poprzednich egzaminów
Przykładowe zestawy zadań z poprzednich egzaminów 1 (10p) Na ile co najwyżej obszarów dzieli płaszczyznę n trójkątów? Oznaczając szukaną liczbę przez T(n) proszę sformułować równanie rekurencyjne z odpowiednimi warunkami początkowymi i rozwiązać je. 2. (15p) Stosując metodę programowania dynamicznego wyznaczyć optymalne drzewo szukania dla 4 kluczy A, B, C, D, jeżeli prawdopodobieństwa odwołań do tych kluczy wynoszą odpowiednio p1 ... p4 = (3, 6, 2, 4) / 30, zaś prawdopodobieństwa odwołań do przedziałów “chybień” są równe q0 ... q4 = (1, 3, 2, 7, 2)/30. Obliczyć także wskaźnik jakości (wagę) tego drzewa. 3. (10p) Podać przebieg obliczeń wg algorytmu Little'a minimalnego cyklu Hamiltona dla grafu skierowanego z następującymi kosztami gałęziowymi: 1 1| 2|14 3| 4 4| 0 5| 0 2 3 4 3 11 5 - 0 0 0 - 10 5 3 2 14 11 5 0 8 7 0 - W przypadku niejednoznaczności wyboru gałęzi decyzyjnej pierwszeństwo ma gałąź leksykograficznie wcześniejsza. 4. (15p) Dana jest tablica kwadratowa Xn×n liczb całkowitych. Każdy wiersz tablicy jest uporządkowany rosnąco. Zaproponować możliwie efektywny algorytm konwersji tablicy X na wektor uporządkowany rosnąco V[n*n]. Przeprowadzić analizę złożoności asymptotycznej zaproponowanego algorytmu. Prototyp funkcji realizującej algorytm może wyglądać następująco: void scalWierszami(const Matrix<int>& X, int n, int V[]); // Przenosi X do V w uporządkowaniu rosnącym. // Można pisać X[i][j] albo X(i,j). 1 (10p) Rozwiązać równania rekurencyjne: T(n) = 2 T(n-1) + 2S(n-1); T(0) = 0 S(n) = T(n-1) + 3S(n-1); S(0) = 1 2. (20p) Do wyznaczenia optymalnego drzewa szukania dla n kluczy o zadanych prawdopodobieństwach dostępu p1, ..., pn i równych prawdopodobieństwach chybień q0 = q1 = ... = qn = q zastosowano strategię zachłanną polegającą na dołączaniu do drzewa szukania kolejno kluczy wg malejących prawdopodobieństw dostępu. (a, 8p) Wykazać, że strategia taka jest błędna. (b, 12p) Oznaczmy przez DT(n) względny wskaźnik jakości drzewa szukania T dla n węzłów zdefiniowany jako stosunek wagi probabilistycznej drzewa T do wagi drzewa optymalnego. Pokazać, że dla drzewa G uzyskanego wg podanej strategii zachłannej wskaźnik DG(n) może być rzędu O(n / lg n ). 3. (10p) Podać przebieg obliczeń wg algorytmu Little'a maksymalnego cyklu Hamiltona dla grafu skierowanego z następującymi kosztami gałęziowymi: 1 1| 2|13 3| 4 4| 6 5| 0 2 3 4 7 12 4 - 0 0 0 - 3 5 10 2 14 11 5 0 8 9 0 - W przypadku niejednoznaczności wyboru gałęzi decyzyjnej pierwszeństwo ma gałąź leksykograficznie wcześniejsza. 4. (10p) Podać przebieg działania algorytmu wyznaczającego optymalną sekwencję mnożeń dla 5 macierzy A×B×C×D×E o rozmiarach zadanych wektorem [2,5,4,3,5,2]. 1. (10p) Zbadać, czy równanie rekurencyjne: g (n) = g (n − 1) − g (n − 2) + n może mieć rozwiązanie liniowe, a jeżeli tak, to dla jakich warunków początkowych. 2. (10) Wiersze tablicy liczb X[m][n] są uporządkowane rosnąco. Ile porównań T(m, n) potrzeba w najmniej korzystnym przypadku, aby z X uzyskać jedną listę Y[m*n] uporządkowaną rosnąco: a. jeżeli wiersze dołączane są kolejno wg numerów 0..(m-1) b. łączenie przeprowadza się zgodnie z optymalnym porządkiem łączeń; przyjąć, że m jest potęgą 2. 3. (10p) Dany jest zbiór n punktów na płaszczyźnie oraz pewien punkt referencyjny q. Podać możliwie efektywny algorytm wyznaczający k najbliższych sąsiadów punktu q w zbiorze P. Podać oszacowanie złożoności asymptotycznej algorytmu. Prototyp algorytmu jest następujący: void bliskie(Punkt P[], int n, int k, Punkt q, int B[]); //k<=n: w tablicy B zwracane są indeksy k punktów z P najbliższych q 4. (10p) Podać przebieg działania algorytmu wyznaczającego optymalną sekwencję mnożeń dla 5 macierzy A×B×C×D×E o rozmiarach zadanych wektorem [3, 5, 4, 6, 1, 2]. 5. (10p) Podać przebieg obliczeń wg algorytmu Little'a maksymalnego cyklu Hamiltona dla grafu skierowanego z następującymi kosztami gałęziowymi: 1 2 3 4 5 1| - 7 10 4 0 2|13 - 0 0 8 3| 5 0 - 3 9 4| 6 5 10 - 0 5| 0 2 15 9 W przypadku niejednoznaczności wyboru gałęzi decyzyjnej pierwszeństwo ma gałąź leksykograficznie wcześniejsza. 1. (14p) Zbadać zależność zachowania asymptotycznego rozwiązania ogólnego równania rekurencyjnego f (n) = 2 f (n − 1) + 3 f (n − 2) + n od warunków początkowych f(0) = a, f(1) = b. 2. (14) Dany jest zestaw nominałów monet m1 < m2 < ... < mn , m1 = 1 obowiązujących w hipotetycznym systemie monetarnym. Wszystkie nominały odnoszą się do tej samej jednostki monetarnej, np. grosza. Zaproponować algorytm wyznaczania minimalnej liczby monet o nominałach z zestawu potrzebnych do uzyskania zadanej kwoty K. "Zapas" monet każdego nominału jest nieograniczony. Przykład: Dla nominałów 1,3,5,10 kwota K=17 wymaga co najmniej 4 monet: (10,5,1,1) albo (10,3,3,1). Ocenić złożoność asymptotyczną algorytmu. 3. (10p) Podać przykład grafu pełnego K6 z całkowitymi dodatnimi wagami krawędzi, dla którego algorytm Kruskala potrzebuje najwięcej czasu. Uogólnić rozwiązanie na dowolny przypadek grafu pełnego Kn i podać minimalną możliwą wagę drzewa rozpinającego w tym najmniej korzystnym (dla algorytmu Kruskala) przypadku. 4. (12p) Podać przebieg obliczeń wg algorytmu Little'a wszystkich minimalnych cykli Hamiltona dla grafu skierowanego z następującymi kosztami gałęziowymi: 1 2 3 4 5 1: - 5 3 6 9 2: 7 - 7 6 4 3: 10 3 - 7 2 4: 9 3 2 - 10 5: 8 7 3 10 - W przypadku niejednoznaczności wyboru gałęzi decyzyjnej pierwszeństwo ma gałąź leksykograficznie wcześniejsza.