kunna beskriva datastrukturer för grafer och deras tillämpningar
kunna redogöra för olika problemlösningsstrategier såsom t ex söndra-och-härska och giriga algoritmer
behärska ett antal tekniker för beräkning av algoritmers tidskomplexitet (effektivitet)
vara orienterad om begreppen undre gränser, komplexitetsklasser och oavgörbara problem
Färdighet och förmåga
utifrån problembeskrivningar kunna identifiera algoritmer och datastrukturer som är lämpliga att använda i en lösning
kunna implementera de datastrukturer som ingår i kursen i ett objektorienterat språk
kunna tillämpa problemlösningsstrategier på nya problem
kunna tillämpa tekniker för beräkning av algoritmers tidskomplexitet och kunna använda sig av notationer för asymptotisk tillväxt av funktioner för att beskriva algoritmers komplexitet
Värderingsförmåga och förhållningssätt
ha utvecklat ett kritiskt förhållningssätt till hur val av lösningsmetod och representation påverkar programs användbarhet och effektivitet
inse att det finns problem för vilka alla kända algoritmer är orealistiskt tidskrävande
Kursinnehåll
Grafer och grafalgoritmer. Datastrukturer för representation av grafer. Strategier för problemlösning såsom söndra-och-härska, giriga algoritmer och brute force. Tekniker för att analysera algoritmers tidskomplexitet. Orientering om komplexitetsklasserna P och NP. Orientering om beräkningsbarhet och Church-Turings tes.