Algoritmen en Complexiteit

Algorithms and Complexity

6 EC

Semester 1, periode 2

5062ALCO6Y

Eigenaar Bachelor Informatica
Coördinator dr. Leen Torenvliet
Onderdeel van Minor Logic and Computation, jaar 1Minor Informatica, jaar 1Bachelor Informatica, jaar 2Dubbele bachelor Wiskunde en Informatica, jaar 2

Studiewijzer 2021/2022

Globale inhoud

Computers worden steeds sneller en krachtiger. Daar staat tegenover dat we steeds grotere en ingewikkelder problemen met computers willen aanpakken. Deze twee ontwikkelingen houden elkaar minstens in evenwicht, en de al dan niet objectieve ergernis over de traagheid van computers blijft onder ons. Niet alleen door betere, snellere en krachtigere hardware, maar vooral door beter doordachte meer op het probleem toegesneden software kunnen imposante besparingen op rekentijd en geheugengebruik worden bereikt. Vaak kunnen simpele observaties het verschil maken tussen dagen rekentijd en minuten. In dit college zullen we aandacht besteden aan een aantal van deze programmeermethoden die veelvuldig toepassing hebben gekregen. Voorbeelden hiervan zijn: greedy algoritmen, dynamisch programmeren, branch & bound en backtracking met geheugenfuncties. Sommige problemen zijn bewijsbaar zo moeilijk dat er geen snelle algoritmen voor bestaan. In dat geval is het toegestaan genoegen te nemen met oplossingen die een slechts een benadering geven van de juiste of de optimale oplossing, of met programma's die alleen gemiddeld snel zijn. In het tweede gedeelte van het college zullen we aandacht besteden aan deze bewijzen, en aan verschillende soorten van benaderingsalgoritmen.

Studiemateriaal

Syllabus

Practicummateriaal

  • Het practicummateriaal is of komt wekelijks beschikbaar op canvas

Overig

  • Er is een volledige set slides. Aangezien deze nogal veranderen komen die na elk college beschikbaar.

Leerdoelen

  • Student kan de volgende begrippen uitleggen: complexiteitsmaten, complexiteitsklassen, optimalisatiealgoritmen, dynamisch programmeren, greedy algoritmen, reducties, complexe problemen (eind van het college)
  • De student kan de tijdscomplexiteit van een gegeven algoritme bepalen. (+- week 2)
  • De student kan een algoritme ontwerpen met een van tevoren bepaalde bovengrens voor een gegeven probleem. (+- week 4)
  • De student kan een algoritme ontwerpen in een van de drie behandelde optimaliseringsstrategieën. (+- week 4)
  • De student kan een netwerkprobleem analyseren en vertalen van een gegeven probleem in een netwerk probleem. (+- week 5)
  • De student kan Discrete Fourier Transformatie toepassen op praktijkvoorbeelden. (+- week 5)
  • De student kan een probleem in een ander probleem vertalen door middel van tijdbegrensde reductie. (+- week 7)
  • De student kan algoritmische eigenschappen van een probleem analyseren (bijvoorbeeld: heeft exhaustive search over een groot domein nodig, of is door constante ruimte begrensd) op grond waarvan voorspellingen kunnen worden gedaan over de (on)mogelijkheid tot het ontwerpen van efficiënte algoritmen

Onderwijsvormen

  • Hoorcollege
  • Werkcollege
  • Zelfstandig werken aan bijv. project/scriptie

Hoorcollege, huiswerk en programmeeropdrachten. Er zijn 5 series huiswerk en 5 toetsen. De toetsen zijn online, duren een kwartier en komen maandag van 16 tot 18u beschikbaar op canvas. Er is geen aanwezigheidsplicht maar is het eigen verantwoordelijkheid.

Verdeling leeractiviteiten

Activiteit

Aantal uur

Hoorcollege

28

Werkcollege

14

Zelfstudie

126

Academische vaardigheden

De student oefent door samenwerken in kleine groepen, het opstellen van algoritmen en wiskundige bewijzen, en het begrijpelijk formuleren van gedachten en modellen.

Aanwezigheid

Aanwezigheidseisen opleiding (OER-B):

  • Voor practica en werkgroepbijeenkomsten met opdrachten geldt in principe een aanwezigheidsplicht. Wanneer studenten niet voldoen aan deze aanwezigheidsplicht kan dit als gevolg hebben dat het onderdeel niet met een voldoende kan worden afgerond.

Aanvullende eisen voor dit vak:

De aanwezigheid van de student is bij geen der onderdelen vereist. Online presence is soms wel nodig, bijvoorbeeld bij de toetsen.

Toetsing

Onderdeel en weging Details

Eindcijfer

Er zijn vijf groepsopdrachten, vijf toetsen en zes programmeeropgaven. Groepsopdrachten worden gemaakt in groepen van max 4 studenten. De indeling wordt wekelijks door de docent bepaald. Toetsen worden individueel gemaakt tijdens het hoorcollege. Programmeeropgaven worden wekelijks individueel gemaakt en (grotendeels) geautomatiseerd nagekeken.

De groepsopdrachten vormen samen 60% van het eindcijfer. Ze worden beoordeeld in de range 1-10. Het gemiddelde wordt teruggeschaald met factor 0.6. De toetsen krijgen max 2 punten, worden niet teruggeschaald en vormen zo 20% van het eindcijfer. De programmeeropgaven vormen ook 20% van het eindcijfer. Deze worden beoordeeld in de range 1-10 en (dus) teruggeschaald met factor 0.2.

Er is een herkansing in de vorm van een tentamen (2 uur) uitsluitend voor de toetsen en uitsluitend bij een onvoldoende resultaat, aangezien deze op een vast tijdstip worden georganiseerd.

groepsopdr 1 groepsopdr 2 groepsopdr 3 groepsopdr 4 groepsopdr  5  
toets 1 toets 2 toets 3 toets 4 toets 5  
progopg 1 progopg 2 progopg 3 progopg 4 progopg5 progopg6
           
Herkansing toetsen          
           

Inzage toetsing

Op de theorieopgaven wordt feedback via de digitale leeromgeving geleverd (wekelijks door de docent) verder kan per groep of individueel via email een afspraak met de docent worden gemaakt voor meer uitleg.

Opdrachten

Groepsopdrachten

  • theorieopgaven elke week over de behandelde collegestof (huiswerk)

toetsen

  • elke week twee individuele vragen, te beantwoorden tijdens het college

programmeeropgaven

  • elke week over een ander onderwerp. Individueel te maken

Onderstaande opdrachten komen aan bod in deze cursus:

  •   De wekelijkse huisopgaven, de toetsen en de programmeeropgaven hebben telkens betrekking op de stof die de week ervoor in het college behandeld is. Derhalve kan geen preciese opgave van de inhoud vantevoren gegeven worden.

 

Fraude en plagiaat

Over het algemeen geldt dat elke uitwerking die je inlevert ter verkrijging van een beoordeling voor een vak je eigen werk moet zijn, tenzij samenwerken expliciet door de docent is toegestaan. Het inzien of kopiëren van andermans werk (zelfs als je dat hebt gevonden bij de printer, in een openstaande directory of op een onbeheerde computer) of materiaal overnemen uit een boek, tijdschrift, website, code repository of een andere bron - ook al is het gedeeltelijk - en inleveren alsof het je eigen werk is, is plagiaat.

We juichen toe dat je het cursusmateriaal en de opdrachten met medestudenten bespreekt om het beter te begrijpen. Je mag bronnen op het web raadplegen om meer te weten te komen over het onderwerp en om technische problemen op te lossen, maar niet voor regelrechte antwoorden op opgaven. Als in een uitwerking gebruik is gemaakt van externe bronnen zonder dat een bronvermelding is vermeld (bijvoorbeeld in de rapportage of in commentaar in de code), dan kan dat worden beschouwd als plagiaat.

Deze regels zijn er om alle studenten een eerlijke en optimale leeromgeving aan te kunnen bieden. De verleiding kan groot zijn om te plagiëren als de deadline voor een opdracht nadert, maar doe het niet. Elke vorm van plagiaat wordt bestraft. Als een student ernstige fraude heeft gepleegd, kan dat leiden tot het uitschrijven uit de Universiteit. Zie voor meer informatie over het fraude- en plagiaatreglement van de Universiteit van Amsterdam: www.student.uva.nl

Weekplanning

De weekplanning is tentatief. Dit jaar zijn we bijvoorbeeld in week 3 al toegekomen aan netwerken, en fourier transformatie. In week 4 hebben we aandacht besteed aan quantum computing en in week 7 zullen dan mogelijk speciale onderwerpen aan de orde komen. Week 7 zal ook verzorgd worden door dr. Speelman.

Week 1: Complexiteitsafschattingen worst case, average case, amoritzed case.

Week 2: Technieken: Greedy algorithms: geld wisselen, continue knapsack, MST:Prim, Kruskal, Dijkstras algoritme

Week 3: Divide and Conquer: matrixvermenigvuldiging, dynamic programming:discrete knapsack, Floyd-Fulkerson, matrixvermenigvuldiging.

Week 4: Netwerk algoritmen:Ford/Fulkerson, Gelaagde netwerken, toepassingen; Discrete Fourier tranformatie

Week 5: Complexiteitstheorie, machinemodellen, P, EXP, reducties

Week 6: NP-volledigheid. Voorbeelden van NP-volledige problemen

Week 7: Benaderingen.

 

Er zijn *elke week* huiswerkopgaven die in groepjes gemaakt worden. De samenstelling van de groepjes wordt in de digitale leeromgeving gepubliceerd. Wie in week x niet heeft ingeleverd wordt *alleen na schriftelijk (email) verzoek* in week x+1 ingedeeld. De huiswerkopgaven bepalen voor 60% het eindcijfer.

Er is *elke week* in één van de colleges, na de pauze een schriftelijke toets van een kwartier. Bij onvoldoende score kan het materiaal in één keer in een herkansing na afloop van de collegereeks worden ingehaald (zie datanose). De toetsen bepalen voor 20% het eindcijfer.

Er is *elke week* een programmeeropgave. De programmeeropgaven zijn individueel en worden grotendeels geautomatiseerd nagekeken. De programmeeropgaven bepalen voor 20 % het eindcijfer.

Rooster

Het rooster van dit vak is in te zien op DataNose.

Aanvullende informatie

Aanbevolen voorkennis: Enige programmeerervaring, met name in imperatieve talen is een must. Verder is kennis van grafen en grafeneigenschappen een voordeel. Basiskennis van wiskunde (bewijzen) is ook nuttig bij dit college.

Verwerking vakevaluaties

Hieronder vind je de aanpassingen in de opzet van het vak naar aanleiding van de vakevaluaties.

Contactinformatie

Coördinator

  • dr. Leen Torenvliet

Docenten

  • Jakob Kaiser
  • Daan Kruis MSc
  • Kyrian Maat MSc
  • Niels Zwemmer BSc