Laste ned presentasjonen
PublisertKristin Ellefsen Endret for 9 år siden
1
Hjelp, vi har algdat! En liten kickstart på TDT4120 Algoritmer og datastrukturer Åsmund Eldhuset
2
Lecturer Magnus Lie Hetland Associate Professor
Currently on sick leave
3
Substitute lecturer Åsmund Eldhuset
Computer scientist (NTNU, ) Senior consultant at BEKK
4
General information The lectures will be given in Norwegian only (but are not mandatory) Textbook: Introduction to Algorithms, 3rd edition (MIT Press), by Cormen, Leiserson, Rivest, and Stein Written in English Covers almost all of the curriculum (see "Pensum" on the web page); the presentation slides from the main lectures sometimes contains additional info, which is also in the curriculum 2nd edition will mostly work too There will be a dedicated study assistant to help the English-speaking students with the exercises and other matters Please send me an at to let me know that you want to use this study assistant The lectures only serve as a help to better understand the material; there is no information in the lectures that is not also in the textbook or on the web site
5
General information Course web page: Exam: Saturday, December 7, 09:00 – 13:00 Feel free to contact me, after the lecture or by mail, if you have any questions. Contact Lars Greger Hagen with any questions related to the exercises:
6
Exercises There are mandatory exercises; you must pass these in order to be allowed to take the exam There is one exercise pair each week, 13 pairs in total Theoretical exercise: multiple choice questions; gives max 50 points Practical exercise: programming; gives max 50 points You need at least 300 points from the first six exercises and at least 300 points from the last six (no, this doesn't add up – I'll ask the other staff about it) Warning: passing the exercises is significantly much easier than passing the exam! Further information will be given on the so-called exercise lectures, held each Tuesday 14:15 – 17:00 in F1 Tomorrow: Introduction to programming Python. Be there or be □!
7
Caveat emptor ("let the buyer beware")
This is a challenging course, especially if you are not comfortable with programming The curriculum itself is extensive; it is fully possible to learn it, but it requires a lot of work and cannot be done the week before the exam The exam itself tends to ask questions in creative ways that require a deep understanding of the material Best approach: Work continuously with the course Make sure that you actually understand why the algorithms work Solve a lot of previous exams and learn how to adapt and combine existing algorithms into new ones, and to recognize exising problems formulated in new ways
8
Formålet med første forelesning
Gi oversikt over faget Forklare kjernebegreper Forhåpentligvis gjøre det litt mindre skremmende Det er ikke meningen at denne forelesningen skal få dere til å forstå alt! Det vil gå fort i svingene Emnene vil dekkes veldig overfladisk Er dette en god idé? Det finner vi ut i dag!
9
Algoritmer Hva kjennetegner en algoritme?
Det er en fremgangsmåte... ...for å løse... ...et problem Beskrivelsen av fremgangsmåten må: Være utvetydig Bestå av enkle steg Kreve et endelig antall operasjoner Gi korrekt resultat
10
Problemer og instanser
Problem == Problemstilling En spesifikk utgave av en problemstilling == instans (av problem) En algoritme kan implementeres i et programmeringsspråk Man skriver et program som gjennomfører stegene i algoritmen Som input til programmet gir man en probleminstans i form av en tekstfil Programmet produserer løsningen i form av tekst-output
11
Pseudokode Java: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } } Pseudokode: print "Hello world!" Python: print("Hello world!") Brainfuck: [> > >+++>+< <<<-]>++.> >++.<< > >+.>.
12
Python Jeg anbefaler å lære seg Python og bruke det
Python er veldig egnet til denne typen programmering, og koden blir mye kortere enn med Java Java: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }
13
Divide and conquer / splitt og hersk (teknikk)
14
Mergesort / flettesortering (algoritme)
7 5 1 9 8 3 2 7 5 1 9 8 3 2 5 7 1 9 3 8 2 7 5 1 9 8 3 2 1 5 7 9 2 3 8 7 5 1 9 8 3 2 1 2 3 5 7 8 9 7 5 1 9 8 3 2
15
Mergesort / flettesortering (algoritme)
7 5 1 9 8 3 2 7 5 1 9 8 3 2 5 7 5 1 9 8 3 2 7 1 9 3 8 2 3 7 5 1 9 8 3 2 7 5 1 9 8 3 2
16
Kompleksitetsanalyse
17
Rekursjon og rekurrensanalyse
18
Heap (datastruktur)
19
Sortering (problemstilling)
20
Heapsort (algoritme)
21
Quicksort (algoritme)
22
Counting sort / tellesortering (algoritme)
23
Radix sort / radix-sortering (algoritme)
24
Bucket sort / bøttesortering (algoritme)
25
nth order statistics / n'te ordens statistikk (problemstilling) og algoritmer for det
26
Abstract data structure / abstrakt datastruktur (begrep)
27
Linked list / lenket liste (datastruktur)
28
Stack / stakk / stabel (datastruktur)
29
Queue / kø (datastruktur)
30
Priority queue / prioritetskø (datastruktur)
31
Tree / tre (datastruktur)
32
Binary tree / binærtre (datastruktur)
33
Hash table / hashtabell (datastruktur)
34
Binary search tree / binært søketre (datastruktur)
35
Red-black tree / rød-svart-tre (datastruktur)
36
Dynamic programming / dynamisk programmering (teknikk)
37
Dynamisk programmering-problemer
38
Greedy algorithms / grådige algoritmer (teknikk)
39
Huffman tree og Huffman coding / Huffman-tre og Huffman-koding (algoritme+ datastruktur)
40
Grådige problemer
41
B-tree / B-tre (datastruktur)
Et tre hvor hver node har veldig mange barn Hver node fylles ut med barn inntil den når en fast grense (f.eks. 1000) for antall barn; da må den splittes opp i to nye noder Treet blir dermed veldig grunt, og er spesielt egnet for trær som må lagres på harddisk Harddisker er veldig treige, og leser data i store blokker av gangen – derfor er det bra å ha et grunt tre (få noder må leses inn), og det er ok at hver node har en lang barneliste
42
Graph / graf (datastruktur)
43
Representasjon av grafer
44
Depth first search / dybde-først-søk (algoritme)
45
Breadth first search / bredde-først-søk (algoritme)
46
Topological sort / topologisk sortering (problemstilling og algoritme)
47
Minimum spanning tree (problemstilling)
48
Kruskal's algorithm
49
Prim's algorithm
50
(One-to-all) Shortest path (problemstilling)
51
Dijkstra's algorithm
52
Bellman-Ford algorithm
53
DAG-shortest-paths (algoritme)
54
All-to-all shortest path (problemstilling)
55
Floyd-Warshall algorithm
56
Maximum flow (problemstilling)
57
Ford-Fulkerson method
58
Edmonds-Karp algorithm
59
Max-flow-min-cut-teoremet
60
Bipartite matching (problemstilling)
61
Multithreading / parallel algorithms
62
Linear programming (problemstilling)
Lineærprogrammering går ut på å, gitt en lineær funksjon av flere variabler, og lineære ligninger/ulikheter med disse variablene, velge variabelverdier slik at funksjonen får størst (evt. minst) mulig verdi – uten at ligningene/ulikhetene blir brutt Eksempel: Maksimer 5x + 3y gitt at x + y ≤ 8 og 7x – 5y ≥ 3 Ligningssett av denne typen kan modellere veldig mange forskjellige problemstillinger Boken viser bl.a. hvordan shortest path og maximum flow kan løses som lineærprogrammering (selv om dette vil være veldig treigt) Men det lar oss også løse en del problemstillinger som det ikke eksisterer spesialiserte algoritmer for – blant annet multicommodity flow og matchingproblemer hvor forskjellige par har forskjellig verdi Det finnes algoritmer for dette; boken beskriver the simplex algorithm, men den er ikke pensum
63
Formulering av andre problemstillinger som linear programming
TODO: Er dette pensum fortsatt?
64
Circulation (problemstilling)
TODO: Er dette pensum fortsatt?
65
NP-kompletthet (teori)
66
Eksamen
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.