IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Kombinatorisk optimering 
Kursusnavn (engelsk):Combinatorial Optimisation 
Semester:Forår 2004 
Udbydes under:cand.it., internet- og softwareteknologi (int) 
Omfang i ECTS:7,50 
Kursussprog:Engelsk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:
Forventet antal deltagere:10 
Maks. antal deltagere:20 
Formelle forudsætninger:The students should before the course

  • be familiar with basic data structures and algorithms, like stacks, queues, trees, sorting, searching, graph algorithms,

  • have experience analyzing the time and space required by an algorithm using big-O notation.

  • have good knowledge of the Java programming language

  • be able to understand complex programming problems


This can be obtained through on of the courses in introduction to programming (GP or IPBR), followed by a programming project, and the course introduction to algorithms and data structures (IADS) on ITU. 
Læringsmål:To give the students practical and theoretical experience in the solution of
computationally hard problems.

After the course, the student can

  • express a given combinatorial problem in a number of
    formalisms
  • design, analyze, and compare a number of algorithms
    for a given problem
  • efficiently implement a given algorithm in a high level
    programming language, and experimentally verify its
    behaviour
  • classify the computational complexity of a given
    combinatorial problem and describe the algorithmic
    implications.

--

Praktisk og teoretisk erfaring i løsning af store og svære
beregninsproblemer. 
Fagligt indhold:

This course is concerned with the solution of
computationally hard problems.

Some well-known
problems, like Shortest Path or Minimum Spanning Tree,
enjoy the existence of efficient and exact algorithms, which
are the subject of classical algorithms courses. However,
many other problems (notably many of those encountered in
practice) like scheduling, network planning,
or register allocation, do not admit such an algorithm (at
least we don\'t know one). Instead, one must turn to a
growing class of optimization techniques:

  • genetic
    algorithms,
  • simulated annealing,

  • branch-and-bound,
  • local
    search,
  • approximation algorithms,

  • pseudopolynomial
    algorithms,
  • parameterised complexity,

  • randomised
    algorithms,
and relaxations to linear programs.
<br/>
This course presents most of these techniques, and
introduces their theoretical underpinnings, which are
considerably less well developed than classical algorithms
theory.<br/> But the main focus of the course is practical:
students implement the techniques in weekly assignments
and perform experiments on data sets of realistic sizes --
the absence of a satisfying theory in this area necessitates an
experimental approach for providing quantitative
comparisons between the many paradigms.


About the title: \"Combinatorial optimisation\" is the
traditional term for this area, although it goes my many
other names as well. \"Optimisation\" of course refers to
finding the best or cheapest solution to the given problem,
unlike for example sorting, searching, or addition, where
there is only one solution (which is even easy to find!).
\"Combinatorial\" refers to the universe of problems studied,
and includes graphs, strings, etc, as opposed to \"numerical
optimisation\" (also just called \"optimisation\") which
optimises continuous functions and is studied at Numerical
Analysis departments.


--


Kurset er en introduktion til \"optimeringslære\", dvs. løsning
af svære beregningsproblemer. For nogle få sådanne
problemer kendes kendes effektive og eksakte algoritmer, fx
Korteste Veje eller Letteste Udspændende Træ, hvilket er
genstand for klassiske algorimekurser. Men desværre tillader
de fleste praktiske problemer, som fx skemalægning,
netværksdesign, registertildeling, ingen (kendt) effektiv og
eksakt algoritme. I stedet må man ty til en efterhånden stor
klasse af optimeringteknikker: genetiske algoritmer,
simuleret udglødning (simulated annealing), branch-and-
bound, lokalsøgning, approximationsalgoritmer,
pseudopolynomielle algoritmer, parameteriseret
kompleksitet, randomiserede algoritmer, og slækning til
lineær programmering.

Kurset præsenterer de fleste af disse teknikker, og
introducerer deres teoretiske fundament, som dog er
betydeligt mindre veludbygget en den klassiske
algoritmeteoris. Men kurset fokus er først og fremmest
praktisk: i ugentlige programmeringsopgaver implementer
studenterne teknikkerne i løbet af kurset og udfører
eksperimenter på datamængder af realistisk størrelse --
fraværet af en tilfredsstillende teoridannelse på dette
område nødvendiggør nemlig en eksperimentel tilgang til
kvalitative sammenligninger af de forskellige paradigmer.



Ordforklaring: \"Optimering\" hentyder selvfølgeligt til at finde
den bedste eller billigste løsning til et givet problem, i
modsætning til fx søgning, sortering eller addition, som er
exakte problemer med kun en løsning (desuden er den nem
at finde). Betegnelsen \"kombinatorisk optimering\" skal
forstås i modsætning til \"numerisk optimering\" (også bare
kaldt \"optimering\"), en klassisk matematisk disciplin, som
involverer kontinuerte funktioner, og som i dag hører
hjemme på institutter for Numerisk Analyse.

 
Læringsaktiviteter:

Lectures and mandatory programming exercises of moderate
size.

--

Forelæsninger og obligatoriske programmeringsopgaver (af
moderat størrelse). 

Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), Bestået/ikke bestået, Intern censur

 

Litteratur udover forskningsartikler:Algorithmics for Hard Problems : Introduction to
Combinatorial Optimization, Randomization, Approximation,
and Heuristics
Author: Juraj Hromkovic
Published: January 2003
Edition: 2nd Edition Illustrated
ISBN: 3540441344