Data Structures Chuan-Ming Liu

Slides:



Advertisements
Similar presentations
LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET Recursive & Dynamic Programming.
Advertisements

MATH 224 – Discrete Mathematics
8 Algorithms Foundations of Computer Science ã Cengage Learning.
© 2004 Goodrich, Tamassia Using Recursion1 Programming with Recursion.
© 2004 Goodrich, Tamassia Using Recursion1. © 2004 Goodrich, Tamassia Using Recursion2 Recall the Recursion Pattern (§ 2.5) Recursion: when a method calls.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. ETC - 1 What comes next? Recursion (Chapter 15) Recursive Data Structures.
Revision Using Recursion1 Recursion. Revision Using Recursion2 Recall the Recursion Pattern Recursion: when a method calls itself Classic example--the.
© 2004 Goodrich, Tamassia Using Recursion1. © 2004 Goodrich, Tamassia Using Recursion2 Recall the Recursion Pattern (§ 2.5) Recursion: when a method calls.
Programming with Recursion
Chapter 2: Algorithm Discovery and Design
Fall 2006CSC311: Data Structures1 Chapter 3 Arrays, Linked Lists, and Recursion Objectives –Using Arrays –Singly Linked Lists –Doubly Linked Lists –Circularly.
Recursion.
Recursion Chapter 5 Outline Induction Linear recursion –Example 1: Factorials –Example 2: Powers –Example 3: Reversing an array Binary recursion –Example.
Introduction to Recursion by Dr. Bun Yue Professor of Computer Science 2013
Using Recursion1 Recursion © 2010 Goodrich, Tamassia.
1 Object-Oriented Programming Using C++ CLASS 2. 2 Linear Recursion Summing the Elements of an Array Recursively Algorithm LinearSum(A, n): Input: An.
Discrete Mathematics Algorithms. Introduction  An algorithm is a finite set of instructions with the following characteristics:  Precision: steps are.
1 Chapter 24 Developing Efficient Algorithms. 2 Executing Time Suppose two algorithms perform the same task such as search (linear search vs. binary search)
ITEC 2620A Introduction to Data Structures
COMPE 226 Data Structures 2015 Fall Murat KARAKAYA Department of Computer Engineering.
Introduction to Recursion CSCI 3333 Data Structures.
Chapter 12 Recursion, Complexity, and Searching and Sorting
Introduction Algorithms and Conventions The design and analysis of algorithms is the core subject matter of Computer Science. Given a problem, we want.
Instructor Information: Dr. Radwa El Shawi Room: Week # 1: Overview & Review.
DATA STRUCTURES (CS212D) Week # 1: Overview & Review.
Bilgisayar Mühendisliği Bölümü CENG 102 – Computer Programming Melek OKTAY Syllabus Administrative Information.
Data Structures (Second Part) Lecture 1 Bong-Soo Sohn Assistant Professor School of Computer Science and Engineering Chung-Ang University.
Recursion Trees1 Recursion is a concept of defining a method that makes a call to itself.
Dr. Alagoz Data Structures & Algorithm Analysis in JAVA (CMPE250) Fatih Alagöz Office: ETA42 Ext.6652
Data Structure Introduction.
CSC 212 More Recursion, Stacks, & Queues. Linear Recursion Test for the bases cases  At least one base case needs to be defined If not at a base case,
ICS202 Data Structures King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science Department.
Data Structures & Algorithms CHAPTER 1 Introduction Ms. Manal Al-Asmari.
8.1 8 Algorithms Foundations of Computer Science  Cengage Learning.
Course Info Instructor U.T. Nguyen Office: CSEB Office hours: Tuesday, 14:30-15:30 Thursday, 12:00-12:45 By.
Data Structures and Algorithms in Java AlaaEddin 2012.
JAVA: An Introduction to Problem Solving & Programming, 5 th Ed. By Walter Savitch and Frank Carrano. ISBN © 2008 Pearson Education, Inc., Upper.
DATA STRUCTURES (CS212D) Overview & Review Instructor Information 2  Instructor Information:  Dr. Radwa El Shawi  Room: 
23 February Recursion and Logarithms CSE 2011 Winter 2011.
Chapter 2: Algorithm Discovery and Design Invitation to Computer Science.
Recursion1 © 2013 Goodrich, Tamassia, Goldwasser.
CMPT 238 Data Structures Instructor: Tina Tian. General Information Office: RLC 203A Office Hour: Tue and Fri 12:30 - 2:00PM.
Given a node v of a doubly linked list, we can easily insert a new node z immediately after v. Specifically, let w the be node following v. We execute.
Data Structures I (CPCS-204)
Maitrayee Mukerji. Factorial For any positive integer n, its factorial is n! is: n! = 1 * 2 * 3 * 4* ….* (n-1) * n 0! = 1 1 ! = 1 2! = 1 * 2 = 2 5! =
1 CENG 707 Data Structures and Algorithms Nihan Kesim Çiçekli Department of Computer Engineering Middle East Technical University Fall 2013.
Data Structures I (CPCS-204) Week # 5: Recursion Dr. Omar Batarfi Dr. Yahya Dahab Dr. Imtiaz Khan.
CENG 707 Data Structures and Algorithms
Recursion 5/4/2018 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H.
Applied Discrete Mathematics Week 2: Functions and Sequences
Recursion 5/22/2018 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M.
COP 3503 FALL 2012 Shayan Javed Lecture 15
CENG 213 Data Structures Dr. Cevat Şener
GC211Data Structure Lecture2 Sara Alhajjam.
Recursion and Logarithms
Computer Science 102 Data Structures CSCI-UA
CS 201 – Data Structures and Discrete Mathematics I
Data Structures (CS212D) Overview & Review.
Algorithm An algorithm is a finite set of steps required to solve a problem. An algorithm must have following properties: Input: An algorithm must have.
Recursion © 2013 Goodrich, Tamassia, Goldwasser Recursion Sequences
Week # 1: Overview & Review
Data Structures (CS212D) Overview & Review.
ITEC 2620M Introduction to Data Structures
Programming with Recursion
Programming with Recursion
CS210- Lecture 3 Jun 6, 2005 Announcements
Sequences 6/1/2019 7:49 PM Using Recursion Using Recursion.
Recursion © 2013 Goodrich, Tamassia, Goldwasser Recursion Sequences
Presentation transcript:

Data Structures Chuan-Ming Liu Computer Science & Information Engineering National Taipei University of Technology Taiwan CSIE, NTUT, TAIWAN

Instructor Chuan-Ming Liu (劉傳銘) Office: 1530 Technology Building Computer Science and Information Engineering National Taipei University of Technology TAIWAN Phone:  (02) 2771-2171 ext. 4251 Email: cmliu@csie.ntut.edu.tw Office Hours: Mon: 11:10-12:00, 13:10-14:00 and Thu:10:10 - 12:00, OR by appointment. CSIE, NTUT, TAIWAN

Teaching Assisant Bill In-Chi Su (蘇英啟) Office: 1226 Technology Building Office Hours: Tue:10:00~12:00 and Wed: 10:00 ~ 12:00, OR by appointment Email: billandcs@gmail.com Phone: 02-2771-2171 ext. 4262 CSIE, NTUT, TAIWAN

Text Books Ellis Horowitz, Sartaj Sahni, and Susan Anderson-Frees, Fundamentals of Data Structures in C, 2nd edition, Silicon Press, 2008. Supplementary Texts Michael T. Goodrich and Roberto Tamassia, Data Structures and Algorithms in JAVA, 4th edition, John Wiley & Sons, 2006. ISBN: 0-471-73884-0. Sartaj Sahni, Data Structures, Algorithms, and Applications in JAVA, 2nd edition, Silicon Press, 2005. ISBN: 0-929306-33-3. Frank M. Carranno and Walter Savitch, Data Structures and Abstractions with Java, Prentice Hall, 2003. ISBN: 0-13-017489-0. CSIE, NTUT, TAIWAN

Course Outline Introduction and Recursion Analysis Tools Arrays Stacks and Queues Linked Lists Sorting Hashing Trees Priority Queues Search Trees Graphs CSIE, NTUT, TAIWAN

Course Work Assignments (50%): 6-8 homework sets Midterm (20%) Final exam (30%) CSIE, NTUT, TAIWAN

Course Policy (1) No late homework is acceptable. For a regrade please contact me for the question within 10 days from the date when the quiz or exam was officially returned. No regrading after this period. Cheating directly affects the reputation of the Department and the University and lowers the morale of other students. Cheating in homework and exam will not be tolerated.  An automatic grade of 0 will be assigned to any student caught cheating. Presenting another person's work as your own constitutes cheating. Everything you turn in must be your own doing. CSIE, NTUT, TAIWAN

Course Policy (2) The following activities are specifically forbidden on all graded course work: Theft or possession of another student's solution or partial solution in any form (electronic, handwritten, or printed). Giving a solution or partial solution to another student, even with the explicit understanding that it will not be copied. Working together to develop a single solution and then turning in copies of that solution (or modifications) under multiple names. CSIE, NTUT, TAIWAN

First Thing to Do Please visit the course web site http://www.cc.ntut.edu.tw/~cmliu/DS/NTUT_DS_S09u-GIT/ Send an email to me using the email address:cmliu@csie.ntut.edu.tw. I will make a mailing list for this course. All the announcements will be broadcast via this mailing list. CSIE, NTUT, TAIWAN

Introduction Chuan-Ming Liu Computer Science & Information Engineering National Taipei University of Technology Taiwan CSIE, NTUT, TAIWAN

Outline Data Structures and Algorithms Pseudo-code Recursion CSIE, NTUT, TAIWAN

What is Data Structures A data structure * in computer science is a way of storing data in a computer so that it can be used efficiently. An organization of mathematical and logical concepts of data Implementation using a programming language A proper data structure can make the algorithm or solution more efficient in terms of time and space * Wikipedia: http://en.wikipedia.org/wiki/Data_structure CSIE, NTUT, TAIWAN

Why We Learn Data Structures Knowing data structures well can make our programs or algorithms more efficient In this course, we will learn Some basic data structures How to tell if the data structures are good or bad The ability to create some new and advanced data structures CSIE, NTUT, TAIWAN

What is an Algorithm (1) An algorithm is a finite set of instructions that, if followed, accomplishes a particular task. All the algorithms must satisfy the following criteria: Input Output Precision (Definiteness) Effectiveness Finiteness CSIE, NTUT, TAIWAN

What is an Algorithm (2) Definiteness: each instruction is clear and unambiguous Effectiveness: each instruction is executable; in other words, feasibility Finiteness: the algorithm terminates after a finite number of steps. CSIE, NTUT, TAIWAN

What is an Algorithm (3) Definiteness Output Input Effectiveness Computational Procedures CSIE, NTUT, TAIWAN

Procedures vs. Algorithms Termination or not One example for procedure is OS Program, a way to express an algorithm CSIE, NTUT, TAIWAN

Expressing Algorithms Ways to express an algorithm Graphic (flow chart) Programming languages (C/C++) Pseudo-code representation CSIE, NTUT, TAIWAN

Outline Data Structures and Algorithms Pseudo-code Recursion CSIE, NTUT, TAIWAN

Example – Selection Sort Suppose we must devise a program that sorts a collection of n1 elements. Idea: Among the unsorted elements, select the smallest one and place it next in the sorted list. for (int i=1; i<=n; i++) { examine a[i] to a[n] and suppose the smallest element is at a[j]; interchange a[i] and a[j]; } CSIE, NTUT, TAIWAN

Pseudo-code for Selection Sort SelectionSort(A) /* Sort the array A[1:n] into nondecreasing order. */ for i 1 to length[A] do j  i for k  (i+1) to length[A] do if A[k]<A[j] then j  k; t  A[i] A[i]  A[j] A[j]  t CSIE, NTUT, TAIWAN

Maximum of Three Numbers This algorithm finds the largest of the numbers a, b, and c. Input Parameters: a, b, c Output Parameter: x max(a,b,c,x) { x = a if (b > x) // if b is larger than x, update x x = b if (c > x) // if c is larger than x, update x x = c } CSIE, NTUT, TAIWAN

Pseudo-Code Conventions Indentation as block structure Loop and conditional constructs similar to those in PASCAL, such as while, for, repeat( do – while) , if-then-else // as the comment in a line Using = for the assignment operator Variables local to the given procedure CSIE, NTUT, TAIWAN

Pseudo-Code Conventions Relational operators: ==, != , , . Logical operators: &&, ||, !. Array element accessed by A[i] and A[1..j] as the subarray of A CSIE, NTUT, TAIWAN

Outline Data Structures and Algorithms Pseudo-code Recursion CSIE, NTUT, TAIWAN

Recursion Recursion is the concept of defining a method that makes a call to itself A method calling itself is making a recursive call A method M is recursive if it calls itself (direct recursion) or another method that ultimately leads to a call back to M (indirect recursion) CSIE, NTUT, TAIWAN

Repetition Repetition can be achieved by Factorial function Loops (iterative) : for loops and while loops Recursion (recursive) : a function calls itself Factorial function General definition: n! = 1· 2· 3· ··· · (n-1)· n Recursive definition CSIE, NTUT, TAIWAN

Method for Factorial Function recursive factorial function public static int recursiveFactorial(int n) { if (n == 0) return 1; else return n * recursiveFactorial(n- 1); } CSIE, NTUT, TAIWAN

Content of a Recursive Method Base case(s) Values of the input variables for which we perform no recursive calls are called base cases (there should be at least one base case). Every possible chain of recursive calls must eventually reach a base case. Recursive calls Calls to the current method. Each recursive call should be defined so that it makes progress towards a base case. CSIE, NTUT, TAIWAN

Visualizing Recursion Example recursion trace: Recursion trace A box for each recursive call An arrow from each caller to callee An arrow from each callee to caller showing return value return 4*6 recursiveFactorial(4) return 3*2 recursiveFactorial(3) return 2*1 recursiveFactorial(2) return 1*1 recursiveFactorial(1) return 1 recursiveFactorial(0) CSIE, NTUT, TAIWAN

About Recursion Advantages Examples Avoiding complex case analysis Avoiding nested loops Leading to a readable algorithm description Efficiency Examples File-system directories Syntax in modern programming languages CSIE, NTUT, TAIWAN

Linear Recursion The simplest form of recursion A method M is defined as linear recursion if it makes at most one recursive call Example: Summing the Elements of an Array Given: An integer array A of size m and an integer n, where m ≧n≧1. Problem: the sum of the first n integers in A. CSIE, NTUT, TAIWAN

Summing the Elements of an Array Solutions: using (for) loop using recursion Algorithm LinearSum(A, n): Input: integer array A, an integer n ≧ 1, such that A has at least n elements Output: The sum of the first n integers in A if n = 1 then return A[0] else return LinearSum(A, n - 1) + A[n - 1] Note: the index starts from 0. CSIE, NTUT, TAIWAN

Recursive Method An important property of a recursive method – the method terminates An algorithm using linear recursion has the following form: Test for base cases Recur CSIE, NTUT, TAIWAN

Analyzing Recursive Algorithms Recursion trace Box for each instance of the method Label the box with parameters Arrows for calls and returns call return 15 + A [ 4 ] = 15 + 5 = 20 LinearSum ( A , 5 ) call return 13 + A [ 3 ] = 13 + 2 = 15 LinearSum ( A , 4 ) call return 7 + A [ 2 ] = 7 + 6 = 13 LinearSum ( A , 3 ) call return 4 + A [ 1 ] = 4 + 3 = 7 LinearSum ( A , 2 ) call return A [ ] = 4 LinearSum ( A , 1 ) CSIE, NTUT, TAIWAN

Example Reversing an Array by Recursion Solutions Given: An array A of size n Problem: Reverse the elements of A (the first element becomes the last one, …) Solutions Nested loop ? Recursion CSIE, NTUT, TAIWAN

Reversing an Array Algorithm ReverseArray(A, i, j): Input: An array A and nonnegative integer indices i and j Output: The reversal of the elements in A starting at index i and ending at j if i < j then Swap A[i] and A[ j] ReverseArray(A, i + 1, j - 1) return CSIE, NTUT, TAIWAN

Facilitating Recursion In creating recursive methods, it is important to define the methods in ways that facilitate recursion. This sometimes requires we define additional parameters that are passed to the method. For example, we defined the array reversal method as ReverseArray(A, i, j), not ReverseArray(A). CSIE, NTUT, TAIWAN

Example – Computing Powers The power function, p(x, n)=xn, can be defined recursively: Following the definition leads to an O(n) time recursive algorithm (for we make n recursive calls). We can do better than this, however. CSIE, NTUT, TAIWAN

Recursive Squaring We can derive a more efficient linearly recursive algorithm by using repeated squaring: For example, 24 = 2(4/2)2 = (24/2)2 = (22)2 = 42 = 16 25 = 21+(4/2)2 = 2(24/2)2 = 2(22)2 = 2(42) = 32 26 = 2(6/2)2 = (26/2)2 = (23)2 = 82 = 64 27 = 21+(6/2)2 = 2(26/2)2 = 2(23)2 = 2(82) = 128 CSIE, NTUT, TAIWAN

A Recursive Squaring Method Algorithm Power(x, n): Input: A number x and integer n ≧ 0 Output: The value xn if n = 0 then return 1 if n is odd then y = Power(x, (n - 1)/ 2) return x · y ·y else /* n is even */ y = Power(x, n/ 2) return y · y CSIE, NTUT, TAIWAN

Analyzing the Recursive Squaring Method Algorithm Power(x, n): Input: A number x and integer n ≧0 Output: The value xn if n = 0 then return 1 if n is odd then y = Power(x, (n - 1)/ 2) return x · y · y else y = Power(x, n/ 2) return y · y Each time we make a recursive call we halve the value of n; hence, we make log n recursive calls. That is, this method runs in O(log n) time. It is important that we used a variable twice here rather than calling the method twice. CSIE, NTUT, TAIWAN

Tail Recursion Tail recursion occurs when a linearly recursive method makes its recursive call as its last step. Such methods can be easily converted to non-recursive methods (which saves on some resources). The array reversal method is an example. CSIE, NTUT, TAIWAN

Example – Using Iteration Algorithm IterativeReverseArray(A, i, j ): Input: An array A and nonnegative integer indices i and j Output: The reversal of the elements in A starting at index i and ending at j while i < j do Swap A[i ] and A[ j ] i = i + 1 j = j - 1 return CSIE, NTUT, TAIWAN

Binary Recursion Binary recursion occurs whenever there are two recursive calls for each non-base case. Example: BinaySum CSIE, NTUT, TAIWAN

Example – Summing n Elements in an Array Recall that this problem has been solved using linear recursion Using binary recursion instead of linear recursion Algorithm BinarySum(A, i, n): Input: An array A and integers i and n Output: The sum of the n integers in A starting at index i if n = 1 then return A[i ] return BinarySum(A,i,n/2)+BinarySum(A,i+n/2,n/2) CSIE, NTUT, TAIWAN

Recursion Trace Note the floor and ceiling used in the method 3 , 1 2 4 8 7 6 5 CSIE, NTUT, TAIWAN

Fibonacci Numbers Fibonacci numbers are defined recursively: F0 = 0 Fi = Fi-1 + Fi-2 for i > 1. Example: 0, 1, 1, 2, 3, 5, 8, … CSIE, NTUT, TAIWAN

Fibonacci Numbers – Binary Recursion Algorithm BinaryFib(k): Input: Nonnegative integer k Output: The kth Fibonacci number Fk if k ≦ 1 then return k else return BinaryFib(k-1) + BinaryFib(k-2) CSIE, NTUT, TAIWAN

Analyzing the Binary Recursion Algorithm BinaryFib makes a number of calls that are exponential in k By observation, there are many redundant computations: F0 = 0; F1 = 1; F2 = F1 + F0; F3 = F2 + F1 =(F1 + F0)+ F1; … The above two results show the inefficiency of the method using binary recursion CSIE, NTUT, TAIWAN

A Better Fibonacci Algorithm Using linear recursion instead – avoid the redundant computation: Algorithm LinearFibonacci(k): Input: A nonnegative integer k Output: Pair of Fibonacci numbers (Fk, Fk-1) if k = 1 then return (k, 0) else (i, j) = LinearFibonacci(k - 1) return (i +j, i) Runs in O(k) time. CSIE, NTUT, TAIWAN

Multiple Recursion Motivating example: summation puzzles pot + pan = bib dog + cat = pig boy + girl = baby Multiple recursion: makes potentially many recursive calls (not just one or two). CSIE, NTUT, TAIWAN

Algorithm for Multiple Recursion Algorithm PuzzleSolve(k,S,U): Input: An integer k, sequence S, and set U (the universe of elements to test) Output: An enumeration of all k-length extensions to S using elements in U without repetitions for all e in U do Remove e from U {e is now being used} Add e to the end of S if k = 1 then Test whether S is a configuration that solves the puzzle if S solves the puzzle then return “Solution found: ” S else PuzzleSolve(k - 1, S,U) Add e back to U {e is now unused} Remove e from the end of S CSIE, NTUT, TAIWAN

Visualizing PuzzleSolve() 3 , () ,{ a b c } ) Initial call 2 1 ab ac cb ca bc ba abc acb bac bca cab cba CSIE, NTUT, TAIWAN