Pri predmetu bomo spoznali sodobne pristope k snovanju algoritmov. Ti pristopi vključujejo razne tehnike analiziranja, metode snovanja in računske modele. Spoznali bomo:

  • proces inženiringa algoritmov (proces, ki se trudi premoščati razlike med teorijo in prakso),
  • algoritme za večnivojsko pomnilniško hierarhijo (algoritme, ki upoštevajo značilnosti predpomnilnikov ipd.),
  • načine za pohitritev natančnih eksponentnih algoritmov (npr. rezanje prostora iskanja ipd.),
  • parametrične algoritme (algoritme, ki so hitri pri določenih vrstah vhodnih podatkov),
  • aproksimacijske algoritme (algoritme, ki hitro vrnejo približen, toda kakovosten rezultat),
  • verjetnostne algoritme (algoritme, ki hitro vrnejo negotov, toda verjetno pravilen rezultat),
  • kvantne algoritme (algoritme, ki izkoriščajo načela kvantne fizike).

Vse našteto bomo podkrepili s sodobno analizo algoritmov in problemov

  • apply algorithm engineering (which aims to bridge the gap between theory and practice),
  • use multi-level memory hierarchy and design cache-oblivious algorithms,
  • speed up exact exponential algorithms (e.g., by branching techniques),
  • design parameterized algorithms (algorithms that take advantage of specific inputs bound to a parameter),
  • design approximation algorithms (fast algorithms that return approximate results of good quality),
  • design
    randomized algorithms (fast algorithms that return uncertain results of good confidence),
  • design quantum algorithms (algorithms that integrate quantum reality into computation).

    Finally, we describe the concept of the realistic
    (as opposed to the worst-case) complexity of algorithms
    and computational problems.