Egzamin poprawkowy 2005/06#
Zadanie 1#
Zaprojektuj drzewo decyzyjne znajdujące medianę z pięciu różnych elementów w co najwyżej sześciu porównaniach.
Zadanie 2#
Trójkątowym kaktusem nazywamy spójny graf w którym każda dwuspójna składowa jest cyklem długości trzy (trójkątem). Niech \(G=(V, E)\) będzie \(n\)-wierzchołkowym trójkątowym kaktusem. Przyjmujemy, że \(G\) jest reprezentowany za pomocą list sąsiedztwa.
Podaj liczbę krawędzi \(G\) jako funkcję \(n\)?
Pokaż w jaki sposób zastosować przeszukiwanie w głąb do prawidłowego pokolorowania wierzchołków grafu \(3\) kolorami. Zapisz swój algorytm w pseudokodzie.
Zaproponuj efektywny algorytm znajdowania najliczniejszego skojarzenia w \(G\).
Zadanie 3#
Tablica \(p[1..n]\) opisuje zbiór drzew z korzeniami (las), rozpiętych na zbiorze wierzchołków \(\{1, 2, \cdots, n\}\) - \(p[j]\) jest ojcem wierzchołka \(j\) w lesie, jeżeli tylko \(p[j] <> j\); jeżeli \(p[j] = j\), to \(j\) jest korzeniem drzewa.
Na lesie wykonujemy następujące operacje:
\(Parent(j) ::\) podaj wartość \(p[j]\);
\(Union(j, k) ::\) połącz dwa drzewa o korzeniach \(j\), \(k\) w jedno, czyniąc korzeń jednego z nich ojcem drugiego korzenia;
\(Contract(j) ::\) jeśli \(j\) nie jest korzeniem, to niech \(D\) będzie zbiorem wszystkich dzieci \(j\) lub \(p[j]\), z wyłączeniem \(j\); wybierz wierzchołek \(j\) lub \(p[j]\); niech \(x\) będzie wybranym wierzchołkiem, a \(y\) tym drugim; jeśli \(p[j]\) nie jest korzeniem, to uczyń ojcem \(x\) wierzchołek \(p[p[j]]\), w przeciwnym razie niech \(p[x] := x\); uczyń \(x\) ojcem wierzchołka \(y\), jak i wszystkich wierzchołków z \(D\).
Zaprojektuj sposób efektywnego wykonywania ciągu operacji \(Parent\), \(Union\) lub \(Contract\).
Zadanie 4#
Zaprojektuj strukturę danych do przechowywania przedziałów domkniętych, która będzie umożliwiać wykonywanie następujących operacji, każdą w czasie \(O({\log n}^2)\):
\(Insert(x, y)\) - dodaj przedział \([x, y]\)
\(Remove(x, y)\) - usuń przedział \([x, y]\)
\(Count(x, y)\) - oblicz liczbę przedziałów w strukturze zawartych w przedziale \([x, y]\)
O liczbach \(x\), \(y\) wiadomo, że są liczbami całkowitymi z przedziału \([1,n]\) , dla pewnego, ustalonego całkowitego \(n > 1\).