Konstruktionsprinciper för algoritmer: Dekomposition, giriga algoritmer, dynamisk programmering. Algoritmanalys. Probabilistiska algoritmer. Approximationsalgoritmer. Utvalda tillämpningar inom mängder, grafer, aritmetik och geometri. Implementation av algoritmer.
Beräkningsbarhet och komplexitet: Reduktioner. Komplexitetsklasserna P (polynomisk tid), NP (ickedeterministisk polynomisk tid), PSPACE (polynomiskt minne) och BPP (probabilistisk polynomisk tid med begränsat fel). NP-fullständighet och NP-svårighetsreduktioner. Oavgörbara problem.
Efter godkänd kurs ska studenten kunna
- utveckla och implementera algoritmer och reduktioner, och analysera dem med avseende på korrekthet och effektivitet
- jämföra alternativa algoritmer med hänsyn till effektivitet
- definiera och förklara centrala begrepp som P, NP, NP-fullständighet och oavgörbarhet
- jämföra problem med hänsyn till komplexitet med hjälp av reduktioner
i syfte att
- självständigt kunna konstruera datorprogram som effektivt utnyttjar tid och minne och därmed kan bidra till ekonomisk och miljömässig hållbar utveckling
- i yrkeslivet kunna identifiera problem som är orealistiskt resurskrävande eller inte alls går att lösa med dator.