├── .gitignore ├── ExerciseSheet-1 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_InsertionSort.tex │ │ ├── 020_BinaryHeap.tex │ │ └── 030_FirstCommit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-fortran.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Sheet │ ├── plain │ ├── Footer.tex │ └── Header.tex │ └── ufcd │ ├── Footer.tex │ └── Header.tex ├── ExerciseSheet-10 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_WorstCaseAnalysis.tex │ │ ├── 020_SortTimeMeasure.tex │ │ └── 999_Commit.tex ├── Images │ ├── diagram.png │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-fortran.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Sheet │ ├── plain │ ├── Footer.tex │ └── Header.tex │ └── ufcd │ ├── Footer.tex │ └── Header.tex ├── ExerciseSheet-11 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_WorstCaseAnalysis.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-fortran.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Sheet │ ├── plain │ ├── Footer.tex │ └── Header.tex │ └── ufcd │ ├── Footer.tex │ └── Header.tex ├── ExerciseSheet-12 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_Introduction.tex │ │ ├── 020_WorstCaseAnalysis.tex │ │ ├── 030_SortTimeMeasure.tex │ │ ├── 040_AverageSortTime.tex │ │ ├── 050_Discussion.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-fortran.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Sheet │ ├── plain │ ├── Footer.tex │ └── Header.tex │ └── ufcd │ ├── Footer.tex │ └── Header.tex ├── ExerciseSheet-13 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_Introduction.tex │ │ ├── 020_LCC.tex │ │ ├── 030_Dijkstra.tex │ │ ├── 040_RoutePlanner.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex ├── Styles │ ├── Code │ │ ├── listings-acm.prf │ │ ├── listings-bash.prf │ │ ├── listings-fortran.prf │ │ ├── listings-lua.prf │ │ └── listings-python.prf │ └── Sheet │ │ ├── plain │ │ ├── Footer.tex │ │ └── Header.tex │ │ └── ufcd │ │ ├── Footer.tex │ │ └── Header.tex └── Template │ ├── freiburg.zip │ └── graph.zip ├── ExerciseSheet-14 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_WorstCaseAnalysis.tex │ │ ├── 020_SortTimeMeasure.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex ├── Styles │ ├── Code │ │ ├── listings-acm.prf │ │ ├── listings-bash.prf │ │ ├── listings-fortran.prf │ │ ├── listings-lua.prf │ │ └── listings-python.prf │ └── Sheet │ │ ├── plain │ │ ├── Footer.tex │ │ └── Header.tex │ │ └── ufcd │ │ ├── Footer.tex │ │ └── Header.tex └── Template │ └── edit_distance.py ├── ExerciseSheet-2 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_CompleteInduction.tex │ │ ├── 020_CompleteInduction.tex │ │ ├── 030_HeapSort.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-fortran.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Sheet │ ├── plain │ ├── Footer.tex │ └── Header.tex │ └── ufcd │ ├── Footer.tex │ └── Header.tex ├── ExerciseSheet-3 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_BigO.tex │ │ ├── 020_BigOLog.tex │ │ ├── 030_BigOFunctions.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-fortran.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Sheet │ ├── plain │ ├── Footer.tex │ └── Header.tex │ └── ufcd │ ├── Footer.tex │ └── Header.tex ├── ExerciseSheet-4 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_WordsAnalyzer.tex │ │ ├── 020_WordsAnalyzer.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex ├── Styles │ ├── Code │ │ ├── listings-acm.prf │ │ ├── listings-bash.prf │ │ ├── listings-fortran.prf │ │ ├── listings-lua.prf │ │ └── listings-python.prf │ └── Sheet │ │ ├── plain │ │ ├── Footer.tex │ │ └── Header.tex │ │ └── ufcd │ │ ├── Footer.tex │ │ └── Header.tex └── Template │ ├── data.zip │ └── template_ex4.py ├── ExerciseSheet-5 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_IntroductionHashing.tex │ │ ├── 020_MeanBucketSize.tex │ │ ├── 030_EstimateC.tex │ │ ├── 040_Variation.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-fortran.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Sheet │ ├── plain │ ├── Footer.tex │ └── Header.tex │ └── ufcd │ ├── Footer.tex │ └── Header.tex ├── ExerciseSheet-6 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 00_Introduction.tex │ │ ├── 010_PriorityQueue.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex ├── Styles │ ├── Code │ │ ├── listings-acm.prf │ │ ├── listings-bash.prf │ │ ├── listings-fortran.prf │ │ ├── listings-lua.prf │ │ └── listings-python.prf │ └── Sheet │ │ ├── plain │ │ ├── Footer.tex │ │ └── Header.tex │ │ └── ufcd │ │ ├── Footer.tex │ │ └── Header.tex └── Template │ └── priority_queue_min_heap.py ├── ExerciseSheet-7 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_Introduction.tex │ │ ├── 020_ArrayRemove.tex │ │ ├── 030_RuntimePlots.tex │ │ ├── 050_Research.tex │ │ ├── 060_Bonus.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex ├── Styles │ ├── Code │ │ ├── listings-acm.prf │ │ ├── listings-bash.prf │ │ ├── listings-fortran.prf │ │ ├── listings-lua.prf │ │ └── listings-python.prf │ └── Sheet │ │ ├── plain │ │ ├── Footer.tex │ │ └── Header.tex │ │ └── ufcd │ │ ├── Footer.tex │ │ └── Header.tex └── Template │ └── dynamic_int_array.py ├── ExerciseSheet-8 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_Introduction.tex │ │ ├── 020_WorstCaseAnalysis.tex │ │ ├── 030_SortTimeMeasure.tex │ │ ├── 040_AverageSortTime.tex │ │ ├── 050_Discussion.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-fortran.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Sheet │ ├── plain │ ├── Footer.tex │ └── Header.tex │ └── ufcd │ ├── Footer.tex │ └── Header.tex ├── ExerciseSheet-9 ├── ExerciseSheet.tex ├── Exercises │ └── eng │ │ ├── 010_WorstCaseAnalysis.tex │ │ ├── 020_SortTimeMeasure.tex │ │ ├── 030_AverageSortTime.tex │ │ └── 999_Commit.tex ├── Images │ └── uni_logo.png ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-fortran.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Sheet │ ├── plain │ ├── Footer.tex │ └── Header.tex │ └── ufcd │ ├── Footer.tex │ └── Header.tex ├── Introduction ├── EAU_IEMS_Einfuehrungsveranstaltung_WS1617.odp └── EAU_IEMS_Einfuehrungsveranstaltung_WS1819.ppt ├── LICENSE ├── Lecture-1 ├── Chapter │ └── eng │ │ ├── 00_Introduction.tex │ │ ├── 10_Content.tex │ │ ├── 15_Joke.tex │ │ ├── 20_Links.tex │ │ ├── 30_Organisation.tex │ │ ├── 40_System.tex │ │ ├── 50_Sorting.tex │ │ ├── 60_MinSort.tex │ │ └── 70_HeapSort.tex ├── Code │ ├── DocTest.py │ └── MinSort │ │ ├── MinSort.cpp │ │ ├── MinSort.java │ │ └── MinSort.py ├── Images │ ├── Copyright │ │ └── cc.png │ ├── Heap │ │ ├── MinHeap_Invalid.tikz.tex │ │ ├── MinHeap_Numbered.tikz.tex │ │ └── MinHeap_Valid.tikz.tex │ ├── HeapSort │ │ ├── HeapSort_First.tikz.tex │ │ ├── HeapSort_Second.tikz.tex │ │ ├── HeapSort_Third.tikz.tex │ │ ├── Heapify_Fifth.tikz.tex │ │ ├── Heapify_First.tikz.tex │ │ ├── Heapify_Fourth.tikz.tex │ │ ├── Heapify_Second.tikz.tex │ │ ├── Heapify_Third.tikz.tex │ │ ├── MinHeap_Repair_First.tikz.tex │ │ ├── MinHeap_Repair_Second.tikz.tex │ │ └── MinHeap_Repair_Third.tikz.tex │ ├── Introduction │ │ ├── OpenStreetmap.png │ │ ├── blast.png │ │ ├── edit-distance.png │ │ └── eyjafjallajoekull.png │ ├── Jokes │ │ └── Tree.jpg │ └── MinSort │ │ ├── MinSort_Explanation.tikz.tex │ │ ├── MinSort_Play.tikz.tex │ │ └── Minsort.png ├── Lecture.tex ├── Literature │ ├── General │ │ ├── General.bib │ │ ├── Git.bib │ │ └── Svn.bib │ ├── Literature_eng.tex │ └── eng │ │ └── WikipediaSort.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-10 ├── Chapter │ └── eng │ │ ├── 010_SortedSequences.tex │ │ ├── 020_LinkedList.tex │ │ └── 030_SearchTrees.tex ├── Code │ └── LinkedList │ │ ├── LinkedList.cpp │ │ ├── LinkedListAppend.py │ │ ├── LinkedListContains.py │ │ ├── LinkedListGet.py │ │ ├── LinkedListInsertAfter.py │ │ ├── LinkedListPart1.h │ │ ├── LinkedListPart1.java │ │ ├── LinkedListPart1.py │ │ ├── LinkedListPart2.h │ │ ├── LinkedListPart2.java │ │ ├── LinkedListPart2.py │ │ ├── LinkedListRemove.py │ │ ├── Node.h │ │ ├── Node.py │ │ ├── NodePart1.cpp │ │ ├── NodePart1.java │ │ ├── NodePart1new.cpp │ │ ├── NodePart1new.java │ │ ├── NodePart2.cpp │ │ ├── NodePart2.java │ │ ├── NodePart2new.cpp │ │ ├── NodePart2new.java │ │ ├── NodePart3.java │ │ ├── Remove.py │ │ └── RemoveStep1.py ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ ├── BinarySearchTree │ │ ├── BinarySearchTree_Example1.tikz.tex │ │ ├── BinarySearchTree_Example2.tikz.tex │ │ ├── BinarySearchTree_Example3.tikz.tex │ │ ├── BinarySearchTree_Impl1.tikz.tex │ │ ├── BinarySearchTree_Impl2.tikz.tex │ │ ├── BinarySearchTree_Remove.tikz.tex │ │ ├── BinarySearchTree_RemoveNoChild.tikz.tex │ │ ├── BinarySearchTree_RemoveOneChild.tikz.tex │ │ ├── BinarySearchTree_RemoveTwoChildren.tikz.tex │ │ ├── BinaryTreeBest.tikz.tex │ │ └── BinaryTreeWorst.tikz.tex │ └── LinkedList │ │ ├── DoublyLinkedList.tikz.tex │ │ ├── DoublyLinkedListAlt.tikz.tex │ │ ├── DoublyLinkedListAsCollection.tikz.tex │ │ ├── DoublyLinkedListWithHeadCyclic.tikz.tex │ │ ├── DoublyLinkedListWithHeadCyclicIntroduction.tikz.tex │ │ ├── DoublyLinkedListWithHeadCyclicMemory.tikz.tex │ │ ├── SinglyLinkedList.tikz.tex │ │ ├── SinglyLinkedListCreate_First.tikz.tex │ │ ├── SinglyLinkedListCreate_Second.tikz.tex │ │ ├── SinglyLinkedListCreate_Third.tikz.tex │ │ ├── SinglyLinkedListInsert_First.tikz.tex │ │ ├── SinglyLinkedListInsert_Fourth.tikz.tex │ │ ├── SinglyLinkedListInsert_OneLine_After.tikz.tex │ │ ├── SinglyLinkedListInsert_OneLine_Before.tikz.tex │ │ ├── SinglyLinkedListInsert_Second.tikz.tex │ │ ├── SinglyLinkedListInsert_Third.tikz.tex │ │ ├── SinglyLinkedListIntroduction.tikz.tex │ │ ├── SinglyLinkedListRemoveFirst_First.tikz.tex │ │ ├── SinglyLinkedListRemoveFirst_Second.tikz.tex │ │ ├── SinglyLinkedListRemove_First.tikz.tex │ │ ├── SinglyLinkedListRemove_Second.tikz.tex │ │ ├── SinglyLinkedListRemove_Third.tikz.tex │ │ ├── SinglyLinkedListWithHead.tikz.tex │ │ ├── SinglyLinkedListWithHeadAppend.tikz.tex │ │ ├── SinglyLinkedListWithHeadInsertAfter.tikz.tex │ │ └── SinglyLinkedListWithHeadRemove.tikz.tex ├── Lecture.tex ├── Literature │ ├── General │ │ └── General.bib │ ├── Literature_eng.tex │ └── eng │ │ ├── BinarySearchTree.bib │ │ └── LinkedList.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-11 ├── Chapter │ └── eng │ │ ├── 010_Motivation.tex │ │ ├── 020_AVL-Tree.tex │ │ ├── 030_a_b-Tree.tex │ │ └── 040_Red-Black-Tree.tex ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ ├── (a,b)-Tree │ │ ├── (2,3)-Tree_1.tikz.tex │ │ ├── (2,3)-Tree_2.tikz.tex │ │ ├── (2,3)-Tree_3.tikz.tex │ │ ├── (2,3)-Tree_4.tikz.tex │ │ ├── (2,3)-Tree_5.tikz.tex │ │ ├── (2,3)-Tree_6.tikz.tex │ │ ├── (2,3)-Tree_7.tikz.tex │ │ ├── (2,3)-Tree_8.tikz.tex │ │ ├── (2,4)-Tree_Example_Potential.tikz.tex │ │ ├── (2,4)-Tree_Introduction.tikz.tex │ │ ├── (3,5)-Tree_Search.png │ │ ├── DoublyLinkedList.tikz.tex │ │ ├── Node_Introduction.tikz.tex │ │ ├── Node_PostMerge.tikz.tex │ │ ├── Node_PostMerge_Potential.tikz.tex │ │ ├── Node_PostMove.tikz.tex │ │ ├── Node_PostMove_Potential.tikz.tex │ │ ├── Node_PostMove_PotentialFall.tikz.tex │ │ ├── Node_PostSplit.tikz.tex │ │ ├── Node_PostSplit_Potential.tikz.tex │ │ ├── Node_PreMerge.tikz.tex │ │ ├── Node_PreMove.tikz.tex │ │ ├── Node_PreMove_PotentialFall.tikz.tex │ │ ├── Node_PreSplit.tikz.tex │ │ └── Not-(2,4)-Tree_Introduction.tikz.tex │ ├── AVL-Tree │ │ ├── AVL-Tree_Example1.tikz.tex │ │ ├── AVL-Tree_Example2.tikz.tex │ │ ├── AVL-Tree_Example3.tikz.tex │ │ ├── AVL-Tree_Insert1To10.png │ │ ├── AVL-Tree_RotateA.tikz.tex │ │ └── AVL-Tree_RotateB.tikz.tex │ ├── Motivation │ │ ├── BinarySearchTree_Ordered.png │ │ └── BinarySearchTree_Random.png │ └── Red-Black-Tree │ │ └── Red-Black-Tree.png ├── Lecture.tex ├── Literature │ ├── General │ │ └── General.bib │ ├── Literature_eng.tex │ └── eng │ │ ├── (a_b)-Tree.bib │ │ ├── AVL-Tree.bib │ │ ├── GnarleyTrees.bib │ │ └── Red-Black-Tree.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-12 ├── Chapter │ └── eng │ │ ├── 010_Graphs.tex │ │ ├── 020_Graphs_ShortestPath.tex │ │ └── 030_Biology.tex ├── Code │ ├── Graph │ │ ├── Graph.h │ │ ├── GraphPart1.cpp │ │ ├── GraphPart1.java │ │ ├── GraphPart1.py │ │ ├── GraphPart2.cpp │ │ ├── GraphPart2.java │ │ ├── GraphPart2.py │ │ ├── GraphPart3.cpp │ │ └── GraphPart3.java │ └── Handout │ │ └── Graph │ │ ├── Graph.cpp │ │ ├── Graph.h │ │ ├── Graph.java │ │ └── Graph.py ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ ├── Graphs │ │ ├── Degree_Directed.tikz.tex │ │ ├── Degree_Undirected.tikz.tex │ │ ├── Freiburg_OpenStreetMap.png │ │ ├── GraphVertice.tikz.tex │ │ ├── Graph_ConnectedComponents.tikz.tex │ │ ├── Introduction_DirectedGraph.tikz.tex │ │ ├── Introduction_UndirectedGraph.tikz.tex │ │ ├── Introduction_WeightedGraph.tikz.tex │ │ ├── Paths_Diameter.tikz.tex │ │ ├── Paths_Diameter2.tikz.tex │ │ ├── Paths_Directed.tikz.tex │ │ ├── Paths_Shortest.tikz.tex │ │ ├── Paths_Shortest2.tikz.tex │ │ ├── Paths_Undirected.tikz.tex │ │ ├── Paths_Weighted.tikz.tex │ │ ├── Search_BreadthFirst.tikz.tex │ │ ├── Search_BreadthFirst1.tikz.tex │ │ ├── Search_BreadthFirst2.tikz.tex │ │ ├── Search_BreadthFirst3.tikz.tex │ │ ├── Search_BreadthFirst4.tikz.tex │ │ ├── Search_BreadthFirst5.tikz.tex │ │ ├── Search_BreadthFirst6.tikz.tex │ │ ├── Search_BreadthFirst7.tikz.tex │ │ ├── Search_DepthFirst.tikz.tex │ │ ├── Search_DepthFirst1.tikz.tex │ │ ├── Search_DepthFirst2.tikz.tex │ │ ├── Search_DepthFirst3.tikz.tex │ │ ├── Search_DepthFirst4.tikz.tex │ │ ├── Search_DepthFirst5.tikz.tex │ │ ├── Search_DepthFirst6.tikz.tex │ │ ├── Search_DepthFirst7.tikz.tex │ │ ├── Search_DepthFirst8.tikz.tex │ │ ├── Search_DepthFirst9.tikz.tex │ │ ├── Storage_DirectedGraph.tikz.tex │ │ └── Storage_DirectedGraphOrdered.tikz.tex │ └── ImageProcessing │ │ ├── magnifying_glass.tikz.tex │ │ ├── magnifying_glass_bw.tikz.tex │ │ ├── particles_black_white.png │ │ ├── particles_black_white_excel_data.png │ │ ├── particles_excel_data.png │ │ ├── particles_excel_search.png │ │ ├── particles_excel_search10.png │ │ ├── particles_excel_search11.png │ │ ├── particles_excel_search12.png │ │ ├── particles_excel_search2.png │ │ ├── particles_excel_search3.png │ │ ├── particles_excel_search4.png │ │ ├── particles_excel_search5.png │ │ ├── particles_excel_search6.png │ │ ├── particles_excel_search7.png │ │ ├── particles_excel_search8.png │ │ ├── particles_excel_search9.png │ │ ├── particles_final.png │ │ ├── particles_final_source.png │ │ ├── particles_labeled.png │ │ └── particles_source.png ├── Lecture.tex ├── Literature │ ├── General │ │ └── General.bib │ ├── Literature_eng.tex │ └── eng │ │ ├── Connectivity.bib │ │ └── GraphSearch.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-13 ├── Chapter │ └── eng │ │ ├── 010_Graphs.tex │ │ └── 020_Dijkstra.tex ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ └── Dijkstra │ │ ├── ApplicationExample.tikz.tex │ │ ├── Axon.jpg │ │ ├── Axon_CloseUp.jpg │ │ ├── Axon_CloseUp.tikz.tex │ │ ├── DijkstraMapTF.png │ │ ├── DijkstraMapTF.svg │ │ ├── DijkstraTreeTF-split-o1.pdf │ │ ├── DijkstraTreeTF-split-o1.svg │ │ ├── DijkstraTreeTF-split-o2.pdf │ │ ├── DijkstraTreeTF-split-o2.svg │ │ ├── DijkstraTreeTF-split-o3.pdf │ │ ├── DijkstraTreeTF-split-o3.svg │ │ ├── DijkstraTreeTF-split-o4.pdf │ │ ├── DijkstraTreeTF-split-o4.svg │ │ ├── DijkstraTreeTF-split-o5.pdf │ │ ├── DijkstraTreeTF-split-o5.svg │ │ ├── DijkstraTreeTF-split-o6.pdf │ │ ├── DijkstraTreeTF-split-o6.svg │ │ ├── DijkstraTreeTF-split-o7.pdf │ │ ├── DijkstraTreeTF-split-o7.svg │ │ ├── DijkstraTreeTF-split-o8.pdf │ │ ├── DijkstraTreeTF-split-o8.svg │ │ ├── DijkstraTreeTF-split.svg │ │ ├── DijkstraTreeTF.odg │ │ ├── DijkstraTreeTF.pdf │ │ ├── DijkstraTreeTF.svg │ │ ├── DijkstraTree_WithOverlay.png │ │ ├── Dijkstra_Algorithm.tikz.tex │ │ ├── Dijkstra_Induction.tikz.tex │ │ ├── Dijkstra_InductionOrder.tikz.tex │ │ ├── Edsger_Wybe_Dijkstra.jpg │ │ ├── Makefile │ │ ├── MessagePassing.tikz.tex │ │ ├── NegativeCycle.tikz.tex │ │ ├── NegativePath.tikz.tex │ │ ├── PriorityQueue.tikz.tex │ │ ├── ShortestPath.tikz.tex │ │ ├── ShortestPaths.tikz.tex │ │ ├── Vertex │ │ ├── Vertex_Active.tikz.tex │ │ ├── Vertex_Settled.tikz.tex │ │ └── Vertex_Unreached.tikz.tex │ │ ├── disjkstra-priority-queue-o1.pdf │ │ ├── disjkstra-priority-queue-o1.svg │ │ ├── disjkstra-priority-queue-o10.pdf │ │ ├── disjkstra-priority-queue-o10.svg │ │ ├── disjkstra-priority-queue-o11.pdf │ │ ├── disjkstra-priority-queue-o11.svg │ │ ├── disjkstra-priority-queue-o2.pdf │ │ ├── disjkstra-priority-queue-o2.svg │ │ ├── disjkstra-priority-queue-o3.pdf │ │ ├── disjkstra-priority-queue-o3.svg │ │ ├── disjkstra-priority-queue-o4.pdf │ │ ├── disjkstra-priority-queue-o4.svg │ │ ├── disjkstra-priority-queue-o5.pdf │ │ ├── disjkstra-priority-queue-o5.svg │ │ ├── disjkstra-priority-queue-o6.pdf │ │ ├── disjkstra-priority-queue-o6.svg │ │ ├── disjkstra-priority-queue-o7.pdf │ │ ├── disjkstra-priority-queue-o7.svg │ │ ├── disjkstra-priority-queue-o8.pdf │ │ ├── disjkstra-priority-queue-o8.svg │ │ ├── disjkstra-priority-queue-o9.pdf │ │ ├── disjkstra-priority-queue-o9.svg │ │ └── disjkstra-priority-queue.svg ├── Lecture.tex ├── Literature │ ├── General │ │ ├── General.bib │ │ └── Literature.bib │ ├── Literature_eng.tex │ └── eng │ │ ├── Dijkstra.bib │ │ └── ShortestPath.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-14 ├── Chapter │ └── eng │ │ ├── 010_Introduction.tex │ │ └── 020_LevenshteinDistance.tex ├── Code │ └── EditDistance │ │ └── edit_distance.py ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ ├── Additional_Applications │ │ └── Whole_Genome_Shotgun_Sequencing.png │ ├── Introduction │ │ ├── Search_Volcano.pdf │ │ └── Search_Volcano.svg │ └── Levenshtein_Distance │ │ ├── Grid.tikz.tex │ │ ├── Richard_Ernest_Bellman (2).jpg │ │ ├── Richard_Ernest_Bellman.jpg │ │ ├── Richard_Ernest_Bellman.txt │ │ └── Slice.tikz.tex ├── Lecture.tex ├── Literature │ ├── General │ │ └── General.bib │ ├── Literature_eng.tex │ └── eng │ │ ├── DynamicProgramming.bib │ │ └── EditDistance.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-15 ├── Chapter │ └── eng │ │ ├── 010_Evaluation.tex │ │ ├── 020_Exam.tex │ │ ├── 030_Exercises.tex │ │ └── 040_Bioinformatics.tex ├── Code │ └── Exam │ │ └── example1.py ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Lecture.tex ├── Literature │ └── Literature_eng.tex ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-2 ├── Chapter │ └── eng │ │ ├── 010_Introduction.tex │ │ ├── 020_BasicOperations.tex │ │ ├── 030_MinSort.tex │ │ ├── 040_HeapSort.tex │ │ ├── 050_Induction.tex │ │ ├── 060_HeapSort_Continuation.tex │ │ ├── 070_Induction_Continuation.tex │ │ ├── 080_HeapSort_Final.tex │ │ └── 090_Logarithm.tex ├── Code │ └── MinSort │ │ ├── MinSort.cpp │ │ ├── MinSort.java │ │ └── MinSort.py ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ ├── CodeAnalysis │ │ ├── minsort-code-analysis-o1.pdf │ │ ├── minsort-code-analysis-o1.svg │ │ ├── minsort-code-analysis-o2.pdf │ │ ├── minsort-code-analysis-o2.svg │ │ ├── minsort-code-analysis-o3.pdf │ │ ├── minsort-code-analysis-o3.svg │ │ ├── minsort-code-analysis-o4.pdf │ │ ├── minsort-code-analysis-o4.svg │ │ └── minsort-code-analysis.svg │ ├── HeapSort │ │ ├── BinaryTree.tikz.tex │ │ ├── BinaryTree_Layer.tikz.tex │ │ ├── BinaryTree_Layer_General.tikz.tex │ │ └── PartialTree.tikz.tex │ ├── Induction │ │ ├── BinaryTree_Root.tikz.tex │ │ └── BinaryTree_SubTrees.tikz.tex │ ├── MinSort │ │ ├── MinSort_Brace.tikz.tex │ │ ├── MinSort_Compact.tikz.tex │ │ └── Minsort.png │ └── Runtime │ │ ├── lower-upper-Tn-o1.pdf │ │ ├── lower-upper-Tn-o1.svg │ │ ├── lower-upper-Tn-o2.pdf │ │ ├── lower-upper-Tn-o2.svg │ │ ├── lower-upper-Tn-o3.pdf │ │ ├── lower-upper-Tn-o3.svg │ │ └── lower-upper-Tn.svg ├── Lecture.tex ├── Literature │ ├── General │ │ └── General.bib │ ├── Literature_eng.tex │ └── eng │ │ └── Induction.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-3 ├── Chapter │ └── eng │ │ ├── 010_O-Notation.tex │ │ ├── 020_L_Hopital.tex │ │ └── 030_O-Notation-2.tex ├── Code │ └── ArithmeticMean │ │ ├── ArithmeticMean.cpp │ │ ├── ArithmeticMean.java │ │ └── ArithmeticMean.py ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ ├── BigONotationRuntime.png │ ├── Makefile │ ├── OmegaNotationRuntime.png │ ├── limits-epsilon.pdf │ ├── limits-epsilon.svgz │ ├── lower-upper-bound.pdf │ ├── lower-upper-bound.svgz │ ├── runtime-theta.pdf │ └── runtime-theta.svg ├── Lecture.tex ├── Literature │ ├── General │ │ └── General.bib │ ├── Literature_eng.tex │ └── eng │ │ └── BigONotation.bib ├── Makefile ├── Matlab │ ├── PlotBigORuntime.m │ └── PlotOmegaRuntime.m ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-4 ├── Chapter │ └── eng │ │ ├── 010_Runtime.tex │ │ ├── 020_ExtendedSorting.tex │ │ └── 030_AssociativeArrays.tex ├── Code │ ├── AssociativeArray.cpp │ ├── AssociativeArray.java │ ├── AssociativeArray.py │ └── AssociativeArrayFeature.cpp ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ └── SortBlocks.tikz.tex ├── Lecture.tex ├── Literature │ ├── General │ │ └── General.bib │ ├── Literature_eng.tex │ └── eng │ │ ├── MapAPIPart1.bib │ │ └── MapAPIPart2.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-5 ├── Chapter │ └── eng │ │ ├── 010_Map.tex │ │ ├── 020_HashMap.tex │ │ ├── 030_UniversalHashing.tex │ │ ├── 040_ProbabilityCalculation.tex │ │ ├── 050_UniversalHashing_Proof.tex │ │ └── 060_UniversalHashing_Examples.tex ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ ├── Bucket.pdf │ ├── Bucket.svg │ ├── Bucket1.pdf │ ├── Bucket1.svg │ ├── Bucket2.pdf │ ├── Bucket2.svg │ ├── Bucket3.pdf │ ├── Bucket3.svg │ ├── Bucket4.pdf │ ├── Bucket4.svg │ ├── Bucket5.pdf │ ├── Bucket5.svg │ ├── Makefile │ ├── UniversalHashing │ │ ├── HashFunction.tikz.tex │ │ ├── HashFunctionToBucket.tikz.tex │ │ ├── HashUniverse.tikz.tex │ │ ├── Hash_1_Crossing.tikz.tex │ │ ├── Hash_2_Normal.tikz.tex │ │ └── Hash_3_Colliding.tikz.tex │ ├── hash-extreme.pdf │ ├── hash-extreme.svg │ ├── hash-uniform.pdf │ └── hash-uniform.svg ├── Lecture.tex ├── Literature │ ├── General │ │ └── General.bib │ ├── Literature_eng.tex │ └── eng │ │ ├── HashMap.bib │ │ └── HashMapAPI.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-6 ├── Chapter │ └── eng │ │ ├── 010_Hashing.tex │ │ └── 020_PriorityQueue.tex ├── Code │ ├── Handout │ │ ├── PriorityQueueItem.cpp │ │ ├── PriorityQueueItem.java │ │ └── PriorityQueueItem.py │ ├── OpenHashing_Insert.cpp │ ├── OpenHashing_Insert.java │ ├── OpenHashing_Insert.py │ ├── OpenHashing_Lookup.cpp │ ├── OpenHashing_Lookup.java │ ├── OpenHashing_Lookup.py │ ├── PriorityQueue.py │ ├── PriorityQueueItem.cpp │ ├── PriorityQueueItem.java │ ├── PriorityQueueItem.py │ ├── PriorityQueuePart1.cpp │ ├── PriorityQueuePart1.java │ ├── PriorityQueuePart2.cpp │ └── PriorityQueuePart2.java ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ ├── GenericHeap.tikz.tex │ ├── OpenAddressing │ │ ├── DoubleHashing.tikz.tex │ │ ├── DoubleHashingBrent.tikz.tex │ │ ├── DoubleHashingNoBrent.tikz.tex │ │ ├── LinearProbing-definition.tikz.tex │ │ ├── LinearProbing.tikz.tex │ │ ├── LinearProbingExample.tikz.tex │ │ └── SquaredProbing.tikz.tex │ ├── PriorityQueue │ │ ├── Heap.tikz.tex │ │ ├── HeapRepairDown_First.tikz.tex │ │ ├── HeapRepairDown_Second.tikz.tex │ │ ├── HeapRepairDown_Third.tikz.tex │ │ ├── HeapRepairUp_First.tikz.tex │ │ ├── HeapRepairUp_Second.tikz.tex │ │ ├── HeapRepairUp_Third.tikz.tex │ │ ├── Heap_Insert.tikz.tex │ │ ├── Heap_Peek.tikz.tex │ │ ├── Heap_PostChangeKey.tikz.tex │ │ ├── Heap_PostChangeKey2.tikz.tex │ │ ├── Heap_PostPop.tikz.tex │ │ ├── Heap_PostRemove.tikz.tex │ │ ├── Heap_PreChangeKey.tikz.tex │ │ ├── Heap_PrePop.tikz.tex │ │ └── Heap_PreRemove.tikz.tex │ ├── hashtable-buckets.pdf │ └── hashtable-buckets.svg ├── Lecture.tex ├── Literature │ ├── General │ │ └── General.bib │ ├── Literature_eng.tex │ └── eng │ │ └── PQAPI.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-7 ├── Chapter │ └── eng │ │ ├── 010_StaticFields.tex │ │ ├── 020_DynamicFields.tex │ │ └── 030_DynamicFields_AmortizedAnalysis.tex ├── Code │ ├── DynamicField.cpp │ ├── DynamicField.java │ ├── DynamicField │ │ ├── Impl1 │ │ │ ├── DynamicFieldImpl1.h │ │ │ ├── DynamicFieldImpl1_Part1.cpp │ │ │ ├── DynamicFieldImpl1_Part1.java │ │ │ ├── DynamicFieldImpl1_Part2.cpp │ │ │ ├── DynamicFieldImpl1_Part2.java │ │ │ ├── DynamicListImpl1_Part1.py │ │ │ └── DynamicListImpl1_Part2.py │ │ ├── Impl2 │ │ │ ├── DynamicFieldImpl2.h │ │ │ ├── DynamicFieldImpl2.java │ │ │ ├── DynamicFieldImpl2_Part1.cpp │ │ │ ├── DynamicFieldImpl2_Part2.cpp │ │ │ └── DynamicListImpl2.py │ │ └── Impl3 │ │ │ ├── DynamicFieldImpl3.cpp │ │ │ ├── DynamicFieldImpl3.java │ │ │ └── DynamicListImpl3.py │ ├── DynamicLists.py │ ├── Handout │ │ └── RuntimeMeasure │ │ │ ├── DynamicListImpl1_Runtime.py │ │ │ ├── DynamicListImpl2_Runtime.py │ │ │ ├── DynamicListImpl3_Runtime.py │ │ │ ├── impl1_runtime.csv │ │ │ ├── impl2_runtime.csv │ │ │ └── impl3_runtime.csv │ ├── Lists.py │ ├── StaticField.cpp │ └── StaticField.java ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ ├── DynamicArray │ │ ├── RuntimePlot_Impl1.tikz.tex │ │ ├── RuntimePlot_Impl2.tikz.tex │ │ └── RuntimePlot_Impl3.tikz.tex │ ├── FixedSizeArray.tikz.tex │ ├── FixedSizeArray_Copy.tikz.tex │ └── FixedSizeArray_Sizes.tikz.tex ├── Lecture.tex ├── Literature │ ├── General │ │ └── General.bib │ ├── Literature_eng.tex │ ├── deu │ │ └── AmortizedAnalysis.bib │ └── eng │ │ └── AmortizedAnalysis.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-8 ├── Chapter │ └── eng │ │ ├── 010_CacheEfficiency.tex │ │ └── 020_DivideAndConquer.tex ├── Code │ ├── Caching │ │ ├── CacheLinear_Part1.py │ │ ├── CacheLinear_Part2.py │ │ ├── CacheRandom.py │ │ ├── QuickSort_Part1.py │ │ └── QuickSort_Part2.py │ ├── DivideAndConquer │ │ ├── DivideAndConquer_Concept.py │ │ ├── MaxSubTotal.py │ │ ├── MaxSubTotal_DivideAndConquer.py │ │ ├── MaxSubTotal_Naive.py │ │ └── MaxSubTotal_Naive_Runtime.py │ ├── Handout │ │ ├── QuickSort.py │ │ └── RuntimeMeasure │ │ │ ├── CacheLinear_Runtime.py │ │ │ ├── CacheRandom_Runtime.py │ │ │ ├── cache_linear_runtime.csv │ │ │ └── cache_random_runtime.csv │ └── RuntimeMeasure │ │ ├── CacheLinear_Runtime.py │ │ ├── CacheRandom_Runtime.py │ │ ├── cache_linear_runtime.csv │ │ └── cache_random_runtime.csv ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ ├── Caching │ │ ├── CacheBlocks.tikz.tex │ │ ├── CacheHirarchy.tikz.tex │ │ ├── Makefile │ │ ├── MemoryLocality.tikz.tex │ │ ├── MemoryLocality_Linear.tikz.tex │ │ ├── MemoryLocality_QuickSort.tikz.tex │ │ ├── MemoryLocality_Random.tikz.tex │ │ ├── QuickSort_Pivot.tikz.tex │ │ ├── SumLinear_Plot.tikz.tex │ │ ├── SumRandom_Plot.tikz.tex │ │ ├── quicksort-idea-o1.pdf │ │ ├── quicksort-idea-o1.svg │ │ ├── quicksort-idea-o2.pdf │ │ ├── quicksort-idea-o2.svg │ │ ├── quicksort-idea-o3.pdf │ │ ├── quicksort-idea-o3.svg │ │ ├── quicksort-idea-o4.pdf │ │ ├── quicksort-idea-o4.svg │ │ ├── quicksort-idea-o5.pdf │ │ ├── quicksort-idea-o5.svg │ │ ├── quicksort-idea-o6.pdf │ │ ├── quicksort-idea-o6.svg │ │ ├── quicksort-idea-o7.pdf │ │ ├── quicksort-idea-o7.svg │ │ ├── quicksort-idea.d │ │ ├── quicksort-idea.d-names │ │ ├── quicksort-idea.svgz │ │ ├── sumlinear-plot.pdf │ │ ├── sumlinear-plot.svgz │ │ ├── sumrandom-plot.pdf │ │ └── sumrandom-plot.svgz │ └── DivideAndConquer │ │ ├── MaxSubTotal_Divide.tikz.tex │ │ ├── Shares_Graph.tikz.tex │ │ ├── maximum-subseq.svgz │ │ ├── shares-graph.pdf │ │ └── shares-graph.svgz ├── Lecture.tex ├── Literature │ ├── General │ │ ├── General.bib │ │ └── Literature.bib │ ├── Literature_eng.tex │ └── eng │ │ └── Cache.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Lecture-9 ├── Chapter │ └── eng │ │ ├── 010_DivideAndConquer.tex │ │ └── 020_RecusionEquations.tex ├── Code │ └── DivideAndConquer │ │ ├── MaxSubTotal_DivideAndConquer.py │ │ ├── MaxSubTotal_LMax.py │ │ ├── MaxSubTotal_LinearRuntime.py │ │ ├── MaxSubTotal_Max.py │ │ ├── MaxSubTotal_Max2.py │ │ ├── MaxSubTotal_RMax.py │ │ ├── MaxSubTotal_Runtime.py │ │ └── MaxSubTotal_SecondTrivialCase.py ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Images │ ├── DivideAndConquer │ │ ├── Makefile │ │ ├── MaxSubTotal_Divide.tikz.tex │ │ ├── MaxSubTotal_Example.tikz.tex │ │ ├── MaxSubTotal_LinearRuntime.tikz.tex │ │ ├── MaxSubTotal_Runtime.tikz.tex │ │ ├── MaxSubTotal_Runtime_Tree.tikz.tex │ │ ├── MaxSubTotal_idea.tikz.tex │ │ ├── maxsubarray-o1.pdf │ │ ├── maxsubarray-o1.svg │ │ ├── maxsubarray-o2.pdf │ │ ├── maxsubarray-o2.svg │ │ ├── maxsubarray-o3.pdf │ │ ├── maxsubarray-o3.svg │ │ ├── maxsubarray-o4.pdf │ │ ├── maxsubarray-o4.svg │ │ ├── maxsubarray-o5.pdf │ │ ├── maxsubarray-o5.svg │ │ └── maxsubarray.svgz │ ├── RecursionEquations │ │ ├── Example_RecursionTree.tikz.tex │ │ ├── Example_RecursionTree_Levels.tikz.tex │ │ └── ProblemSizeTree.tikz.tex │ └── maxsubarray.svgz ├── Lecture.tex ├── Literature │ ├── General │ │ ├── General.bib │ │ └── Literature.bib │ ├── Literature_eng.tex │ ├── deu │ │ └── MasterTheorem.bib │ └── eng │ │ └── MasterTheorem.bib ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ └── LecturePackages_eng.tex ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ ├── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf │ └── Lecture │ ├── plain │ ├── Base.tex │ └── Packages.tex │ └── ufcd │ ├── Base.tex │ └── Packages.tex ├── Makefile ├── README.md ├── Template-ExerciseSheet ├── ExerciseSheet.tex ├── Makefile ├── Packages │ ├── Packages_General.tex │ ├── Packages_deu.tex │ └── Packages_eng.tex ├── Settings │ ├── Settings_General.tex │ └── Settings_eng.tex ├── Styles │ ├── Code │ │ ├── listings-acm.prf │ │ ├── listings-bash.prf │ │ ├── listings-fortran.prf │ │ ├── listings-lua.prf │ │ └── listings-python.prf │ └── Sheet │ │ ├── plain │ │ ├── Footer.tex │ │ └── Header.tex │ │ └── ufcd │ │ ├── Footer.tex │ │ └── Header.tex └── images │ └── uni_logo.png ├── Template-Lecture ├── Feedback │ ├── FeedbackExercises_eng.tex │ └── FeedbackLecture_eng.tex ├── Lecture.tex ├── Literature │ └── Literature_eng.tex ├── Makefile ├── Packages │ ├── LecturePackages_General.tex │ ├── LecturePackages_eng.tex │ └── tabitem-beamer.sty ├── Settings │ ├── LectureSettings_General.tex │ └── LectureSettings_eng.tex └── Styles │ └── Code │ ├── listings-acm.prf │ ├── listings-bash.prf │ ├── listings-cpp-eclipse.prf │ ├── listings-fortran.prf │ ├── listings-java-eclipse.prf │ ├── listings-lua.prf │ └── listings-python.prf └── scripts └── add_ufcd_linux.sh /.gitignore: -------------------------------------------------------------------------------- 1 | /Lecture-*/build/* 2 | /Lectures 3 | /ExerciseSheet-*/build/* 4 | /ExerciseSheets -------------------------------------------------------------------------------- /ExerciseSheet-1/Exercises/eng/020_BinaryHeap.tex: -------------------------------------------------------------------------------- 1 | \exercise{2} Binary Heap \points{5}\\ 2 | The following binary \textit{min-heap} is stored in a linear array. 3 | Draw the heap as a tree diagram and mark the edges where the 4 | \textit{heap condition} is not fulfilled. 5 | \begin{displaymath} 6 | \left[ 1,6,2,4,7,3,9,11,13,12,14,5,15,8,10,13,13 \right] 7 | \end{displaymath} 8 | -------------------------------------------------------------------------------- /ExerciseSheet-1/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-1/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-1/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-1/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-1/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-1/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{1} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-1/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-1/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-1/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-1/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-1/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-10/Exercises/eng/020_SortTimeMeasure.tex: -------------------------------------------------------------------------------- 1 | \exercise{2} \points{6}\\ 2 | Write a program that inserts the numbers $1, 2, 3 | \ldots, n$ in this order in a (at the beginning) empty 4 | \emph{BinarySearchTree}. 5 | 6 | Next, insert in a (again, at the beginning) empty \emph{BinarySearchTree} 7 | the same $n$ numbers in random order. 8 | 9 | Measure the runtime and the depth of the tree for both cases (after each $n$ 10 | insertions) for $n = 2^{10}, 2^{11}, 2^{12}, 11 | \ldots$. Increase $n$ so that the runtime is still bearable on your machine. 12 | Shortly discuss the results in your \emph{erfahrungen.txt}. 13 | -------------------------------------------------------------------------------- /ExerciseSheet-10/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your code into the SVN in a new subdirectory 3 | \textbf{uebungsblatt\_\ExerciseSheetNumber} and a PDF with the solutions of the 4 | theoretical tasks in the same folder. Commit your feedback in a text file 5 | \emph{erfahrungen.txt} as usual. Please specify: the length of time needed for 6 | the exercise. Which tasks have been difficult for you and where did you have 7 | problems? How much time did you spend to solve the problems? 8 | -------------------------------------------------------------------------------- /ExerciseSheet-10/Images/diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-10/Images/diagram.png -------------------------------------------------------------------------------- /ExerciseSheet-10/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-10/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-10/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-10/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-10/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-10/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{10} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-10/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-10/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-10/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-10/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-10/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-11/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your solutions as a PDF into the SVN in a new subdirectory 3 | \textbf{uebungsblatt\_\ExerciseSheetNumber}. Commit your feedback in a text file 4 | \emph{erfahrungen.txt} as usual. Please specify: The length of time needed for 5 | the exercise. Which tasks have been difficult for you and where did you have 6 | problems? How much time did you spend to solve the problems? 7 | -------------------------------------------------------------------------------- /ExerciseSheet-11/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-11/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-11/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-11/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-11/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-11/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{11} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-11/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-11/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-11/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-11/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-11/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-12/Exercises/eng/010_Introduction.tex: -------------------------------------------------------------------------------- 1 | In this exercise you will learn how to extend the class \emph{graph} from the 2 | lecture by a set of diverse methods. For a detailed specification of the 3 | methods, please have a look at the file \emph{Graph.H} on the homepage. -------------------------------------------------------------------------------- /ExerciseSheet-12/Exercises/eng/020_WorstCaseAnalysis.tex: -------------------------------------------------------------------------------- 1 | \exercise{1} \points{5}\\ 2 | Implement the method \emph{readFromFile}, which reads the directional graphs 3 | from a file. For specification of the data format, please have a look at the 4 | file \emph{Graph.H} on the homepage. -------------------------------------------------------------------------------- /ExerciseSheet-12/Exercises/eng/030_SortTimeMeasure.tex: -------------------------------------------------------------------------------- 1 | \exercise{2} \points{5}\\ 2 | Implement the method \emph{computeReachableNodes}, which marks all reachable 3 | nodes from a given node. Apply \emph{breadth first search} or \emph{depth 4 | first search} as explained in the lecture. -------------------------------------------------------------------------------- /ExerciseSheet-12/Exercises/eng/040_AverageSortTime.tex: -------------------------------------------------------------------------------- 1 | \exercise{3} \points{5}\\ 2 | Implement the method \emph{computeLargestConnectedComponent} which calculates 3 | all connected components and marks the nodes in the biggest connected component 4 | (= those with the most nodes). -------------------------------------------------------------------------------- /ExerciseSheet-12/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your code into the SVN in a new subdirectory 3 | \textbf{uebungsblatt\_\ExerciseSheetNumber} and a PDF with the solutions of the 4 | theoretical tasks in the same folder. Commit your feedback in a text file 5 | \emph{erfahrungen.txt} as usual. Please specify: The length of time needed for 6 | the exercise. Which tasks have been difficult for you and where did you have 7 | problems? How much time did you spend to solve the problems? -------------------------------------------------------------------------------- /ExerciseSheet-12/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-12/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-12/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-12/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-12/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-12/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{12} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-12/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-12/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-12/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-12/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-12/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-13/Exercises/eng/010_Introduction.tex: -------------------------------------------------------------------------------- 1 | In this exercise you will compute the largest connected component and implement Dijkstra's Algorithm to find the fastest (shortest) routes in the street graphs of Freiburg. 2 | \textbf{Read the exercise sheet first before starting to write code.} -------------------------------------------------------------------------------- /ExerciseSheet-13/Exercises/eng/030_Dijkstra.tex: -------------------------------------------------------------------------------- 1 | \exercise{2} \points{10} \textit{Dijkstra's Algorithm}\\ 2 | Extend the \texttt{Graph} class with the method \texttt{compute\_shortest\_paths()}. 3 | This method will use Dijkstra's algorithm to calculate the cost of all shortest paths from a given node to all reachable nodes. 4 | For this make use of the variable \texttt{costs} that is saved in the class \texttt{Arc}. 5 | To calculate the shortest path extend your class \texttt{Node} with the member variable \texttt{traceback\_arc}, which stores the edge that was used to calculate the lowest costs for this particular node (i.e., to reconstruct the shortest path). 6 | -------------------------------------------------------------------------------- /ExerciseSheet-13/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your code into the SVN in a new subdirectory 3 | \textbf{uebungsblatt\_\ExerciseSheetNumber}. Commit your feedback in a text file 4 | \emph{erfahrungen.txt} as usual. Please specify: The length of time needed for 5 | the exercise. Which tasks have been difficult for you and where did you have 6 | problems? How much time did you spend to solve the problems? 7 | -------------------------------------------------------------------------------- /ExerciseSheet-13/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-13/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-13/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-13/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-13/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-13/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{13} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-13/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-13/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-13/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-13/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-13/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-13/Template/freiburg.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-13/Template/freiburg.zip -------------------------------------------------------------------------------- /ExerciseSheet-13/Template/graph.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-13/Template/graph.zip -------------------------------------------------------------------------------- /ExerciseSheet-14/Exercises/eng/010_WorstCaseAnalysis.tex: -------------------------------------------------------------------------------- 1 | \exercise{1} \points{10}\\ 2 | Implement the function \emph{compute\_ed\_via\_table} inside the source code file \emph{edit\_distance.py} from the website. 3 | This function should calculate the edit distance between two strings $x$ and $y$ in time and space $O(|x|\cdot|y|)$, using the dynamic programming table approach from the lecture. 4 | -------------------------------------------------------------------------------- /ExerciseSheet-14/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your code into the SVN in a new subdirectory 3 | \textbf{uebungsblatt\_\ExerciseSheetNumber}. Commit your feedback in a text file \emph{erfahrungen.txt} as usual. Please specify: The length of time needed for the exercise. Which tasks have been difficult for you and where did you have problems? How much time did you spend to solve the problems? 4 | -------------------------------------------------------------------------------- /ExerciseSheet-14/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-14/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-14/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-14/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-14/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-14/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{14} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\ 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\ 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | 11 | -------------------------------------------------------------------------------- /ExerciseSheet-14/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-14/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-14/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-14/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-14/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-2/Exercises/eng/010_CompleteInduction.tex: -------------------------------------------------------------------------------- 1 | \exercise{1} \points{5}\\ 2 | Proof with the aid of complete induction that the following holds for all 3 | natural numbers $n$: 4 | \begin{displaymath} 5 | \sum\limits^{n}_{i=1} i = \frac{n \cdot (n+1)}{2} 6 | \end{displaymath} -------------------------------------------------------------------------------- /ExerciseSheet-2/Exercises/eng/020_CompleteInduction.tex: -------------------------------------------------------------------------------- 1 | \exercise{2} \points{5}\\ 2 | Proof with the aid of complete induction that the following holds for all 3 | natural numbers $d \in \mathcal{N}:$ 4 | \begin{displaymath} 5 | \sum\limits^{d}_{i=1} (2^{d-i} \cdot i) \leq 2^{d+1} - d - 2 6 | \end{displaymath} -------------------------------------------------------------------------------- /ExerciseSheet-2/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your solutions inside a new sub folder 3 | \textbf{uebungsblatt\_0\ExerciseSheetNumber} into your SVN repository. 4 | As for exercises 1, 2 and the runtime plot, 5 | commit your solutions in PDF format. 6 | For exercises 1, 2 you can do it by hand and scan them in or e.g. use LaTeX 7 | for the formulas. 8 | Likewise commit a text file called \textbf{erfahrungen.txt} into the folder. 9 | Describe your experience with the exercise sheet in a few sentences: 10 | Was it manageable for you? 11 | How much time did it take you? 12 | Did you have problems with specific parts? 13 | 14 | -------------------------------------------------------------------------------- /ExerciseSheet-2/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-2/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-2/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-2/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-2/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-2/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{2} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-2/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-2/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-2/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-2/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-2/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-3/Exercises/eng/010_BigO.tex: -------------------------------------------------------------------------------- 1 | \exercise{1} \points{6}\\ 2 | Show that $\log_2 n = \mathcal{O}(n)$ holds. 3 | Directly use the definition of $\mathcal{O}$ by determining $n_0$ and $C$ such 4 | that $\log_2 n \leq C \cdot n$ holds for all $n \geq n_0$. 5 | 6 | Show that $\log_2 n = \Omega (n)$ does not hold. 7 | Directly use the definition of $\Omega$ by showing that for each given $C > 0$ 8 | and $n_0$ there exists a $n \geq n_0$ which violates the definition of 9 | $\Omega$ (i.e. that $\log_2 n \leq C \cdot n$). 10 | Consider also that $C$ can be smaller than 1. 11 | -------------------------------------------------------------------------------- /ExerciseSheet-3/Exercises/eng/020_BigOLog.tex: -------------------------------------------------------------------------------- 1 | \exercise{2} \points{7}\\ 2 | Argue that the propositions in Exercise 1 do not only hold for $\log_2$, 3 | but in the general case $\log_b$ for any single given $b > 1$ that does not 4 | depend on $n$. 5 | Remark: That is why in runtime analyses you often find $\log$ written without 6 | the base. 7 | Why is it important that $b > 1$? Describe what happens if $b = 1$ or $b < 1$. 8 | Why is it important that $b$ does not depend on $n$? 9 | Give an example where $b$ does depend on $n$ and one of the propositions 10 | above does not hold anymore (you can choose which one you want to use). -------------------------------------------------------------------------------- /ExerciseSheet-3/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your solutions in PDF format within a new subdirectory 3 | \textbf{uebungsblatt\_0\ExerciseSheetNumber} 4 | into your SVN repository. Also commit a text file 5 | \emph{erfahrungen.txt}. Therein describe your experience with the exercise sheet 6 | in a few sentences: was it managable for you? how much time did it take you? 7 | Did you have problems with specific parts? 8 | 9 | -------------------------------------------------------------------------------- /ExerciseSheet-3/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-3/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-3/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-3/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-3/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-3/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{3} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-3/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-3/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-3/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-3/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-3/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-4/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your code into the SVN in a new subdirectory 3 | \textbf{uebungsblatt\_0\ExerciseSheetNumber}, together with a \emph{discussion.txt} file for exercise 2. Commit your feedback in a text file 4 | \emph{erfahrungen.txt} as usual. There specify which tasks have been difficult for you and where did you have problems? How much time did you spend to solve the exercises? 5 | -------------------------------------------------------------------------------- /ExerciseSheet-4/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-4/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-4/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-4/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-4/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-4/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{4} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-4/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-4/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-4/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-4/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-4/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-4/Template/data.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-4/Template/data.zip -------------------------------------------------------------------------------- /ExerciseSheet-5/Exercises/eng/040_Variation.tex: -------------------------------------------------------------------------------- 1 | \exercise{4} \points{5}\\ 2 | Write a program which calculates the values described in exercise 3 for 3 | $\|U\| = 100, \; m = 10, \; p = 101$ and $n = 1000$ randomly chosen key sets 4 | of size $k = 20$. 5 | Next simulate a non-universal hash function by choosing $p = 10$ and based on 6 | this again calculate the values described in exercise 3. 7 | Report your calculated values in your \textit{erfahrungen.txt} file. Also shortly 8 | explain whether your results make sense and if so why. 9 | -------------------------------------------------------------------------------- /ExerciseSheet-5/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your code into the SVN in a new subdirectory 3 | \textbf{uebungsblatt\_0\ExerciseSheetNumber} and a PDF with the solutions of the 4 | theoretical tasks in the same folder. Commit your feedback the text file 5 | \emph{erfahrungen.txt} as usual. Please specify: The length of time needed for 6 | the exercise. Which tasks have been difficult for you and where did you have 7 | problems? How much time did you spend to solve the problems? 8 | -------------------------------------------------------------------------------- /ExerciseSheet-5/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-5/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-5/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-5/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-5/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-5/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{5} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-5/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-5/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-5/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-5/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-5/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-6/Exercises/eng/00_Introduction.tex: -------------------------------------------------------------------------------- 1 | This week's lecture introduced the concept of priority queues. In this exercise sheet you will implement a priority queue by yourself. The implemented priority queue will also be needed later on for the exercise sheet on Dijkstra's algorithm. 2 | -------------------------------------------------------------------------------- /ExerciseSheet-6/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your code into the SVN in a new subdirectory 3 | \textbf{uebungsblatt\_0\ExerciseSheetNumber}. As usual commit your feedback in a text file \emph{erfahrungen.txt}. Therein please note the length of time needed for the exercise. Also describe which tasks have been difficult for you and where did you have problems. 4 | -------------------------------------------------------------------------------- /ExerciseSheet-6/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-6/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-6/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-6/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-6/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-6/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{6} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-6/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-6/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-6/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-6/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-6/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-7/Exercises/eng/010_Introduction.tex: -------------------------------------------------------------------------------- 1 | Expand the class \textit{DynamicIntArray} (template on the website) with 2 | the following new functionalities: 3 | -------------------------------------------------------------------------------- /ExerciseSheet-7/Exercises/eng/050_Research.tex: -------------------------------------------------------------------------------- 1 | \exercise{3} \points{3}\\ 2 | Find out which strategies for up- and down-scaling are used with: 3 | \texttt{java.util.ArrayList} (Java), \texttt{std::vector} (C++) and Python's 4 | list data type which you already encountered in the course. 5 | 6 | -------------------------------------------------------------------------------- /ExerciseSheet-7/Exercises/eng/060_Bonus.tex: -------------------------------------------------------------------------------- 1 | \exercise{4} \points{7} \textbf{!BONUS EXERCISE!}\\ 2 | The programmer in your neighboring office has asked you for a formula to 3 | calculate the increase factor $r$ needed for increasing the array size such 4 | that on average (amortized) an \texttt{append()} operation does not exceed the 5 | costs $k \cdot A$. 6 | We have shown in the lecture that the costs for the increase factor 7 | $r = \frac{3}{2}$ are $4 \cdot A$ (i.e. $k = 4$). 8 | -------------------------------------------------------------------------------- /ExerciseSheet-7/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your code into the SVN in a new subdirectory 3 | \textbf{uebungsblatt\_0\ExerciseSheetNumber} and the PDFs with the solutions of the 4 | theoretical tasks in the sub folder \textit{non-code}. Commit your feedback in a text file 5 | \emph{erfahrungen.txt} and specify: The length of time needed for 6 | the exercise. Which tasks have been difficult for you and where did you have 7 | problems? How much time did you spend to solve the problems? 8 | -------------------------------------------------------------------------------- /ExerciseSheet-7/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-7/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-7/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-7/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-7/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-7/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{7} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-7/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-7/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-7/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-7/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-7/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-8/Exercises/eng/010_Introduction.tex: -------------------------------------------------------------------------------- 1 | In this exercise sheet you will compare the following two procedures, given a sequence of $n$ integer numbers:\\ 2 | (A) = Sort the $n$ numbers\\ 3 | (B) = Insert the $n$ numbers into an initially empty hash table 4 | -------------------------------------------------------------------------------- /ExerciseSheet-8/Exercises/eng/020_WorstCaseAnalysis.tex: -------------------------------------------------------------------------------- 1 | \exercise{1} \points{5}\\ 2 | How many operations does (A) need in the worst case? 3 | How many operations does (B) need in the worst case? 4 | How many block operations does (A) need in the worst case? 5 | How many block operations does (B) need in the worst case? 6 | For your considerations use Quicksort for (A) 7 | (as described in the last lecture) and universal hashing 8 | (as described in lecture 5) for (B). 9 | It is sufficient to give $\Theta (\dots)$. 10 | Please state your opinion on which of the two procedures you think is faster in 11 | practice and under which circumstances. 12 | -------------------------------------------------------------------------------- /ExerciseSheet-8/Exercises/eng/030_SortTimeMeasure.tex: -------------------------------------------------------------------------------- 1 | \exercise{2} \points{5}\\ 2 | Write a program that generates a set of $n$ random whole numbers 3 | (range $1 \dots n$) and measures the runtime for both (A) and (B) with $n$ 4 | as input. 5 | Repeat the measurement three times for each procedure and take the mean. -------------------------------------------------------------------------------- /ExerciseSheet-8/Exercises/eng/040_AverageSortTime.tex: -------------------------------------------------------------------------------- 1 | \exercise{3} \points{5}\\ 2 | Calculate the averaged runtime from exercise 2 for 3 | $n = 2^{17}, 2^{18}, 2^{19}, 2^{20}, \dots$. 4 | Increase $n$ as long as your computer can deal with the size and the computation 5 | time is still bearable. 6 | Generate a plot with the value of $n$ on the x-axis (logarithmic scale) 7 | and a curve for the runtime of (A) as well as curve for the runtime of (B) 8 | (different color). 9 | -------------------------------------------------------------------------------- /ExerciseSheet-8/Exercises/eng/050_Discussion.tex: -------------------------------------------------------------------------------- 1 | \exercise{4} \points{5}\\ 2 | Discuss your plot from exercise 3. 3 | In particular: How does it fit your assumptions from exercise 1 and the 4 | explanations from the last lecture? 5 | The discussion does not have to be long, just focus on the valid arguments. 6 | -------------------------------------------------------------------------------- /ExerciseSheet-8/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | Commit your code into the SVN in a new subdirectory 3 | \textbf{uebungsblatt\_0\ExerciseSheetNumber} and the PDFs with the solutions of the 4 | theoretical tasks in the sub folder \textit{non-code}. Commit your feedback in a text file 5 | \emph{erfahrungen.txt} and specify: The length of time needed for 6 | the exercise. Which tasks have been difficult for you and where did you have 7 | problems? How much time did you spend to solve the problems? 8 | -------------------------------------------------------------------------------- /ExerciseSheet-8/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-8/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-8/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-8/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-8/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-8/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{8} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-8/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-8/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-8/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-8/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-8/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-9/Exercises/eng/020_SortTimeMeasure.tex: -------------------------------------------------------------------------------- 1 | \exercise{2} \points{10}\\ 2 | A recursive algorithm has the cost of: 3 | \begin{equation} 4 | T(n) = \left\lbrace\begin{array}{ll} 5 | 1 & \mbox{for } n=1\\ 6 | 4T(n/2) + n^2 & \mbox{else} 7 | \end{array} 8 | \right. 9 | \end{equation} 10 | 11 | Provide an expression for the runtime $T(n)$ if the recurrence can be solved 12 | with the Master Theorem. 13 | Write a program that proves experimentally that this algorithm satisfies the 14 | calculated time complexity. -------------------------------------------------------------------------------- /ExerciseSheet-9/Exercises/eng/030_AverageSortTime.tex: -------------------------------------------------------------------------------- 1 | \exercise{3} \points{5}\\ 2 | Given is the following recurrence relation: 3 | \begin{equation} 4 | T(n) = \left\lbrace\begin{array}{ll} 5 | a & \mbox{for } n\leq 2\\ 6 | T(\sqrt{n}) + a & \mbox{else} 7 | \end{array} 8 | \right. 9 | \end{equation} 10 | Provide an expression for the runtime $T(n)$ if the recurrence can be solved 11 | with the Master Theorem. 12 | Hint: Find a suitable substitution for $\sqrt{n}$, such that the Master Theorem 13 | can be used. -------------------------------------------------------------------------------- /ExerciseSheet-9/Exercises/eng/999_Commit.tex: -------------------------------------------------------------------------------- 1 | \task{Commit}\\ 2 | 3 | Commit your code into the SVN in a new subdirectory 4 | \textbf{uebungsblatt\_0\ExerciseSheetNumber} and a PDF with the solutions of the 5 | theoretical tasks in the same folder. Commit your feedback in a text file 6 | \emph{erfahrungen.txt} as usual. Please specify: The length of time needed for 7 | the exercise. Which tasks have been difficult for you and where did you have 8 | problems? How much time did you spend to solve the problems? 9 | -------------------------------------------------------------------------------- /ExerciseSheet-9/Images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-9/Images/uni_logo.png -------------------------------------------------------------------------------- /ExerciseSheet-9/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /ExerciseSheet-9/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-9/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /ExerciseSheet-9/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{9} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\[0.3mm] 5 | Florian Eggenhofer\\[0.3mm] 6 | Michael Uhl\\[0.3mm] 7 | Rick Gelhausen 8 | } 9 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} 10 | \def\DaphneLink{https://daphne.informatik.uni-freiburg.de/ws1819/AlgoDatEse/} 11 | -------------------------------------------------------------------------------- /ExerciseSheet-9/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-9/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /ExerciseSheet-9/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /ExerciseSheet-9/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/ExerciseSheet-9/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /Introduction/EAU_IEMS_Einfuehrungsveranstaltung_WS1617.odp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Introduction/EAU_IEMS_Einfuehrungsveranstaltung_WS1617.odp -------------------------------------------------------------------------------- /Introduction/EAU_IEMS_Einfuehrungsveranstaltung_WS1819.ppt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Introduction/EAU_IEMS_Einfuehrungsveranstaltung_WS1819.ppt -------------------------------------------------------------------------------- /Lecture-1/Chapter/eng/20_Links.tex: -------------------------------------------------------------------------------- 1 | \subsection{Links} 2 | 3 | \begin{frame}[t]{Links} 4 | \hfill 5 | \qrcode[height=6em]{\LectureHomepageLink}\\ 6 | \vspace*{-0.5em} 7 | \textbf{Homepage:} 8 | \begin{itemize} 9 | \item 10 | Exercise sheets 11 | \item 12 | Lectures 13 | \item 14 | Materials 15 | \end{itemize} 16 | \begin{center} 17 | Link to 18 | \color{MainA}\href{\LectureHomepageLink}{\LectureHomepageLabel} 19 | \end{center} 20 | \end{frame} -------------------------------------------------------------------------------- /Lecture-1/Code/DocTest.py: -------------------------------------------------------------------------------- 1 | def subtract_one(n): 2 | """Subtracts 1 from n 3 | 4 | >>> subtract_one(5) 5 | 4 6 | 7 | >>> subtract_one(3) 8 | 2 9 | """ 10 | return n-1 11 | 12 | if __name__ == "__main__": 13 | print("2 - 1 = %d" % subtract_one(2)) 14 | -------------------------------------------------------------------------------- /Lecture-1/Code/MinSort/MinSort.cpp: -------------------------------------------------------------------------------- 1 | void min_sort(int *lst, size_t len) { 2 | for (int i = 0; i < len; i++) { 3 | int min = i; 4 | 5 | for (int j = i + 1; j < len; j++) 6 | if (lst[j] < lst[min]) 7 | min = j; 8 | 9 | if (min != i) { 10 | int tmp = lst[i]; 11 | lst[i] = lst[min]; 12 | lst[min] = tmp; 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Lecture-1/Code/MinSort/MinSort.java: -------------------------------------------------------------------------------- 1 | void minSort(int[] lst) { 2 | for (int i = 0; i < lst.length; i++) { 3 | int min = i; 4 | 5 | for (int j = i + 1; j < lst.length; j++) 6 | if (lst[j] < lst[min]) 7 | min = j; 8 | 9 | if (min != i) { 10 | int tmp = lst[i]; 11 | lst[i] = lst[min]; 12 | lst[min] = tmp; 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Lecture-1/Code/MinSort/MinSort.py: -------------------------------------------------------------------------------- 1 | def minsort(lst): 2 | for i in range(0, len(lst)-1): 3 | minimum = i 4 | 5 | for j in range(i+1, len(lst)): 6 | if lst[j] < lst[minimum]: 7 | minimum = j 8 | 9 | if minimum != i: 10 | lst[i], lst[minimum] = \ 11 | lst[minimum], lst[i] 12 | 13 | return lst 14 | -------------------------------------------------------------------------------- /Lecture-1/Images/Copyright/cc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-1/Images/Copyright/cc.png -------------------------------------------------------------------------------- /Lecture-1/Images/Heap/MinHeap_Valid.tikz.tex: -------------------------------------------------------------------------------- 1 | \begin{tikzpicture}[ 2 | node/.style={ 3 | color=black 4 | }, 5 | path/.style={ 6 | ->, 7 | line width=0.25em, 8 | color=MainA 9 | }, 10 | level/.style={ 11 | sibling distance = 8.0em/#1, 12 | level distance = 4.0em 13 | } 14 | ]% 15 | \node [node] (root) {2} 16 | child [path] { 17 | node [node] {3} 18 | child {node [node] {11}} 19 | child {node [node] {7}} 20 | } 21 | child [path] { 22 | node [node] {4} 23 | child {node [node] {5}} 24 | child {node [node] {8}} 25 | }; 26 | \end{tikzpicture} -------------------------------------------------------------------------------- /Lecture-1/Images/HeapSort/Heapify_Fifth.tikz.tex: -------------------------------------------------------------------------------- 1 | \begin{tikzpicture}[ 2 | node/.style={ 3 | color=black 4 | }, 5 | path/.style={ 6 | ->, 7 | line width=0.25em, 8 | color=Mittel-Blau 9 | }, 10 | level/.style={ 11 | sibling distance = 7.0em/#1, 12 | level distance = 4.0em 13 | } 14 | ]% 15 | \node [node] {2} 16 | child [path] { 17 | node [node] (left) {3} 18 | child[path] {node [node] {\textbf{11}}} 19 | child[path] {node [node] {7}} 20 | } 21 | child [path] { 22 | node [node] (right) {4} 23 | child[path] {node [node] {5}} 24 | child[path] {node [node] {8}} 25 | }; 26 | \end{tikzpicture} -------------------------------------------------------------------------------- /Lecture-1/Images/HeapSort/MinHeap_Repair_Third.tikz.tex: -------------------------------------------------------------------------------- 1 | \begin{tikzpicture}[ 2 | node/.style={ 3 | color=black 4 | }, 5 | path/.style={ 6 | ->, 7 | line width=0.25em, 8 | color=MainA 9 | }, 10 | level/.style={ 11 | sibling distance = 6.0em/#1, 12 | level distance = 4.0em 13 | } 14 | ]% 15 | \node [node] (root) {2} 16 | child [path] { 17 | node [node] {3} 18 | child[path] {node [node, color=MainB] {\textbf{11}}} 19 | child[path] {node [node] {7}} 20 | } 21 | child [path] { 22 | node [node] {4} 23 | child {node [node] {5}} 24 | child {node [node] {8}} 25 | }; 26 | \end{tikzpicture} -------------------------------------------------------------------------------- /Lecture-1/Images/Introduction/OpenStreetmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-1/Images/Introduction/OpenStreetmap.png -------------------------------------------------------------------------------- /Lecture-1/Images/Introduction/blast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-1/Images/Introduction/blast.png -------------------------------------------------------------------------------- /Lecture-1/Images/Introduction/edit-distance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-1/Images/Introduction/edit-distance.png -------------------------------------------------------------------------------- /Lecture-1/Images/Introduction/eyjafjallajoekull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-1/Images/Introduction/eyjafjallajoekull.png -------------------------------------------------------------------------------- /Lecture-1/Images/Jokes/Tree.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-1/Images/Jokes/Tree.jpg -------------------------------------------------------------------------------- /Lecture-1/Images/MinSort/Minsort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-1/Images/MinSort/Minsort.png -------------------------------------------------------------------------------- /Lecture-1/Literature/General/Git.bib: -------------------------------------------------------------------------------- 1 | @Online{git_scm, 2 | type = {article}, 3 | key = {git --fast-version-control}, 4 | title = {{git --fast-version-control}\eatdot}, 5 | publisher = {{git}}, 6 | note = {\url{https://git-scm.com/}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-1/Literature/General/Svn.bib: -------------------------------------------------------------------------------- 1 | @Online{svn_scm, 2 | type = {article}, 3 | key = {Apache Subversion}, 4 | title = {{Apache Subversion}\eatdot}, 5 | publisher = {{svn}}, 6 | note = {\url{https://subversion.apache.org/}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-1/Literature/eng/WikipediaSort.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_heapsort, 2 | type = {article}, 3 | key = {Wikipedia - Heapsort}, 4 | title = {{Wikipedia - Heapsort}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Heapsort}\eatdot} 7 | } 8 | @Online{wikipedia_selectionsort, 9 | type = {article}, 10 | key = {Wikipedia - Selectionsort}, 11 | title = {{Wikipedia - Selectionsort}\eatdot}, 12 | publisher = {Wikipedia}, 13 | note = {\url{https://de.wikipedia.org/wiki/Selectionsort}\eatdot} 14 | } -------------------------------------------------------------------------------- /Lecture-1/Packages/LecturePackages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage[binary-units=true]{siunitx} 2 | 3 | \usepackage{adjustbox} 4 | \usepackage{capt-of} 5 | 6 | \usepackage{tabularx, colortbl} % Tables 7 | \usepackage{booktabs} 8 | 9 | \usepackage{tikz} 10 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric,calc} 11 | 12 | \usepackage{wasysym} % Checkmark etc. 13 | 14 | \usepackage{listings} % Code 15 | \input{Styles/Code/listings-python.prf} % Python style 16 | \input{Styles/Code/listings-java-eclipse.prf} % Java style 17 | \input{Styles/Code/listings-cpp-eclipse.prf} % C++ style 18 | 19 | \usepackage{qrcode} -------------------------------------------------------------------------------- /Lecture-1/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-1/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-1/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-1/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} 3 | -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedList.cpp: -------------------------------------------------------------------------------- 1 | LinkedList::LinkedList() { 2 | _itemCount = 0; 3 | _head = new Node(); 4 | _last = _head; 5 | } 6 | // Remove and delete all elements first! 7 | LinkedList::~LinkedList() { 8 | delete _head; 9 | } 10 | 11 | uint64_t LinkedList::size() const { 12 | return itemCount; 13 | } 14 | bool LinkedList::isEmpty() const { 15 | return (itemCount == 0); 16 | } -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedListAppend.py: -------------------------------------------------------------------------------- 1 | def append(self, value): 2 | last.nextNode = Node(value) 3 | last = last.NextNode 4 | itemCount += 1 -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedListContains.py: -------------------------------------------------------------------------------- 1 | def contains(self, value): 2 | cur = head 3 | 4 | for i in range(0, itemCount): 5 | cur = cur.nextNode 6 | if cur.value == value: 7 | return True 8 | 9 | return False -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedListGet.py: -------------------------------------------------------------------------------- 1 | def get(self, pos): 2 | if pos < 0 or pos >= itemCount: 3 | return None 4 | 5 | cur = head 6 | for i in range(0, pos): 7 | cur = cur.nextNode 8 | 9 | return cur -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedListInsertAfter.py: -------------------------------------------------------------------------------- 1 | def insertAfter(self, cur, value): 2 | if cur == last: 3 | # also update last node 4 | append(value) 5 | else: 6 | # last node is not modified 7 | cur.nextNode = Node(value, \ 8 | cur.nextNode) 9 | itemCount += 1 -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedListPart1.h: -------------------------------------------------------------------------------- 1 | class LinkedList { 2 | struct Node { 3 | int x; 4 | Node *next; 5 | }; 6 | 7 | private: 8 | int _itemCount; 9 | Node _head; 10 | Node _last; 11 | 12 | public: 13 | LinkedList(); 14 | int size() const; 15 | bool isEmpty() const; 16 | -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedListPart1.java: -------------------------------------------------------------------------------- 1 | /** 2 | * A singly linked list with data type int. 3 | */ 4 | public class LinkedList { 5 | 6 | private long itemCount; 7 | private Node head; 8 | private Node last; 9 | 10 | public LinkedList() { 11 | itemCount = 0; 12 | head = new Node(); 13 | last = head; 14 | } 15 | -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedListPart1.py: -------------------------------------------------------------------------------- 1 | class LinkedList: 2 | def __init__(self): 3 | self.itemCount = 0 4 | self.head = Node() 5 | self.last = self.head 6 | 7 | def size(self): 8 | return self.itemCount 9 | 10 | def isEmpty(self): 11 | return self.itemCount == 0 -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedListPart2.h: -------------------------------------------------------------------------------- 1 | 2 | void append(int value); 3 | void insertAfter(Node cur, int value); 4 | void remove(Node cur); 5 | 6 | Node get(int position) const; 7 | bool contains(int value) const; 8 | }; 9 | -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedListPart2.java: -------------------------------------------------------------------------------- 1 | public int size() { 2 | return itemCount; 3 | } 4 | 5 | public boolean isEmpty() { 6 | return (itemCount == 0); 7 | } 8 | 9 | public void add (int data) { ... } 10 | public void insertAfter(Node cur, int data) 11 | { ... } 12 | public void remove(Node cur) { ... } 13 | public Node get(int position) { ... } 14 | public boolean contains( int data) { ... } 15 | } 16 | -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedListPart2.py: -------------------------------------------------------------------------------- 1 | def append(self, value): 2 | ... 3 | 4 | def insertAfter(self, cur, value): 5 | ... 6 | 7 | def remove(self, cur): 8 | ... 9 | 10 | def get(self, position): 11 | ... 12 | 13 | def contains(self, value): 14 | ... -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/LinkedListRemove.py: -------------------------------------------------------------------------------- 1 | def remove(self, cur): 2 | pre = first 3 | while pre.nextNode != cur: 4 | pre = pre.nextNode 5 | 6 | pre.nextNode = cur.nextNode 7 | itemCount -= 1 8 | 9 | if pre.nextNode == None: 10 | last = pre -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/Node.h: -------------------------------------------------------------------------------- 1 | template class Node { 2 | private: 3 | T _value; 4 | Node* _next; 5 | 6 | public: 7 | Node(T value); 8 | Node(T value, Node* next); 9 | ~Node(); 10 | 11 | T getValue() const; 12 | void setValue(T value); 13 | 14 | Node* getNext() const; 15 | void setNext(Node* next); 16 | }; -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/Node.py: -------------------------------------------------------------------------------- 1 | class Node: 2 | """ Defines a node of a singly linked 3 | list. 4 | """ 5 | 6 | def __init__(self, value, nextNode=None): 7 | self.value = value 8 | self.nextNode = nextNode 9 | 10 | -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/NodePart1.cpp: -------------------------------------------------------------------------------- 1 | Node::Node(T value) : _value(value) { } 2 | Node::Node(T value, Node* next) 3 | : _value(value), _next(next) { } 4 | 5 | Node::~Node() { } -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/NodePart1.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Defines a node of a singly linked list. 3 | * 4 | * @param Data type of the node 5 | */ 6 | public class Node { 7 | 8 | private T value; 9 | private Node next; 10 | 11 | ... -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/NodePart1new.cpp: -------------------------------------------------------------------------------- 1 | class Listelem 2 | {@\onslide<2->@ 3 | private: 4 | int data; 5 | Listelem* next; @\onslide<3->@//Pointer instead of reference 6 | @\onslide<4->@ 7 | public: 8 | Listelem(int d) 9 | { data = d; next = NULL; } 10 | 11 | Listelem(int d, Listelem* n) 12 | { data = d; next = n; } 13 | 14 | -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/NodePart1new.java: -------------------------------------------------------------------------------- 1 | public class Listelem@\onslide<2->@ 2 | { //2 fields: integer and reference@\onslide<3->@ 3 | //private only available in class 4 | private int data;@\onslide<3->@ 5 | private Listelem next; 6 | @\onslide<4->@ 7 | //2 constructors: for instance of class 8 | public Listelem(int d) 9 | { data = d; next = null; } 10 | @\onslide<5->@ 11 | public Listelem(int d, Listnode n) 12 | { data = d; next = n; } 13 | @\onslide<6->@ 14 | //adopted from Mary K.Vernon 15 | //Introduction to Data Structures 16 | 17 | -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/NodePart2.cpp: -------------------------------------------------------------------------------- 1 | T Node::getValue() const { 2 | return _value; 3 | } 4 | void Node::setValue(T value) { 5 | _value = value; 6 | } 7 | 8 | Node* Node::getNext() const { 9 | return _next; 10 | } 11 | void Node::setNext(Node* next) { 12 | _next = next; 13 | } -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/NodePart2.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Creates a new node with a next node 3 | * assigned. 4 | */ 5 | public Node(T @{\color{java_variable}value}@, Node @{\color{java_variable}next}@) { 6 | this.value = @{\color{java_variable}value}@; 7 | this.next = @{\color{java_variable}next}@; 8 | } 9 | /** 10 | * Creates a new node without a next 11 | * node assigned. 12 | */ 13 | public Node(T @{\color{java_variable}value}@) { 14 | this.value = @{\color{java_variable}value}@; 15 | this.next = null; 16 | } -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/NodePart2new.cpp: -------------------------------------------------------------------------------- 1 | @\onslide<2->@ 2 | int getData() { return data; } 3 | void setData(int d) {data = d; } 4 | @\onslide<3->@ 5 | Listelem* getNext() { return next; } 6 | void setNext(Listelem* n) { next = n; } 7 | } 8 | -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/NodePart2new.java: -------------------------------------------------------------------------------- 1 | @\onslide<2->@ 2 | //Function to read and write private fields 3 | public int getData() {return data; } 4 | public void setData(int d) { data = d; } 5 | @\onslide<3->@ 6 | public Listelem getNext() { return next; } 7 | public void setNext(Listelem n) { next = n; } 8 | @\onslide<4->@ 9 | //Integer represents possible data, e.g. 10 | //self defined refence datatypes 11 | } 12 | -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/NodePart3.java: -------------------------------------------------------------------------------- 1 | public T getValue() { 2 | return value; 3 | } 4 | public void setValue(T @{\color{java_variable}value}@) { 5 | this.value = @{\color{java_variable}value}@; 6 | } 7 | 8 | public Node getNext() { 9 | return next; 10 | } 11 | public void setNext(Node @{\color{java_variable}next}@) { 12 | this.next = @{\color{java_variable}next}@; 13 | } 14 | } -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/Remove.py: -------------------------------------------------------------------------------- 1 | if cur == first: 2 | first = first.nextNode 3 | else: 4 | pre = first 5 | while pre.nextNode != cur: 6 | pre = pre.nextNode 7 | 8 | pre.nextNode = cur.nextNode -------------------------------------------------------------------------------- /Lecture-10/Code/LinkedList/RemoveStep1.py: -------------------------------------------------------------------------------- 1 | pre = first 2 | while pre.nextNode != cur: 3 | pre = pre.nextNode -------------------------------------------------------------------------------- /Lecture-10/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | \begin{itemize} 3 | \item <2->The few people who gave feedback wrote that it was simple to doable. 4 | \item <3->Mastertheorem already on exercise sheet, but not in lecture 5 | \item <4->Missing support in forum 6 | \end{itemize} 7 | \end{frame} 8 | -------------------------------------------------------------------------------- /Lecture-10/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | \begin{itemize} 3 | \item <2->Added german lecture recordings to current semester page 4 | \item <3->Lecture recordings are now password protected 5 | \end{itemize} 6 | \end{frame} 7 | -------------------------------------------------------------------------------- /Lecture-10/Literature/eng/BinarySearchTree.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_binary_search_tree, 2 | type = {article}, 3 | key = {Wikipedia - Binary search tree}, 4 | title = {{Binary search tree}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Binary_search_tree}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-10/Literature/eng/LinkedList.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_linked_list, 2 | type = {article}, 3 | key = {Wikipedia - Linked list}, 4 | title = {{Linked list}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Linked_list}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-10/Packages/LecturePackages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage[binary-units=true]{siunitx} 2 | 3 | \usepackage{tabularx, colortbl} % Tables 4 | 5 | \usepackage{adjustbox} 6 | \usepackage{tikz} 7 | \usetikzlibrary{ 8 | patterns, 9 | arrows, 10 | decorations.pathreplacing, 11 | shapes.geometric, 12 | positioning 13 | } 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | \usepackage{eurosym} 17 | 18 | \usepackage{listings} % Code 19 | \input{Styles/Code/listings-python.prf} % Python style 20 | \input{Styles/Code/listings-java-eclipse.prf} % Java style 21 | \input{Styles/Code/listings-cpp-eclipse.prf} % C++ style 22 | -------------------------------------------------------------------------------- /Lecture-10/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-10/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-10/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{10} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{January~2019} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-10/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | -------------------------------------------------------------------------------- /Lecture-10/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-11/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-11/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-11/Images/(a,b)-Tree/(3,5)-Tree_Search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-11/Images/(a,b)-Tree/(3,5)-Tree_Search.png -------------------------------------------------------------------------------- /Lecture-11/Images/AVL-Tree/AVL-Tree_Insert1To10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-11/Images/AVL-Tree/AVL-Tree_Insert1To10.png -------------------------------------------------------------------------------- /Lecture-11/Images/Motivation/BinarySearchTree_Ordered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-11/Images/Motivation/BinarySearchTree_Ordered.png -------------------------------------------------------------------------------- /Lecture-11/Images/Motivation/BinarySearchTree_Random.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-11/Images/Motivation/BinarySearchTree_Random.png -------------------------------------------------------------------------------- /Lecture-11/Images/Red-Black-Tree/Red-Black-Tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-11/Images/Red-Black-Tree/Red-Black-Tree.png -------------------------------------------------------------------------------- /Lecture-11/Literature/eng/(a_b)-Tree.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_a_b_tree, 2 | type = {article}, 3 | key = {Wikipedia - (a,b)-tree}, 4 | title = {{(a,b)-tree}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/(a,b)-tree}\eatdot} 7 | } 8 | @Online{wikipedia_2_4_tree, 9 | type = {article}, 10 | key = {Wikipedia - 2-3-4 tree}, 11 | title = {{2-3-4 tree}\eatdot}, 12 | publisher = {Wikipedia}, 13 | note = {\url{https://en.wikipedia.org/wiki/2%E2%80%933%E2%80%934_tree}\eatdot} 14 | } -------------------------------------------------------------------------------- /Lecture-11/Literature/eng/AVL-Tree.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_avl_tree, 2 | type = {article}, 3 | key = {Wikipedia - AVL tree}, 4 | title = {{AVL tree}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/AVL_tree}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-11/Literature/eng/GnarleyTrees.bib: -------------------------------------------------------------------------------- 1 | @Online{gnarley_trees, 2 | type = {article}, 3 | key = {Gnarley Trees}, 4 | title = {{Gnarley Trees}\eatdot}, 5 | publisher = {Jakub (kuko) Kováč}, 6 | note = {\url{https://people.ksp.sk/~kuko/gnarley-trees/}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-11/Literature/eng/Red-Black-Tree.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_red_black_tree, 2 | type = {article}, 3 | key = {Wikipedia - Red-black tree}, 4 | title = {{Red-black tree}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Red%E2%80%93black_tree}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-11/Packages/LecturePackages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage[binary-units=true]{siunitx} 2 | 3 | \usepackage{adjustbox} 4 | 5 | \usepackage{tabularx, colortbl} % Tables 6 | 7 | \usepackage{tikz} 8 | \usetikzlibrary{ 9 | patterns, 10 | arrows, 11 | arrows.meta, 12 | decorations.pathreplacing, 13 | decorations.markings, 14 | shapes.geometric} 15 | 16 | \usepackage{wasysym} % Checkmark etc. 17 | 18 | \usepackage{listings} % Code 19 | \input{Styles/Code/listings-python.prf} % Python style 20 | 21 | \usepackage{qrcode} -------------------------------------------------------------------------------- /Lecture-11/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-11/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-11/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{11} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{January~2019} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | 10 | \def\GnarleyTreesLink{https://people.ksp.sk/\%7ekuko/gnarley-trees/} 11 | -------------------------------------------------------------------------------- /Lecture-11/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-11/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-12/Code/Graph/Graph.h: -------------------------------------------------------------------------------- 1 | template 2 | class @{\color{cpp_typedef}Graph}@ { 3 | private: 4 | std::@{\color{cpp_typedef}vector}@ _vertices; 5 | std::@{\color{cpp_typedef}map}@> _edges; 6 | 7 | public: 8 | @\textbf{Graph}@(); 9 | virtual ~@\textbf{Graph}@(); 10 | 11 | void @\textbf{addVertex}@(V vertex); 12 | void @\textbf{addEdge}@(V from, V to); 13 | std::@{\color{cpp_typedef}string}@ @\textbf{toString}@(); 14 | }; -------------------------------------------------------------------------------- /Lecture-12/Code/Graph/GraphPart1.cpp: -------------------------------------------------------------------------------- 1 | template @\textbf{Graph::Graph}@() { } 2 | template @\textbf{Graph::\~{}Graph}@() { } 3 | 4 | template 5 | void @\textbf{Graph::addVertex}@(V vertex) { 6 | _vertices.push_back(vertex); 7 | } 8 | 9 | template 10 | void @\textbf{Graph::addEdge}@(V from, V to) { 11 | _edges[from].push_back(to); 12 | } -------------------------------------------------------------------------------- /Lecture-12/Code/Graph/GraphPart1.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @param The type of the vertices 3 | */ 4 | public class Graph { 5 | 6 | protected List vertices; 7 | protected Map> edges; 8 | 9 | public Graph() { 10 | vertices = new ArrayList<>(); 11 | edges = new TreeMap<>(); 12 | } 13 | 14 | ... -------------------------------------------------------------------------------- /Lecture-12/Code/Graph/GraphPart1.py: -------------------------------------------------------------------------------- 1 | class Graph: 2 | def __init__(self): 3 | self.vertices = [] 4 | self.edges = [] 5 | 6 | def addVertice(self, vert): 7 | self.vertices.append(vert) 8 | 9 | def addEdge(self, fromVert, toVert, cost): 10 | self.edges.append( \ 11 | (fromVert, toVert, cost)) 12 | 13 | ... 14 | -------------------------------------------------------------------------------- /Lecture-12/Code/Graph/GraphPart2.cpp: -------------------------------------------------------------------------------- 1 | template 2 | std::@{\color{cpp_typedef}string}@ @\textbf{Graph::toString}@() { 3 | std::@{\color{cpp_typedef}ostringstream}@ s, tuples; 4 | @{\color{cpp_typedef}uint32\_t}@ totalEdges = 0; 5 | 6 | for (std::@{\color{cpp_typedef}pair}@> edges 7 | : _edges) { 8 | for (V to : edges.second) { 9 | ++totalEdges; 10 | tuples << ", (" << edges.first << ", " 11 | << to << ")"; 12 | } 13 | } 14 | 15 | ... -------------------------------------------------------------------------------- /Lecture-12/Code/Graph/GraphPart2.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Adds a new vertex. 3 | * 4 | * @param vertex The new vertex 5 | */ 6 | public Graph addVertex(V vertex) { 7 | // Just add the vertex to the list 8 | $\text{\color{java_static}vertices}$.add(vertex); 9 | return this; 10 | } -------------------------------------------------------------------------------- /Lecture-12/Code/Graph/GraphPart2.py: -------------------------------------------------------------------------------- 1 | ... 2 | 3 | def toString(self): 4 | return '{' 5 | + ', '.join( \ 6 | [str(len(self.vertices)), \ 7 | str(len(self.edges))] \ 8 | + ["(%s, %s)" % tup \ 9 | for tup in self.edges]) \ 10 | + '}' -------------------------------------------------------------------------------- /Lecture-12/Code/Graph/GraphPart3.cpp: -------------------------------------------------------------------------------- 1 | ... 2 | 3 | s << "{" << _vertices.size() << ", " 4 | << totalEdges << tuples.str() << "}"; 5 | 6 | return s.str(); 7 | } 8 | -------------------------------------------------------------------------------- /Lecture-12/Code/Graph/GraphPart3.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Adds a new directed edge from one vertex 3 | * to the other. 4 | */ 5 | public Graph addEdge(V from, V to) { 6 | // If no adjacency-list (set) for the start 7 | // vertex was created a new one is created 8 | if (!$\text{\color{java_static}edges}$.containsKey(from)) { 9 | $\text{\color{java_static}edges}$.put(from, new TreeSet<>()); 10 | } 11 | 12 | // Insert the new edge into the set 13 | $\text{\color{java_static}edges}$.get(from).add(to); 14 | return this; 15 | } -------------------------------------------------------------------------------- /Lecture-12/Code/Handout/Graph/Graph.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef GRAPH_H_ 3 | #define GRAPH_H_ 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | template 10 | class Graph { 11 | private: 12 | std::vector _vertices; 13 | std::map> _edges; 14 | 15 | public: 16 | Graph(); 17 | virtual ~Graph(); 18 | 19 | void addVertex(V vertex); 20 | void addEdge(V from, V to); 21 | std::string toString(); 22 | }; 23 | 24 | #endif /* GRAPH_H_ */ 25 | -------------------------------------------------------------------------------- /Lecture-12/Code/Handout/Graph/Graph.py: -------------------------------------------------------------------------------- 1 | class Graph: 2 | def __init__(self): 3 | self.vertices = [] 4 | self.edges = [] 5 | 6 | def addVertice(self, vert): 7 | self.vertices.append(vert) 8 | 9 | def addEdge(self, fromVert, toVert): 10 | self.edges.append((fromVert, toVert)) 11 | 12 | def toString(self): 13 | return '{' 14 | + ', '.join( \ 15 | [str(len(self.vertices)), \ 16 | str(len(self.edges))] \ 17 | + ["(%s, %s)" % tup \ 18 | for tup in self.edges]) \ 19 | + '}' -------------------------------------------------------------------------------- /Lecture-12/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | \end{frame} 3 | -------------------------------------------------------------------------------- /Lecture-12/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | \end{frame} 3 | -------------------------------------------------------------------------------- /Lecture-12/Images/Graphs/Degree_Undirected.tikz.tex: -------------------------------------------------------------------------------- 1 | \begin{tikzpicture}[ 2 | vertice/.style={ 3 | circle, 4 | draw=Mittel-Blau, 5 | color=Mittel-Blau, 6 | inner sep=0em, 7 | minimum size=1.75em, 8 | line width=0.1em, 9 | font=\large 10 | }, edge/.style={ 11 | draw=Mittel-Gruen, 12 | line width=0.2em 13 | } 14 | ]% 15 | 16 | \draw (0.0, 0.0) node[vertice] (vert0) {}; 17 | 18 | \draw[edge] (vert0) -- (30:4em); 19 | \draw[edge] (vert0) -- (0:4em); 20 | \draw[edge] (vert0) -- (330:4em); 21 | 22 | \draw[edge] (vert0) -- (180:4em); 23 | \end{tikzpicture}% -------------------------------------------------------------------------------- /Lecture-12/Images/Graphs/Freiburg_OpenStreetMap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/Graphs/Freiburg_OpenStreetMap.png -------------------------------------------------------------------------------- /Lecture-12/Images/Graphs/GraphVertice.tikz.tex: -------------------------------------------------------------------------------- 1 | \raisebox{-0.25em}{% 2 | \begin{adjustbox}{height=1.25em}% 3 | \begin{tikzpicture}[ 4 | vertice/.style={ 5 | circle, 6 | draw=Mittel-Blau, 7 | color=Mittel-Blau, 8 | inner sep=0em, 9 | minimum size=1.75em, 10 | line width=0.1em, 11 | font=\large 12 | } 13 | ]% 14 | \draw (0.0, 0.0) node[vertice] (vert0) {\verticenumber}; 15 | \end{tikzpicture}% 16 | \end{adjustbox}% 17 | }% -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_black_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_black_white.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_black_white_excel_data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_black_white_excel_data.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_data.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search10.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search11.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search12.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search2.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search3.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search4.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search5.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search6.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search7.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search8.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_excel_search9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_excel_search9.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_final.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_final_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_final_source.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_labeled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_labeled.png -------------------------------------------------------------------------------- /Lecture-12/Images/ImageProcessing/particles_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Images/ImageProcessing/particles_source.png -------------------------------------------------------------------------------- /Lecture-12/Literature/eng/Connectivity.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_graph_connectivity, 2 | type = {article}, 3 | key = {Wikipedia - Connectivity (graph theory)}, 4 | title = {{Connectivity (graph theory)}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = 7 | {\url{https://en.wikipedia.org/wiki/Connectivity_(graph_theory)}\eatdot} 8 | } -------------------------------------------------------------------------------- /Lecture-12/Literature/eng/GraphSearch.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_depth_first_search, 2 | type = {article}, 3 | key = {Wikipedia - Depth-first search}, 4 | title = {{Depth-first search}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Depth-first_search}\eatdot} 7 | } 8 | @Online{wikipedia_breadth_first_search, 9 | type = {article}, 10 | key = {Wikipedia - Breadth-first search}, 11 | title = {{Breadth-first search}\eatdot}, 12 | publisher = {Wikipedia}, 13 | note = {\url{https://en.wikipedia.org/wiki/Breadth-first_search}\eatdot} 14 | } -------------------------------------------------------------------------------- /Lecture-12/Packages/LecturePackages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage[binary-units=true]{siunitx} 2 | 3 | \usepackage{adjustbox} 4 | 5 | \usepackage{tabularx, colortbl, multirow} % Tables 6 | 7 | \usepackage{tikz} 8 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 9 | 10 | \usepackage{wasysym} % Checkmark etc. 11 | 12 | \usepackage{listings} % Code 13 | \input{Styles/Code/listings-python.prf} % Python style 14 | \input{Styles/Code/listings-java-eclipse.prf} % Java style 15 | \input{Styles/Code/listings-cpp-eclipse.prf} % C++ style 16 | 17 | \usepackage[justification=centerlast]{caption} -------------------------------------------------------------------------------- /Lecture-12/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-12/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-12/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{12} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{January~2019} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-12/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-12/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-13/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-13/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/Axon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/Axon.jpg -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/Axon_CloseUp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/Axon_CloseUp.jpg -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraMapTF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraMapTF.png -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o1.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o2.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o3.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o4.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o5.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o6.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o7.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraTreeTF-split-o8.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraTreeTF.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraTreeTF.odg -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraTreeTF.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraTreeTF.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/DijkstraTree_WithOverlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/DijkstraTree_WithOverlay.png -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/Edsger_Wybe_Dijkstra.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/Edsger_Wybe_Dijkstra.jpg -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/Vertex/Vertex_Active.tikz.tex: -------------------------------------------------------------------------------- 1 | \begin{tikzpicture}[ 2 | vertex_base/.style={ 3 | circle, 4 | inner sep=0em, 5 | minimum size=1.75em, 6 | line width=0.1em, 7 | font=\large, 8 | solid 9 | }, 10 | vertex_active/.style={ 11 | vertex_base, 12 | draw=Mittel-Blau, 13 | color=Mittel-Blau, 14 | fill=Hell-Blau 15 | } 16 | ]% 17 | \draw (0, 0) node[vertex_active] {37}; 18 | \end{tikzpicture}% 19 | -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/Vertex/Vertex_Settled.tikz.tex: -------------------------------------------------------------------------------- 1 | \begin{tikzpicture}[ 2 | vertex_base/.style={ 3 | circle, 4 | inner sep=0em, 5 | minimum size=1.75em, 6 | line width=0.1em, 7 | font=\large, 8 | solid 9 | }, 10 | vertex_settled/.style={ 11 | vertex_base, 12 | draw=Mittel-Blau, 13 | color=Mittel-Blau, 14 | fill=orange!50!yellow 15 | } 16 | ]% 17 | \draw (0, 0) node[vertex_settled] {42}; 18 | \end{tikzpicture}% 19 | -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/Vertex/Vertex_Unreached.tikz.tex: -------------------------------------------------------------------------------- 1 | \begin{tikzpicture}[ 2 | vertex_base/.style={ 3 | circle, 4 | inner sep=0em, 5 | minimum size=1.75em, 6 | line width=0.1em, 7 | font=\large, 8 | solid 9 | }, vertex_unreached/.style={ 10 | vertex_base, 11 | draw=Mittel-Blau, 12 | color=Mittel-Blau, 13 | fill=white 14 | } 15 | ]% 16 | \draw (0, 0) node[vertex_unreached] {}; 17 | \end{tikzpicture}% -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o1.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o10.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o11.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o11.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o2.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o3.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o4.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o5.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o6.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o7.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o8.pdf -------------------------------------------------------------------------------- /Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Images/Dijkstra/disjkstra-priority-queue-o9.pdf -------------------------------------------------------------------------------- /Lecture-13/Literature/General/Literature.bib: -------------------------------------------------------------------------------- 1 | @BOOK{eman2015, 2 | AUTHOR = {Prof. Dr.-Ing. Y. Manoli}, 3 | YEAR = {2015}, 4 | TITLE = {Skript zur Vorlesung; Elektronik; Firt-H\"uttinger-Professur f\"ur Mikroelektronik; IMTEK - Universit\"at Freiburg}, 5 | } -------------------------------------------------------------------------------- /Lecture-13/Literature/eng/Dijkstra.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_graph_connectivity, 2 | type = {article}, 3 | key = {Wikipedia - Dijkstra's algorithm}, 4 | title = {{Dijkstra's algorithm}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = 7 | {\url{https://en.wikipedia.org/wiki/Dijkstra's_algorithm}\eatdot} 8 | } -------------------------------------------------------------------------------- /Lecture-13/Literature/eng/ShortestPath.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_shortest_path_problem, 2 | type = {article}, 3 | key = {Wikipedia - Shortest path problem}, 4 | title = {{Shortest path problem}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Shortest_path_problem}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-13/Packages/LecturePackages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage[binary-units=true]{siunitx} 2 | 3 | \usepackage{adjustbox} 4 | 5 | \usepackage{tabularx, colortbl} % Tables 6 | 7 | \usepackage{tikz} 8 | \usetikzlibrary{ 9 | calc, 10 | patterns, 11 | arrows, 12 | decorations.pathreplacing, 13 | shapes.geometric, 14 | shapes.misc 15 | } 16 | 17 | \usepackage{wasysym} % Checkmark etc. 18 | 19 | \usepackage{listings} % Code 20 | \input{Styles/Code/listings-python.prf} % Python style 21 | 22 | \usepackage{qrcode} -------------------------------------------------------------------------------- /Lecture-13/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-13/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-13/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{13} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{March~2018} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-13/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-13/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-14/Code/EditDistance/edit_distance.py: -------------------------------------------------------------------------------- 1 | def edit_distance(x, y): 2 | if len(x) == 0: 3 | return len(y) 4 | if len(y) == 0: 5 | return len(x) 6 | 7 | ed1 = edit_distance(x, y[:-1]) + 1 8 | ed2 = edit_distance(x[:-1], y) + 1 9 | ed3 = edit_distance(x[:-1], y[:-1]) 10 | if x[-1] != y[-1]: 11 | ed3 += 1 12 | 13 | return min(ed1, ed2, ed3) -------------------------------------------------------------------------------- /Lecture-14/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-14/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-14/Images/Additional_Applications/Whole_Genome_Shotgun_Sequencing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-14/Images/Additional_Applications/Whole_Genome_Shotgun_Sequencing.png -------------------------------------------------------------------------------- /Lecture-14/Images/Introduction/Search_Volcano.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-14/Images/Introduction/Search_Volcano.pdf -------------------------------------------------------------------------------- /Lecture-14/Images/Levenshtein_Distance/Richard_Ernest_Bellman (2).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-14/Images/Levenshtein_Distance/Richard_Ernest_Bellman (2).jpg -------------------------------------------------------------------------------- /Lecture-14/Images/Levenshtein_Distance/Richard_Ernest_Bellman.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-14/Images/Levenshtein_Distance/Richard_Ernest_Bellman.jpg -------------------------------------------------------------------------------- /Lecture-14/Literature/eng/DynamicProgramming.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_dynamic_programming, 2 | type = {article}, 3 | key = {Wikipedia - Dynamic programming}, 4 | title = {{Dynamic programming}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = 7 | {\url{https://en.wikipedia.org/wiki/Dynamic_programming}\eatdot} 8 | } -------------------------------------------------------------------------------- /Lecture-14/Literature/eng/EditDistance.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_shortest_path_problem, 2 | type = {article}, 3 | key = {Wikipedia - Levenshtein distance}, 4 | title = {{Levenshtein distance}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Levenshtein_distance}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-14/Packages/LecturePackages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage[binary-units=true]{siunitx} 2 | \usepackage[nomessages]{fp} 3 | \usepackage{etoolbox} 4 | 5 | \usepackage{adjustbox} 6 | 7 | \usepackage{tabularx, colortbl} % Tables 8 | 9 | \usepackage{tikz} 10 | \usetikzlibrary{ 11 | patterns, 12 | arrows, 13 | decorations.pathreplacing, 14 | shapes.geometric, 15 | calc 16 | } 17 | 18 | \usepackage{wasysym} % Checkmark etc. 19 | 20 | \usepackage{listings} % Code 21 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /Lecture-14/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-14/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-14/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{14} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{February~2019} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-14/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-14/Styles/Lecture/ufcd/Base.tex: -------------------------------------------------------------------------------- 1 | \pgfdeclareimage[height=1cm]{imtek-logo}{ufcd-logo-imtek-color} 2 | \pgfdeclareimage[height=1.3cm]{iif-logo}{ufcd-logo-iif-color} 3 | \logo{\pgfuseimage{imtek-logo}} 4 | \ufcdSetup{mainlanguage=english} 5 | \title[\PresentationInstituteLink]{\PresentationTitle} 6 | \subtitle{\PresentationDescription} 7 | \author[\PresentationAuthor]{\PresentationAuthorText} 8 | \institute[\PresentationInstitute]{\PresentationInstituteText} 9 | \date[\PresentationDate]{\PresentationSmallTitle, \PresentationDate} 10 | -------------------------------------------------------------------------------- /Lecture-14/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-15/Chapter/eng/010_Evaluation.tex: -------------------------------------------------------------------------------- 1 | \section{Evaluation Results} 2 | 3 | \begin{frame}{Evaluation Results} 4 | % Content here 5 | \end{frame} -------------------------------------------------------------------------------- /Lecture-15/Code/Exam/example1.py: -------------------------------------------------------------------------------- 1 | def func(data, k): 2 | n = len(data) 3 | out = [0 for i in range(0, n-k, 1)] 4 | 5 | for i in range(0, n-k, 1): 6 | for j in range(0, k, 1): 7 | out[i] += data[i+j] 8 | 9 | return out -------------------------------------------------------------------------------- /Lecture-15/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-15/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-15/Literature/Literature_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-15/Literature/Literature_eng.tex -------------------------------------------------------------------------------- /Lecture-15/Packages/LecturePackages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage[binary-units=true]{siunitx} 2 | 3 | \usepackage{adjustbox} 4 | 5 | \usepackage{tabularx, colortbl} % Tables 6 | 7 | \usepackage{tikz} 8 | \usetikzlibrary{ 9 | patterns, 10 | arrows, 11 | decorations.pathreplacing, 12 | shapes.geometric, 13 | calc 14 | } 15 | 16 | \usepackage{wasysym} % Checkmark etc. 17 | 18 | \usepackage{listings} % Code 19 | \input{Styles/Code/listings-python.prf} % Python style 20 | 21 | \usepackage{qrcode} -------------------------------------------------------------------------------- /Lecture-15/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-15/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-15/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{15} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{February~2019} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-15/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-15/Styles/Lecture/ufcd/Base.tex: -------------------------------------------------------------------------------- 1 | \pgfdeclareimage[height=1cm]{imtek-logo}{ufcd-logo-imtek-color} 2 | \pgfdeclareimage[height=1.3cm]{iif-logo}{ufcd-logo-iif-color} 3 | \logo{\pgfuseimage{imtek-logo}} 4 | \ufcdSetup{mainlanguage=english} 5 | \title[\PresentationInstituteLink]{\PresentationTitle} 6 | \subtitle{\PresentationDescription} 7 | \author[\PresentationAuthor]{\PresentationAuthorText} 8 | \institute[\PresentationInstitute]{\PresentationInstituteText} 9 | \date[\PresentationDate]{\PresentationSmallTitle, \PresentationDate} 10 | -------------------------------------------------------------------------------- /Lecture-15/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-2/Code/MinSort/MinSort.cpp: -------------------------------------------------------------------------------- 1 | void min_sort(int *lst, size_t len) { 2 | for (int i = 0; i < len; i++) { 3 | int min = i; 4 | 5 | for (int j = i + 1; j < len; j++) 6 | if (lst[j] < lst[min]) 7 | min = j; 8 | 9 | if (min != i) { 10 | int tmp = lst[i]; 11 | lst[i] = lst[min]; 12 | lst[min] = tmp; 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Lecture-2/Code/MinSort/MinSort.java: -------------------------------------------------------------------------------- 1 | void minSort(int[] lst) { 2 | for (int i = 0; i < lst.length; i++) { 3 | int min = i; 4 | 5 | for (int j = i + 1; j < lst.length; j++) 6 | if (lst[j] < lst[min]) 7 | min = j; 8 | 9 | if (min != i) { 10 | int tmp = lst[i]; 11 | lst[i] = lst[min]; 12 | lst[min] = tmp; 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Lecture-2/Code/MinSort/MinSort.py: -------------------------------------------------------------------------------- 1 | def minsort(lst): 2 | for i in range(0, len(lst)-1): 3 | minimum = i 4 | 5 | for j in range(i+1, len(lst)): 6 | if lst[j] < lst[minimum]: 7 | minimum = j 8 | 9 | if minimum != i: 10 | lst[i], lst[minimum] = \ 11 | lst[minimum], lst[i] 12 | 13 | return lst 14 | -------------------------------------------------------------------------------- /Lecture-2/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-2/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-2/Images/CodeAnalysis/minsort-code-analysis-o1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-2/Images/CodeAnalysis/minsort-code-analysis-o1.pdf -------------------------------------------------------------------------------- /Lecture-2/Images/CodeAnalysis/minsort-code-analysis-o2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-2/Images/CodeAnalysis/minsort-code-analysis-o2.pdf -------------------------------------------------------------------------------- /Lecture-2/Images/CodeAnalysis/minsort-code-analysis-o3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-2/Images/CodeAnalysis/minsort-code-analysis-o3.pdf -------------------------------------------------------------------------------- /Lecture-2/Images/CodeAnalysis/minsort-code-analysis-o4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-2/Images/CodeAnalysis/minsort-code-analysis-o4.pdf -------------------------------------------------------------------------------- /Lecture-2/Images/Induction/BinaryTree_Root.tikz.tex: -------------------------------------------------------------------------------- 1 | \begin{tikzpicture}[ 2 | level/.style={ 3 | sibling distance = 10.0em/#1, 4 | level distance = 3.5em 5 | }, 6 | node/.style={ 7 | draw, 8 | circle, 9 | very thick, 10 | color=black, 11 | fill=white 12 | }, 13 | node_filled/.style={ 14 | node, 15 | color=black, 16 | fill=orange!50!yellow 17 | } 18 | ]% 19 | \node [node_filled, label={[anchor=south]above:Root}] (root) {}; 20 | \end{tikzpicture} -------------------------------------------------------------------------------- /Lecture-2/Images/MinSort/Minsort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-2/Images/MinSort/Minsort.png -------------------------------------------------------------------------------- /Lecture-2/Images/Runtime/lower-upper-Tn-o1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-2/Images/Runtime/lower-upper-Tn-o1.pdf -------------------------------------------------------------------------------- /Lecture-2/Images/Runtime/lower-upper-Tn-o2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-2/Images/Runtime/lower-upper-Tn-o2.pdf -------------------------------------------------------------------------------- /Lecture-2/Images/Runtime/lower-upper-Tn-o3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-2/Images/Runtime/lower-upper-Tn-o3.pdf -------------------------------------------------------------------------------- /Lecture-2/Literature/eng/Induction.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_mathematical_induction, 2 | type = {article}, 3 | key = {Wikipedia - Mathematical induction}, 4 | title = {Mathematical induction\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Mathematical_induction}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-2/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-2/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-2/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{2} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{October~2018} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-2/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-2/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-3/Code/ArithmeticMean/ArithmeticMean.cpp: -------------------------------------------------------------------------------- 1 | std::vector arithMean(std::vector x) { 2 | std::vector a(x.size()); 3 | for (int i = 0; i < x.size(); i++) { 4 | float s = 0.0; 5 | for(int j = 0; j < i + 1; j++) 6 | s = s + x[j]; 7 | 8 | a.push_back(s / (i+1)); 9 | } 10 | 11 | return a; 12 | } -------------------------------------------------------------------------------- /Lecture-3/Code/ArithmeticMean/ArithmeticMean.java: -------------------------------------------------------------------------------- 1 | float[] arithMean(float[] x) { 2 | float[] a = new float[x.length]; 3 | for (int i = 0; i < x.length; i++) { 4 | float s = 0.0f; 5 | for(int j = 0; j < i + 1; j++) 6 | s = s + x[j]; 7 | 8 | a[i] = s / (i+1) 9 | } 10 | 11 | return a; 12 | } -------------------------------------------------------------------------------- /Lecture-3/Code/ArithmeticMean/ArithmeticMean.py: -------------------------------------------------------------------------------- 1 | def arithMean(x): 2 | a = [0] * len(x) 3 | for i in range(0, len(x)): 4 | s = 0 5 | for j in range(0, i+1): 6 | s = s + x[j] 7 | 8 | a[i] = s / (i+1) 9 | 10 | return a -------------------------------------------------------------------------------- /Lecture-3/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | No feedback yet, please let us know what we can improve. 4 | 5 | \end{frame} 6 | -------------------------------------------------------------------------------- /Lecture-3/Images/BigONotationRuntime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-3/Images/BigONotationRuntime.png -------------------------------------------------------------------------------- /Lecture-3/Images/OmegaNotationRuntime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-3/Images/OmegaNotationRuntime.png -------------------------------------------------------------------------------- /Lecture-3/Images/limits-epsilon.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-3/Images/limits-epsilon.pdf -------------------------------------------------------------------------------- /Lecture-3/Images/limits-epsilon.svgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-3/Images/limits-epsilon.svgz -------------------------------------------------------------------------------- /Lecture-3/Images/lower-upper-bound.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-3/Images/lower-upper-bound.pdf -------------------------------------------------------------------------------- /Lecture-3/Images/lower-upper-bound.svgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-3/Images/lower-upper-bound.svgz -------------------------------------------------------------------------------- /Lecture-3/Images/runtime-theta.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-3/Images/runtime-theta.pdf -------------------------------------------------------------------------------- /Lecture-3/Literature/General/General.bib: -------------------------------------------------------------------------------- 1 | @Online{kmeh2007, 2 | type = {book}, 3 | author = {Kurt Mehlhorn AND Peter Sanders}, 4 | title = {Algorithms and Data Structures}, 5 | subtitle = {The Basic Toolbox}, 6 | publisher = {Springer}, 7 | year = {2008}, 8 | address = {Berlin}, 9 | isbn = {978-3-540-77978-0}, 10 | note = 11 | {\url{https://people.mpi-inf.mpg.de/~mehlhorn/ftp/Mehlhorn-Sanders-Toolbox.pdf}} 12 | } -------------------------------------------------------------------------------- /Lecture-3/Literature/Literature_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFurtherLiterature} 2 | \begin{itemize} 3 | \item 4 | \textbf{General} 5 | \begin{btSect}{Literature/General/General} 6 | \btPrintAll 7 | \end{btSect} 8 | \end{itemize} 9 | \end{frame} 10 | 11 | %------------------------------------------------------------------------------- 12 | 13 | \begin{frame}{\LectureFurtherLiterature} 14 | \begin{itemize} 15 | \item 16 | \textbf{Big O notation} 17 | \begin{btSect}{Literature/eng/BigONotation} 18 | \btPrintAll 19 | \end{btSect} 20 | \end{itemize} 21 | \end{frame} -------------------------------------------------------------------------------- /Lecture-3/Literature/eng/BigONotation.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_big_o_notation, 2 | type = {article}, 3 | key = {Wikipedia - Big O notation}, 4 | title = {{Big O notation}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Big_O_notation}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-3/Matlab/PlotBigORuntime.m: -------------------------------------------------------------------------------- 1 | close all; 2 | 3 | figure; 4 | fplot(@(x) 22*x, [1, 10], '-b', 'Linewidth', 2); 5 | hold on; 6 | fplot(@(x) 5*x^2 + 10, [1, 10], '-g', 'Linewidth', 2); 7 | fplot(@(x) 0.75*x^3, [1, 10], '-r', 'Linewidth', 2); 8 | line([3.88, 3.88],[0, 800]); 9 | line([5.42, 5.42],[0, 800]); 10 | %line([6.95, 6.95],[0, 800]); 11 | hold off; 12 | 13 | ylabel('Runtime'); 14 | xlabel('Input elements'); 15 | %title('Squared runtime'); 16 | legend('g(n) = n', 'f_1(n) = 2 n^2 + 10', 'f_2(n) = 3/4 n^3', 'Location', 'northwest'); -------------------------------------------------------------------------------- /Lecture-3/Matlab/PlotOmegaRuntime.m: -------------------------------------------------------------------------------- 1 | close all; 2 | 3 | figure; 4 | fplot(@(x) 22*x, [1, 10], '-b', 'Linewidth', 2); 5 | hold on; 6 | fplot(@(x) 5*x^2 + 10, [1, 10], '-g', 'Linewidth', 2); 7 | fplot(@(x) 0.75*x^3, [1, 10], '-r', 'Linewidth', 2); 8 | line([3.88, 3.88],[0, 800]); 9 | line([5.42, 5.42],[0, 800]); 10 | %line([6.95, 6.95],[0, 800]); 11 | hold off; 12 | 13 | ylabel('Runtime'); 14 | xlabel('Input elements'); 15 | %title('Squared runtime'); 16 | legend('g(n) = n', 'f_1(n) = 2 n^2 + 10', 'f_2(n) = 3/4 n^3', 'Location', 'northwest'); -------------------------------------------------------------------------------- /Lecture-3/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-3/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-3/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{3} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{October~2018} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-3/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-3/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-4/Code/AssociativeArray.cpp: -------------------------------------------------------------------------------- 1 | #include // or map 2 | 3 | // mapping key: string to value: int 4 | std::unordered_map age; 5 | 6 | if (age.count("Frank") > 0) // check for key 7 | age.erase("Frank"); // deletes a mapping 8 | 9 | age.insert("Bob", 20); 10 | 11 | // retrieves a value for key "Bob" 12 | std::cout << "Bob is " << age["Bob"] 13 | << " years old" << std::endl; -------------------------------------------------------------------------------- /Lecture-4/Code/AssociativeArray.java: -------------------------------------------------------------------------------- 1 | import java.util.HashMap; // or TreeMap 2 | 3 | // mapping key: String to value: Integer 4 | HashMap age = new HashMap<>(); 5 | 6 | if (age.containsKey("Frank")) // check for key 7 | age.remove("Frank"); // deletes a mapping 8 | 9 | age.put("Bob", 20); // insert entry 10 | 11 | System.@{\textbf{\textit{\color{java_static}out}}}@.printf("Bob is %d years old", 12 | // retrieves a value for key "Bob" 13 | age.get("Bob")); -------------------------------------------------------------------------------- /Lecture-4/Code/AssociativeArray.py: -------------------------------------------------------------------------------- 1 | # creates a new map (called dictionary) 2 | countries = {"DE" : "Deutschland", \ 3 | "EN" : "England"} 4 | 5 | # check if element exists 6 | if "EN" in countries: 7 | print("Found %s!" % countries["EN"]) 8 | 9 | # map key "DE" to value "Germany" 10 | countries["DE"] = "Germany" 11 | 12 | # delete key "DE" 13 | del countries["DE"] 14 | -------------------------------------------------------------------------------- /Lecture-4/Code/AssociativeArrayFeature.cpp: -------------------------------------------------------------------------------- 1 | #include // or map 2 | 3 | // mapping key: string to value: int 4 | std::unordered_map mymap; 5 | 6 | // insert values for key "europe" 7 | mymap["europe"] = 54; 8 | 9 | // INSERTS 0 (default value) at key "venus" 10 | if (mymap["venus"] > 0) @\dots@ 11 | 12 | // only checks if key "venus" is present 13 | if (mymap.count("venus") > 0) @\dots@ -------------------------------------------------------------------------------- /Lecture-4/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | \begin{itemize} 3 | \item Some people enjoyed the absence of programming tasks, some not :) 4 | \vspace{0.5cm} 5 | \item Difficulty was anything between underwhelmed and overwhelmed, but mostly manageable 6 | \end{itemize} 7 | \end{frame} 8 | -------------------------------------------------------------------------------- /Lecture-4/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | \begin{itemize} 3 | \item Q: Can I use a calculator in the exam? 4 | \vspace{0.5cm} 5 | \item A: No sorry. On the other hand, you can bring 6 | \vspace{0.5cm} 7 | \begin{itemize} 8 | \item handwritings 9 | \vspace{0.25cm} 10 | \item printed-out course material 11 | \vspace{0.25cm} 12 | \item books 13 | \end{itemize} 14 | \end{itemize} 15 | \end{frame} 16 | -------------------------------------------------------------------------------- /Lecture-4/Literature/eng/MapAPIPart2.bib: -------------------------------------------------------------------------------- 1 | @Online{cpp_hash_map, 2 | type = {article}, 3 | key = {Cpp - hash_map}, 4 | title = {{C++ - hash\_map}\eatdot}, 5 | publisher = {Hewlett-Packard Company}, 6 | note = {\url{http://www.sgi.com/tech/stl/hash_map.html}\eatdot} 7 | } 8 | @Online{cpp_tree_map, 9 | type = {article}, 10 | key = {Cpp - map}, 11 | title = {{C++ - map}\eatdot}, 12 | publisher = {Hewlett-Packard Company}, 13 | note = {\url{http://www.sgi.com/tech/stl/Map.html}\eatdot} 14 | } -------------------------------------------------------------------------------- /Lecture-4/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-4/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-4/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{4} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{November~2018} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-4/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-4/Styles/Lecture/ufcd/Base.tex: -------------------------------------------------------------------------------- 1 | \pgfdeclareimage[height=1cm]{imtek-logo}{ufcd-logo-imtek-color} 2 | \pgfdeclareimage[height=1.3cm]{iif-logo}{ufcd-logo-iif-color} 3 | \logo{\pgfuseimage{imtek-logo}} 4 | \ufcdSetup{mainlanguage=english} 5 | \title[\PresentationInstituteLink]{\PresentationTitle} 6 | \subtitle{\PresentationDescription} 7 | \author[\PresentationAuthor]{\PresentationAuthorText} 8 | \institute[\PresentationInstitute]{\PresentationInstituteText} 9 | \date[\PresentationDate]{\PresentationSmallTitle, \PresentationDate} 10 | -------------------------------------------------------------------------------- /Lecture-4/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-5/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | %% \begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | %% \end{frame} 4 | -------------------------------------------------------------------------------- /Lecture-5/Images/Bucket.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-5/Images/Bucket.pdf -------------------------------------------------------------------------------- /Lecture-5/Images/Bucket1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-5/Images/Bucket1.pdf -------------------------------------------------------------------------------- /Lecture-5/Images/Bucket2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-5/Images/Bucket2.pdf -------------------------------------------------------------------------------- /Lecture-5/Images/Bucket3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-5/Images/Bucket3.pdf -------------------------------------------------------------------------------- /Lecture-5/Images/Bucket4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-5/Images/Bucket4.pdf -------------------------------------------------------------------------------- /Lecture-5/Images/Bucket5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-5/Images/Bucket5.pdf -------------------------------------------------------------------------------- /Lecture-5/Images/hash-extreme.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-5/Images/hash-extreme.pdf -------------------------------------------------------------------------------- /Lecture-5/Images/hash-uniform.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-5/Images/hash-uniform.pdf -------------------------------------------------------------------------------- /Lecture-5/Literature/eng/HashMap.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_hash_table, 2 | type = {article}, 3 | key = {Wikipedia - Hash table}, 4 | title = {{Hash table}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Hash_table}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-5/Packages/LecturePackages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage[binary-units=true]{siunitx} 2 | \usepackage{xfrac} 3 | 4 | \usepackage{adjustbox} 5 | 6 | \usepackage{tabularx, colortbl, booktabs} % Tables 7 | 8 | \usepackage{tikz} 9 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 10 | 11 | \usepackage{wasysym} % Checkmark etc. 12 | 13 | \usepackage{listings} % Code 14 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /Lecture-5/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-5/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-5/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{5} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{November~2018} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-5/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-5/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-6/Code/Handout/PriorityQueueItem.cpp: -------------------------------------------------------------------------------- 1 | /*! \brief Provides a handle for an inserted 2 | * queue item. 3 | * 4 | * Use this handle to update or remove 5 | * the queue item. 6 | */ 7 | template 8 | typedef struct { 9 | int key; /**< the priority */ 10 | T value; /**< the value */ 11 | int heapIndex; /**< the array index */ 12 | } priority_queue_item; -------------------------------------------------------------------------------- /Lecture-6/Code/Handout/PriorityQueueItem.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides a handle for an inserted queue 3 | * item. This handle can be used to remove 4 | * or update the queue item. 5 | * 6 | * @param The type of the data 7 | */ 8 | public class PriorityQueueItem { 9 | // These member variables are 10 | // package-private 11 | int key; 12 | T value; 13 | int heapIndex; 14 | } -------------------------------------------------------------------------------- /Lecture-6/Code/Handout/PriorityQueueItem.py: -------------------------------------------------------------------------------- 1 | class PriorityQueueItem: 2 | 3 | """Provides a handle for a queue item. 4 | 5 | This handle can be used to remove or 6 | update the queue item. 7 | """ 8 | 9 | def __init__(self, key, value, index): 10 | self.key = key; 11 | self.value = value; 12 | self.index = index; 13 | -------------------------------------------------------------------------------- /Lecture-6/Code/OpenHashing_Insert.cpp: -------------------------------------------------------------------------------- 1 | void insert(int s, const T& value) 2 | { 3 | int j = 0; 4 | 5 | while (@{\color{cpp_static}t}@[(h(s) - g(s,j)) % @{\color{cpp_static}m}@]) 6 | j++; 7 | 8 | @{\color{cpp_static}t}@[(h(s) - g(s,j)) % @{\color{cpp_static}m}@] = value; 9 | } -------------------------------------------------------------------------------- /Lecture-6/Code/OpenHashing_Insert.java: -------------------------------------------------------------------------------- 1 | void insert(int s, T value) { 2 | int j = 0; 3 | 4 | while (@{\color{java_static}t}@[(h(s) - g(s,j)) % @{\color{java_static}m}@] != null) 5 | j++; 6 | 7 | @{\color{java_static}t}@[(h(s) - g(s,j)) % @{\color{java_static}m}@] = value; 8 | } -------------------------------------------------------------------------------- /Lecture-6/Code/OpenHashing_Insert.py: -------------------------------------------------------------------------------- 1 | def insert(s, value): 2 | j = 0 3 | 4 | while t[(h(s) - g(s, j)) mod m] \ 5 | is not None: 6 | j += 1 7 | 8 | t[(h(s) - g(s, j)) mod m] \ 9 | = (s, value) -------------------------------------------------------------------------------- /Lecture-6/Code/OpenHashing_Lookup.cpp: -------------------------------------------------------------------------------- 1 | T lookup(int s) 2 | { 3 | int j = 0; 4 | 5 | while (@{\color{cpp_static}t}@[(h(s) - g(s,j)) % @{\color{cpp_static}m}@]) { 6 | if (@{\color{cpp_static}t}@[(h(s) - g(s,j)) % @{\color{cpp_static}m}@].@{\color{cpp_static}key}@ == s) 7 | return @{\color{cpp_static}t}@[(h(s) - g(s,j)) % @{\color{cpp_static}m}@].@{\color{cpp_static}value}@ 8 | 9 | j++; 10 | } // end while 11 | 12 | return nullptr; 13 | } -------------------------------------------------------------------------------- /Lecture-6/Code/OpenHashing_Lookup.java: -------------------------------------------------------------------------------- 1 | T lookup(int s) { 2 | int j = 0; 3 | 4 | while (@{\color{java_static}t}@[(h(s) - g(s,j)) % @{\color{java_static}m}@] != null) { 5 | if (@{\color{java_static}t}@[(h(s) - g(s,j)) % @{\color{java_static}m}@].@{\color{java_static}key}@ == s) 6 | return @{\color{java_static}t}@[(h(s) - g(s,j)) % @{\color{java_static}m}@].@{\color{java_static}value}@ 7 | 8 | j++; 9 | } 10 | 11 | return null; 12 | } -------------------------------------------------------------------------------- /Lecture-6/Code/OpenHashing_Lookup.py: -------------------------------------------------------------------------------- 1 | def lookup(s): 2 | j = 0 3 | 4 | while t[(h(s) - g(s, j)) mod m] \ 5 | is not None: 6 | if t[(h(s) - g(s, j)) mod m][0] != s: 7 | j += 1 8 | if t[(h(s) - g(s, j)) mod m][0] == s: 9 | return t[(h(s) - g(s, j)) mod m] 10 | return None 11 | -------------------------------------------------------------------------------- /Lecture-6/Code/PriorityQueue.py: -------------------------------------------------------------------------------- 1 | from queue import PriorityQueue 2 | 3 | q = PriorityQueue() 4 | 5 | e1 = (5, "A") # element with priority 5 6 | q.put(e1); # insert element e1 7 | 8 | # remove and return the lowest item 9 | e2 = q.get() 10 | 11 | -------------------------------------------------------------------------------- /Lecture-6/Code/PriorityQueueItem.cpp: -------------------------------------------------------------------------------- 1 | /*! \brief Provides a handle for an inserted 2 | * queue item. 3 | * 4 | * Use this handle to update or remove 5 | * the queue item. 6 | */ 7 | template 8 | typedef struct { 9 | int key; /**< the priority */ 10 | T value; /**< the value */ 11 | int heapIndex; /**< the array index */ 12 | } priority_queue_item; -------------------------------------------------------------------------------- /Lecture-6/Code/PriorityQueueItem.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides a handle for an inserted queue 3 | * item. This handle can be used to remove 4 | * or update the queue item. 5 | * 6 | * @param The type of the data 7 | */ 8 | public class PriorityQueueItem { 9 | // These member variables are 10 | // package-private 11 | int key; 12 | T value; 13 | int heapIndex; 14 | } -------------------------------------------------------------------------------- /Lecture-6/Code/PriorityQueueItem.py: -------------------------------------------------------------------------------- 1 | class PriorityQueueItem: 2 | 3 | """Provides a handle for a queue item. 4 | 5 | This handle can be used to remove or 6 | update the queue item. 7 | """ 8 | 9 | def __init__(self, key, value, index): 10 | self.key = key 11 | self.value = value 12 | self.index = index 13 | -------------------------------------------------------------------------------- /Lecture-6/Code/PriorityQueuePart1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | // define entry type alias 6 | typedef std::pair queue_entry 7 | 8 | // define comparator only comparing first element 9 | struct LessByFirst { 10 | bool operator()(const queue_entry& lhs, 11 | const queue_entry& rhs) const { 12 | return lhs.first < rhs.first; 13 | } 14 | }; -------------------------------------------------------------------------------- /Lecture-6/Code/PriorityQueuePart1.java: -------------------------------------------------------------------------------- 1 | import java.util.PriorityQueue; 2 | 3 | // only one type parameter 4 | // -> assuming type implements Comparable 5 | PriorityQueue q 6 | = new PriorityQueue<>(); 7 | 8 | // box int to get unique object 9 | Integer i1 = new Integer(5); 10 | Integer i2 = new Integer(3); 11 | 12 | // inserts element i1/i2 into the queue 13 | q.insert(i1); 14 | q.insert(i2); -------------------------------------------------------------------------------- /Lecture-6/Code/PriorityQueuePart2.cpp: -------------------------------------------------------------------------------- 1 | std::priority_queue, LessByFirst> pq; 3 | 4 | // insert element with priority 5 5 | pq.emplace(5, "A"); 6 | 7 | { 8 | // access first element 9 | const queue_entry& e = pq.top(); 10 | 11 | // do not access e beyond this scope 12 | // without copying / moving 13 | } 14 | // remove the first element (e) 15 | pq.pop(); -------------------------------------------------------------------------------- /Lecture-6/Code/PriorityQueuePart2.java: -------------------------------------------------------------------------------- 1 | // retrieves and removes the head 2 | // of this queue 3 | Integer i3 = q.poll(); // i3 == i2 4 | 5 | // retrieves, but does not remove the head 6 | // of this queue 7 | Integer i4 = q.peek(); // i4 == i1 8 | 9 | // removing with runtime of O(n) 10 | // i2 was already polled (removed) 11 | q.remove(i2); -------------------------------------------------------------------------------- /Lecture-6/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-6/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-6/Images/OpenAddressing/LinearProbingExample.tikz.tex: -------------------------------------------------------------------------------- 1 | \begin{tikzpicture}[ 2 | bucket/.style={ 3 | draw={Mittel-Blau}, 4 | fill={white}, 5 | line width=0.075em 6 | }, bucket_text/.style={ 7 | draw=none, 8 | color=black 9 | } 10 | ]% 11 | \foreach \x/\xi in \LPEData { 12 | \draw[bucket] 13 | (\xi, 0.0) rectangle (\xi + 1.0, 0.5); 14 | \draw (\xi + 0.5, 0.25) node[bucket_text] {\x}; 15 | 16 | \ifnum \LPEShowIndex>0 17 | \draw (\xi + 0.5, 0.5) node[bucket_text, anchor=south] {\xi}; 18 | \fi 19 | } 20 | \end{tikzpicture}% -------------------------------------------------------------------------------- /Lecture-6/Images/hashtable-buckets.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-6/Images/hashtable-buckets.pdf -------------------------------------------------------------------------------- /Lecture-6/Packages/LecturePackages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage[binary-units=true]{siunitx} 2 | 3 | \usepackage{adjustbox} 4 | 5 | \usepackage{tabularx, colortbl, booktabs} % Tables 6 | 7 | \usepackage{tikz} 8 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 9 | 10 | \usepackage{wasysym} % Checkmark etc. 11 | 12 | \usepackage{listings} % Code 13 | \input{Styles/Code/listings-python.prf} % Python style 14 | \input{Styles/Code/listings-java-eclipse.prf} % Java style 15 | \input{Styles/Code/listings-cpp-eclipse.prf} % C++ style -------------------------------------------------------------------------------- /Lecture-6/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-6/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-6/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{6} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{November~2018} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-6/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-6/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | std::@{\color{cpp_typedef}vector}@ words; 5 | 6 | words.push_back("Hello"); 7 | words.push_back("World"); 8 | 9 | // Prints string at index 0 ("Hello") 10 | std::cout << words[0] << std::endl; 11 | 12 | words.resize(1); // Keep the first word 13 | words.clear(); // Remove all elements -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | 3 | ArrayList words = new ArrayList<>(); 4 | 5 | words.add("Hello"); 6 | words.add("World"); 7 | 8 | // Prints the text at index 1 ("World") 9 | System.@{\textbf{\textit{\color{java_static}out}}}@.println(words.get(1)); 10 | 11 | words.clear(); -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl1/DynamicFieldImpl1.h: -------------------------------------------------------------------------------- 1 | template 2 | class DynamicArray { 3 | private: 4 | T* elements; 5 | @{\color{cpp_typedef}uint32\_t}@ size; 6 | 7 | public: 8 | DynamicArray(); 9 | 10 | @{\color{cpp_typedef}uint32\_t}@ capacity(); 11 | void append(T item); 12 | } -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl1/DynamicFieldImpl1_Part1.cpp: -------------------------------------------------------------------------------- 1 | DynamicArray::DynamicArray() 2 | : size(0), elements(nullptr) { } 3 | 4 | @{\color{cpp_typedef}uint32\_t}@ DynamicArray::capactity() { 5 | return size; 6 | } -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl1/DynamicFieldImpl1_Part1.java: -------------------------------------------------------------------------------- 1 | public class DynamicField { 2 | 3 | private int size; 4 | private T elements; 5 | 6 | public DynamicField() { 7 | size = 0; 8 | elements = T[0]; 9 | } 10 | 11 | public int getCapacity() { 12 | return elements.length; 13 | } 14 | 15 | ... -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl1/DynamicFieldImpl1_Part2.cpp: -------------------------------------------------------------------------------- 1 | void DynamicArray::append(T item) { 2 | T[] newElements = new T[size + 1]; 3 | 4 | // Copy elements to new array 5 | for (int i = 0; i < size; i++) { 6 | newElements[i] = elements[i]; 7 | } 8 | 9 | delete[] elements; 10 | elements = newElements; 11 | elements[size] = item; 12 | size++; 13 | } -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl1/DynamicFieldImpl1_Part2.java: -------------------------------------------------------------------------------- 1 | ... 2 | 3 | public void append(T @{\color{java_variable}item}@) { 4 | T[] @{\color{java_variable}newElements}@ = new T[size + 1]; 5 | 6 | // Copy elements to new array 7 | for (int @{\color{java_variable}i}@ = 0; @{\color{java_variable}i}@0< size; @{\color{java_variable}i}@++) { 8 | @{\color{java_variable}newElements}@[@{\color{java_variable}i}@] = elements[@{\color{java_variable}i}@]; 9 | } 10 | 11 | elements = @{\color{java_variable}newElements}@; 12 | elements[size] = @{\color{java_variable}item}@; 13 | size++; 14 | } 15 | } -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl1/DynamicListImpl1_Part1.py: -------------------------------------------------------------------------------- 1 | class DynamicArray: 2 | 3 | def __init__(self): 4 | self.size = 0 5 | self.elements = [] 6 | 7 | def capacity(self): 8 | return len(self.elements) 9 | 10 | ... -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl1/DynamicListImpl1_Part2.py: -------------------------------------------------------------------------------- 1 | class DynamicArray: 2 | ... 3 | 4 | def append(self, item): 5 | newElements = [0] * (self.size + 1) 6 | 7 | for i in range(0, self.size): 8 | newElements[i] = self.elements[i] 9 | 10 | self.elements = newElements 11 | 12 | newElements[self.size] = item 13 | self.size += 1 -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl2/DynamicFieldImpl2.h: -------------------------------------------------------------------------------- 1 | template 2 | class DynamicArray { 3 | private: 4 | T* elements; 5 | @{\color{cpp_typedef}uint32\_t}@ size; 6 | @{\color{cpp_typedef}uint32\_t}@ memSize; 7 | 8 | public: 9 | DynamicArray(); 10 | 11 | @{\color{cpp_typedef}uint32\_t}@ capacity(); 12 | void append(T item); 13 | } -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl2/DynamicFieldImpl2_Part1.cpp: -------------------------------------------------------------------------------- 1 | DynamicArray::DynamicArray() 2 | : size(0), memSize(0), elements(nullptr) {} 3 | 4 | @{\color{cpp_typedef}uint32\_t}@ DynamicArray::capactity() { 5 | return size; 6 | } -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl2/DynamicFieldImpl2_Part2.cpp: -------------------------------------------------------------------------------- 1 | void DynamicArray::append(T item) { 2 | if (size >= memSize) { 3 | memSize = size + 100; 4 | T[] newElements = new T[memSize]; 5 | for (int i = 0; i < size; i++) { 6 | newElements[i] = elements[i]; 7 | } 8 | 9 | delete[] elements; 10 | elements = newElements; 11 | } 12 | 13 | elements[size] = item; 14 | size++; 15 | } -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl2/DynamicListImpl2.py: -------------------------------------------------------------------------------- 1 | def append(self, item): 2 | if self.size >= len(self.elements): 3 | newElements = [0] * (self.size + 100) 4 | 5 | for i in range(0, self.size - 1): 6 | newElements[i] = self.elements[i] 7 | 8 | self.elements = newElements 9 | 10 | self.elements[self.size] = item 11 | self.size += 1 12 | 13 | 14 | -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl3/DynamicFieldImpl3.cpp: -------------------------------------------------------------------------------- 1 | void DynamicArray::append(T item) { 2 | if (size >= memSize) { 3 | memSize = std::max(size * 2, 1); 4 | T[] newElements = new T[memSize]; 5 | for (int i = 0; i < size; i++) { 6 | newElements[i] = elements[i]; 7 | } 8 | 9 | delete[] elements; 10 | elements = newElements; 11 | } 12 | 13 | elements[size] = item; 14 | size++; 15 | } -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicField/Impl3/DynamicListImpl3.py: -------------------------------------------------------------------------------- 1 | def append(self, item): 2 | if self.size >= len(self.elements): 3 | newElements = [0] \ 4 | * max(1, 2 * self.size) 5 | 6 | for i in range(0, self.size): 7 | newElements[i] = self.elements[i] 8 | 9 | self.elements = newElements 10 | 11 | self.elements[self.size] = item 12 | self.size += 1 13 | 14 | 15 | -------------------------------------------------------------------------------- /Lecture-7/Code/DynamicLists.py: -------------------------------------------------------------------------------- 1 | greetings = ["Good morning", "ohai"] 2 | 3 | greetings.append("Guten morgen") 4 | greetings.append("bonjour") 5 | 6 | # Prints text at index 2 ("Guten morgen") 7 | print("%s" % greetings[2]) 8 | 9 | # Removes all elements 10 | greetings.clear(); 11 | -------------------------------------------------------------------------------- /Lecture-7/Code/Lists.py: -------------------------------------------------------------------------------- 1 | # Creates a list of "0"s with init. size 10 2 | numbers = [0] * 10 3 | 4 | # Prints number at index 7 ("0") 5 | print("%d" % numbers[7]) 6 | 7 | # Saves number 42 at index 8 8 | numbers[8] = 42 9 | 10 | # Prints the number at index 8 ("42") 11 | print("%d" % numbers[8]) 12 | -------------------------------------------------------------------------------- /Lecture-7/Code/StaticField.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | // Create 10 empty strings stored in "strs" 4 | std::@{\color{cpp_typedef}string}@[] strs = new std::@{\color{cpp_typedef}string}@[10]; 5 | 6 | // Prints string at index 7 (empty) 7 | std::cout << strs[7] << std::endl; 8 | 9 | // Saves the string "Hello World" at index 8 10 | strs[8] = "Hello World"; 11 | 12 | // Prints string at index 8 ("Hello World") 13 | std::cout << strs[8] << std::endl; -------------------------------------------------------------------------------- /Lecture-7/Code/StaticField.java: -------------------------------------------------------------------------------- 1 | // Create 100 times "0" stored in array numbers 2 | int[] numbers = new int[100]; 3 | 4 | // Prints the number at index 12 ("0") 5 | System.@{\textbf{\textit{\color{java_static}out}}}@.println(numbers[12]); 6 | 7 | // Saves the number "42" at index 8 8 | numbers[8] = 42; 9 | 10 | // Prints the number at index 8 ("42") 11 | System.@{\textbf{\textit{\color{java_static}out}}}@.println(numbers[8]); -------------------------------------------------------------------------------- /Lecture-7/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | %\begin{frame}{\LectureFeedbackExercisesTitle} 2 | 3 | %\end{frame} 4 | -------------------------------------------------------------------------------- /Lecture-7/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | %\begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | %\end{frame} 4 | -------------------------------------------------------------------------------- /Lecture-7/Literature/Literature_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFurtherLiterature} 2 | \begin{itemize} 3 | \item 4 | \textbf{General} 5 | \begin{btSect}{Literature/General/General} 6 | \btPrintAll 7 | \end{btSect} 8 | \end{itemize} 9 | \end{frame} 10 | 11 | %------------------------------------------------------------------------------- 12 | 13 | \begin{frame}{\LectureFurtherLiterature} 14 | \begin{itemize} 15 | \item 16 | \textbf{Amortized Analysis} 17 | \begin{btSect}{Literature/eng/AmortizedAnalysis} 18 | \btPrintAll 19 | \end{btSect} 20 | \end{itemize} 21 | \end{frame} -------------------------------------------------------------------------------- /Lecture-7/Literature/deu/AmortizedAnalysis.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_amortized_analysis, 2 | type = {article}, 3 | key = {Wikipedia - Amortisierte Laufzeitanalyse}, 4 | title = {{Amortisierte Laufzeitanalyse}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = 7 | {\url{https://de.wikipedia.org/wiki/Amortisierte_Laufzeitanalyse}\eatdot} 8 | } -------------------------------------------------------------------------------- /Lecture-7/Literature/eng/AmortizedAnalysis.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_amortized_analysis, 2 | type = {article}, 3 | key = {Wikipedia - Amortized analysis}, 4 | title = {{Amortized analysis}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Amortized_analysis}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-7/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-7/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-7/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{7} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{December~2017} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-7/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-7/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-8/Code/Caching/CacheLinear_Part1.py: -------------------------------------------------------------------------------- 1 | def init(size): 2 | """Creates the dataset.""" 3 | 4 | # use system time as seed 5 | random.seed(None) 6 | 7 | # set linear order as accessor 8 | order = [a for a in range(0, size)] 9 | 10 | # init array with random data 11 | data = [random.random() for a in order] 12 | 13 | return (order, data) -------------------------------------------------------------------------------- /Lecture-8/Code/Caching/CacheLinear_Part2.py: -------------------------------------------------------------------------------- 1 | def run(param): 2 | """Processes the dataset.""" 3 | 4 | # unpack data 5 | (order, data) = param 6 | 7 | # init the sum value 8 | s = 0 9 | 10 | for index in order: 11 | s += data[index] 12 | 13 | return s -------------------------------------------------------------------------------- /Lecture-8/Code/Caching/CacheRandom.py: -------------------------------------------------------------------------------- 1 | def init(size): 2 | """Creates a randomly ordered dataset.""" 3 | 4 | # use system time as seed 5 | random.seed(None) 6 | 7 | # set random order as accessor 8 | order = [a for a in range(0, size)] 9 | random.shuffle(order) 10 | 11 | # init array with random data 12 | data = [random.random() for a in order] 13 | 14 | return (order, data) -------------------------------------------------------------------------------- /Lecture-8/Code/Caching/QuickSort_Part1.py: -------------------------------------------------------------------------------- 1 | def quicksort(l, start, end): 2 | if (end - start) < 1: 3 | return 4 | 5 | i = start 6 | k = end 7 | piv = l[start] 8 | 9 | ... -------------------------------------------------------------------------------- /Lecture-8/Code/Caching/QuickSort_Part2.py: -------------------------------------------------------------------------------- 1 | def quicksort(l, start, end): 2 | ... 3 | 4 | while k > i: 5 | while l[i] <= piv and i <= end and k > i: 6 | i += 1 7 | while l[k] > piv and k >= start and k >= i: 8 | k -= 1 9 | 10 | if k > i: # swap elements 11 | (l[i], l[k]) = (l[k], l[i]) 12 | 13 | (l[start], l[k]) = (l[k], l[start]) 14 | quicksort(l, start, k - 1) 15 | quicksort(l, k + 1, end) -------------------------------------------------------------------------------- /Lecture-8/Code/DivideAndConquer/DivideAndConquer_Concept.py: -------------------------------------------------------------------------------- 1 | def solve(problem): 2 | if n < threshold: 3 | return solution # solve directly 4 | else: 5 | # divide problem into subproblems 6 | # P1, P2, ..., Pk with k>=2 7 | S1 = solve(P1) 8 | S2 = solve(P2) 9 | ... 10 | Sk = solve(Pk) 11 | 12 | # combine solutions 13 | return S1 + S2 + ... + Sk 14 | -------------------------------------------------------------------------------- /Lecture-8/Code/DivideAndConquer/MaxSubTotal.py: -------------------------------------------------------------------------------- 1 | def maxSubArray(X): 2 | result = (X[0], 0, 0) 3 | # n loops -> O(n) 4 | for i in range(0, len(X)): 5 | subSum = 0 6 | # max n loops -> O(n) 7 | for j in range(i, len(X)): 8 | subSum += X[j] # O(1) 9 | if result[0] < subSum: # O(1) 10 | result = (subSum, i, j) 11 | return result 12 | -------------------------------------------------------------------------------- /Lecture-8/Code/DivideAndConquer/MaxSubTotal_DivideAndConquer.py: -------------------------------------------------------------------------------- 1 | def maxSubArray(X, i, j): 2 | if i == j: # trivial case 3 | return (X[i], i, i) 4 | 5 | # recursive subsolutions for A, B 6 | m = (i + j) // 2 7 | A = maxSubArray(X, i, m) 8 | B = maxSubArray(X, m + 1, j) 9 | 10 | # rmax and lmax for cornercase C 11 | C1, C2 = rmax(X, i, m), lmax(X, m + 1, j) 12 | C = (C1[0] + C2[0], C1[1], C2[1]) 13 | 14 | # compute solution from results A, B, C 15 | return max([A, B, C], key=lambda i: i[0]) -------------------------------------------------------------------------------- /Lecture-8/Code/DivideAndConquer/MaxSubTotal_Naive.py: -------------------------------------------------------------------------------- 1 | def maxSubArray(X): 2 | # Store sum, start, end 3 | result = (X[0], 0, 0) 4 | for i in range(0, len(X)): 5 | for j in range(i, len(X)): 6 | subSum = 0 7 | for k in range(i, j + 1): 8 | subSum += X[k] 9 | if result[0] < subSum: 10 | result = (subSum, i, j) 11 | return result 12 | -------------------------------------------------------------------------------- /Lecture-8/Code/DivideAndConquer/MaxSubTotal_Naive_Runtime.py: -------------------------------------------------------------------------------- 1 | def maxSubArray(X): 2 | result = (X[0], 0, 0) 3 | # n loops -> O(n) 4 | for i in range(0, len(X)): 5 | # max n loops -> O(n) 6 | for j in range(i, len(X)): 7 | # max n loops -> O(n) 8 | subSum = sum(X[i:j+1]) 9 | if result[0] < subSum: # O(1) 10 | result = (subSum, i, j) 11 | return result 12 | -------------------------------------------------------------------------------- /Lecture-8/Code/Handout/QuickSort.py: -------------------------------------------------------------------------------- 1 | def quicksort(l, start, end): 2 | if (end - start) < 1: 3 | return 4 | 5 | i = start 6 | k = end 7 | pivot = l[start] 8 | 9 | # sort smaller and bigger elements 10 | while k > i: 11 | while l[i] <= pivot and i <= end and k > i: 12 | i += 1 13 | while l[k] > pivot and k >= start and k >= i: 14 | k -= 1 15 | 16 | if k > i: 17 | # swap elements 18 | (l[i], l[k]) = (l[k], l[i]) 19 | 20 | # swap pivot into the middle 21 | (l[start], l[k]) = (l[k], l[start]) 22 | 23 | # sort subparts 24 | quicksort(l, start, k - 1) 25 | quicksort(l, k + 1, end) -------------------------------------------------------------------------------- /Lecture-8/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | 3 | \end{frame} 4 | -------------------------------------------------------------------------------- /Lecture-8/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | \end{frame} 4 | -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/quicksort-idea-o1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/quicksort-idea-o1.pdf -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/quicksort-idea-o2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/quicksort-idea-o2.pdf -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/quicksort-idea-o3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/quicksort-idea-o3.pdf -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/quicksort-idea-o4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/quicksort-idea-o4.pdf -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/quicksort-idea-o5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/quicksort-idea-o5.pdf -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/quicksort-idea-o6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/quicksort-idea-o6.pdf -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/quicksort-idea-o7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/quicksort-idea-o7.pdf -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/quicksort-idea.d-names: -------------------------------------------------------------------------------- 1 | quicksort-idea.svgz-gen 2 | quicksort-idea-o1.svg quicksort-idea-o2.svg quicksort-idea-o3.svg quicksort-idea-o4.svg quicksort-idea-o5.svg quicksort-idea-o6.svg quicksort-idea-o7.svg 3 | quicksort-idea-o1.png 4 | quicksort-idea-o1.pdf 5 | quicksort-idea-o2.png 6 | quicksort-idea-o2.pdf 7 | quicksort-idea-o3.png 8 | quicksort-idea-o3.pdf 9 | quicksort-idea-o4.png 10 | quicksort-idea-o4.pdf 11 | quicksort-idea-o5.png 12 | quicksort-idea-o5.pdf 13 | quicksort-idea-o6.png 14 | quicksort-idea-o6.pdf 15 | quicksort-idea-o7.png 16 | quicksort-idea-o7.pdf 17 | SVG2PDF 18 | SVG2PNG 19 | -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/quicksort-idea.svgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/quicksort-idea.svgz -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/sumlinear-plot.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/sumlinear-plot.pdf -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/sumlinear-plot.svgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/sumlinear-plot.svgz -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/sumrandom-plot.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/sumrandom-plot.pdf -------------------------------------------------------------------------------- /Lecture-8/Images/Caching/sumrandom-plot.svgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/Caching/sumrandom-plot.svgz -------------------------------------------------------------------------------- /Lecture-8/Images/DivideAndConquer/maximum-subseq.svgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/DivideAndConquer/maximum-subseq.svgz -------------------------------------------------------------------------------- /Lecture-8/Images/DivideAndConquer/shares-graph.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/DivideAndConquer/shares-graph.pdf -------------------------------------------------------------------------------- /Lecture-8/Images/DivideAndConquer/shares-graph.svgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Images/DivideAndConquer/shares-graph.svgz -------------------------------------------------------------------------------- /Lecture-8/Literature/General/Literature.bib: -------------------------------------------------------------------------------- 1 | @BOOK{eman2015, 2 | AUTHOR = {Prof. Dr.-Ing. Y. Manoli}, 3 | YEAR = {2015}, 4 | TITLE = {Skript zur Vorlesung; Elektronik; Firt-H\"uttinger-Professur f\"ur Mikroelektronik; IMTEK - Universit\"at Freiburg}, 5 | } -------------------------------------------------------------------------------- /Lecture-8/Literature/Literature_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFurtherLiterature} 2 | \begin{itemize} 3 | \item 4 | \textbf{General} 5 | \begin{btSect}{Literature/General/General} 6 | \btPrintAll 7 | \end{btSect} 8 | \end{itemize} 9 | \end{frame} 10 | 11 | %------------------------------------------------------------------------------- 12 | 13 | \begin{frame}{\LectureFurtherLiterature} 14 | \begin{itemize} 15 | \item 16 | \textbf{Caching} 17 | \begin{btSect}{Literature/eng/Cache} 18 | \btPrintAll 19 | \end{btSect} 20 | \end{itemize} 21 | \end{frame} -------------------------------------------------------------------------------- /Lecture-8/Literature/eng/Cache.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_cache, 2 | type = {article}, 3 | key = {Wikipedia - Cache}, 4 | title = {{Cache}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Cache}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-8/Packages/LecturePackages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage[binary-units=true]{siunitx} 2 | 3 | \usepackage{adjustbox} 4 | 5 | \usepackage{tabularx, colortbl, booktabs} % Tables 6 | 7 | \usepackage{tikz} 8 | \usepackage{pgfplots} 9 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 10 | %\usepgfplotslibrary{fillbetween} 11 | 12 | \usepackage{wasysym} % Checkmark etc. 13 | 14 | \usepackage{listings} % Code 15 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /Lecture-8/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-8/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-8/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{8} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{December~2018} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-8/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-8/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Lecture-9/Code/DivideAndConquer/MaxSubTotal_DivideAndConquer.py: -------------------------------------------------------------------------------- 1 | def maxSubArray(X, i, j): @\onslide<2->@ 2 | if i == j: # trivial case 3 | return (X[i], i, i) 4 | 5 | # recursive subsolutions for A, B 6 | m = (i + j) // 2 @\onslide<3->@ 7 | A = maxSubArray(X, i, m) 8 | B = maxSubArray(X, m + 1, j) @\onslide<4->@ 9 | 10 | # rmax and lmax for cornercase C 11 | C1, C2 = rmax(X, i, m), lmax(X, m + 1, j) 12 | C = (C1[0] + C2[0], C1[1], C2[1]) @\onslide<5->@ 13 | 14 | # compute solution from results A, B, C 15 | return max([A, B, C], key=lambda i: i[0]) -------------------------------------------------------------------------------- /Lecture-9/Code/DivideAndConquer/MaxSubTotal_LMax.py: -------------------------------------------------------------------------------- 1 | #Implementation left maximum 2 | def lmax(X, i, j): 3 | maxSum = (X[i], i) 4 | s = X[i] 5 | 6 | # sum up from the lower index going up 7 | # (from left to right) 8 | for k in range(i+1, j+1): 9 | s += X[k] 10 | 11 | if s > maxSum[0]: 12 | maxSum = (s, k) 13 | 14 | return maxSum 15 | -------------------------------------------------------------------------------- /Lecture-9/Code/DivideAndConquer/MaxSubTotal_LinearRuntime.py: -------------------------------------------------------------------------------- 1 | #Implementation - linear runtime 2 | def maxSubArray(X):@\onslide<2->@ 3 | # sum, start index 4 | rMax, irMax = 0, 0 # current maximum 5 | tMax, itMax = 0, 0 # total maximum 6 | @\onslide<3->@ 7 | for i in range(len(X)): 8 | if rMax == 0: 9 | irMax = i 10 | rMax = max(0, rMax + X[i]) 11 | @\onslide<4->@ 12 | if rMax > tMax: 13 | tMax, itMax = rMax, irMax 14 | 15 | return (tMax, itMax) 16 | -------------------------------------------------------------------------------- /Lecture-9/Code/DivideAndConquer/MaxSubTotal_Max.py: -------------------------------------------------------------------------------- 1 | #Implementation max 2 | def max(a, b, c):@\onslide<2->@ 3 | if a > b: 4 | if a > c: 5 | return a 6 | else: 7 | return c@\onslide<3->@ 8 | else: 9 | if c > b: 10 | return c 11 | else: 12 | return b 13 | -------------------------------------------------------------------------------- /Lecture-9/Code/DivideAndConquer/MaxSubTotal_Max2.py: -------------------------------------------------------------------------------- 1 | #Alternative implementation max 2 | @\onslide<2->@ 3 | def max(a, b): 4 | if a > b: 5 | return a 6 | else: 7 | return b@\onslide<3->@ 8 | 9 | def maxTripel(a, b, c): 10 | return max(max(a,b),c) 11 | -------------------------------------------------------------------------------- /Lecture-9/Code/DivideAndConquer/MaxSubTotal_RMax.py: -------------------------------------------------------------------------------- 1 | #Implementation right maximum 2 | def rmax(X, i, j): 3 | maxSum = (X[j], j) 4 | s = X[j] 5 | 6 | # sum up from the upper index going down 7 | # (from right to left) 8 | for k in range(j-1, i-1, -1): 9 | s += X[k] 10 | 11 | if s > maxSum[0]: 12 | maxSum = (s, k) 13 | 14 | return maxSum 15 | -------------------------------------------------------------------------------- /Lecture-9/Code/DivideAndConquer/MaxSubTotal_SecondTrivialCase.py: -------------------------------------------------------------------------------- 1 | #Alternative trivial case 2 | def maxSubArray(X, i, j): @\onslide<2->@ 3 | # trivial: only one element 4 | if i == j: 5 | return (X[i], i, i) @\onslide<3->@ 6 | 7 | # trivial: only two elements 8 | if i + 1 == j: 9 | return max([ 10 | (X[i], i, i), 11 | (X[j], j, j), 12 | (X[i] + X[j], i, j) 13 | ], key=lambda item: item[0]) 14 | 15 | ... # continue as before 16 | -------------------------------------------------------------------------------- /Lecture-9/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-9/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Lecture-9/Images/DivideAndConquer/MaxSubTotal_idea.tikz.tex: -------------------------------------------------------------------------------- 1 | \begin{tikzpicture}[ 2 | list/.style={ 3 | draw=black 4 | }, sum/.style={ 5 | list, 6 | fill=Hell-Gruen 7 | }, label_sum/.style={ 8 | color=black, 9 | font=\huge 10 | } 11 | ]% 12 | % upper list 13 | \draw[list] (0, 0) rectangle ++(16, 1); 14 | 15 | \draw[sum] (1.5, 0) rectangle ++(2, 1); 16 | \draw[sum] (13, 0) rectangle ++(2.5, 1); 17 | 18 | \node[label_sum, anchor=south] at (2.5, 0) {A}; 19 | \node[label_sum, anchor=south] at (14.25, 0) {B}; 20 | 21 | 22 | \draw[list] (8, 1.5) -- (8, -0.5); 23 | \end{tikzpicture} 24 | -------------------------------------------------------------------------------- /Lecture-9/Images/DivideAndConquer/maxsubarray-o1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-9/Images/DivideAndConquer/maxsubarray-o1.pdf -------------------------------------------------------------------------------- /Lecture-9/Images/DivideAndConquer/maxsubarray-o2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-9/Images/DivideAndConquer/maxsubarray-o2.pdf -------------------------------------------------------------------------------- /Lecture-9/Images/DivideAndConquer/maxsubarray-o3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-9/Images/DivideAndConquer/maxsubarray-o3.pdf -------------------------------------------------------------------------------- /Lecture-9/Images/DivideAndConquer/maxsubarray-o4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-9/Images/DivideAndConquer/maxsubarray-o4.pdf -------------------------------------------------------------------------------- /Lecture-9/Images/DivideAndConquer/maxsubarray-o5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-9/Images/DivideAndConquer/maxsubarray-o5.pdf -------------------------------------------------------------------------------- /Lecture-9/Images/DivideAndConquer/maxsubarray.svgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-9/Images/DivideAndConquer/maxsubarray.svgz -------------------------------------------------------------------------------- /Lecture-9/Images/maxsubarray.svgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-9/Images/maxsubarray.svgz -------------------------------------------------------------------------------- /Lecture-9/Literature/General/Literature.bib: -------------------------------------------------------------------------------- 1 | @BOOK{eman2015, 2 | AUTHOR = {Prof. Dr.-Ing. Y. Manoli}, 3 | YEAR = {2015}, 4 | TITLE = {Skript zur Vorlesung; Elektronik; Firt-H\"uttinger-Professur f\"ur Mikroelektronik; IMTEK - Universit\"at Freiburg}, 5 | } -------------------------------------------------------------------------------- /Lecture-9/Literature/Literature_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFurtherLiterature} 2 | \begin{itemize} 3 | \item 4 | \textbf{General} 5 | \begin{btSect}{Literature/General/General} 6 | \btPrintAll 7 | \end{btSect} 8 | \end{itemize} 9 | \end{frame} 10 | 11 | %------------------------------------------------------------------------------- 12 | 13 | \begin{frame}{\LectureFurtherLiterature} 14 | \begin{itemize} 15 | \item 16 | \textbf{Master theorem} 17 | \begin{btSect}{Literature/eng/MasterTheorem} 18 | \btPrintAll 19 | \end{btSect} 20 | \end{itemize} 21 | \end{frame} -------------------------------------------------------------------------------- /Lecture-9/Literature/deu/MasterTheorem.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_master_theorem, 2 | type = {article}, 3 | key = {Wikipedia - Master-Theorem}, 4 | title = {{Master-Theorem}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://de.wikipedia.org/wiki/Master-Theorem}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-9/Literature/eng/MasterTheorem.bib: -------------------------------------------------------------------------------- 1 | @Online{wikipedia_master_theorem, 2 | type = {article}, 3 | key = {Wikipedia - Master theorem}, 4 | title = {{Master theorem}\eatdot}, 5 | publisher = {Wikipedia}, 6 | note = {\url{https://en.wikipedia.org/wiki/Master_theorem}\eatdot} 7 | } -------------------------------------------------------------------------------- /Lecture-9/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Lecture-9/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Lecture-9/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{9} 2 | \def\PresentationExerciseFeedback{false}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{false}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{December~2018} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | -------------------------------------------------------------------------------- /Lecture-9/Styles/Lecture/plain/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | %\usepackage{plain} 3 | -------------------------------------------------------------------------------- /Lecture-9/Styles/Lecture/ufcd/Packages.tex: -------------------------------------------------------------------------------- 1 | \beamertemplatenavigationsymbolsempty 2 | \usepackage{ufcd} -------------------------------------------------------------------------------- /Template-ExerciseSheet/Packages/Packages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage{csquotes} 2 | \usepackage{url, hyperref} 3 | \usepackage{amsfonts} 4 | 5 | \usepackage[binary-units=true]{siunitx} 6 | 7 | \usepackage{adjustbox} 8 | 9 | \usepackage{tabularx, colortbl} % Tables 10 | \usepackage{booktabs} 11 | 12 | \usepackage{tikz} 13 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 14 | 15 | \usepackage{wasysym} % Checkmark etc. 16 | 17 | \usepackage{listings} % Code 18 | \input{Styles/Code/listings-python.prf} % Python style -------------------------------------------------------------------------------- /Template-ExerciseSheet/Packages/Packages_deu.tex: -------------------------------------------------------------------------------- 1 | \usepackage[ngerman]{babel} -------------------------------------------------------------------------------- /Template-ExerciseSheet/Packages/Packages_eng.tex: -------------------------------------------------------------------------------- 1 | \usepackage[english]{babel} -------------------------------------------------------------------------------- /Template-ExerciseSheet/Settings/Settings_General.tex: -------------------------------------------------------------------------------- 1 | \def\ExerciseSheetNumber{1} 2 | 3 | \def\ExerciseSheetAuthors{ 4 | Prof.~Dr.~Rolf~Backofen\\ 5 | Dr. Björn Grüning\\[0.3mm] 6 | Michael Uhl 7 | } 8 | \def\HomepageLink{http://www.bioinf.uni-freiburg.de/Lehre/} -------------------------------------------------------------------------------- /Template-ExerciseSheet/Styles/Sheet/plain/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Template-ExerciseSheet/Styles/Sheet/plain/Footer.tex -------------------------------------------------------------------------------- /Template-ExerciseSheet/Styles/Sheet/plain/Header.tex: -------------------------------------------------------------------------------- 1 | \setlength{\parindent}{0em} 2 | 3 | \newcommand{\exercise}[1]{\par\textbf{\ExerciseSheetExercise\ #1}} 4 | \newcommand{\extraexercise}[1]{\par\textbf{\ExerciseSheetExtraExercise\ #1}} 5 | \newcommand{\examtask}[1]{\par\textbf{\ExerciseSheetExamExercise\ #1}} 6 | \newcommand{\examtasksolution}[1]{\par\textbf{\ExerciseSheetExamSolution\ #1}} 7 | \newcommand{\points}[1]{\textit{(#1\ \ExerciseSheetPoints)}} 8 | \newcommand{\task}[1]{\par\textbf{#1}} 9 | 10 | \begin{document} 11 | \title{\ExerciseSheet\ \ExerciseSheetNumber} 12 | \maketitle -------------------------------------------------------------------------------- /Template-ExerciseSheet/Styles/Sheet/ufcd/Footer.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Template-ExerciseSheet/Styles/Sheet/ufcd/Footer.tex -------------------------------------------------------------------------------- /Template-ExerciseSheet/images/uni_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Template-ExerciseSheet/images/uni_logo.png -------------------------------------------------------------------------------- /Template-Lecture/Feedback/FeedbackExercises_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackExercisesTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Template-Lecture/Feedback/FeedbackLecture_eng.tex: -------------------------------------------------------------------------------- 1 | \begin{frame}{\LectureFeedbackLectureTitle} 2 | 3 | \end{frame} -------------------------------------------------------------------------------- /Template-Lecture/Literature/Literature_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Template-Lecture/Literature/Literature_eng.tex -------------------------------------------------------------------------------- /Template-Lecture/Packages/LecturePackages_General.tex: -------------------------------------------------------------------------------- 1 | \usepackage[binary-units=true]{siunitx} 2 | 3 | \usepackage{adjustbox} 4 | \usepackage{tabitem-beamer} 5 | 6 | \usepackage{tabularx, colortbl} % Tables 7 | 8 | \usepackage{tikz} 9 | \usetikzlibrary{patterns,arrows,decorations.pathreplacing,shapes.geometric} 10 | 11 | \usepackage{wasysym} % Checkmark etc. 12 | 13 | \usepackage{listings} % Code 14 | \input{Styles/Code/listings-python.prf} % Python style 15 | -------------------------------------------------------------------------------- /Template-Lecture/Packages/LecturePackages_eng.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BackofenLab/AlgoDat/73ee84b10a9ec21ea57fe4354c3c6344080b5c70/Template-Lecture/Packages/LecturePackages_eng.tex -------------------------------------------------------------------------------- /Template-Lecture/Settings/LectureSettings_General.tex: -------------------------------------------------------------------------------- 1 | \def\PresentationLectureNumber{1} 2 | \def\PresentationExerciseFeedback{true}% Include the feedback of the exercises? 3 | \def\PresentationLectureFeedback{true}% Include the feedback of the lecture? 4 | 5 | \def\PresentationDate{WS 2018/19} 6 | 7 | \def\PresentationAuthor{Prof.\ Dr.\ Rolf\ Backofen} 8 | \def\PresentationAuthorText{Prof.~Dr.~Rolf~Backofen} 9 | --------------------------------------------------------------------------------