Pytania do egzaminu z Algorytmów i Struktur Danych -- Informatyka, studia dzienne, sem 3, (zima 2003/2004)
Podać definicje pojęć: rozmiar danych, działanie dominujące, złożoność czasowa algorytmu, złożoność pamięciowa algorytmu. Wymienić typowe funkcje określające złożoności obliczniowe algorytmów. Po co wyznacza się złożoność obliczeniową algorytmu?
Podać definicje złożoności pesymistycznej i średniej algorytmu. Udowodnić, że W(n) = a_mn^m + ... + a_1n + a_0 = O(n^m), dla n>0.
Jak brzmi definicja O-notacji? Podać trzy dowolne własności rzędu funkcji.
Podać algorytmy oraz określić ich złożoności obliczeniowe dla wyznaczania wartości wielomianu dla przypadków: a) korzystając bezpośrednio ze wzoru, b) korzystając ze schematu Hornera.
Podać dwa algorytmy (z wartownikiem i bez) znajdowania maksymalnego elementu w tablicy. Wyznaczyć i porównać ich złożoności.
Podać algorytmy jednoczesnego znajdowania elementu maksymalnego i minimalnego w zadanym zbiorze dla przypadków: a) kolejne znajdowanie elementu maksymalnego a następnie minimalngo, b) dzielenie zadania na podzadania. Określić złożoności obliczniowe algorytmów.
Podać rozwiązania równań rekurencyjnych: T(n) = b, dla n = 1, oraz T(n) = aT(n/c) + bn, dla n > 1. Podać interpretację rozwiązań.
Omówić zasadę równoważenia rozmiarów podzadań na przykładzie zadania sortowania, rozważając algorytm sortowania przez wybór prosty oraz rekursywny algorytm sortowania przez łączenie. Określić złożoności obliczeniowe algorytmów.
Podać własności kopca oraz omówić sposób jego implementacji. Podać i wyjaśnić działanie procedur: przemieść_w_górę i przemieść_w_dół. Wyznaczyć złożoności procedur.
Podać abstrakcyjny opis kolejki priorytetowej. Podać i wyjaśnić działanie procedur zeruj, wstaw i usuń_min dla kolejki implementowanej za pomocą kopca. Jakie są inne możliwe implementacje kolejki? Porównać je ze sobą pod kątem złożoności obliczeniowej.
Podać algorytm budowania kopca (faza 1. sortowania przez kopcowanie) oraz jego złożoność pesymistyczną.
Podać algorytm sortowania przez kopcowanie oraz określić jego pesymistyczną złożoność obliczeniową.
Sformułować zadanie wyszukiwania. Podać algorytmy wyszukiwania liniowego bez wartownika i z wartownikiem oraz określić ich złożoności średnie i pesymistyczne.
Podać algorytm wyszukiwania binarnego. Wyznaczyć jego złożoność pesymistyczną.
Podać algorytm obliczania wartości współczynnika dwumianowego metodą programowania dynamicznego. Wyznaczyć złożoność obliczeniową algorytmu.
Podać algorytm sortowania przez proste wybieranie oraz określić jego złożoność średnią i pesymistyczną.
Podać algorytm sortowania przez proste wstawianie z wartownikiem oraz określić jego złożoność średnią i pesymistyczną.
Omówić algorytm sortowanie szybkiego - quicksort - oraz określić jego złożoność średnią i pesymistyczną. Co warunkuje szybkie działanie algorytmu?
Omówić sposoby reprezentowania grafów w komputerze. Jakie są ich złożoności pamięciowe?
Omówić algorytm przeszukiwania grafu w głąb. Jaka jest złożoność algorytmu? Podać zastosowanie tego przeszukiwania do rozwiązywania problemu znajdowania składowych spójności grafu.
Omówić algorytm przeszukiwania grafu wszerz. Jaka jest złożoność algorytmu? Podać zastosowanie tego przeszukiwania do rozwiązywania problemu znajdowania najkrótszej drogi w grafie (długość drogi liczona liczbą krawędzi).
Podać i omówić algorytm znajdowania cykli fundamentalnych w grafie. Jaka jest jego złożoność?
Podać i omówić algorytm Kruskala znajdowania minimalnego drzewa rozpinającego. Jaka jest jego złożoność?
Podać i omówić algorytm Prima i Dijkstry znajdowania minimalnego drzewa rozpinającego. Jaka jest jego złożoność?
Omówić ideę algorytmu zachłannego na przykładzie problemu wydawania reszty oraz problemu plecakowego. Na czym polega problem kolorowania grafu?
Sformułować problem komiwojażera. Podać: a) algorytm typu "sprawdź wszystkie możliwości", b) algorytm heurystyczny oparty na postępowaniu zachłannym. Jakie są złożoności algorytmów?
Sformułować i porównać problemy znalezienia marszruty komiwojażera, cyklu Hamiltona i cyklu Eulera.
Podać algorytm Dijkstry znajdowania najkrótszych dróg w grafie z ustalonego wierzchołka. Jaka jest jego złożoność?