GU-logo
GÖTEBORGS UNIVERSITET
Matematik och Datavetenskap

KURSPLAN

MAI410 Datastrukturer och algoritmer, 5 poäng

(Data Structures and Algorithms)

1. Beslut om inrättande av kursen

Kursplanen är fastställd av styrelsen för matematik och datavetenskap 1999-10-05.

2. Kursens mål

Datastrukturer används för att modellera verkligheten när man konstruerar datorprogram. Kursen skall ge goda kunskaper om olika typer av datastrukturer och hur de används. Genomgående skall såväl abstrakta egenskaper som representation i programspråk behandlas liksom också vanligt förekommande algoritmer i anslutning till dem. En algoritm är en lösningsmetod för ett problem, t ex sortering. Den beskriver, steg för steg, hur man skall gå tillväga för att lösa problemet. Algoritmkonstruktion och problemlösning är till stor del synonyma begrepp och övning i problemlösning är en viktig ingrediens i kursen. Kursen avser att ge kunskaper om algoritmer och vilka egenskaper dessa har samt goda färdigheter i att konstruera, utveckla, beskriva och analysera algoritmer. Kursen skall också ge kunskaper om kända algoritmer för olika typer av problem. Slutligen skall man kunna analysera algoritmers tids- och minnesbehov vid olika val av datastrukturer och implementationer och kunna känna igen problem som har icke polynomisk komplexitet. Studiet av datastrukturer och algoritmer är centrala områden inom datalogin.

3. Kursens innehåll

Kursen börjar med att vi lär oss analysera algoritmers komplexitet i tid och rum -- vi får då en metod att jämföra olika algoritmer. (Asymptotisk tidskomplexitet, Ordnotation, analys av rekursiva program). Eftersom alla algoritmer implementeras med hjälp av någon datatyp så kommer vi i att ta upp olika datatyper, såväl deras abstrakta egenskaper som hur man kan representera (realisera) dem i programspråk. Träd, grafer, prioritetsköer, mängder samt algoritmer som använder dessa datastrukturer kommer vi att gå igenom noggrant. (T ex djupet först sökning i träd och grafer. Dijkstras, Floyds och Kruskals algoritmer m fl) Olika algoritmer för sortering/sökning (Quicksort, mergesort, heapsort, bisort). Det finns ett antal bra metoder för att konstruera algoritmer; några av dessa skall vi lära oss, bland andra ''divide and conquer'', dynamisk programmering, ''glupsk'' metod och ''backtracking''. Trots att datorn kan användas för att lösa många olika problem så finns det problem som inte alls kan lösas med en dator och det finns problem som bara går att lösa med väldigt få indata eftersom beräkningstiden växer exponentiellt med antalet indata. Dessa typer av problem orienterar vi om. (Beräkningsbarhet, ''intractability'', NP-kompletta problem m.m.)

4. Undervisningens utformning och omfattning

Undervisningen utgörs av föreläsningar, lektioner och datorlaborationer. Den lärarledda undervisningen omfattar ca 50 timmar och den totala arbetsinsatsen ca 200 timmar.

5. Examination

Inlämningsuppgifter samt skriftlig tentamen omfattande både teori och problemfrågor. Studerande som ej godkänts vid ordinarie prov erbjuds ytterligare provtillfällen. På godkänt prov ges betygsgraderna Godkänd eller Väl godkänd.

6. Förkunskaper

Programmering för naturvetare

7. Övriga anvisningar

Kursen ges i samarbete med Chalmers.

8. Kurslitteratur och andra läromedel

Se Matematiska institutionens litteraturlista