Algorithms
Osnovni podatki
Opis predmeta
The topics:
-
Computational complexity for divide and conquer algorithms.
-
Randomized algorithms and probabilistic analysis.
-
Amortized analysis of algorithms.
-
Searching in multidimensional spaces: k-d trees, R-trees and locality-sensitive hashing.
-
Sorting with assumptions: counting sort, radix sort, bucket sort.
-
Searching with assumptions: van Emde Boats trees.
-
Hash tables: hash functions, universal hashing, perfect hashing, Bloom filters.
-
Heuristic programming: local methods.
-
Metaheuristics for optimization.
-
Biologically inspired methods: genetic algorithms, differential evolution, swarm intelligence.
-
Computational geometry: line-segment properties, convex hull, closest pair of points.
-
Multithreaded and distributed algorithms.
-
Automata theory and grammars.
Students lacking a required background from the 1st degree courses will gain needed knowledge and skills through additional preparation of seminar papers and programming assignments throughout the course. The topics will be individually selected.
Cilji
The goal of this course is to upgrade the knowledge of the analysis of algorithms and data structures and algorithm design techniques. A level where most of the algorithms can be analysed will be reached. Students will expand their algorithm toolbox and a set of design approaches.
General competences:
-
ability of critical thinking,
-
developing skills in critical, analytical and synthetic thinking,
-
the ability to understand and solve professional challenges in computer and information science,
-
the ability to upgrade acquired knowledge.
Subject-specific competences:
-
use of master theorem and Akra-Bazzi method for analysis of divide-and-conquer algorithms,
-
randomization of algorithms,
-
probabilistic analysis of algorithms,
-
amortized analysis of algorithms,
-
classes of formal languages, writing regular expressions and context-free grammars,
-
the role of assumptions in development of efficient algorithms,
-
efficient search of spatial data and low-dimensional data,
-
use of hash tables, construction of hash functions,
-
preprocessing problems for optimization based on local search,
-
using met heuristics in local search: variable neighbour method, guided local search, tabu search,
-
preprocessing problems for biology inspired methods: particle swarm optimization, differential evolution, ant colony optimization
-
using techniques from computational geometry and efficiently finding convex hull,
-
analysis of multithreaded algorithms, speed-up
-
turning single threaded algorithms in multi-threaded algorithms,
-
knowing distributed algorithm development.
Metode poučevanja in učenja
Lectures and homework; assignments are assigned regularly and shall be delivered on time.
For students with low prior knowledge individual work (seminal papers and programming assignments) will be assigned.