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