ch08-320201 algorithms and data structures · 2016-05-13 · 320201: fundamental cs i (algorithms...

36
Visualization and Computer Graphics Lab Jacobs University CH08-320201 Algorithms and Data Structures Prof. Dr.-Ing. Lars Linsen Jacobs University Spring 2016

Upload: others

Post on 09-Jul-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

Visualization and Computer Graphics LabJacobs University

CH08-320201Algorithms and Data Structures

Prof. Dr.-Ing. Lars Linsen

Jacobs UniversitySpring 2016

Page 2: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 2

Visualization and Computer Graphics LabJacobs University

0. Introduction

Page 3: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 3

Visualization and Computer Graphics LabJacobs University

0.1 Syllabus and Organization

Page 4: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 4

Visualization and Computer Graphics LabJacobs University

Course website

http://www.faculty.jacobs-university.de/llinsen/teaching/320201.htm

(accessible through CampusNet)

Page 5: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 5

Visualization and Computer Graphics LabJacobs University

Content

• This course introduces a basic set of data structures and algorithms that form the basis of almost all computer programs. The data structures and algorithms are analyzed in respect to their computational complexity with techniques such as worst case and amortized analysis.

• Topics: Fundamental data structures (lists, stacks, trees, hash tables), fundamental algorithms (sorting, searching, graph traversal).

Page 6: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 6

Visualization and Computer Graphics LabJacobs University

Prerequisites

Page 7: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 7

Visualization and Computer Graphics LabJacobs University

Lectures

• Times: – Tuesday 11:15am–12:30am, – Thursday 9:45am–11:00am.

• Location: Research III Lecture Hall

Page 8: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 8

Visualization and Computer Graphics LabJacobs University

Instructor

• Lars Linsen• Office: Res I, 128.• Phone: 3196• E-Mail: l.linsen [@jacobs-university.de]• Office hours: by appointment

Page 9: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 9

Visualization and Computer Graphics LabJacobs University

Tutorials

• Times: tbd• Location: tbd• TAs: Rubin Deliallisi, Joana Halili, Jinbo Zhang.

Page 10: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 10

Visualization and Computer Graphics LabJacobs University

Assignments

• The homework assignments include theoretical and practical problems that tackle topics from the lectures.

• The homework assignments are handed out on a regular basis.• Solutions that are handed in late lead to reduced credit (-15%

per day). • Exceptions are only made with an official excuse. • With an official excuse of up to 4 days, the deadline for the

respective homework is extended by the same amount of days. • With an official excuse of more than 4 days, the respective

homework will not count.• Handing in via JGrader.

Page 11: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 11

Visualization and Computer Graphics LabJacobs University

Exams

• There will be one midterm and a final exam. • There are no quizzes planned.

Page 12: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 12

Visualization and Computer Graphics LabJacobs University

Grading

• Homework assignments contribute 35% to the overall grade.

• The midterm exam contributes 25%.• The final exam contributes 40%.

Page 13: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 13

Visualization and Computer Graphics LabJacobs University

Dates – Lectures (1)

Lecture 1317.03.Lecture 1215.03.Week 7Lecture 1110.03.Lecture 1008.03.Week 6Lecture 903.03.No lecture - off campus01.03.Week 5Lecture 825.02.Lecture 723.02.Week 4Lecture 618.02.Lecture 516.02.Week 3Lecture 411.02.Lecture 309.02.Week 2Lecture 204.02.Lecture 102.02.Week 1

Page 14: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 14

Visualization and Computer Graphics LabJacobs University

Dates – Lectures (2)

Lecture 2512.05.Lecture 2410.05.Week 14Holiday05.05.Lecture 2303.05.Week 13Lecture 2228.04.Lecture 2126.04.Week 12Lecture 2021.04.Lecture 1919.04.Week 11Lecture 1814.04.Lecture 1712.04.Week 10Lecture 1607.04.Lecture 1505.04.Week 9Lecture 1431.03.Midterm29.03.Week 8

Page 15: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 15

Visualization and Computer Graphics LabJacobs University

Dates - Exams

• Midterm: March 29, 2016• Final: tbd (finals’ week)

Page 16: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 16

Visualization and Computer Graphics LabJacobs University

Dates - Assignments

Due: 13.05. at 7pmHanded out: 06.05.Homework 13Due: 06.05. at 7pmHanded out: 29.04.Homework 12Due: 29.04. at 7pmHanded out: 22.04.Homework 11Due: 22.04. at 7pmHanded out: 15.04.Homework 10Due: 15.04. at 7pmHanded out: 08.04.Homework 9Due: 08.04. at 7pmHanded out: 01.04.Homework 8Due: 01.04. at 7pmHanded out: 18.03.Homework 7Due: 18.03. at 7pmHanded out: 11.03.Homework 6Due: 11.03. at 7pmHanded out: 04.03.Homework 5Due: 04.03. at 7pmHanded out: 26.02.Homework 4Due: 26.02. at 7pmHanded out: 19.02.Homework 3Due: 19.02. at 7pmHanded out: 12.02.Homework 2Due: 12.02. at 7pmHanded out: 05.02.Homework 1

Page 17: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 17

Visualization and Computer Graphics LabJacobs University

Literature

• Introduction to Algorithms. Thomas H. Corman, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, 3rd edition, MIT Press, 2009.

Page 18: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 18

Visualization and Computer Graphics LabJacobs University

0.2 Goals

Page 19: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 19

Visualization and Computer Graphics LabJacobs University

Goals

• The objective of the course is to learn about– fundamental algorithms for solving problems

efficiently,– basic algorithmic concepts, – the analysis of algorithms, and– fundamental data structures for efficiently

storing, accessing, and modifying data.

Page 20: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 20

Visualization and Computer Graphics LabJacobs University

0.3 Content

Page 21: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 21

Visualization and Computer Graphics LabJacobs University

Content

1. Foundations2. Sorting & Searching3. Fundamental Data Structures4. Design Concepts5. Graph Algorithms6. Computational Geometry

Page 22: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 22

Visualization and Computer Graphics LabJacobs University

1. Foundations

Page 23: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 23

Visualization and Computer Graphics LabJacobs University

1.1 Definitions

Page 24: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 24

Visualization and Computer Graphics LabJacobs University

Definition: Algorithm

• An algorithm is a sequence of computational steps which transforms a set of values (input) to another set of values (desired output).

• It is a tool for solving a well-defined computational problem.

• Step-wise procedure that can be implemented in a computer program.

• Consists of a finite list of well-defined instructions (Turing machine).

• 'Algorithm' stems from 'Algoritmi', the Latin form of al-Khwārizmī, a Persian mathematician, astronomer and geographer.

Page 25: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 25

Visualization and Computer Graphics LabJacobs University

Example: Sorting Problem

• Input:sequence of numbers.

• Output:permutation such that

• Example (instance of sorting problem):Input: 8 2 4 9 3 6Output: 2 3 4 6 8 9

Page 26: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 26

Visualization and Computer Graphics LabJacobs University

Example: Searching

Page 27: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 27

Visualization and Computer Graphics LabJacobs University

Example: Road map

Graph algorithm

Page 28: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 28

Visualization and Computer Graphics LabJacobs University

Example: DNA sequences

String matching

Page 29: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 29

Visualization and Computer Graphics LabJacobs University

Analysis of algorithms

• The theoretical study of computer-program performance and resource usage.

• Other design goals?– correctness– functionality– robustness– reliability– user-friendliness– programmer time– simplicity– modularity– maintainability– extensibility

Page 30: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 30

Visualization and Computer Graphics LabJacobs University

Performance of Algorithms

• Analysis helps us to understand scalability.• Performance often draws the line between what is

feasible and what is impossible.• Algorithmic mathematics provides a language for

talking about program behavior.• “Performance is the currency of computing.“• The lessons of program performance generalize to

other computing resources.

Page 31: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 31

Visualization and Computer Graphics LabJacobs University

Definition: Data Structure

• A data structure is a way to store and organize data in order to facilitate access and modification.

• There is typically no best data structure, but each data structure has its strengths and weaknesses.

• Which data structure to use, depends on the problem that is to be solved.

• Sometimes there is a trade-off between storage (in a data structure) and speed (in accessing a data structure or of an algorithm).

Page 32: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 32

Visualization and Computer Graphics LabJacobs University

1.2 First example: Insertion Sort

Page 33: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 33

Visualization and Computer Graphics LabJacobs University

Sorting problem

• First algorithm: Insertion Sort

Page 34: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 34

Visualization and Computer Graphics LabJacobs University

Insertion Sort

Page 35: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 35

Visualization and Computer Graphics LabJacobs University

Example

• Sort A = < 5, 2, 4, 6, 1, 3 >

Page 36: CH08-320201 Algorithms and Data Structures · 2016-05-13 · 320201: Fundamental CS I (Algorithms and Data Structures) 31 Visualization and Computer Graphics Lab Jacobs University

320201: Fundamental CS I (Algorithms and Data Structures) 36

Visualization and Computer Graphics LabJacobs University

Correctness

• Loop invariant:At the start of each iteration of the for loop, the subarray A[1..j-1] consists of elements originally in A[1..j-1], but in sorted order.