Recap: Hash Tables. Recap : Open hash. Recap: Illustration of ChainedHash. Key features. Key components. Probing strategies.

Size: px
Start display at page:

Download "Recap: Hash Tables. Recap : Open hash. Recap: Illustration of ChainedHash. Key features. Key components. Probing strategies."

Transcription

1 Recap: Hash Tables Biostatistics 5/85 Lecture : Dynamic Programming Hyun Min Kang February 3rd, 2 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 / 3 Key features Θ() complexity for Insert, Search, and Remove Requires large memory space than the actual content for maintainng good performance But uses much smaller memory than direct-addres tables Key components Hash function h(xkey) mapping key onto smaller addressible space H Total required memory is the possible number of hash values Good hash function minimize the possibility of key collisions Collision-resolution strategy, when h(k ) = h(k 2 ) Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 2 / 3 Recap: Illustration of ChainedHash Recap : Open hash Probing strategies Linear probing Quadratic probing Double hashing Double Hashing h(k, i) = (h (k) + ih 2 (k)) mod m The probe sequence depends in two ways upon k For example, h (k) = k mod m, h 2 (k) = + (k mod m ) Avoid clustering problem Performance close to ideal scheme of uniform hashing Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 3 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 / 3

2 Today Recap: Divide and conquer algorithms Dynamic Programming numbers Manhattan tourist problems Edit distance problem Good examples of divide and conquer algorithms TowerOfHanoi MergeSort QuickSort BinarySearchTree algorithms These algorithms divide a problem into smaller and disjoint subproblems until they become trivial Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 5 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 / 3 A divide-and-conquer algorithms for numbers Performance of recursive numbers F n = F n + F n 2 n > n = n = A recursive implementation of fibonacci numbers int fibonacci(int n) { if ( n < 2 ) return n; else return fibonacci(n-)+fibonacci(n-2); Computational time seconds for calculating F seconds for calculating F 5 seconds for calculating F! Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 8 / 3

3 What is happening in the recursive Time complexity of redundant T(n) = T(n ) + T(n 2) T() = T() = T(n) = F n+ The time complexity is exponential Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 / 3 A non-redundant Key idea in non-redundant int fibonacci(int n) { int* fibs = new int[n+]; fibs[] = ; fibs[] = ; for(int i=2; i <= n; ++i) { fibs[i] = fibs[i-]+fibs[i-2]; int ret = fibs[n]; delete [] fibs; return ret; Each F n will be reused to calculate F n+ and F n+2 Store F n into an array so that we don t have to recalculate it Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 2 / 3

4 A recursive, but non-redundant int fibonacci(int* fibs, int n) { if ( fibs[n] > ) { return fibs[n]; else if ( n < 2 ) { return n; // reuse stored solution if available // terminal condition fibs[n] = fibonacci(n-) + fibonacci(n-2); // store the solution once computed return fibs[n]; Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 3 / 3 Dynamic programming Key components of dynamic programing Problems that can be divided into subproblems Overlapping subproblems - subproblems share subsubproblems Solves each subsubproblem just once and then saves its answer Why dynamic programming? According to wikipedia The word dynamic was chosen because it sounded impressive, not because how the method works Examples of dynamic programming Shortest path finding algorithms DNA sequence alignment Hidden markov models Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 / 3 Steps of dynamic programming The Manhattan tourist problem Find the cost-optimal path from left-top corner to right-bottom corner 2 Characterize the structure of an (optimal) solution 2 Recursively define the value of an (optimal) solution Compute the value of an (optimal) solution, typically in a bottom-up fashion Construct an optimal solution from computed information Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 5 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 / 3

5 One possible (but not optimal) solution A slightly better, but still not an optimal solution!" #" 2 2!" #" 2 2 $!" $#" 5 $!" $#" 5 $%" $&" $&" $%" $&" '%" 3 '#" ('" '#" ')" Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 8 / 3 And here comes an optimal solution A brute-force algorithm!" #" 2 &" &" 5 2 *" 8 *" 8 8 $&" $&" 5 '$" Algorithm BruteForce Enumerate all the possible paths 2 Calculate the cost of each possible path 3 Pick the path that produces a minimum cost Time complexity Number of possible paths are ( n r +n c ) n r Super-exponential growth when n r and n c are similar Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 2 / 3

6 A dynamic structure of the solution Time complexity of the dynamic solution Let C(r, c) be the optimal cost from (, ) to (r, c) Let h(r, c) be the weight from (r, c) to (r, c + ) Let v(r, c) be the weight from (r, c) to (r +, c) We can recursively define the optimal cost as { C(r, c) + v(r, c) min r >, c > C(r, c ) + h(r, c ) C(r, c) = C(r, c ) + h(r, c ) r >, c = C(r, c) + v(r, c) r =, c > r =, c = Each recursive step takes a constant time Each C(r, c) is evaluated at most once Total time complexity is Θ(n r n c ) Like search, the time complexity would be super exponential if C(r, c) is not stored and redundantly evaluated Once C(r, c) is evaluated, it must be stored to avoid redundant computation Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 2 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 22 / 3 Reconstructing the optimal path Example of backtracking the path!" #" 2 &" &" 2 Optimal cost does not automatically produce optimal path When choosing smaller-cost path between two alternatives, store the decision Backtrack from the destination to the source based on the stored decision *" 5 *" $&" $&" '$" Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 23 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 2 / 3

7 Implementing Manhattan tourist algorithm Manhattan tourist problem : main() template<class T> class Matrix { // Matrix data type to store the costs T* data; // internal data as one-dimensional array int nr, nc; // # rows and # cols Matrix(const Matrix<T>& m) {; // prevent copy public: Matrix(int nrows, int ncols) : nr(nrows), nc(ncols) { data = new T[nrows*ncols](); // initialize matrix Matrix() { if ( data!= NULL ) delete [] data; // accessor function : possible to use to read/write elements // value = Mat(i,j); // Mat(i,j) = value2; T& at(int r, int c) { return data[r*nc+c]; void print(); // print the content of the matrix (omitted) ; int main(int argc, char** argv) { int nrows = 5, ncols = 5; Matrix<int> hw(nrows,ncols-), vw(nrows-,ncols); // weight matrices hwat(,) = ; hwat(,) = 2; // initialize horizontal weights vwat(,) = ; vwat(,) = ; // initialize vertical weights // optimal costs and decisions for backtracking Matrix<int> cost(nrows,ncols), move(nrows,ncols); // calculate the optimal cost, recording the backtracking info int optcost = optimalcost(hw,vw,cost,move,nrows-,ncols-); std::cout << "Optimal cost is " << optcost << std::endl; // backtrack the stored decision to reconstruct an optimal path trackoptimalpath(hw,vw,cost,move,nrows-,ncols-); return ; Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 25 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 2 / 3 Calculating optimal cost Calculating optimal cost (cont d) // hw, vw : horizontal and vertical input weights // cost : stored optimal cost from (,) to (r,c) // move : stored optimal decision to reach (r,c) // r,c : the position of interest int optimalcost(matrix<int>& hw, Matrix<int>& vw, Matrix<int>& cost, Matrix<int>& move, int r, int c) { // if cost is stored already, skip the cost evaluation if ( costat(r,c) == ) { if ( ( r == ) && ( c == ) ) costat(r,c) = ; // terminal condition else if ( r == ) { // only horizontal move is possible moveat(r,c) = ; // means horitontal move to (r,c) costat(r,c) = optimalcost(hw,vw,cost,move,r,c-) + hwat(r,c-); else if ( c == ) { // only vertical move is possible moveat(r,c) = ; // means vertical move to (r,c) costat(r,c) = optimalcost(hw,vw,cost,move,r-,c) + vwat(r-,c); else { // evaluate the cumulative cost of horizontal and vertical move int hcost = optimalcost(hw,vw,cost,move,r,c-) + hwat(r,c-); int vcost = optimalcost(hw,vw,cost,move,r-,c) + vwat(r-,c); if ( hcost > vcost ) { // when vertical move is optimal moveat(r,c) = ; // store the decision costat(r,c) = vcost; // and store the optimal cost else { // when horizontal move is optimal moveat(r,c) = ; costat(r,c) = hcost; return costat(r,c); // return the optimal cost Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 2 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 28 / 3

8 Dynamic programming : A smart recursion Minimum edit distance problem Dynamic programming is recursion without repetition Formulate the problem recursively 2 Build solutions to your recurrence from the bottom up Dynamic programming is not about filling in tables; it s about smart recursion (Jeff Erickson) Edit distance Minimum number of letter insertions, deletions, substitutions required to transform one word into another An example Edit distance is in the example above Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 2 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 3 / 3 More examples of edit distance A dynamic programming solution Similar representation to DNA sequence alignment Does the above alignment provides an optimal edit distance? Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 3 / 3 Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 32 / 3

9 Recursively formulating the problem Input strings are x[,, m] and y[,, n] Let x i = x[,, i] and y j = y[,, j] be substrings of x and y Edit distance d(x, y) can be recursively defined as follows i j = j i = d(x i, y j ) = d(x i, y j ) + min d(x i, y j ) + otherwise d(x i, y i ) + I(x[i] y[j]) Similar to the Manhattan tourist problem, but with 3-way choice Time complexity is Θ(mn) Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 33 / 3 Today Dynamic programming is a smart recursion avoiding redundancy Divide a problem into subproblems that can be shared Examples of dynamic programming numbers Manhattan tourist problem Edit distance problem Next lecture Algorithms in graphs Using boost library Dijkstra s algorithm (CLRS Chapter 2) to hidden Markov model Hyun Min Kang Biostatistics 5/85 - Lecture February 3rd, 2 3 / 3

Biostatistics 615/815 Lecture 9: Dynamic Programming

Biostatistics 615/815 Lecture 9: Dynamic Programming Biostatistics 615/815 Lecture 9: Dynamic Programming Hyun Min Kang October 4th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 8 October 4th, 2011 1 / 40 Direct address tables Direct address table

More information

Announcements. Biostatistics 615/815 Lecture 8: Hash Tables, and Dynamic Programming. Recap: Example of a linked list

Announcements. Biostatistics 615/815 Lecture 8: Hash Tables, and Dynamic Programming. Recap: Example of a linked list Announcements Biostatistics 615/815 Lecture 8:, and Dynamic Programming Hyun Min Kang February 1st, 2011 Homework #2 For problem 3, assume that all the input values are unique Include the class definition

More information

Biostatistics 615/815 Lecture 10: Hidden Markov Models

Biostatistics 615/815 Lecture 10: Hidden Markov Models Biostatistics 615/815 Lecture 10: Hidden Markov Models Hyun Min Kang October 4th, 2012 Hyun Min Kang Biostatistics 615/815 - Lecture 10 October 4th, 2012 1 / 33 Manhattan Tourist Problem Let C(r, c) be

More information

Biostatistics 615/815 - Lecture 2 Introduction to C++ Programming

Biostatistics 615/815 - Lecture 2 Introduction to C++ Programming Biostatistics 615/815 - Lecture 2 Introduction to C++ Programming Hyun Min Kang September 6th, 2012 Hyun Min Kang Biostatistics 615/815 - Lecture 2 September 6th, 2012 1 / 31 Last Lecture Algorithms are

More information

Biostatistics 615/815 Statistical Computing

Biostatistics 615/815 Statistical Computing Biostatistics 615/815 Statistical Computing Hyun Min Kang Januray 6th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 1 Januray 6th, 2011 1 / 35 Objectives Understanding computational aspects of statistical

More information

Biostatistics 615/815 Lecture 5: More on STLs, and Divide and Conquer Algorithms

Biostatistics 615/815 Lecture 5: More on STLs, and Divide and Conquer Algorithms Biostatistics 615/815 Lecture 5: More on s, and Algorithms Hyun Min Kang Januray 20th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 5 Januray 20th, 2011 1 / 28 Announcements Homework #1 is due, late

More information

Algorithm Design Techniques part I

Algorithm Design Techniques part I Algorithm Design Techniques part I Divide-and-Conquer. Dynamic Programming DSA - lecture 8 - T.U.Cluj-Napoca - M. Joldos 1 Some Algorithm Design Techniques Top-Down Algorithms: Divide-and-Conquer Bottom-Up

More information

CS 380 ALGORITHM DESIGN AND ANALYSIS

CS 380 ALGORITHM DESIGN AND ANALYSIS CS 380 ALGORITHM DESIGN AND ANALYSIS Lecture 14: Dynamic Programming Text Reference: Chapter 15 Dynamic Programming We know that we can use the divide-and-conquer technique to obtain efficient algorithms

More information

Biostatistics 615/815 Lecture 5: Divide and Conquer Algorithms Sorting Algorithms

Biostatistics 615/815 Lecture 5: Divide and Conquer Algorithms Sorting Algorithms Biostatistics 615/815 Lecture 5: Algorithms Algorithms Hyun Min Kang September 20th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 5 September 20th, 2011 1 / 30 Recap - An example C++ class #include

More information

CS 151. Recursion (Review!) Wednesday, September 19, 12

CS 151. Recursion (Review!) Wednesday, September 19, 12 CS 151 Recursion (Review!) 1 Announcements no class on Friday, and no office hours either (Alexa out of town) unfortunately, Alexa will also just be incommunicado, even via email, from Wednesday night

More information

Biostatistics 615/815 Lecture 6: Linear Sorting Algorithms and Elementary Data Structures

Biostatistics 615/815 Lecture 6: Linear Sorting Algorithms and Elementary Data Structures Biostatistics 615/815 Lecture 6: Linear Sorting Algorithms and Elementary Data Structures Hyun Min Kang Januray 25th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 6 Januray 25th, 2011 1 / 32 Announcements

More information

Biostatistics 615/815 Lecture 13: Programming with Matrix

Biostatistics 615/815 Lecture 13: Programming with Matrix Computation Biostatistics 615/815 Lecture 13: Programming with Hyun Min Kang February 17th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 13 February 17th, 2011 1 / 28 Annoucements Computation Homework

More information

Announcements. Biostatistics 615/815 Lecture 7: Data Structures. Recap : Radix sort. Recap : Elementary data structures. Another good and bad news

Announcements. Biostatistics 615/815 Lecture 7: Data Structures. Recap : Radix sort. Recap : Elementary data structures. Another good and bad news Announcements Biostatistics 615/815 Lecture 7: Data Structures Hyun Min Kang Januray 27th, 2011 Another good and bad news Homework #2 is finally announced Due is on Feb 7th, but better start earlier 815

More information

Dynamic Programming. An Introduction to DP

Dynamic Programming. An Introduction to DP Dynamic Programming An Introduction to DP Dynamic Programming? A programming technique Solve a problem by breaking into smaller subproblems Similar to recursion with memoisation Usefulness: Efficiency

More information

Data Structures and Algorithms Week 8

Data Structures and Algorithms Week 8 Data Structures and Algorithms Week 8 Dynamic programming Fibonacci numbers Optimization problems Matrix multiplication optimization Principles of dynamic programming Longest Common Subsequence Algorithm

More information

ALGORITHM DESIGN DYNAMIC PROGRAMMING. University of Waterloo

ALGORITHM DESIGN DYNAMIC PROGRAMMING. University of Waterloo ALGORITHM DESIGN DYNAMIC PROGRAMMING University of Waterloo LIST OF SLIDES 1-1 List of Slides 1 2 Dynamic Programming Approach 3 Fibonacci Sequence (cont.) 4 Fibonacci Sequence (cont.) 5 Bottom-Up vs.

More information

Announcements. Biostatistics 615/815 Lecture 5: More on STLs, and Divide and Conquer Algorithms. Recap on STL : vector.

Announcements. Biostatistics 615/815 Lecture 5: More on STLs, and Divide and Conquer Algorithms. Recap on STL : vector. Announcements Biostatistics 615/815 Lecture 5: More on s, and Algorithms Hyun Min Kang Januray 20th, 2011 Homework #1 is due, late submission will be better than no submission For 815 project, rank your

More information

Algorithms for Data Science

Algorithms for Data Science Algorithms for Data Science CSOR W4246 Eleni Drinea Computer Science Department Columbia University Thursday, October 1, 2015 Outline 1 Recap 2 Shortest paths in graphs with non-negative edge weights (Dijkstra

More information

Last week: Breadth-First Search

Last week: Breadth-First Search 1 Last week: Breadth-First Search Set L i = [] for i=1,,n L 0 = {w}, where w is the start node For i = 0,, n-1: For u in L i : For each v which is a neighbor of u: If v isn t yet visited: - mark v as visited,

More information

Biostatistics 615/815 Implementing Fisher s Exact Test

Biostatistics 615/815 Implementing Fisher s Exact Test Biostatistics 615/815 Implementing Fisher s Exact Test Hyun Min Kang Januray 13th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 3 Januray 13th, 2011 1 / 22 Recap - helloworld - Have all tried? Writing

More information

Biostatistics 615/815 Lecture 11: Hidden Markov Models, Standard Template Library, and Boost Library

Biostatistics 615/815 Lecture 11: Hidden Markov Models, Standard Template Library, and Boost Library Biostatistics 615/815 Lecture 11: Hidden Markov Models, Standard Template Library, and Library Hyun Min Kang October 9th, 2012 Hyun Min Kang Biostatistics 615/815 - Lecture 11 October 9th, 2012 1 / 38

More information

CS473-Algorithms I. Lecture 10. Dynamic Programming. Cevdet Aykanat - Bilkent University Computer Engineering Department

CS473-Algorithms I. Lecture 10. Dynamic Programming. Cevdet Aykanat - Bilkent University Computer Engineering Department CS473-Algorithms I Lecture 1 Dynamic Programming 1 Introduction An algorithm design paradigm like divide-and-conquer Programming : A tabular method (not writing computer code) Divide-and-Conquer (DAC):

More information

Lecture 12: Divide and Conquer Algorithms

Lecture 12: Divide and Conquer Algorithms Lecture 12: Divide and Conquer Algorithms Study Chapter 7.1 7.4 1 Divide and Conquer Algorithms Divide problem into sub-problems Conquer by solving sub-problems recursively. If the sub-problems are small

More information

Computer Sciences Department 1

Computer Sciences Department 1 1 Advanced Design and Analysis Techniques (15.1, 15.2, 15.3, 15.4 and 15.5) 3 Objectives Problem Formulation Examples The Basic Problem Principle of optimality Important techniques: dynamic programming

More information

Divide and Conquer Algorithms. Problem Set #3 is graded Problem Set #4 due on Thursday

Divide and Conquer Algorithms. Problem Set #3 is graded Problem Set #4 due on Thursday Divide and Conquer Algorithms Problem Set #3 is graded Problem Set #4 due on Thursday 1 The Essence of Divide and Conquer Divide problem into sub-problems Conquer by solving sub-problems recursively. If

More information

Biostatistics 615/815 - Lecture 3 C++ Basics & Implementing Fisher s Exact Test

Biostatistics 615/815 - Lecture 3 C++ Basics & Implementing Fisher s Exact Test Biostatistics 615/815 - Lecture 3 C++ Basics & Implementing Fisher s Exact Test Hyun Min Kang September 13th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 3 September 13th, 2011 1 / 31 helloworldcpp

More information

Biostatistics 615/815 Lecture 20: Expectation-Maximization (EM) Algorithm

Biostatistics 615/815 Lecture 20: Expectation-Maximization (EM) Algorithm Biostatistics 615/815 Lecture 20: Expectation-Maximization (EM) Algorithm Hyun Min Kang March 31st, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 20 March 31st, 2011 1 / 38 Recap - The Simplex Method

More information

Unit-5 Dynamic Programming 2016

Unit-5 Dynamic Programming 2016 5 Dynamic programming Overview, Applications - shortest path in graph, matrix multiplication, travelling salesman problem, Fibonacci Series. 20% 12 Origin: Richard Bellman, 1957 Programming referred to

More information

Algorithm classification

Algorithm classification Types of Algorithms Algorithm classification Algorithms that use a similar problem-solving approach can be grouped together We ll talk about a classification scheme for algorithms This classification scheme

More information

Biostatistics 615/815 Lecture 22: Matrix with C++

Biostatistics 615/815 Lecture 22: Matrix with C++ Biostatistics 615/815 Lecture 22: Matrix with C++ Hyun Min Kang December 1st, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 22 December 1st, 2011 1 / 33 Recap - A case for simple linear regression

More information

Biostatistics 615/815 - Lecture 2 Introduction to C++ Programming

Biostatistics 615/815 - Lecture 2 Introduction to C++ Programming Biostatistics 615/815 - Lecture 2 Introduction to C++ Programming Hyun Min Kang September 8th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 2 September 8th, 2011 1 / 47 BIOSTAT615/815 - Objectives

More information

Biostatistics 615/815 Lecture 16: Importance sampling Single dimensional optimization

Biostatistics 615/815 Lecture 16: Importance sampling Single dimensional optimization Biostatistics 615/815 Lecture 16: Single dimensional optimization Hyun Min Kang November 1st, 2012 Hyun Min Kang Biostatistics 615/815 - Lecture 16 November 1st, 2012 1 / 59 The crude Monte-Carlo Methods

More information

Introduction to Algorithms

Introduction to Algorithms Introduction to Algorithms Dynamic Programming Well known algorithm design techniques: Brute-Force (iterative) ti algorithms Divide-and-conquer algorithms Another strategy for designing algorithms is dynamic

More information

Lecture 12: Dynamic Programming Part 1 10:00 AM, Feb 21, 2018

Lecture 12: Dynamic Programming Part 1 10:00 AM, Feb 21, 2018 CS18 Integrated Introduction to Computer Science Fisler, Nelson Lecture 12: Dynamic Programming Part 1 10:00 AM, Feb 21, 2018 Contents 1 Introduction 1 2 Fibonacci 2 Objectives By the end of these notes,

More information

Biostatistics 615/815 - Statistical Computing Lecture 1 : Introduction to Statistical Computing

Biostatistics 615/815 - Statistical Computing Lecture 1 : Introduction to Statistical Computing Biostatistics 615/815 - Statistical Computing Lecture 1 : Introduction to Statistical Computing Hyun Min Kang September 6th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 1 September 6th, 2011 1 /

More information

Biostatistics 615/815 - Lecture 3 C++ Basics & Implementing Fisher s Exact Test

Biostatistics 615/815 - Lecture 3 C++ Basics & Implementing Fisher s Exact Test Biostatistics 615/815 - Lecture 3 C++ Basics & Implementing Fisher s Exact Test Hyun Min Kang September 11th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 3 September 11th, 2011 1 / 37 helloworldcpp

More information

So far... Finished looking at lower bounds and linear sorts.

So far... Finished looking at lower bounds and linear sorts. So far... Finished looking at lower bounds and linear sorts. Next: Memoization -- Optimization problems - Dynamic programming A scheduling problem Matrix multiplication optimization Longest Common Subsequence

More information

Dynamic Programming. Introduction, Weighted Interval Scheduling, Knapsack. Tyler Moore. Lecture 15/16

Dynamic Programming. Introduction, Weighted Interval Scheduling, Knapsack. Tyler Moore. Lecture 15/16 Dynamic Programming Introduction, Weighted Interval Scheduling, Knapsack Tyler Moore CSE, SMU, Dallas, TX Lecture /6 Greedy. Build up a solution incrementally, myopically optimizing some local criterion.

More information

CSC 505, Spring 2005 Week 6 Lectures page 1 of 9

CSC 505, Spring 2005 Week 6 Lectures page 1 of 9 CSC 505, Spring 2005 Week 6 Lectures page 1 of 9 Objectives: learn general strategies for problems about order statistics learn how to find the median (or k-th largest) in linear average-case number of

More information

Biostatistics 615/815 Lecture 13: Numerical Optimization

Biostatistics 615/815 Lecture 13: Numerical Optimization Biostatistics 615/815 Lecture 13: Numerical Optimization Hyun Min Kang October 27th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 13 October 27th, 2011 1 / 35 The Problem Hyun Min Kang Biostatistics

More information

Biostatistics 615/815 - Statistical Computing Lecture 1 : Introduction to Statistical Computing

Biostatistics 615/815 - Statistical Computing Lecture 1 : Introduction to Statistical Computing Biostatistics 615/815 - Statistical Computing Lecture 1 : Introduction to Statistical Computing Hyun Min Kang September 4th, 2012 Hyun Min Kang Biostatistics 615/815 - Lecture 1 September 4th, 2012 1 /

More information

Dynamic Programming. An Enumeration Approach. Matrix Chain-Products. Matrix Chain-Products (not in book)

Dynamic Programming. An Enumeration Approach. Matrix Chain-Products. Matrix Chain-Products (not in book) Matrix Chain-Products (not in book) is a general algorithm design paradigm. Rather than give the general structure, let us first give a motivating example: Matrix Chain-Products Review: Matrix Multiplication.

More information

We augment RBTs to support operations on dynamic sets of intervals A closed interval is an ordered pair of real

We augment RBTs to support operations on dynamic sets of intervals A closed interval is an ordered pair of real 14.3 Interval trees We augment RBTs to support operations on dynamic sets of intervals A closed interval is an ordered pair of real numbers ], with Interval ]represents the set Open and half-open intervals

More information

CS 170 DISCUSSION 8 DYNAMIC PROGRAMMING. Raymond Chan raychan3.github.io/cs170/fa17.html UC Berkeley Fall 17

CS 170 DISCUSSION 8 DYNAMIC PROGRAMMING. Raymond Chan raychan3.github.io/cs170/fa17.html UC Berkeley Fall 17 CS 170 DISCUSSION 8 DYNAMIC PROGRAMMING Raymond Chan raychan3.github.io/cs170/fa17.html UC Berkeley Fall 17 DYNAMIC PROGRAMMING Recursive problems uses the subproblem(s) solve the current one. Dynamic

More information

Data Structures, Algorithms & Data Science Platforms

Data Structures, Algorithms & Data Science Platforms Indian Institute of Science Bangalore, India भ रत य व ज ञ न स स थ न ब गल र, भ रत Department of Computational and Data Sciences DS221 19 Sep 19 Oct, 2017 Data Structures, Algorithms & Data Science Platforms

More information

Introduction to Algorithms

Introduction to Algorithms Introduction to Algorithms 6.046J/18.401J LECTURE 12 Dynamic programming Longest common subsequence Optimal substructure Overlapping subproblems Prof. Charles E. Leiserson Dynamic programming Design technique,

More information

Chapter 3 Dynamic programming

Chapter 3 Dynamic programming Chapter 3 Dynamic programming 1 Dynamic programming also solve a problem by combining the solutions to subproblems. But dynamic programming considers the situation that some subproblems will be called

More information

We ve done. Now. Next

We ve done. Now. Next We ve done Matroid Theory Task scheduling problem (another matroid example) Dijkstra s algorithm (another greedy example) Dynamic Programming Now Matrix Chain Multiplication Longest Common Subsequence

More information

CSci 231 Final Review

CSci 231 Final Review CSci 231 Final Review Here is a list of topics for the final. Generally you are responsible for anything discussed in class (except topics that appear italicized), and anything appearing on the homeworks.

More information

Outline. CS38 Introduction to Algorithms. Fast Fourier Transform (FFT) Fast Fourier Transform (FFT) Fast Fourier Transform (FFT)

Outline. CS38 Introduction to Algorithms. Fast Fourier Transform (FFT) Fast Fourier Transform (FFT) Fast Fourier Transform (FFT) Outline CS8 Introduction to Algorithms Lecture 9 April 9, 0 Divide and Conquer design paradigm matrix multiplication Dynamic programming design paradigm Fibonacci numbers weighted interval scheduling knapsack

More information

Divide & Conquer Algorithms

Divide & Conquer Algorithms Divide & Conquer Algorithms Outline 1. MergeSort 2. Finding the middle vertex 3. Linear space sequence alignment 4. Block alignment 5. Four-Russians speedup 6. LCS in sub-quadratic time Section 1: MergeSort

More information

of characters from an alphabet, then, the hash function could be:

of characters from an alphabet, then, the hash function could be: Module 7: Hashing Dr. Natarajan Meghanathan Professor of Computer Science Jackson State University Jackson, MS 39217 E-mail: natarajan.meghanathan@jsums.edu Hashing A very efficient method for implementing

More information

EE 368. Weeks 4 (Notes)

EE 368. Weeks 4 (Notes) EE 368 Weeks 4 (Notes) 1 Read Chapter 3 Recursion and Backtracking Recursion - Recursive Definition - Some Examples - Pros and Cons A Class of Recursive Algorithms (steps or mechanics about performing

More information

Chapter 17 Recursion

Chapter 17 Recursion Chapter 17 Recursion What is Recursion? A recursive function is one that solves its task by calling itself on smaller pieces of data. Similar to recurrence function in mathematics. Like iteration -- can

More information

Quicksort. Repeat the process recursively for the left- and rightsub-blocks.

Quicksort. Repeat the process recursively for the left- and rightsub-blocks. Quicksort As the name implies, this is the fastest known sorting algorithm in practice. It is excellent for average input but bad for the worst-case input. (you will see later). Basic idea: (another divide-and-conquer

More information

CS 206 Introduction to Computer Science II

CS 206 Introduction to Computer Science II CS 206 Introduction to Computer Science II 03 / 25 / 2013 Instructor: Michael Eckmann Today s Topics Comments/Questions? More on Recursion Including Dynamic Programming technique Divide and Conquer techniques

More information

Data Structures and Algorithm Analysis in C++

Data Structures and Algorithm Analysis in C++ INTERNATIONAL EDITION Data Structures and Algorithm Analysis in C++ FOURTH EDITION Mark A. Weiss Data Structures and Algorithm Analysis in C++, International Edition Table of Contents Cover Title Contents

More information

Algorithms. Algorithms ALGORITHM DESIGN

Algorithms. Algorithms ALGORITHM DESIGN Algorithms ROBERT SEDGEWICK KEVIN WAYNE ALGORITHM DESIGN Algorithms F O U R T H E D I T I O N ROBERT SEDGEWICK KEVIN WAYNE http://algs4.cs.princeton.edu analysis of algorithms greedy divide-and-conquer

More information

CSC Design and Analysis of Algorithms

CSC Design and Analysis of Algorithms CSC 8301- Design and Analysis of Algorithms Lecture 6 Divide and Conquer Algorithm Design Technique Divide-and-Conquer The most-well known algorithm design strategy: 1. Divide a problem instance into two

More information

Divide and Conquer. Bioinformatics: Issues and Algorithms. CSE Fall 2007 Lecture 12

Divide and Conquer. Bioinformatics: Issues and Algorithms. CSE Fall 2007 Lecture 12 Divide and Conquer Bioinformatics: Issues and Algorithms CSE 308-408 Fall 007 Lecture 1 Lopresti Fall 007 Lecture 1-1 - Outline MergeSort Finding mid-point in alignment matrix in linear space Linear space

More information

CSC Design and Analysis of Algorithms. Lecture 6. Divide and Conquer Algorithm Design Technique. Divide-and-Conquer

CSC Design and Analysis of Algorithms. Lecture 6. Divide and Conquer Algorithm Design Technique. Divide-and-Conquer CSC 8301- Design and Analysis of Algorithms Lecture 6 Divide and Conquer Algorithm Design Technique Divide-and-Conquer The most-well known algorithm design strategy: 1. Divide a problem instance into two

More information

5.1 The String reconstruction problem

5.1 The String reconstruction problem CS125 Lecture 5 Fall 2014 5.1 The String reconstruction problem The greedy approach doesn t always work, as we have seen. It lacks flexibility; if at some point, it makes a wrong choice, it becomes stuck.

More information

Lecture 8. Dynamic Programming

Lecture 8. Dynamic Programming Lecture 8. Dynamic Programming T. H. Cormen, C. E. Leiserson and R. L. Rivest Introduction to Algorithms, 3rd Edition, MIT Press, 2009 Sungkyunkwan University Hyunseung Choo choo@skku.edu Copyright 2000-2018

More information

Lecture 6: Recursion RECURSION

Lecture 6: Recursion RECURSION Lecture 6: Recursion RECURSION You are now Java experts! 2 This was almost all the Java that we will teach you in this course Will see a few last things in the remainder of class Now will begin focusing

More information

Complexity. Alexandra Silva.

Complexity. Alexandra Silva. Complexity Alexandra Silva alexandra@cs.ru.nl http://www.cs.ru.nl/~alexandra Institute for Computing and Information Sciences 6th February 2013 Alexandra 6th February 2013 Lesson 1 1 / 39 Introduction

More information

=1, and F n. for all n " 2. The recursive definition of Fibonacci numbers immediately gives us a recursive algorithm for computing them:

=1, and F n. for all n  2. The recursive definition of Fibonacci numbers immediately gives us a recursive algorithm for computing them: Wavefront Pattern I. Problem Data elements are laid out as multidimensional grids representing a logical plane or space. The dependency between the elements, often formulated by dynamic programming, results

More information

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 5. The Towers of Hanoi. Divide and Conquer

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 5. The Towers of Hanoi. Divide and Conquer Taking Stock IE170: Algorithms in Systems Engineering: Lecture 5 Jeff Linderoth Department of Industrial and Systems Engineering Lehigh University January 24, 2007 Last Time In-Place, Out-of-Place Count

More information

Practice Problems for the Final

Practice Problems for the Final ECE-250 Algorithms and Data Structures (Winter 2012) Practice Problems for the Final Disclaimer: Please do keep in mind that this problem set does not reflect the exact topics or the fractions of each

More information

Elements of Dynamic Programming. COSC 3101A - Design and Analysis of Algorithms 8. Discovering Optimal Substructure. Optimal Substructure - Examples

Elements of Dynamic Programming. COSC 3101A - Design and Analysis of Algorithms 8. Discovering Optimal Substructure. Optimal Substructure - Examples Elements of Dynamic Programming COSC 3A - Design and Analysis of Algorithms 8 Elements of DP Memoization Longest Common Subsequence Greedy Algorithms Many of these slides are taken from Monica Nicolescu,

More information

15.4 Longest common subsequence

15.4 Longest common subsequence 15.4 Longest common subsequence Biological applications often need to compare the DNA of two (or more) different organisms A strand of DNA consists of a string of molecules called bases, where the possible

More information

Algorithm Analysis and Design

Algorithm Analysis and Design Algorithm Analysis and Design Dr. Truong Tuan Anh Faculty of Computer Science and Engineering Ho Chi Minh City University of Technology VNU- Ho Chi Minh City 1 References [1] Cormen, T. H., Leiserson,

More information

CS583 Lecture 01. Jana Kosecka. some materials here are based on Profs. E. Demaine, D. Luebke A.Shehu, J-M. Lien and Prof. Wang s past lecture notes

CS583 Lecture 01. Jana Kosecka. some materials here are based on Profs. E. Demaine, D. Luebke A.Shehu, J-M. Lien and Prof. Wang s past lecture notes CS583 Lecture 01 Jana Kosecka some materials here are based on Profs. E. Demaine, D. Luebke A.Shehu, J-M. Lien and Prof. Wang s past lecture notes Course Info course webpage: - from the syllabus on http://cs.gmu.edu/

More information

Biostatistics 615/815 Lecture 4: User-defined Data Types, Standard Template Library, and Divide and Conquer Algorithms

Biostatistics 615/815 Lecture 4: User-defined Data Types, Standard Template Library, and Divide and Conquer Algorithms Biostatistics 615/815 Lecture 4: User-defined Data Types, Standard Template Library, and Algorithms Hyun Min Kang September 15th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 4 September 15th, 2011

More information

Biostatistics 615/815 Lecture 13: R packages, and Matrix Library

Biostatistics 615/815 Lecture 13: R packages, and Matrix Library Computation Biostatistics 615/815 Lecture 13: R packages, and Library Hyun Min Kang October 18th, 2012 Hyun Min Kang Biostatistics 615/815 - Lecture 13 October 18th, 2012 1 / 23 Writing an R package Computation

More information

Computer Science Spring 2005 Final Examination, May 12, 2005

Computer Science Spring 2005 Final Examination, May 12, 2005 Computer Science 302 00 Spring 2005 Final Examination, May 2, 2005 Name: No books, notes, or scratch paper. Use pen or pencil, any color. Use the backs of the pages for scratch paper. If you need more

More information

Dynamic Programming II

Dynamic Programming II June 9, 214 DP: Longest common subsequence biologists often need to find out how similar are 2 DNA sequences DNA sequences are strings of bases: A, C, T and G how to define similarity? DP: Longest common

More information

Biostatistics 615/815 Lecture 19: Multidimensional Optimizations

Biostatistics 615/815 Lecture 19: Multidimensional Optimizations Biostatistics 615/815 Lecture 19: Multidimensional Optimizations Hyun Min Kang March 29th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 19 March 29th, 2011 1 / 43 Annoucements Homework Homework #5

More information

Dynamic Programming (Part #2)

Dynamic Programming (Part #2) Dynamic Programming (Part #) Introduction to Algorithms MIT Press (Chapter 5) Matrix-Chain Multiplication Problem: given a sequence A, A,, A n, compute the product: A A A n Matrix compatibility: C = A

More information

Recap - helloworld - Have all tried?

Recap - helloworld - Have all tried? - helloworld - Have all tried? Biostatistics 615/815 Implementing Fisher s Exact Test Hyun Min Kang Januray 13th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 3 Januray 13th, 2011 1 / 22 Writing

More information

Dynamic Programming. Lecture Overview Introduction

Dynamic Programming. Lecture Overview Introduction Lecture 12 Dynamic Programming 12.1 Overview Dynamic Programming is a powerful technique that allows one to solve many different types of problems in time O(n 2 ) or O(n 3 ) for which a naive approach

More information

Data Structure Lecture#22: Searching 3 (Chapter 9) U Kang Seoul National University

Data Structure Lecture#22: Searching 3 (Chapter 9) U Kang Seoul National University Data Structure Lecture#22: Searching 3 (Chapter 9) U Kang Seoul National University U Kang 1 In This Lecture Motivation of collision resolution policy Open hashing for collision resolution Closed hashing

More information

Introduction to Algorithms / Algorithms I Lecturer: Michael Dinitz Topic: Dynamic Programming I Date: 10/6/16

Introduction to Algorithms / Algorithms I Lecturer: Michael Dinitz Topic: Dynamic Programming I Date: 10/6/16 600.463 Introduction to Algorithms / Algorithms I Lecturer: Michael Dinitz Topic: Dynamic Programming I Date: 10/6/16 11.1 Introduction Dynamic programming can be very confusing until you ve used it a

More information

Recursion & Dynamic Programming. Algorithm Design & Software Engineering March 17, 2016 Stefan Feuerriegel

Recursion & Dynamic Programming. Algorithm Design & Software Engineering March 17, 2016 Stefan Feuerriegel Recursion & Dynamic Programming Algorithm Design & Software Engineering March 17, 2016 Stefan Feuerriegel Today s Lecture Objectives 1 Specifying the complexity of algorithms with the big O notation 2

More information

Chapter 1 Introduction

Chapter 1 Introduction Preface xv Chapter 1 Introduction 1.1 What's the Book About? 1 1.2 Mathematics Review 2 1.2.1 Exponents 3 1.2.2 Logarithms 3 1.2.3 Series 4 1.2.4 Modular Arithmetic 5 1.2.5 The P Word 6 1.3 A Brief Introduction

More information

Recursive-Fib(n) if n=1 or n=2 then return 1 else return Recursive-Fib(n-1)+Recursive-Fib(n-2)

Recursive-Fib(n) if n=1 or n=2 then return 1 else return Recursive-Fib(n-1)+Recursive-Fib(n-2) Dynamic Programming Any recursive formula can be directly translated into recursive algorithms. However, sometimes the compiler will not implement the recursive algorithm very efficiently. When this is

More information

Divide and Conquer. Algorithm D-and-C(n: input size)

Divide and Conquer. Algorithm D-and-C(n: input size) Divide and Conquer Algorithm D-and-C(n: input size) if n n 0 /* small size problem*/ Solve problem without futher sub-division; else Divide into m sub-problems; Conquer the sub-problems by solving them

More information

Analyzing Complexity of Lists

Analyzing Complexity of Lists Analyzing Complexity of Lists Operation Sorted Array Sorted Linked List Unsorted Array Unsorted Linked List Search( L, x ) O(logn) O( n ) O( n ) O( n ) Insert( L, x ) O(logn) O( n ) + O( 1 ) O( 1 ) + O(

More information

Student number: Datenstrukturen & Algorithmen page 1

Student number: Datenstrukturen & Algorithmen page 1 Student number: Datenstrukturen & Algorithmen page 1 Problem 1. / 15 P Please note: 1) In this problem, you have to provide solutions only. You can write them right on this sheet. 2) If you use algorithms

More information

EECS 4425: Introductory Computational Bioinformatics Fall Suprakash Datta

EECS 4425: Introductory Computational Bioinformatics Fall Suprakash Datta EECS 4425: Introductory Computational Bioinformatics Fall 2018 Suprakash Datta datta [at] cse.yorku.ca Office: CSEB 3043 Phone: 416-736-2100 ext 77875 Course page: http://www.cse.yorku.ca/course/4425 Many

More information

Divide & Conquer Algorithms

Divide & Conquer Algorithms Divide & Conquer Algorithms Outline MergeSort Finding the middle point in the alignment matrix in linear space Linear space sequence alignment Block Alignment Four-Russians speedup Constructing LCS in

More information

15.4 Longest common subsequence

15.4 Longest common subsequence 15.4 Longest common subsequence Biological applications often need to compare the DNA of two (or more) different organisms A strand of DNA consists of a string of molecules called bases, where the possible

More information

CSCI-1200 Data Structures Spring 2017 Lecture 15 Problem Solving Techniques, Continued

CSCI-1200 Data Structures Spring 2017 Lecture 15 Problem Solving Techniques, Continued CSCI-1200 Data Structures Spring 2017 Lecture 15 Problem Solving Techniques, Continued Review of Lecture 14 General Problem Solving Techniques: 1. Generating and Evaluating Ideas 2. Mapping Ideas into

More information

Biostatistics 615/815 Lecture 23: The Baum-Welch Algorithm Advanced Hidden Markov Models

Biostatistics 615/815 Lecture 23: The Baum-Welch Algorithm Advanced Hidden Markov Models Biostatistics 615/815 Lecture 23: The Algorithm Advanced Hidden Markov Models Hyun Min Kang April 12th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 22 April 12th, 2011 1 / 35 Annoucement Homework

More information

CS171 Final Practice Exam

CS171 Final Practice Exam CS171 Final Practice Exam Name: You are to honor the Emory Honor Code. This is a closed-book and closed-notes exam. You have 150 minutes to complete this exam. Read each problem carefully, and review your

More information

Dynamic Programming Version 1.0

Dynamic Programming Version 1.0 Dynamic Programming Version 1.0 1 1 Dynamic programming: the key idea The solution to many problems can be written as recurrences. Often these problems are optimization problems. This usually means that

More information

Comp Sci 1MD3 Mid-Term II 2004 Dr. Jacques Carette

Comp Sci 1MD3 Mid-Term II 2004 Dr. Jacques Carette Comp Sci 1MD3 Mid-Term II 2004 Dr. Jacques Carette Name: Student No.: Duration : 50 minutes This midterm contains 18 questions on 4 pages This midterm will be marked out of 50. There are 60 total marks

More information

CSE373: Data Structure & Algorithms Lecture 18: Comparison Sorting. Dan Grossman Fall 2013

CSE373: Data Structure & Algorithms Lecture 18: Comparison Sorting. Dan Grossman Fall 2013 CSE373: Data Structure & Algorithms Lecture 18: Comparison Sorting Dan Grossman Fall 2013 Introduction to Sorting Stacks, queues, priority queues, and dictionaries all focused on providing one element

More information

3/5/2018 Lecture15. Comparing Sequences. By Miguel Andrade at English Wikipedia.

3/5/2018 Lecture15. Comparing Sequences. By Miguel Andrade at English Wikipedia. 3/5/2018 Lecture15 Comparing Sequences By Miguel Andrade at English Wikipedia 1 http://localhost:8888/notebooks/comp555s18/lecture15.ipynb# 1/1 Sequence Similarity A common problem in Biology Insulin Protein

More information

Dynamic Programming Homework Problems

Dynamic Programming Homework Problems CS 1510 Dynamic Programming Homework Problems 1. (2 points) Consider the recurrence relation T (0) = T (1) = 2 and for n > 1 n 1 T (n) = T (i)t (i 1) i=1 We consider the problem of computing T (n) from

More information

Dynamic Programming Homework Problems

Dynamic Programming Homework Problems CS 1510 Dynamic Programming Homework Problems 1. Consider the recurrence relation T(0) = T(1) = 2 and for n > 1 n 1 T(n) = T(i)T(i 1) i=1 We consider the problem of computing T(n) from n. (a) Show that

More information