Egzamin poprawkowy 2023/24 (19.02.2024)#
Zadanie 1 [14 punktów]#
W tym zadaniu rozważamy ciągi operacji na zmieniającym się grafie \(G=(V,E)\), w którym \(V = \{1, 2, \ldots, n\}\) dla pewnej, dodatniej liczby całkowitej n.
[6 punktów] Początkowo E = {1—2, 2—3, …, (n-1)—n}. Zaproponuj strukturę danych, która umożliwia efektywne wykonywanie operacji:
Ini(G):: zainicjuj strukturę danych;
Dodaj(i,j):: E := E ∪ {i—j}, 2 ≤ i+1 < j ≤ n;
Usuń(i,j):: E := E {i—j}, 2 ≤ i+1 < j ≤ n;
PunktArtykulacji(i):: sprawdź, czy i jest punktem artykulacji, 1 ≤ i ≤ n.
[5 punktów] Początkowo graf G=(V,E) jest grafem spójnym zadanym przez listy sąsiedztwa. Dany jest z góry ciąg k > n operacji ze zbioru:
Usuń(i,j):: E := E {i—j}, 1 ≤ i < j ≤ n,
LiczbaSpójnych(G):: podaj liczbę spójnych składowych w aktualnym grafie G.
Zaproponuj wydajny algorytm, który obliczy odpowiedź na każde zapytanie o liczbę spójnych składowych.
[3 punkty] Jaka jest najmniejsza możliwa wysokość DFS-drzewa w 16-wierzchołkowym grafie zawierającym cykl Hamiltona? Uwaga: wysokość mierzymy liczbą krawędzi.
Zadanie 2 [8 punktów]#
[3 punkty] Udowodnij, że każdą dodatnią liczbę całkowitą można przedstawić jako sumę różnych liczb Fibonacciego. Przypominamy, że \(F_0 = 0\), \(F_1 = 1\).
[5 punktów] Na początkowo wyzerowanym liczniku binarnym \(L[2,\ldots,+\infty]\) wykonujemy n operacji Inc() w taki sposób, że po wykonaniu k-tej operacji \(k=\sum_{i=2}^{+\infty} F_i \cdot L[i]\) gdzie \(F_i\) jest i-tą liczbą Fibonacciego. Zaproponuj takie wykonanie operacji Inc, aby jej zamortyzowany koszt był stały.
Zadanie 3 [12 punktów]#
Niech \(a[1,\ldots,n]\) będzie tablicą n różnych liczb całkowitych. Dla dodatniego k < n, powiemy że a jest k-sortowalna, jeżeli można ją posortować wykonując co najwyżej k zamian par elementów.
[3 punkty] Udowodnij, że liczba porównań potrzebnych do posortowania ciągu zapisanego w 1-sortowalnej tablicy a[1..n] wynosi co najmniej n-1.
[3 punkty] Zaproponuj optymalny algorytm ze względu na porównania sortujący ciąg zapisany 1-sortowalnej tablicy a[1..n].
[6 punktów] Zaproponuj algorytm ze względu na porównania sortujący ciągi zapisane w k-sortowalnej tablicy a[1..n] czasie \(O(n \log k)\), dla danego nieujemnego k < n.
Zadanie 4 [6 punktów]#
Dane jest słowo x nad alfabetem {d, i, k, s}, w którym litera s występuje co najmniej dwa razy. Zaprojektuj efektywny algorytm, który w słowie x znajduje najdłuższe dwa podsłowa (niekoniecznie różne), w których litera s występuje dokładnie na tych samych pozycjach.