Aktuální obsah přednášky
1. Interní třídění
1.1. Algoritmy založené na porovnávání prvků
Dolní odhad složitosti obecně - rozhodovací
stromy
Přímé metody:
třídění vkládáním - Insertionsort (složitost v nejhorším případě
a očekávaná složitost, Binární Insertionsort)
třídění výběrem - Selectionsort (složitost v nejhorším a průměrném
případě, modifikace algoritmu vedoucí k lepší složitosti)
třídění výmenou - Bubblesort (složitost, adaptace na předtříděné
posloupnosti, Shakersort)
Vylepšení přímých metod:
Shellsort (Shellova,
Hibbardova a Prattova varianta - výpočet složitosti v nejhorším případě,
Sedgewickova varianta, rovnoměrné
a nerovnoměrné varianty, problémy s očekávanou složitostí,
experimentální výsledky)
Optimální algoritmy (alespoň v průměrném případě):
třídění haldou - Heapsort (definice binární haldy, haldové operace, způsoby
budování haldy a jejich složitost, klasický Williamsův a Floydův
Heapsort, Bottom-up Heapsort, Heapsort s rekurzí - odvození složitosti,
okrajově: Heapsort na víceregulárních haldách, Weak-Heapsort, Quick-Heapsort)
třídění sléváním - Mergesort (přímý Mergesort, metoda Divide et impera
- výpočet složitosti pomocí rekurentního vztahu, přirozený
Mergesort, mergování posloupností nestejných délek - slučovací strom
a binární mergování, mergování na místě)
třídění rozdělováním - Quicksort (deterministický Hoareův Quicksort
- výpočet složitosti v nejhorším a průměrném případě,
volba dělicího prvku - výpočet mediánu, randomizovaný Quicksort,
dotřiďování zbytkových polí, Quicksort bez zásobníku)
1.2. Algoritmy, které nepoužívají porovnávání, a hybridní algoritmy
Časová a prostorová složitost obecně
přihrádkové třídění - Bucketsort
a Radixsort, Bucketsort na místě
Hybridsort - výpočet složitosti
v nejhorším a průměrném případě
okrajově: metoda Distributive
partitioning, Linear Probing Sort
2. Externí třídění
Míry složistosti externích algoritmů a odhad složitosti
externího třídění obecně
2.1 Třídění na páskách
přímý a přirozený Mergesort
bez využití interní paměti, dvoufázové a jednofázové megrování (vyvážené)
Mergesort s využitím interní paměti: vytvoření
běhů - metoda Replacement selection, vícecestné a vícefázové
mergování (nevyvážené - optimální rozělení běhů na pásky)
přihrádkové třídění na páskách,
Quicksort na dvou páskách
2.2 Třídění na discích
externí Bubblesort, Mergesort, Quicksort
(Exquisit) a Heapsort
3. Paralelní třídění
Modely paraleních výpočtů - paralelní počítač a
distribuovaný výpočetní systém, modely SIMD a MIMD, modely speciální
a víceúčelové, paralení RAM s režimem EREW, CREW a CRCW, sítě s
různými způsoby propojení procesorů
Míry složitosti paraleních algoritmů - počet procesorů,
paralení čas, cena
Dolní odhad složitosti pro paralení třídění
3.1. Třídicí sítě
Batcherovy třídicí sítě na principu Mergesortu a bitonické třídění
- konstrukce, důkaz korektnosti, odvození hloubky a počtu komparátorů
3.2. Víceúčelové sítě
Model SIMD s lineárně propojenými procesory: Odd-even Transposition
Sort a Merge-splitting Sort - výpočet paraleního času a ceny
Mergesort na rouře - výpočet paralelního času a ceny
Model SIMD se stromovou strukturou: třídění extrakcí minima,
Bucketsorting and Merging, Median-splitting Sort - výpočet
paralelního
času a ceny
3.3. Model SIMD se sdílenou pamětí - paralelní RAM
čtení ze sdílené paměti v režimu EREW - Broadcast, paralelní výpočet
k-tého nejmenšího prvku - Parallelselect, paralelní varianta Quicksortu -
Sharesort
výpočet paralelního času a ceny při omezeném počtu
procesorů
3.4. Asynchronní třídění
algoritmus Ennumeration Sort