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

Size: px
Start display at page:

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

Transcription

1 Divide and Conquer Bioinformatics: Issues and Algorithms CSE Fall 007 Lecture 1 Lopresti Fall 007 Lecture 1-1 -

2 Outline MergeSort Finding mid-point in alignment matrix in linear space Linear space sequence alignment Block alignment Four-Russians speedup Constructing LCS in sub-quadratic time Lopresti Fall 007 Lecture 1 - -

3 Divide and Conquer Algorithms Divide problem into sub-problems. Conquer by solving sub-problems recursively. If subproblems are small enough, solve them in brute force fashion. Combine solutions of sub-problems into solution for original problem (tricky part). Lopresti Fall 007 Lecture 1-3 -

4 The Sorting Problem revisted Given an unsorted array of integers: The goal is to put it in sorted order: Lopresti Fall 007 Lecture 1-4 -

5 Lopresti Fall 007 Lecture MergeSort: divide step Step 1 Divide log(n) divisions to split an array of size n into single elements

6 MergeSort: conquer step Step Conquer O(n) O(n) O(n) O(n) We have logn iterations, each taking O(n) time. So... Total time: O(n logn) Lopresti Fall 007 Lecture 1-6 -

7 MergeSort: combine step Step 3 Combine 5 5 Two arrays of size 1 can be easily merged to form a single sorted array of size. Two sorted arrays of size n and m can be merged in O(n + m) time to form a single sorted array of size n + m. Lopresti Fall 007 Lecture 1-7 -

8 Lopresti Fall 007 Lecture MergeSort: combine step Etcetera Combining two arrays of size 4:

9 Merge subroutine Merge(a, b) n1 size of array a; n size of array b a n1+1 ; b n+1 i 1; j 1 for k 1 to n1 + n if a i < b j c k a i i i + 1 else c k b j j j + 1 return c Lopresti Fall 007 Lecture 1-9 -

10 MergeSort example Divide Conquer Lopresti Fall 007 Lecture

11 MergeSort algorithm MergeSort(c) n size of array c if n = 1 return c left list of first n / elements of c right list of last n n / elements of c sortedleft MergeSort(left) sortedright MergeSort(right) sortedlist Merge(sortedLeft, sortedright) return sortedlist Lopresti Fall 007 Lecture

12 MergeSort running time The problem is simplified to baby steps: For i th merging iteration, complexity of problem is O(n). Number of iterations is O(logn). Hence, total running time is O(n logn). Lopresti Fall 007 Lecture 1-1 -

13 Divide and Conquer Approach to LCS Recall that LCS is longest common subsequence problem Path(source, sink) if source and sink are in consecutive columns output longest path from source to sink else middle middle vertex between source and sink Path(source, middle) Path(middle, sink) Only problem left is how to find this middle vertex! Lopresti Fall 007 Lecture

14 Computing alignment path requires quadratic memory Alignment path: Space complexity for computing alignment path for sequences of length n and m is O(nm). We need to keep all backtracking references in memory to reconstruct path (backtracking). n m Lopresti Fall 007 Lecture

15 Computing alignment score with linear memory Alignment score: Space complexity of computing just score itself is O(n). We only need previous column to calculate current column, and we can then throw away that column once we re done using it. nn Lopresti Fall 007 Lecture

16 Computing alignment score: recycling columns Only two columns of scores are saved at any given time: memory for column 1 used to calculate column 3 memory for column used to calculate column 4 Lopresti Fall 007 Lecture

17 Crossing the middle line We want to calculate longest path from (0, 0) to (n, m) passing through (i, m/), where i ranges from 0 to n and represents i th row. Define length(i) as length of longest path from (0, 0) to (n, m) passing through vertex (i, m/). n m/ m (i, m/) Prefix(i) Suffix(i) Vertex where longest path crosses middle column is (mid, m/): length(mid) = optimal length = max 0 i n length(i) Lopresti Fall 007 Lecture

18 Computing Prefix(i) Prefix(i) is length of longest path from (0, 0) to (i, m/). Compute Prefix(i) by using dynamic programming in left half of matrix. store Prefix(i) column 0 m/ m Lopresti Fall 007 Lecture

19 Computing Suffix(i) Suffix(i) is length of longest path from (i, m/) to (n, m). Suffix(i) is length of longest path from (n, m) to (i, m/) with all edges reversed. Compute Suffix(i) by using dynamic programming in right half of the reversed matrix. store Suffix(i) column 0 m/ m Lopresti Fall 007 Lecture

20 Length(i) = Prefix(i) + Suffix(i) Add prefix(i) and suffix(i) to compute length(i): length(i) = prefix(i) + suffix(i) We now have middle vertex of maximum path (i, m/) as maximum of length(i). 0 middle point found i 0 m/ m Lopresti Fall 007 Lecture 1-0 -

21 Finding the middle point 0 m/4 m/ 3m/4 m Lopresti Fall 007 Lecture 1-1 -

22 Finding the middle point 0 m/4 m/ 3m/4 m Lopresti Fall 007 Lecture 1 - -

23 And again... 0 m/8 m/4 3m/8 m/ 5m/8 3m/4 7m/8 m Lopresti Fall 007 Lecture 1-3 -

24 Determining the time complexity: first pass On first pass, algorithm covers entire area: Time = area = nm Computing prefix(i) Computing suffix(i) Lopresti Fall 007 Lecture 1-4 -

25 Determining the time complexity: second pass On second pass, algorithm covers only 1/ of area: Time = area = nm / Lopresti Fall 007 Lecture 1-5 -

26 Determining the time complexity: third pass On third pass, only 1/4 of area is covered: Time = area = nm / 4 Lopresti Fall 007 Lecture 1-6 -

27 Determining the time complexity: overall Geometric reduction at each successive iteration: 1 + ½ + ¼ (½) k 5 th pass: 1/16 first pass: 1 3 rd pass: 1/4 4 th pass: 1/8 nd pass: 1/ Hence, time = O(area) = O(nm). Lopresti Fall 007 Lecture 1-7 -

28 Can we improve time complexity for LCS as well? Dynamic Programming takes O(n ) for global alignment. We can use Four-Russians Speedup to do better. Partitioning sequences into blocks: Partition n x n grid into blocks of size t x t. We are comparing two sequences, each of size n, and each sequence is sectioned off into chunks, each of length t. Sequence u = u 1 u n becomes: u 1 u t u t+1 u t u n-1+1 u n and sequence v = v 1 v n becomes: v 1 v t v t+1 v t v n-1+1 v n Lopresti Fall 007 Lecture 1-8 -

29 Partitioning alignment grid into blocks n n/t t n t n/t partition Lopresti Fall 007 Lecture 1-9 -

30 Block alignment Block alignment of sequences u and v: An entire block in u is aligned with an entire block in v. An entire block is inserted. An entire block is deleted. A block path is a path that traverses every t x t square through its corners. A valid block alignment An invalid block alignment Lopresti Fall 007 Lecture

31 The Block Alignment Problem Block Alignment Problem: Find the longest block path through an edit graph. Input: Two sequences, u and v partitioned into blocks of size t. This is equivalent to an n x n edit graph partitioned into t x t subgrids. Output: The block alignment of u and v with maximum score (longest block path through edit graph). Lopresti Fall 007 Lecture

32 Constructing alignments within blocks To solve: compute alignment score ß i,j for each pair of blocks u (i-1)*t+1 u i*t and v (j-1)*t+1 v j*t. How many blocks are there per sequence? (n/t) blocks of size t How many pairs of blocks for aligning the two sequences? (n/t) x (n/t) For each block pair, solve mini-alignment problem of size t x t. Lopresti Fall 007 Lecture 1-3 -

33 Constructing alignments within blocks n/t Solve mini-alignmnent problems Block pair represented by each small square Lopresti Fall 007 Lecture

34 Block alignment: Dynamic Programming Let s i,j denote the optimal block alignment score between first i blocks of u and first j blocks of v. s i,j = max s i-1,j σ block s i,j-1 σ block s i-1,j-1 β i,j σ block is penalty for inserting or deleting an entire block. β i,j is score of pair of blocks in row i and column j. Lopresti Fall 007 Lecture

35 Block alignment runtime Indices i,j range from 0 to n/t. Hence, running time of algorithm is O([n/t]*[n/t]) = O(n /t ) if we don t count the time to compute each ß i,j. Computing all ß i,j requires solving (n/t)*(n/t) mini-block alignments, each of size (t*t). So computing all ß i,j takes time: O([n/t]*[n/t]*t*t) = O(n ) But this is same as original dynamic programming algorithm. How do we speed this up? Lopresti Fall 007 Lecture

36 Four Russians Technique Instead of creating (n/t)*(n/t) mini-alignments, construct 4 t x 4 t mini-alignments for all pairs of strings of t nucleotides (huge size), and put this in a lookup table. However, size of lookup table is not really that big if t is small. Let t = (logn)/4. Then 4 t x 4 t = n. Each sequence has t nucleotides AAAAAA AAAAAC AAAAAG AAAAAT AAAACA Lookup table Score AAAAAA AAAAAC AAAAAG AAAAAT Size is only n, instead of (n/t)*(n/t) AAAACA Lopresti Fall 007 Lecture

37 New recurrence The new lookup table Score is indexed by a pair of t-nucleotide strings, so: s i,j = max s i-1,j σ block s i,j-1 σ block s i-1,j-1 Score(i th block of v, j th block of u) Lopresti Fall 007 Lecture

38 Four Russians Speedup runtime Since computing the lookup table Score of size n takes O(n{logn} ) time, running time is mainly limited by (n/t)*(n/t) accesses to lookup table. Each access takes O(logn) time. Overall running time: O([n /t ] * logn). Since t = logn, substitute in: O([n /{logn} ] * logn) = O(n / logn) Lopresti Fall 007 Lecture

39 Where are we? We can divide up grid into blocks and run dynamic programming only on corners of these blocks. In order to speed up mini-alignment calculations to under n, we create a lookup table of size n, which consists of all scores for all t-nucleotide pairs. Running time goes from O(n ) to subquadratic, O(n / logn). But, unlike blockpartitioned graph, LCS path does not have to pass through vertices of blocks. vs. Lopresti Fall 007 Lecture

40 Block alignment vs. LCS In block alignment, we only care about corners of blocks. In LCS, we care about all points on edges of blocks, because those are points that path can traverse. Recall, each sequence is of length n, each block is of size t, so each sequence has (n/t) blocks. vs. Lopresti Fall 007 Lecture

41 Block alignment vs. LCS: points of interest Block alignment has (n/t)*(n/t) = (n /t ) points of interest. LCS alignment has O(n /t) points of interest. Lopresti Fall 007 Lecture

42 Traversing blocks for LCS Given alignment scores s i,* in the first row and scores s *,j in the first column of a t x t mini-block, compute alignment scores in last row and column of mini-block. To compute last row and last column score, we use these 4 variables: 1. alignment scores s i,* in first row.. alignment scores s *,j in first column. 3. substring of sequence u in this block (4 t possibilities). 4. substring of sequence v in this block (4 t possibilities). Lopresti Fall 007 Lecture 1-4 -

43 Traversing blocks for LCS If we used this to compute the grid, it would take quadratic, i.e., O(n ), time, but we want to do better. we know these scores we can calculate these scores t x t block Lopresti Fall 007 Lecture

44 Four Russians Speedup Build a lookup table for all possible values of four variables: 1. all possible scores for the first row s i,*. all possible scores for the first column s *,j 3. substring of sequence u in this block (4 t possibilities) 4. substring of sequence v in this block (4 t possibilities) For each quadruple we store the value of the score for the last row and last column. This will be a huge table, but we can eliminate alignments scores that don t make sense. Lopresti Fall 007 Lecture

45 Reducing lookup table size Alignment scores in LCS are monotonically increasing, and adjacent elements can t differ by more than 1. Example: 0,1,,,3,4 is ok; 0,1,,4,5,8, is not because and 4 differ by more than 1 (and so do 5 and 8). Therefore, we only need to store quadruples whose scores are monotonically increasing and differ by at most 1. Lopresti Fall 007 Lecture

46 Efficient encoding of alignment scores Instead of recording numbers that correspond to the index in the sequences u and v, we can use binary to encode the differences between the alignment scores: original encoding binary encoding Lopresti Fall 007 Lecture

47 Reducing lookup table size There are t possible scores (t = size of blocks). There are 4 t possible strings. Hence, lookup table size is ( t * t ) * (4 t * 4 t ) = 6t Let t = (logn)/4, then we have: Table size = 6((logn)/4) = n (6/4) = n (3/) And since time = O([n /t ] * logn), we have an overall time complexity of O( [n / {logn} ] * logn) = O(n / logn). Lopresti Fall 007 Lecture

48 Summary We take advantage of fact that for each block of size t = log(n), we can pre-compute all possible scores and store them in a lookup table of size n (3/). We used Four Russian speedup to go from quadratic running time for LCS to subquadratic running time: O(n / logn). Lopresti Fall 007 Lecture

49 Wrap-up Readings for next time: IBA Sections (sequencing and assembly). Remember: Come to class having done the readings. Check Blackboard regularly for updates. Lopresti Fall 007 Lecture

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

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

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

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

Reminder: sequence alignment in sub-quadratic time

Reminder: sequence alignment in sub-quadratic time Reminder: sequence alignment in sub-quadratic time Last week: Sequence alignment in sub-quadratic time for unrestricted Scoring Schemes. ) utilize LZ78 parsing 2) utilize Total Monotonicity property of

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

Dynamic Programming Comp 122, Fall 2004

Dynamic Programming Comp 122, Fall 2004 Dynamic Programming Comp 122, Fall 2004 Review: the previous lecture Principles of dynamic programming: optimization problems, optimal substructure property, overlapping subproblems, trade space for time,

More information

EECS730: Introduction to Bioinformatics

EECS730: Introduction to Bioinformatics EECS730: Introduction to Bioinformatics Lecture 04: Variations of sequence alignments http://www.pitt.edu/~mcs2/teaching/biocomp/tutorials/global.html Slides adapted from Dr. Shaojie Zhang (University

More information

Divide-and-Conquer. Divide-and conquer is a general algorithm design paradigm:

Divide-and-Conquer. Divide-and conquer is a general algorithm design paradigm: Presentation for use with the textbook Data Structures and Algorithms in Java, 6 th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser, Wiley, 2014 Merge Sort 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9

More information

Analysis of Algorithms. Unit 4 - Analysis of well known Algorithms

Analysis of Algorithms. Unit 4 - Analysis of well known Algorithms Analysis of Algorithms Unit 4 - Analysis of well known Algorithms 1 Analysis of well known Algorithms Brute Force Algorithms Greedy Algorithms Divide and Conquer Algorithms Decrease and Conquer Algorithms

More information

Lecture #2. 1 Overview. 2 Worst-Case Analysis vs. Average Case Analysis. 3 Divide-and-Conquer Design Paradigm. 4 Quicksort. 4.

Lecture #2. 1 Overview. 2 Worst-Case Analysis vs. Average Case Analysis. 3 Divide-and-Conquer Design Paradigm. 4 Quicksort. 4. COMPSCI 330: Design and Analysis of Algorithms 8/28/2014 Lecturer: Debmalya Panigrahi Lecture #2 Scribe: Yilun Zhou 1 Overview This lecture presents two sorting algorithms, quicksort and mergesort, that

More information

Introduction to Computers and Programming. Today

Introduction to Computers and Programming. Today Introduction to Computers and Programming Prof. I. K. Lundqvist Lecture 10 April 8 2004 Today How to determine Big-O Compare data structures and algorithms Sorting algorithms 2 How to determine Big-O Partition

More information

QB LECTURE #1: Algorithms and Dynamic Programming

QB LECTURE #1: Algorithms and Dynamic Programming QB LECTURE #1: Algorithms and Dynamic Programming Adam Siepel Nov. 16, 2015 2 Plan for Today Introduction to algorithms Simple algorithms and running time Dynamic programming Soon: sequence alignment 3

More information

Visualizing Data Structures. Dan Petrisko

Visualizing Data Structures. Dan Petrisko Visualizing Data Structures Dan Petrisko What is an Algorithm? A method of completing a function by proceeding from some initial state and input, proceeding through a finite number of well defined steps,

More information

Divide and Conquer Sorting Algorithms and Noncomparison-based

Divide and Conquer Sorting Algorithms and Noncomparison-based Divide and Conquer Sorting Algorithms and Noncomparison-based Sorting Algorithms COMP1927 16x1 Sedgewick Chapters 7 and 8 Sedgewick Chapter 6.10, Chapter 10 DIVIDE AND CONQUER SORTING ALGORITHMS Step 1

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

CSC Design and Analysis of Algorithms. Lecture 5. Decrease and Conquer Algorithm Design Technique. Decrease-and-Conquer

CSC Design and Analysis of Algorithms. Lecture 5. Decrease and Conquer Algorithm Design Technique. Decrease-and-Conquer CSC 8301- Design and Analysis of Algorithms Lecture 5 Decrease and Conquer Algorithm Design Technique Decrease-and-Conquer This algorithm design technique is based on exploiting a relationship between

More information

Merge Sort fi fi fi 4 9. Merge Sort Goodrich, Tamassia

Merge Sort fi fi fi 4 9. Merge Sort Goodrich, Tamassia Merge Sort 7 9 4 fi 4 7 9 7 fi 7 9 4 fi 4 9 7 fi 7 fi 9 fi 9 4 fi 4 Merge Sort 1 Divide-and-Conquer ( 10.1.1) Divide-and conquer is a general algorithm design paradigm: Divide: divide the input data S

More information

1. [1 pt] What is the solution to the recurrence T(n) = 2T(n-1) + 1, T(1) = 1

1. [1 pt] What is the solution to the recurrence T(n) = 2T(n-1) + 1, T(1) = 1 Asymptotics, Recurrence and Basic Algorithms 1. [1 pt] What is the solution to the recurrence T(n) = 2T(n-1) + 1, T(1) = 1 1. O(logn) 2. O(n) 3. O(nlogn) 4. O(n 2 ) 5. O(2 n ) 2. [1 pt] What is the solution

More information

Divide and Conquer Algorithms

Divide and Conquer Algorithms Divide and Conquer Algorithms T. M. Murali February 19, 2009 Divide and Conquer Break up a problem into several parts. Solve each part recursively. Solve base cases by brute force. Efficiently combine

More information

CSE 373 NOVEMBER 8 TH COMPARISON SORTS

CSE 373 NOVEMBER 8 TH COMPARISON SORTS CSE 373 NOVEMBER 8 TH COMPARISON SORTS ASSORTED MINUTIAE Bug in Project 3 files--reuploaded at midnight on Monday Project 2 scores Canvas groups is garbage updated tonight Extra credit P1 done and feedback

More information

DIVIDE & CONQUER. Problem of size n. Solution to sub problem 1

DIVIDE & CONQUER. Problem of size n. Solution to sub problem 1 DIVIDE & CONQUER Definition: Divide & conquer is a general algorithm design strategy with a general plan as follows: 1. DIVIDE: A problem s instance is divided into several smaller instances of the same

More information

CSE 373 MAY 24 TH ANALYSIS AND NON- COMPARISON SORTING

CSE 373 MAY 24 TH ANALYSIS AND NON- COMPARISON SORTING CSE 373 MAY 24 TH ANALYSIS AND NON- COMPARISON SORTING ASSORTED MINUTIAE HW6 Out Due next Wednesday ASSORTED MINUTIAE HW6 Out Due next Wednesday Only two late days allowed ASSORTED MINUTIAE HW6 Out Due

More information

Computer Science 385 Analysis of Algorithms Siena College Spring Topic Notes: Divide and Conquer

Computer Science 385 Analysis of Algorithms Siena College Spring Topic Notes: Divide and Conquer Computer Science 385 Analysis of Algorithms Siena College Spring 2011 Topic Notes: Divide and Conquer Divide and-conquer is a very common and very powerful algorithm design technique. The general idea:

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

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 12: Sorting Algorithms MOUNA KACEM mouna@cs.wisc.edu Spring 2018 Outline 2 Last week Implementation of the three tree depth-traversal algorithms Implementation of the BinarySearchTree

More information

Hiroki Yasuga, Elisabeth Kolp, Andreas Lang. 25th September 2014, Scientific Programming

Hiroki Yasuga, Elisabeth Kolp, Andreas Lang. 25th September 2014, Scientific Programming Hiroki Yasuga, Elisabeth Kolp, Andreas Lang 25th September 2014, Scientific Programming What is sorting and complexity? Big O notation Sorting algorithms: Merge sort Quick sort Comparison: Merge sort &

More information

CSE 332: Data Structures & Parallelism Lecture 12: Comparison Sorting. Ruth Anderson Winter 2019

CSE 332: Data Structures & Parallelism Lecture 12: Comparison Sorting. Ruth Anderson Winter 2019 CSE 332: Data Structures & Parallelism Lecture 12: Comparison Sorting Ruth Anderson Winter 2019 Today Sorting Comparison sorting 2/08/2019 2 Introduction to sorting Stacks, queues, priority queues, and

More information

UNIT-2. Problem of size n. Sub-problem 1 size n/2. Sub-problem 2 size n/2. Solution to the original problem

UNIT-2. Problem of size n. Sub-problem 1 size n/2. Sub-problem 2 size n/2. Solution to the original problem Divide-and-conquer method: Divide-and-conquer is probably the best known general algorithm design technique. The principle behind the Divide-and-conquer algorithm design technique is that it is easier

More information

Lecture 19 Sorting Goodrich, Tamassia

Lecture 19 Sorting Goodrich, Tamassia Lecture 19 Sorting 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 2004 Goodrich, Tamassia Outline Review 3 simple sorting algorithms: 1. selection Sort (in previous course) 2. insertion Sort (in previous

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

Chapter 3:- Divide and Conquer. Compiled By:- Sanjay Patel Assistant Professor, SVBIT.

Chapter 3:- Divide and Conquer. Compiled By:- Sanjay Patel Assistant Professor, SVBIT. Chapter 3:- Divide and Conquer Compiled By:- Assistant Professor, SVBIT. Outline Introduction Multiplying large Integers Problem Problem Solving using divide and conquer algorithm - Binary Search Sorting

More information

Merge Sort Goodrich, Tamassia Merge Sort 1

Merge Sort Goodrich, Tamassia Merge Sort 1 Merge Sort 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 2004 Goodrich, Tamassia Merge Sort 1 Review of Sorting Selection-sort: Search: search through remaining unsorted elements for min Remove: remove

More information

Sorting. Data structures and Algorithms

Sorting. Data structures and Algorithms Sorting Data structures and Algorithms Acknowledgement: These slides are adapted from slides provided with Data Structures and Algorithms in C++ Goodrich, Tamassia and Mount (Wiley, 2004) Outline Bubble

More information

Sorting. Riley Porter. CSE373: Data Structures & Algorithms 1

Sorting. Riley Porter. CSE373: Data Structures & Algorithms 1 Sorting Riley Porter 1 Introduction to Sorting Why study sorting? Good algorithm practice! Different sorting algorithms have different trade-offs No single best sort for all scenarios Knowing one way to

More information

Lecture 9: Sorting Algorithms

Lecture 9: Sorting Algorithms Lecture 9: Sorting Algorithms Bo Tang @ SUSTech, Spring 2018 Sorting problem Sorting Problem Input: an array A[1..n] with n integers Output: a sorted array A (in ascending order) Problem is: sort A[1..n]

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

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

Divide and Conquer Algorithms

Divide and Conquer Algorithms CSE341T 09/13/2017 Lecture 5 Divide and Conquer Algorithms We have already seen a couple of divide and conquer algorithms in this lecture. The reduce algorithm and the algorithm to copy elements of the

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 Notes on Quicksort

Lecture Notes on Quicksort Lecture Notes on Quicksort 15-122: Principles of Imperative Computation Frank Pfenning Lecture 8 February 5, 2015 1 Introduction In this lecture we consider two related algorithms for sorting that achieve

More information

Mergesort again. 1. Split the list into two equal parts

Mergesort again. 1. Split the list into two equal parts Quicksort Mergesort again 1. Split the list into two equal parts 5 3 9 2 8 7 3 2 1 4 5 3 9 2 8 7 3 2 1 4 Mergesort again 2. Recursively mergesort the two parts 5 3 9 2 8 7 3 2 1 4 2 3 5 8 9 1 2 3 4 7 Mergesort

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 12: Sorting Algorithms MOUNA KACEM mouna@cs.wisc.edu Spring 2018 Outline 2 Last week Implementation of the three tree depth-traversal algorithms Implementation of the BinarySearchTree

More information

Dynamic Programming Part I: Examples. Bioinfo I (Institut Pasteur de Montevideo) Dynamic Programming -class4- July 25th, / 77

Dynamic Programming Part I: Examples. Bioinfo I (Institut Pasteur de Montevideo) Dynamic Programming -class4- July 25th, / 77 Dynamic Programming Part I: Examples Bioinfo I (Institut Pasteur de Montevideo) Dynamic Programming -class4- July 25th, 2011 1 / 77 Dynamic Programming Recall: the Change Problem Other problems: Manhattan

More information

Measuring algorithm efficiency

Measuring algorithm efficiency CMPT 225 Measuring algorithm efficiency Timing Counting Cost functions Cases Best case Average case Worst case Searching Sorting O Notation O notation's mathematical basis O notation classes and notations

More information

17/05/2018. Outline. Outline. Divide and Conquer. Control Abstraction for Divide &Conquer. Outline. Module 2: Divide and Conquer

17/05/2018. Outline. Outline. Divide and Conquer. Control Abstraction for Divide &Conquer. Outline. Module 2: Divide and Conquer Module 2: Divide and Conquer Divide and Conquer Control Abstraction for Divide &Conquer 1 Recurrence equation for Divide and Conquer: If the size of problem p is n and the sizes of the k sub problems are

More information

Sorting and Selection

Sorting and Selection Sorting and Selection Introduction Divide and Conquer Merge-Sort Quick-Sort Radix-Sort Bucket-Sort 10-1 Introduction Assuming we have a sequence S storing a list of keyelement entries. The key of the element

More information

1. Basic idea: Use smaller instances of the problem to find the solution of larger instances

1. Basic idea: Use smaller instances of the problem to find the solution of larger instances Chapter 8. Dynamic Programming CmSc Intro to Algorithms. Basic idea: Use smaller instances of the problem to find the solution of larger instances Example : Fibonacci numbers F = F = F n = F n- + F n-

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

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

1 Dynamic Programming

1 Dynamic Programming Recitation 13 Dynamic Programming Parallel and Sequential Data Structures and Algorithms, 15-210 (Fall 2013) November 20, 2013 1 Dynamic Programming Dynamic programming is a technique to avoid needless

More information

Sorting. CSE 143 Java. Insert for a Sorted List. Insertion Sort. Insertion Sort As A Card Game Operation. CSE143 Au

Sorting. CSE 143 Java. Insert for a Sorted List. Insertion Sort. Insertion Sort As A Card Game Operation. CSE143 Au CSE 43 Java Sorting Reading: Ch. 3 & Sec. 7.3 Sorting Binary search is a huge speedup over sequential search But requires the list be sorted Slight Problem: How do we get a sorted list? Maintain the list

More information

CS 137 Part 8. Merge Sort, Quick Sort, Binary Search. November 20th, 2017

CS 137 Part 8. Merge Sort, Quick Sort, Binary Search. November 20th, 2017 CS 137 Part 8 Merge Sort, Quick Sort, Binary Search November 20th, 2017 This Week We re going to see two more complicated sorting algorithms that will be our first introduction to O(n log n) sorting algorithms.

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

Lecture Notes on Quicksort

Lecture Notes on Quicksort Lecture Notes on Quicksort 15-122: Principles of Imperative Computation Frank Pfenning Lecture 8 September 20, 2012 1 Introduction In this lecture we first sketch two related algorithms for sorting that

More information

Sorting. Bringing Order to the World

Sorting. Bringing Order to the World Lecture 10 Sorting Bringing Order to the World Lecture Outline Iterative sorting algorithms (comparison based) Selection Sort Bubble Sort Insertion Sort Recursive sorting algorithms (comparison based)

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

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

Algorithms and Applications

Algorithms and Applications Algorithms and Applications 1 Areas done in textbook: Sorting Algorithms Numerical Algorithms Image Processing Searching and Optimization 2 Chapter 10 Sorting Algorithms - rearranging a list of numbers

More information

CSE373: Data Structure & Algorithms Lecture 21: More Comparison Sorting. Aaron Bauer Winter 2014

CSE373: Data Structure & Algorithms Lecture 21: More Comparison Sorting. Aaron Bauer Winter 2014 CSE373: Data Structure & Algorithms Lecture 21: More Comparison Sorting Aaron Bauer Winter 2014 The main problem, stated carefully For now, assume we have n comparable elements in an array and we want

More information

Sorting is a problem for which we can prove a non-trivial lower bound.

Sorting is a problem for which we can prove a non-trivial lower bound. Sorting The sorting problem is defined as follows: Sorting: Given a list a with n elements possessing a total order, return a list with the same elements in non-decreasing order. Remember that total order

More information

Lecture 2: Getting Started

Lecture 2: Getting Started Lecture 2: Getting Started Insertion Sort Our first algorithm is Insertion Sort Solves the sorting problem Input: A sequence of n numbers a 1, a 2,..., a n. Output: A permutation (reordering) a 1, a 2,...,

More information

1. [1 pt] What is the solution to the recurrence T(n) = 2T(n-1) + 1, T(1) = 1

1. [1 pt] What is the solution to the recurrence T(n) = 2T(n-1) + 1, T(1) = 1 Asymptotics, Recurrence and Basic Algorithms 1. [1 pt] What is the solution to the recurrence T(n) = 2T(n-1) + 1, T(1) = 1 2. O(n) 2. [1 pt] What is the solution to the recurrence T(n) = T(n/2) + n, T(1)

More information

ITEC2620 Introduction to Data Structures

ITEC2620 Introduction to Data Structures ITEC2620 Introduction to Data Structures Lecture 5a Recursive Sorting Algorithms Overview Previous sorting algorithms were O(n 2 ) on average For 1 million records, that s 1 trillion operations slow! What

More information

Encoding/Decoding, Counting graphs

Encoding/Decoding, Counting graphs Encoding/Decoding, Counting graphs Russell Impagliazzo and Miles Jones Thanks to Janine Tiefenbruck http://cseweb.ucsd.edu/classes/sp16/cse21-bd/ May 13, 2016 11-avoiding binary strings Let s consider

More information

CS Divide and Conquer

CS Divide and Conquer CS483-07 Divide and Conquer Instructor: Fei Li Room 443 ST II Office hours: Tue. & Thur. 1:30pm - 2:30pm or by appointments lifei@cs.gmu.edu with subject: CS483 http://www.cs.gmu.edu/ lifei/teaching/cs483_fall07/

More information

Fundamental problem in computing science. putting a collection of items in order. Often used as part of another algorithm

Fundamental problem in computing science. putting a collection of items in order. Often used as part of another algorithm cmpt-225 Sorting Sorting Fundamental problem in computing science putting a collection of items in order Often used as part of another algorithm e.g. sort a list, then do many binary searches e.g. looking

More information

Sorting. Sorting. Stable Sorting. In-place Sort. Bubble Sort. Bubble Sort. Selection (Tournament) Heapsort (Smoothsort) Mergesort Quicksort Bogosort

Sorting. Sorting. Stable Sorting. In-place Sort. Bubble Sort. Bubble Sort. Selection (Tournament) Heapsort (Smoothsort) Mergesort Quicksort Bogosort Principles of Imperative Computation V. Adamchik CS 15-1 Lecture Carnegie Mellon University Sorting Sorting Sorting is ordering a list of objects. comparison non-comparison Hoare Knuth Bubble (Shell, Gnome)

More information

Chapter 4. Divide-and-Conquer. Copyright 2007 Pearson Addison-Wesley. All rights reserved.

Chapter 4. Divide-and-Conquer. Copyright 2007 Pearson Addison-Wesley. All rights reserved. Chapter 4 Divide-and-Conquer Copyright 2007 Pearson Addison-Wesley. All rights reserved. Divide-and-Conquer The most-well known algorithm design strategy: 2. Divide instance of problem into two or more

More information

COMP 250 Fall recurrences 2 Oct. 13, 2017

COMP 250 Fall recurrences 2 Oct. 13, 2017 COMP 250 Fall 2017 15 - recurrences 2 Oct. 13, 2017 Here we examine the recurrences for mergesort and quicksort. Mergesort Recall the mergesort algorithm: we divide the list of things to be sorted into

More information

Question 7.11 Show how heapsort processes the input:

Question 7.11 Show how heapsort processes the input: Question 7.11 Show how heapsort processes the input: 142, 543, 123, 65, 453, 879, 572, 434, 111, 242, 811, 102. Solution. Step 1 Build the heap. 1.1 Place all the data into a complete binary tree in the

More information

Divide-and-Conquer. Dr. Yingwu Zhu

Divide-and-Conquer. Dr. Yingwu Zhu Divide-and-Conquer Dr. Yingwu Zhu Divide-and-Conquer The most-well known algorithm design technique: 1. Divide instance of problem into two or more smaller instances 2. Solve smaller instances independently

More information

(Refer Slide Time: 01.26)

(Refer Slide Time: 01.26) Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture # 22 Why Sorting? Today we are going to be looking at sorting.

More information

Presentation for use with the textbook, Algorithm Design and Applications, by M. T. Goodrich and R. Tamassia, Wiley, Merge Sort & Quick Sort

Presentation for use with the textbook, Algorithm Design and Applications, by M. T. Goodrich and R. Tamassia, Wiley, Merge Sort & Quick Sort Presentation for use with the textbook, Algorithm Design and Applications, by M. T. Goodrich and R. Tamassia, Wiley, 2015 Merge Sort & Quick Sort 1 Divide-and-Conquer Divide-and conquer is a general algorithm

More information

DynamicProgramming. September 17, 2018

DynamicProgramming. September 17, 2018 DynamicProgramming September 17, 2018 1 Lecture 11: Dynamic Programming CBIO (CSCI) 4835/6835: Introduction to Computational Biology 1.1 Overview and Objectives We ve so far discussed sequence alignment

More information

Algorithms and Data Structures (INF1) Lecture 7/15 Hua Lu

Algorithms and Data Structures (INF1) Lecture 7/15 Hua Lu Algorithms and Data Structures (INF1) Lecture 7/15 Hua Lu Department of Computer Science Aalborg University Fall 2007 This Lecture Merge sort Quick sort Radix sort Summary We will see more complex techniques

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

CSE Winter 2015 Quiz 2 Solutions

CSE Winter 2015 Quiz 2 Solutions CSE 101 - Winter 2015 Quiz 2 s January 27, 2015 1. True or False: For any DAG G = (V, E) with at least one vertex v V, there must exist at least one topological ordering. (Answer: True) Fact (from class)

More information

Introduction to. Algorithms. Lecture 6. Prof. Constantinos Daskalakis. CLRS: Chapter 17 and 32.2.

Introduction to. Algorithms. Lecture 6. Prof. Constantinos Daskalakis. CLRS: Chapter 17 and 32.2. 6.006- Introduction to Algorithms Lecture 6 Prof. Constantinos Daskalakis CLRS: Chapter 17 and 32.2. LAST TIME Dictionaries, Hash Tables Dictionary: Insert, Delete, Find a key can associate a whole item

More information

Searching Algorithms/Time Analysis

Searching Algorithms/Time Analysis Searching Algorithms/Time Analysis CSE21 Fall 2017, Day 8 Oct 16, 2017 https://sites.google.com/a/eng.ucsd.edu/cse21-fall-2017-miles-jones/ (MinSort) loop invariant induction Loop invariant: After the

More information

Test 1 Review Questions with Solutions

Test 1 Review Questions with Solutions CS3510 Design & Analysis of Algorithms Section A Test 1 Review Questions with Solutions Instructor: Richard Peng Test 1 in class, Wednesday, Sep 13, 2017 Main Topics Asymptotic complexity: O, Ω, and Θ.

More information

Divide-and-Conquer. The most-well known algorithm design strategy: smaller instances. combining these solutions

Divide-and-Conquer. The most-well known algorithm design strategy: smaller instances. combining these solutions Divide-and-Conquer The most-well known algorithm design strategy: 1. Divide instance of problem into two or more smaller instances 2. Solve smaller instances recursively 3. Obtain solution to original

More information

Intro to Algorithms. Professor Kevin Gold

Intro to Algorithms. Professor Kevin Gold Intro to Algorithms Professor Kevin Gold What is an Algorithm? An algorithm is a procedure for producing outputs from inputs. A chocolate chip cookie recipe technically qualifies. An algorithm taught in

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

CP222 Computer Science II. Searching and Sorting

CP222 Computer Science II. Searching and Sorting CP222 Computer Science II Searching and Sorting New Boston Dynamics wheeled robot Tech News! Tech News! New Boston Dynamics wheeled robot Man charged with arson based on pacemaker data Quiz! How do you

More information

Module 2: Classical Algorithm Design Techniques

Module 2: Classical Algorithm Design Techniques Module 2: Classical Algorithm Design Techniques Dr. Natarajan Meghanathan Associate Professor of Computer Science Jackson State University Jackson, MS 39217 E-mail: natarajan.meghanathan@jsums.edu Module

More information

Parallel Algorithms for (PRAM) Computers & Some Parallel Algorithms. Reference : Horowitz, Sahni and Rajasekaran, Computer Algorithms

Parallel Algorithms for (PRAM) Computers & Some Parallel Algorithms. Reference : Horowitz, Sahni and Rajasekaran, Computer Algorithms Parallel Algorithms for (PRAM) Computers & Some Parallel Algorithms Reference : Horowitz, Sahni and Rajasekaran, Computer Algorithms Part 2 1 3 Maximum Selection Problem : Given n numbers, x 1, x 2,, x

More information

Parallel Longest Increasing Subsequences in Scalable Time and Memory

Parallel Longest Increasing Subsequences in Scalable Time and Memory Parallel Longest Increasing Subsequences in Scalable Time and Memory Peter Krusche Alexander Tiskin Department of Computer Science University of Warwick, Coventry, CV4 7AL, UK PPAM 2009 What is in this

More information

1 5,9,2,7,6,10,4,3,8,1 The first number (5) is automatically the first number of the sorted list

1 5,9,2,7,6,10,4,3,8,1 The first number (5) is automatically the first number of the sorted list Algorithms One of the more challenging aspects of Computer Science are algorithms. An algorithm is a plan that solves a problem. When assembling a bicycle based on the included instructions, in this case,

More information

Parallel Sorting Algorithms

Parallel Sorting Algorithms CSC 391/691: GPU Programming Fall 015 Parallel Sorting Algorithms Copyright 015 Samuel S. Cho Sorting Algorithms Review Bubble Sort: O(n ) Insertion Sort: O(n ) Quick Sort: O(n log n) Heap Sort: O(n log

More information

CSC Design and Analysis of Algorithms. Lecture 5. Decrease and Conquer Algorithm Design Technique. Decrease-and-Conquer

CSC Design and Analysis of Algorithms. Lecture 5. Decrease and Conquer Algorithm Design Technique. Decrease-and-Conquer CSC 8301- Design and Analysis of Algorithms Lecture 5 Decrease and Conuer Algorithm Design Techniue Decrease-and-Conuer This algorithm design techniue is based on exploiting a relationship between a solution

More information

8/5/10 TODAY'S OUTLINE. Recursion COMP 10 EXPLORING COMPUTER SCIENCE. Revisit search and sorting using recursion. Recursion WHAT DOES THIS CODE DO?

8/5/10 TODAY'S OUTLINE. Recursion COMP 10 EXPLORING COMPUTER SCIENCE. Revisit search and sorting using recursion. Recursion WHAT DOES THIS CODE DO? 8/5/10 TODAY'S OUTLINE Recursion COMP 10 EXPLORING COMPUTER SCIENCE Revisit search and sorting using recursion Binary search Merge sort Lecture 8 Recursion WHAT DOES THIS CODE DO? A function is recursive

More information

Divide and Conquer. Algorithm Fall Semester

Divide and Conquer. Algorithm Fall Semester Divide and Conquer Algorithm 2014 Fall Semester Divide-and-Conquer The most-well known algorithm design strategy: 1. Divide instance of problem into two or more smaller instances 2. Solve smaller instances

More information

Sorting. Lecture10: Sorting II. Sorting Algorithms. Performance of Sorting Algorithms

Sorting. Lecture10: Sorting II. Sorting Algorithms. Performance of Sorting Algorithms Sorting (2013F) Lecture10: Sorting II Bohyung Han CSE, POSTECH bhhan@postech.ac.kr Important operation when organizing data Ordering of elements Finding duplicate elements Ranking elements (i.e., n th

More information

O(n): printing a list of n items to the screen, looking at each item once.

O(n): printing a list of n items to the screen, looking at each item once. UNIT IV Sorting: O notation efficiency of sorting bubble sort quick sort selection sort heap sort insertion sort shell sort merge sort radix sort. O NOTATION BIG OH (O) NOTATION Big oh : the function f(n)=o(g(n))

More information

COMP 251 Winter 2017 Online quizzes with answers

COMP 251 Winter 2017 Online quizzes with answers COMP 251 Winter 2017 Online quizzes with answers Open Addressing (2) Which of the following assertions are true about open address tables? A. You cannot store more records than the total number of slots

More information

1 Closest Pair Problem

1 Closest Pair Problem 1 Closest Pair Problem Computational Geometry, Lectures 3,4 Closest Pair Problem Scribe Varun Nayyar Given a set of n points determine points a,b such that the interpoint distance ( Euclidean ) is the

More information

Parallel Sorting Algorithms

Parallel Sorting Algorithms Parallel Sorting Algorithms Ricardo Rocha and Fernando Silva Computer Science Department Faculty of Sciences University of Porto Parallel Computing 2016/2017 (Slides based on the book Parallel Programming:

More information

Sorting. Bubble Sort. Pseudo Code for Bubble Sorting: Sorting is ordering a list of elements.

Sorting. Bubble Sort. Pseudo Code for Bubble Sorting: Sorting is ordering a list of elements. Sorting Sorting is ordering a list of elements. Types of sorting: There are many types of algorithms exist based on the following criteria: Based on Complexity Based on Memory usage (Internal & External

More information

Lecture 6 Sequences II. Parallel and Sequential Data Structures and Algorithms, (Fall 2013) Lectured by Danny Sleator 12 September 2013

Lecture 6 Sequences II. Parallel and Sequential Data Structures and Algorithms, (Fall 2013) Lectured by Danny Sleator 12 September 2013 Lecture 6 Sequences II Parallel and Sequential Data Structures and Algorithms, 15-210 (Fall 2013) Lectured by Danny Sleator 12 September 2013 Material in this lecture: Today s lecture is about reduction.

More information