Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Hjelp, vi har algdat! En liten kickstart på TDT4120 Algoritmer og datastrukturer Åsmund Eldhuset.

Liknende presentasjoner


Presentasjon om: "Hjelp, vi har algdat! En liten kickstart på TDT4120 Algoritmer og datastrukturer Åsmund Eldhuset."— Utskrift av presentasjonen:

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, 3 rd 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 –2 nd 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

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)

15

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 n th 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


Laste ned ppt "Hjelp, vi har algdat! En liten kickstart på TDT4120 Algoritmer og datastrukturer Åsmund Eldhuset."

Liknende presentasjoner


Annonser fra Google