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.