Algorytmy i struktury danych
Transkrypt
Algorytmy i struktury danych
Algorytmy i struktury danych - teoria Uwaga: zagadnienia ujęte w nawiasy [ ] nie będą stanowiły więcej niż 1/5 listy pytań notacja O(f (n)), Ω(f (n)), Θ(f (n)): definicja i zastosowanie tej notacji na prostych przykładach, np. oszacować złożoność oczywistych algorytmów (typu dwie zagnieżdżone pętle) używając tej notacji kopiec binarny: definicja, przedstawienie jako drzewo i reprezentacja tablicowa, związek wysokości kopca z ilością elementów (z uzasadnieniem) jakie są typowe operacje na kopcu binarnym i ich złożoność z uzasadnieniem (Build-heap, czyli budowanie kopca — bez uzasadnienia); zastosowanie kopców (sortowanie kopcowe i kolejki priorytetowe) oszacowanie górne i dolne złożoności pesymistycznej Heap-sort, z uzasadnieniem kolejki priorytetowe: typowe operacje; implementacja kopcowa, jako lista nieporządkowana i uporządkowana; złożoność operacji w tych implementacjach z uzasadnieniem złożoność pesymistyczna algorytmu Quicksort (sortowanie szybkie): górne i dolne oszacowanie, dolne oszacowanie z uzasadnieniem; złożoność oczekiwana wersji probabilistycznej algorytmu, [ jaki jest zwiazek formuły rekurencyjnej T (n) = ... z algorytmem ] [ zagadnienie wyboru: sformułowanie, złożoność algorytmu Randomized-select ] dolne oszacowanie złożoności pesymistycznej algorytmów sortujących przez porównania; idea uzasadnienia: drzewa decyzyjne o n! liściach sortowanie w czasie liniowym: znane algorytmy i ich złożoność, jakie są ograniczenia stosowalności tych algorytmów [ elementarne struktury danych: typowe operacje na stosach, kolejkach i listach; ich złożonośc przy implementacjach tablicowych i dowiązaniowych (wskaźnikowych) ] tablice z haszowaniem i łańcuchową metodą rozwiązywania konfliktów: zlożoność pesymistyczna i oczekiwana (z wyjaśnieniem założenia probabilistycznego dla złożoności oczekiwanej), uzasadnienie zlożoności oczekiwanej szukania zakończonego porażką haszowanie z adresowaniem otwartym: postać funkcji haszującej w metodzie liniowej, kwadratowej i haszowania dwukrotnego; zlożoność pesymistyczna i oczekiwana z wyjaśnieniem zalożenia probabilistycznego (wystarczy dla szukania zakończonego porażką) drzewa poszukiwań binarnych: definicja, typowe operacje i ich złożoność pesymistyczna (z uzasadnieniem) losowo skonstruowane drzewo poszukiwań binarnych: co to jest, stwierdzenie o średniej 1 wysokości i wniosek o oczekiwanej złożoności wstawiania drzewa czerwono-czarne: definicja, przykłady, oszacowanie wysokości w zależności od ilości węzłów, złożoność operacji na drzewach czerwono-czarnych (z uzasadnieniem) [ jaka własność drzewa czerwono-czarnego może być zakłócona i jest przywracana w operacji wstawiania (usuwania), skąd się bierze to zakłócenie? ] [ drzewa czerwono-czarne z dodatkową informacją w węzłach — w jakich algorytmach są wykorzystywane ] [ sposoby organizacji efektywnych algorytmów: dziel i zwyciężaj, strategia zachłanna, programowanie dynamiczne; przykłady algorytmów tak zorganizowanych ] [ reprezentowanie kodu prefiksowego za pomocą drzewa, formuła opisująca koszt drzewa reprezentującego kod ] [ schemat analizy kosztu zamortyzowanego metodą potencjału: ĉi = ci + Φi − Φi−1 , itd. ] B-drzewo: definicja, przykład, struktura węzła związek wysokości B-drzewa z ilością kluczy (z dowodem) operacje na B-drzewie i ich złożoność (liczona ilością operacji dyskowych i wszystkich operacji); uzasadnienie tych oszacowań rodziny zbiorów rozłącznych: jakie operacje są na nich wykonywane, przykłady zastosowania (algorytm Kruskala, wyznaczanie skladowych spójności w grafie) listowa reprezentacja zbiorów rozłącznych: idea (rysunek), struktura węzła, złożoność ciągu operacji na zbiorach (uwzględniając wariant z wyważaniem i bez) [ uzasadnienie oczacowań złożoności pesymistycznej dla listowej reprezentacji zbiorów rozłącznych: O(m + nlgn) przy łączeniu z wyważaniem oraz przykład, że bez wyważania może być osiągane Ω(n2 ) ] reprezentacja zbiorów rozłącznych przy pomocy drzew: idea (rysunek), struktura węzła, złożoność ciągu operacji na zbiorach (uwzględniając warianty bez rangi i kompresji ścieżek, z rangą i bez kompresji, z rangą i kompresją) [ algorytmu Kruskala: sformułowanie problemu; co jest dane co jest szukane ] Problem dopasowywania wzorca: sformułowanie problemu, złożoność algorytmu oczywistego (naiwnego), algorytmu Rabina-Karpa i algorytmu Knutha-Morrisa-Pratta 2