Question 1 (45 points)
|
|
- Antony Lang
- 5 years ago
- Views:
Transcription
1 COMP Homework #3 Solution Mathieu Blanchette Question 1 (45 points) /* This methods takes as argument an operator and two Integer operands * and evaluates the expression and return its value */ static Integer apply(string operator, Integer operand1, Integer operand2) throws Exception { int op1 = operand1.intvalue(); int op2 = operand2.intvalue(); if (operator.equals("+")) return new Integer(op1 + op2); if (operator.equals("-")) return new Integer(op1 - op2); if (operator.equals("*")) return new Integer(op1 * op2); if (operator.equals("%")) return new Integer(op1 / op2); throw new Exception("Unknown operator " + operator); // Returns true if op is +, -, *, or % static boolean isbinaryoperator(string op) { return op.equals("+") op.equals("-") op.equals("*") op.equals("%"); // Returns the value of the arithmetic expression described by expr // Throws an exception if the expression is malformed static Integer evaluate(string expr) throws Exception { StringTokenizer st=new StringTokenizer(expr,delimiters,true); Stack operators = new Stack(); // stack for the operators Stack numbers = new Stack(); // stack for the operands while (st.hasmoretokens()) { // read the tokens one by one String element = st.nexttoken(); Integer token = new Integer("*"); if (element.equals(")")) { if (!operators.empty() && operators.pop().equals("(")) { // if the parentheses block that just ended was a right operand if (operators.empty()) continue; if (isbinaryoperator((string)operators.peek())) { if (numbers.size()<2) throw new Exception("Malformed expression"); Integer num2=(integer)numbers.pop(); Integer num1=(integer)numbers.pop(); numbers.push(apply((string)operators.pop(),num1,num2)); else throw new Exception("Unmatched )"); continue; if (Character.isDigit(element.charAt(0))) { // we have a number Integer value=integer.valueof(element); // if this is the first operand, just push it if (operators.empty() operators.peek().equals("(")) numbers.push(value); else { // this is the second operand. if (isbinaryoperator((string)operators.peek())) { numbers.push(apply((string)operators.pop(),(integer)numbers.pop(),value)); else throw new Exception("Malformed expression"); continue; // if we get here, it's because the element is an operator or a ( if (delimiters.indexof(element)!=-1) operators.push(element); else throw new Exception("Illegal token "+element); if (numbers.size()!=1!operators.empty()) throw new Exception("Malformed expression"); return (Integer) numbers.pop(); Question 2. (15 points) Consider the following recurrence: T(n) = 1 if n = 1 2 * T(n - 1) + n if n > 1 a) (10 points) Obtain an explicit formula for the following recurrence using one of the techniques seen in class. In the process of doing so, you will possibly come across the summation Σ i=1 n ( i * 2 i ), which can be simplified as 2 * (1 + 2 n * (n-1) ). T(n) = 2 * T(n-1) + n
2 = 2 * (2 * T(n-2) + n-1) + n = 4 T(n-2) + 3 n 2 = 4 (2*T(n-3) + n-2) + 3 n 2 = 8 T(n-3) + 7n 2 8 = 8 ( 2* T(n-4) + n 3) + 7n 2 8 = 16 T(n-4) + 15n (after k substitutions) = 2 k T(n-k) + (2 k 1 ) n ( Σ i=1 k-1 i * 2 i ) = 2 k T(n-k) + (2 k 1 ) n 2 * (1 + 2 k-1 * (k-2) ) When k = n-1, the recursion stops, and we get T(n) = 2 n-1 T(1) + (2 n-1 1 ) n 2 * (1 + 2 n-2 * (n-3) ) = 2 n-1 + (2 n-1 1 ) n 2 * (1 + 2 n-2 * (n-3) ) = 2 n+1 n - 2 Informal check: Based on the recursive formula, we get: T(1) = 1 T(2) = 2* T(1) + 2 = 4 T(3) = 2* T(2) + 3 = 11 T(4) = 2 * T(3) + 4 = 26 T(5) = 2* T(4) + 5 = 57 Based on our explicit formula, we get: T(1) = (2 0 1 ) 1 2 * ( * (1-3) ) = * (1 1) = 1 T(2) = 2 + (2 1) * 2 2 (1 + 1*-1) = 4 T(3) = 4 + (4-1)*3 2 (1 + 2* 0) = 11 T(4) = 8 + (8-1)*4 2 (1 + 4*1) = 26 T(5) = 16 + (16-1)*5 2 * (1 + 8*2) = 57 So everything looks good b) (5 points) Prove your result using induction. Let P(n) be the prosition: T(n) = 2 n+1 n 2. We show that P(n) holds for any value of n >= 1. Base case: If n=1, T(1) = 1 (by definition), and 2 n+1 n 2 = = 1 Induction step: Assume that P(k) is true for some value k>=1, i.e. T(k) = 2 k+1 k 2. We need to show that this implies that P(k+1) is true, i.e. T(k+1) = 2 k+2 - (k+1) 2. T(k+1) = 2 T(k) + k + 1 (by definition of T() ). = 2 (2 k+1 k 2) + k +1 = 2 k+2 k - 3 = 2 k+2 (k+1) - 2 Thus, P(k) implies P(k+1), so, by the principle of induction, P(n) will be true for any value of n >= 1. Question 3. (20 points) You are a hiker planning a long trip of n days in the mountains of the Atacama desert (in Chile). Your trail goes in a straight line from west to east, but its altitude varies because of the mountains it crosses. Since it is a very hot place, you will walk exactly one
3 (horizontal) mile per day. Your significant other agrees to join you for the trip but, since he/she is very romantic, he/she wants to know how many sunsets you will witness. You have a map that indicates the altitude of every campsite along the way, stored in an array altitude[0...n-1]. When at campsite i, you will be able to see the sunset only if, looking west, there are no points with an altitude higher than you within the previous n/5 miles, i.e. altitude[i] altitude[i-k] for all k = 1...n/5. The trail starts at the Pacific Ocean, so the altitudes west of campsite 0 are all zero. Assume that during any given day, the altitude either increases monotonically, decreases monotonically, or does not change at all. Since it has not rained in the Atacama desert for the last 100 years, you can safely assume it will never be cloudy. See Figure below for an example when n=12. a) (5 points) Write (in pseudocode) a simple nested-for-loops algorithm to compute the number of sunsets you will witness. The running time of your algorithm should be O(n 2 ). Algorithm CountSunsets(altitudes, n) Input: An array altitudes[0...n-1] Output: The number of sunsets witnessed. nbsunsets = 0 for i = 0 to n-1 do hassunset = true; for k = 1 to n/5 do if (i-k>=0 and altitude[i-k] > alttitude[i]) hassunset = false; if (hassunset) nbsunsets++; return nbsunsets; b) (10 points) Quite surprisingly, it is possible to calculate the number of sunsets in time O(n). This is achieved by using a Stack to keep track of the positions of the campsites that have a chance of blocking sunsets for upcoming days. For example, from campsite 7 in the figure below, only position 6 has a chance of blocking the sunset in the future, as all campsites before 6 have lower altitude than it. From campsite 14, only sites 13 and 8 have a chance of blocking sunsets. By updating the content of the stack as you progress through the campsites, you can significantly reduce the number of campsites whose altitude is compared to the current one. Your algorithm will probably involve nested loops (the outer loop being over all campsites, the inner loop being other over the content of the stack), but think about carefully and you will see that the running time will nonetheless be O(n). 1) Here is the idea of the algorithm. We scan the altitude array from left to right. We keep a stack to remember all campsites that have the potential of interrupting a sunset up to the current campsite. That is, after having processed campsite i, what is on the stack are the campsites j i such that for all k between j+1 and i, altitude[k] < altitude[j]. Algorithm CountSunsets(altitudes, n) Input: An array altitudes[0...n] Output: The number of sunsets witnessed. Stack S = new Stack() Sunset = 0
4 for i = 0 to n do while (!S.empty() and altitudes[s.top()]<altitudes[i]) do S.pop() if (S.empty() or i S.top() >= n/5 ) then sunset = sunset +1 S.push(i) return sunset b) (5 points) Argue (in English, no formal proofs) why your algorithm runs in time O(n). Why does it run in time O(n)? After all, there are two nested loops and each of them can go for up to n iterations, so why is it not O(n 2 )? Notice that the only thing the while loop does is popping things from the stack. It never pushes things on the stack. Since each of the n elements of the stack are going to be pushed exactly once and removed at most once, the total running time for pushing and popping will be O(n). In other words, it could be that for some value of i, the while loop may take a lot of time to execute, popping a lot of things from the stack. However, this means that in later iterations of the for loop, the stack will be much smaller and the while loop will thus take less time. In total, over all iterations of the for loop, the while loop cannot be executed more than n times because that would mean that more than n elements were popped. Question 4 (10 points) Consider the following magic trick. You have a deck of n cards, labeled 1,2,...,n (but not necessarily in that order). You then repeat the following process until no cards are left: (i) Show to the public the card on the top of the deck, and remove it from the deck, and (ii) Take the next card from the top of the deck and place it at the bottom of the deck, without showing it. Your goal is to have previously ordered the cards in the deck so that the cards shown to the public are in increasing order: 1, 2,..., n. For example, if n=5, then starting from the arrangement 1,5,2,4,3 would work: 1,5,2,4,3 -> 2,4,3,5 -> 3,5,4 -> 4,5 -> 5 Question: Write an algorithm that prints the appropriate initial ordering for any given number n of cards. Algorithm ordercards(n) Input: An integer n Output: Prints the correct card ordering. Here s the simplest solution, which proceed backward to reverse the series of operations required to produce the right output of cards: LinkedList deck <- new LinkedList For i = n downto 1 do { Deck.rotateRight() // brings to the front the card at the back of the deck Deck.addFirst(i) Here, the rotateright method simply removes the last element from the list and places it in front on the list. Question 5. (10 points)
5 We have seen it class the precise meaning of the notation f(n) O(g(n)), essentially meaning that f(n) grows at most as fast as a constant times g(n). A similar notation can be used to say that f(n) grows at least as fast a constant times g(n), using the Omega notation: f(n) Ω( g(n) ) if and only if g(n) O(f(n)). Finally, we can express the fact that f(n) grows exactly as fast as a constant times g(n) using the Theta notation: f(n) Θ( g(n) ) if and only if f(n) O(g(n)) and f(n) Ω( g(n) ). Question: Prove that log( n! ) Θ( n log(n) ) First, we show that log(n!) O(n log n). For this, we need to find c and N such that for all n N, log(n!) c n log(n). This is the easy part, as c=1 and N = 1 will work: log(n!) = log ( n * (n-1) * (n-2)...* 2 * 1 ) = log(n) + log (n-1) + log(n-2) log(2) + log(1) log(n) + log(n) + log(n) log(n) + log(n) = n log(n) = c n log(n) Thus, log(n!) O(n log n). Now, to prove that n log n O(log(n!)), we need to find c and N such that for all n N, n log n c log(n!). This time, it will be easier to start with the right side of the inequality. Let s not pick c and N yet and see what we d need. log(n!) = log(n) + log (n-1) + log(n-2) log(n/2 +1) + log(n/2) log(2) +log(1) n/2 log(n/2) + n/2 log(1) = n/2 log(n/2) = n/2 (log(n) 1) n/2 (log(n) ½ log(n)) if n 4 = 1/4 n log(n) Thus, for N=4, c = 4, we get that n log(n) 4 n log(n) for all n N
PROGRAM EFFICIENCY & COMPLEXITY ANALYSIS
Lecture 03-04 PROGRAM EFFICIENCY & COMPLEXITY ANALYSIS By: Dr. Zahoor Jan 1 ALGORITHM DEFINITION A finite set of statements that guarantees an optimal solution in finite interval of time 2 GOOD ALGORITHMS?
More informationFaculty of Science FINAL EXAMINATION COMP-250 A Introduction to Computer Science School of Computer Science, McGill University
NAME: STUDENT NUMBER:. Faculty of Science FINAL EXAMINATION COMP-250 A Introduction to Computer Science School of Computer Science, McGill University Examimer: Prof. Mathieu Blanchette December 8 th 2005,
More informationCS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims. Lecture 10: Asymptotic Complexity and
CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims Lecture 10: Asymptotic Complexity and What Makes a Good Algorithm? Suppose you have two possible algorithms or
More informationCSE 146. Asymptotic Analysis Interview Question of the Day Homework 1 & Project 1 Work Session
CSE 146 Asymptotic Analysis Interview Question of the Day Homework 1 & Project 1 Work Session Comparing Algorithms Rough Estimate Ignores Details Or really: independent of details What are some details
More informationCS 61B Asymptotic Analysis Fall 2018
CS 6B Asymptotic Analysis Fall 08 Disclaimer: This discussion worksheet is fairly long and is not designed to be finished in a single section Some of these questions of the level that you might see on
More informationCSE373: Data Structures and Algorithms Lecture 4: Asymptotic Analysis. Aaron Bauer Winter 2014
CSE373: Data Structures and Algorithms Lecture 4: Asymptotic Analysis Aaron Bauer Winter 2014 Previously, on CSE 373 We want to analyze algorithms for efficiency (in time and space) And do so generally
More informationAlgorithms and Data Structures
Algorithms and Data Structures Spring 2019 Alexis Maciel Department of Computer Science Clarkson University Copyright c 2019 Alexis Maciel ii Contents 1 Analysis of Algorithms 1 1.1 Introduction.................................
More informationIntroduction to Data Structure
Introduction to Data Structure CONTENTS 1.1 Basic Terminology 1. Elementary data structure organization 2. Classification of data structure 1.2 Operations on data structures 1.3 Different Approaches to
More informationCISC-235. At this point we fnally turned our atention to a data structure: the stack
CISC-235 20180918 At this point we fnally turned our atention to a data structure: the stack A stack is our frst example of an Abstract Data Type: we specify the operations we need to be able to perform
More informationAgenda. The worst algorithm in the history of humanity. Asymptotic notations: Big-O, Big-Omega, Theta. An iterative solution
Agenda The worst algorithm in the history of humanity 1 Asymptotic notations: Big-O, Big-Omega, Theta An iterative solution A better iterative solution The repeated squaring trick Fibonacci sequence 2
More informationData Structures and Algorithms Key to Homework 1
Data Structures and Algorithms Key to Homework 1 January 31, 2005 15 Define an ADT for a set of integers (remember that a set may not contain duplicates) Your ADT should consist of the functions that can
More informationINTRODUCTION. Objective: - Algorithms - Techniques - Analysis. Algorithms:
INTRODUCTION Objective: - Algorithms - Techniques - Analysis. Algorithms: Definition: Pseudocode: An algorithm is a sequence of computational steps that tae some value, or set of values, as input and produce
More informationCS 173 [A]: Discrete Structures, Fall 2012 Homework 8 Solutions
CS 173 [A]: Discrete Structures, Fall 01 Homework 8 Solutions This homework contains 4 problems worth a total of 35 points. It is due on Wednesday, November 14th, at 5pm. 1 Induction Proofs With Inequalities
More informationCS 506, Sect 002 Homework 5 Dr. David Nassimi Foundations of CS Due: Week 11, Mon. Apr. 7 Spring 2014
CS 506, Sect 002 Homework 5 Dr. David Nassimi Foundations of CS Due: Week 11, Mon. Apr. 7 Spring 2014 Study: Chapter 4 Analysis of Algorithms, Recursive Algorithms, and Recurrence Equations 1. Prove the
More information10/5/2016. Comparing Algorithms. Analyzing Code ( worst case ) Example. Analyzing Code. Binary Search. Linear Search
10/5/2016 CSE373: Data Structures and Algorithms Asymptotic Analysis (Big O,, and ) Steve Tanimoto Autumn 2016 This lecture material represents the work of multiple instructors at the University of Washington.
More informationOverview of Data. 1. Array 2. Linked List 3. Stack 4. Queue
Overview of Data A data structure is a particular way of organizing data in a computer so that it can be used effectively. The idea is to reduce the space and time complexities of different tasks. Below
More informationWhat does this print?
public class Test_Static { int a; static int b; public Test_Static(int av, int bv) { a= av; b= bv; } public void print() { System.out.println ("a= " + a + " b= " + b); } public static void main (String
More informationOutline and Reading. Analysis of Algorithms 1
Outline and Reading Algorithms Running time ( 3.1) Pseudo-code ( 3.2) Counting primitive operations ( 3.4) Asymptotic notation ( 3.4.1) Asymptotic analysis ( 3.4.2) Case study ( 3.4.3) Analysis of Algorithms
More informationAssignment 1 (concept): Solutions
CS10b Data Structures and Algorithms Due: Thursday, January 0th Assignment 1 (concept): Solutions Note, throughout Exercises 1 to 4, n denotes the input size of a problem. 1. (10%) Rank the following functions
More informationComplexity, Induction, and Recurrence Relations. CSE 373 Help Session 4/7/2016
Complexity, Induction, and Recurrence Relations CSE 373 Help Session 4/7/2016 Big-O Definition Definition: g(n) is in O( f(n) ) if there exist positive constants c and n0 such that g(n) c f(n) for all
More informationAsymptotic Analysis Spring 2018 Discussion 7: February 27, 2018
CS 61B Asymptotic Analysis Spring 2018 Discussion 7: February 27, 2018 1 Asymptotic Notation 1.1 Order the following big-o runtimes from smallest to largest. O(log n), O(1), O(n n ), O(n 3 ), O(n log n),
More informationUNIT 1 ANALYSIS OF ALGORITHMS
UNIT 1 ANALYSIS OF ALGORITHMS Analysis of Algorithms Structure Page Nos. 1.0 Introduction 7 1.1 Objectives 7 1.2 Mathematical Background 8 1.3 Process of Analysis 12 1.4 Calculation of Storage Complexity
More informationAdam Blank Lecture 2 Winter 2017 CSE 332. Data Structures and Parallelism
Adam Blank Lecture 2 Winter 2017 CSE 332 Data Structures and Parallelism CSE 332: Data Structures and Parallelism Algorithm Analysis 1 Outline 1 Comparing Algorithms 2 Asymptotic Analysis Comparing Programs
More informationEECS 477: Introduction to algorithms. Lecture 7
EECS 477: Introduction to algorithms. Lecture 7 Prof. Igor Guskov guskov@eecs.umich.edu September 26, 2002 1 Lecture outline Recursion issues Recurrence relations Examples 2 Recursion: factorial unsigned
More informationPlotting run-time graphically. Plotting run-time graphically. CS241 Algorithmics - week 1 review. Prefix Averages - Algorithm #1
CS241 - week 1 review Special classes of algorithms: logarithmic: O(log n) linear: O(n) quadratic: O(n 2 ) polynomial: O(n k ), k 1 exponential: O(a n ), a > 1 Classifying algorithms is generally done
More informationRUNNING TIME ANALYSIS. Problem Solving with Computers-II
RUNNING TIME ANALYSIS Problem Solving with Computers-II Performance questions 4 How efficient is a particular algorithm? CPU time usage (Running time complexity) Memory usage Disk usage Network usage Why
More informationSection 05: Solutions
Section 05: Solutions 1. Memory and B-Tree (a) Based on your understanding of how computers access and store memory, why might it be faster to access all the elements of an array-based queue than to access
More informationMarch 13/2003 Jayakanth Srinivasan,
Statement Effort MergeSort(A, lower_bound, upper_bound) begin T(n) if (lower_bound < upper_bound) Θ(1) mid = (lower_bound + upper_bound)/ 2 Θ(1) MergeSort(A, lower_bound, mid) T(n/2) MergeSort(A, mid+1,
More informationAnalysis of Algorithms. CSE Data Structures April 10, 2002
Analysis of Algorithms CSE 373 - Data Structures April 10, 2002 Readings and References Reading Chapter 2, Data Structures and Algorithm Analysis in C, Weiss Other References 10-Apr-02 CSE 373 - Data Structures
More informationComplexity of Algorithms. Andreas Klappenecker
Complexity of Algorithms Andreas Klappenecker Example Fibonacci The sequence of Fibonacci numbers is defined as 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,... F n 1 + F n 2 if n>1 F n = 1 if n =1 0 if n =0 Fibonacci
More informationCSE 143. Complexity Analysis. Program Efficiency. Constant Time Statements. Big Oh notation. Analyzing Loops. Constant Time Statements (2) CSE 143 1
CSE 1 Complexity Analysis Program Efficiency [Sections 12.1-12., 12., 12.9] Count number of instructions executed by program on inputs of a given size Express run time as a function of the input size Assume
More informationChoice of C++ as Language
EECS 281: Data Structures and Algorithms Principles of Algorithm Analysis Choice of C++ as Language All algorithms implemented in this book are in C++, but principles are language independent That is,
More informationHomework 2. Sample Solution. Due Date: Thursday, May 31, 11:59 pm
Homework Sample Solution Due Date: Thursday, May 31, 11:59 pm Directions: Your solutions should be typed and submitted as a single pdf on Gradescope by the due date. L A TEX is preferred but not required.
More informationAlgorithm 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 informationAlgorithm efficiency can be measured in terms of: Time Space Other resources such as processors, network packets, etc.
Algorithms Analysis Algorithm efficiency can be measured in terms of: Time Space Other resources such as processors, network packets, etc. Algorithms analysis tends to focus on time: Techniques for measuring
More informationCOMP 202 Recursion. CONTENTS: Recursion. COMP Recursion 1
COMP 202 Recursion CONTENTS: Recursion COMP 202 - Recursion 1 Recursive Thinking A recursive definition is one which uses the word or concept being defined in the definition itself COMP 202 - Recursion
More informationAlgorithm Analysis. (Algorithm Analysis ) Data Structures and Programming Spring / 48
Algorithm Analysis (Algorithm Analysis ) Data Structures and Programming Spring 2018 1 / 48 What is an Algorithm? An algorithm is a clearly specified set of instructions to be followed to solve a problem
More informationINTRODUCTION. An easy way to express the idea of an algorithm (very much like C/C++, Java, Pascal, Ada, )
INTRODUCTION Objective: - Algorithms - Techniques - Analysis. Algorithms: Definition: Pseudocode: An algorithm is a sequence of computational steps that tae some value, or set of values, as input and produce
More informationComplexity of Algorithms
CSCE 222 Discrete Structures for Computing Complexity of Algorithms Dr. Hyunyoung Lee Based on slides by Andreas Klappenecker 1 Overview Example - Fibonacci Motivating Asymptotic Run Time Analysis Asymptotic
More informationAnalyze the obvious algorithm, 5 points Here is the most obvious algorithm for this problem: (LastLargerElement[A[1..n]:
CSE 101 Homework 1 Background (Order and Recurrence Relations), correctness proofs, time analysis, and speeding up algorithms with restructuring, preprocessing and data structures. Due Thursday, April
More informationMultiple-choice (35 pt.)
CS 161 Practice Midterm I Summer 2018 Released: 7/21/18 Multiple-choice (35 pt.) 1. (2 pt.) Which of the following asymptotic bounds describe the function f(n) = n 3? The bounds do not necessarily need
More informationCISC
CISC-235 20180115+17+19 Much of the material we covered this week was already posted in the notes for last week. These notes take up where those left off, and fill in some gaps. We have discussed the notation
More informationDATA STRUCTURES AND ALGORITHMS
DATA STRUCTURES AND ALGORITHMS For COMPUTER SCIENCE DATA STRUCTURES &. ALGORITHMS SYLLABUS Programming and Data Structures: Programming in C. Recursion. Arrays, stacks, queues, linked lists, trees, binary
More informationChapter 2: Complexity Analysis
Chapter 2: Complexity Analysis Objectives Looking ahead in this chapter, we ll consider: Computational and Asymptotic Complexity Big-O Notation Properties of the Big-O Notation Ω and Θ Notations Possible
More informationCMSC351 - Fall 2014, Homework #2
CMSC351 - Fall 2014, Homework #2 Due: October 8th at the start of class Name: Section: Grades depend on neatness and clarity. Write your answers with enough detail about your approach and concepts used,
More information4.1 Real-world Measurement Versus Mathematical Models
Chapter 4 Complexity To analyze the correctness of a computer program, we reasoned about the flow of variable values throughout that program and verified logical properties using this information. In addition
More informationCOMP 250 Fall Solution - Homework #4
COMP 250 Fall 2013 - Solution - Homework #4 1) // Evaluates a single operation static public double apply(string op, double x1, double x2) { if (op.equals("add")) return x1+x2; if (op.equals("mult")) return
More informationAnalysis of Algorithms & Big-O. CS16: Introduction to Algorithms & Data Structures Spring 2018
Analysis of Algorithms & Big-O CS16: Introduction to Algorithms & Data Structures Spring 2018 Outline Running time Big-O Big-Ω and Big-Θ Analyzing Seamcarve Dynamic programming Fibonacci sequence 2 Algorithms
More informationFundamental mathematical techniques reviewed: Mathematical induction Recursion. Typically taught in courses such as Calculus and Discrete Mathematics.
Fundamental mathematical techniques reviewed: Mathematical induction Recursion Typically taught in courses such as Calculus and Discrete Mathematics. Techniques introduced: Divide-and-Conquer Algorithms
More informationDATA STRUCTURES AND ALGORITHMS. Asymptotic analysis of the algorithms
DATA STRUCTURES AND ALGORITHMS Asymptotic analysis of the algorithms Summary of the previous lecture Algorithm definition Representation of the algorithms: Flowchart, Pseudocode Description Types of the
More informationHow much space does this routine use in the worst case for a given n? public static void use_space(int n) { int b; int [] A;
How much space does this routine use in the worst case for a given n? public static void use_space(int n) { int b; int [] A; } if (n
More informationasymptotic growth rate or order compare two functions, but ignore constant factors, small inputs
Big-Oh 1 asymptotic growth rate or order 2 compare two functions, but ignore constant factors, small inputs asymptotic growth rate or order 2 compare two functions, but ignore constant factors, small inputs
More informationJalil Boudjadar, Tommy Färnqvist. IDA, Linköping University
Lecture 15 Recursion TDDD86: DALP Print version of the lecture Data structures, algorithms and programming paradigms 1 november 2016 Jalil Boudjadar, Tommy Färnqvist. IDA, Linköping University 15.1 Content
More information6.001 Notes: Section 4.1
6.001 Notes: Section 4.1 Slide 4.1.1 In this lecture, we are going to take a careful look at the kinds of procedures we can build. We will first go back to look very carefully at the substitution model,
More informationRemember to also pactice: Homework, quizzes, class examples, slides, reading materials.
Exam 1 practice problems Remember to also pactice: Homework, quizzes, class examples, slides, reading materials. P1 (MC) For all the questions below (except for the True or False questions), the answer
More informationRecall from Last Time: Big-Oh Notation
CSE 326 Lecture 3: Analysis of Algorithms Today, we will review: Big-Oh, Little-Oh, Omega (Ω), and Theta (Θ): (Fraternities of functions ) Examples of time and space efficiency analysis Covered in Chapter
More information17/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 informationRecursion (Part 3) 1
1 Recursion (Part 3) Computational complexity computational complexity is concerned with describing the amount of resources needed to run an algorithm for our purposes, the resource is time complexity
More informationCOMP 250 Fall Midterm examination
COMP 250 Fall 2004 - Midterm examination October 18th 2003, 13:35-14:25 1 Running time analysis (20 points) For each algorithm below, indicate the running time using the simplest and most accurate big-oh
More informationINTRODUCTION. Analysis: Determination of time and space requirements of the algorithm
INTRODUCTION A. Preliminaries: Purpose: Learn the design and analysis of algorithms Definition of Algorithm: o A precise statement to solve a problem on a computer o A sequence of definite instructions
More informationSECTION 5.1. Sequences
SECTION 5.1 Sequences Sequences Problem: count number of ancestors one has 2 parents, 4 grandparents, 8 greatgrandparents,, written in a row as 2, 4, 8, 16, 32, 64, 128, To look for pattern of the numbers,
More information[ 11.2, 11.3, 11.4] Analysis of Algorithms. Complexity of Algorithms. 400 lecture note # Overview
400 lecture note #0 [.2,.3,.4] Analysis of Algorithms Complexity of Algorithms 0. Overview The complexity of an algorithm refers to the amount of time and/or space it requires to execute. The analysis
More information0.1 Welcome. 0.2 Insertion sort. Jessica Su (some portions copied from CLRS)
0.1 Welcome http://cs161.stanford.edu My contact info: Jessica Su, jtysu at stanford dot edu, office hours Monday 3-5 pm in Huang basement TA office hours: Monday, Tuesday, Wednesday 7-9 pm in Huang basement
More informationThis chapter covers recursive definition, including finding closed forms.
Chapter 12 Recursive Definition This chapter covers recursive definition, including finding closed forms. 12.1 Recursive definitions Thus far, we have defined objects of variable length using semi-formal
More informationCS Introduction to Data Structures How to Parse Arithmetic Expressions
CS3901 - Introduction to Data Structures How to Parse Arithmetic Expressions Lt Col Joel Young One of the common task required in implementing programming languages, calculators, simulation systems, and
More informationMeasuring 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 informationSection 05: Midterm Review
Section 05: Midterm Review 1. Asymptotic Analysis (a) Applying definitions For each of the following, choose a c and n 0 which show f(n) O(g(n)). Explain why your values of c and n 0 work. (i) f(n) = 5000n
More informationCS S-02 Algorithm Analysis 1
CS245-2008S-02 Algorithm Analysis 1 02-0: Algorithm Analysis When is algorithm A better than algorithm B? 02-1: Algorithm Analysis When is algorithm A better than algorithm B? Algorithm A runs faster 02-2:
More informationAssignment 1. Stefano Guerra. October 11, The following observation follows directly from the definition of in order and pre order traversal:
Assignment 1 Stefano Guerra October 11, 2016 1 Problem 1 Describe a recursive algorithm to reconstruct an arbitrary binary tree, given its preorder and inorder node sequences as input. First, recall that
More informationUNIT 3
UNIT 3 Presentation Outline Sequence control with expressions Conditional Statements, Loops Exception Handling Subprogram definition and activation Simple and Recursive Subprogram Subprogram Environment
More informationCS302 Topic: Algorithm Analysis #2. Thursday, Sept. 21, 2006
CS302 Topic: Algorithm Analysis #2 Thursday, Sept. 21, 2006 Analysis of Algorithms The theoretical study of computer program performance and resource usage What s also important (besides performance/resource
More information9/10/2018 Algorithms & Data Structures Analysis of Algorithms. Siyuan Jiang, Sept
9/10/2018 Algorithms & Data Structures Analysis of Algorithms Siyuan Jiang, Sept. 2018 1 Email me if the office door is closed Siyuan Jiang, Sept. 2018 2 Grades have been emailed github.com/cosc311/assignment01-userid
More informationCMPT 125: Practice Midterm Answer Key
CMPT 125, Spring 2017, Surrey Practice Midterm Answer Key Page 1 of 6 CMPT 125: Practice Midterm Answer Key Linked Lists Suppose you have a singly-linked list whose nodes are defined like this: struct
More information(Refer Slide Time: 1:27)
Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 1 Introduction to Data Structures and Algorithms Welcome to data
More informationCSE Winter 2015 Quiz 1 Solutions
CSE 101 - Winter 2015 Quiz 1 Solutions January 12, 2015 1. What is the maximum possible number of vertices in a binary tree of height h? The height of a binary tree is the length of the longest path from
More informationPostfix Notation is a notation in which the operator follows its operands in the expression (e.g ).
Assignment 5 Introduction For this assignment, you will write classes to evaluate arithmetic expressions represented as text. For example, the string "1 2 ( * 4)" would evaluate to 15. This process will
More informationCS:3330 (22c:31) Algorithms
What s an Algorithm? CS:3330 (22c:31) Algorithms Introduction Computer Science is about problem solving using computers. Software is a solution to some problems. Algorithm is a design inside a software.
More informationSection 05: Solutions
Section 05: Solutions 1. Asymptotic Analysis (a) Applying definitions For each of the following, choose a c and n 0 which show f(n) O(g(n)). Explain why your values of c and n 0 work. (i) f(n) = 5000n
More informationRound 1: Basics of algorithm analysis and data structures
Round 1: Basics of algorithm analysis and data structures Tommi Junttila Aalto University School of Science Department of Computer Science CS-A1140 Data Structures and Algorithms Autumn 2017 Tommi Junttila
More informationRecursion. Example R1
Recursion Certain computer problems are solved by repeating the execution of one or more statements a certain number of times. So far, we have implemented the repetition of one or more statements by using
More informationIntroduction to Analysis of Algorithms
Introduction to Analysis of Algorithms Analysis of Algorithms To determine how efficient an algorithm is we compute the amount of time that the algorithm needs to solve a problem. Given two algorithms
More informationAn algorithm is a sequence of instructions that one must perform in order to solve a wellformulated
1 An algorithm is a sequence of instructions that one must perform in order to solve a wellformulated problem. input algorithm problem output Problem: Complexity Algorithm: Correctness Complexity 2 Algorithm
More informationSummer 2017 Discussion 10: July 25, Introduction. 2 Primitives and Define
CS 6A Scheme Summer 207 Discussion 0: July 25, 207 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,
More informationMergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: April 1, 2015
CS161, Lecture 2 MergeSort, Recurrences, Asymptotic Analysis Scribe: Michael P. Kim Date: April 1, 2015 1 Introduction Today, we will introduce a fundamental algorithm design paradigm, Divide-And-Conquer,
More informationLECTURE 9 Data Structures: A systematic way of organizing and accessing data. --No single data structure works well for ALL purposes.
LECTURE 9 Data Structures: A systematic way of organizing and accessing data. --No single data structure works well for ALL purposes. Input Algorithm Output An algorithm is a step-by-step procedure for
More informationCSE 332 Spring 2013: Midterm Exam (closed book, closed notes, no calculators)
Name: Email address: Quiz Section: CSE 332 Spring 2013: Midterm Exam (closed book, closed notes, no calculators) Instructions: Read the directions for each question carefully before answering. We will
More informationAlgorithms A Look At Efficiency
Algorithms A Look At Efficiency 1B Big O Notation 15-121 Introduction to Data Structures, Carnegie Mellon University - CORTINA 1 Big O Instead of using the exact number of operations to express the complexity
More informationUNIT 1 BASICS OF AN ALGORITHM
UNIT 1 BASICS OF AN ALGORITHM Basics of an Algorithm Structure Page Nos. 1.0 Introduction 5 1.1 Objectives 6 1.2. Analysis and Complexity of Algorithms 6 1.3 Basic Technique for Design of Efficient Algorithms
More informationUnit #3: Recursion, Induction, and Loop Invariants
Unit #3: Recursion, Induction, and Loop Invariants CPSC 221: Basic Algorithms and Data Structures Jan Manuch 2017S1: May June 2017 Unit Outline Thinking Recursively Recursion Examples Analyzing Recursion:
More informationSEARCHING, SORTING, AND ASYMPTOTIC COMPLEXITY
1 A3 and Prelim 2 SEARCHING, SORTING, AND ASYMPTOTIC COMPLEXITY Lecture 11 CS2110 Fall 2016 Deadline for A3: tonight. Only two late days allowed (Wed-Thur) Prelim: Thursday evening. 74 conflicts! If you
More informationStack Abstract Data Type
Stacks Chapter 5 Chapter Objectives To learn about the stack data type and how to use its four methods: push, pop, peek, and empty To understand how Java implements a stack To learn how to implement a
More informationAlgorithm Analysis. Applied Algorithmics COMP526. Algorithm Analysis. Algorithm Analysis via experiments
Applied Algorithmics COMP526 Lecturer: Leszek Gąsieniec, 321 (Ashton Bldg), L.A.Gasieniec@liverpool.ac.uk Lectures: Mondays 4pm (BROD-107), and Tuesdays 3+4pm (BROD-305a) Office hours: TBA, 321 (Ashton)
More informationCS 6402 DESIGN AND ANALYSIS OF ALGORITHMS QUESTION BANK
CS 6402 DESIGN AND ANALYSIS OF ALGORITHMS QUESTION BANK Page 1 UNIT I INTRODUCTION 2 marks 1. Why is the need of studying algorithms? From a practical standpoint, a standard set of algorithms from different
More informationCS171 Midterm Exam. October 29, Name:
CS171 Midterm Exam October 29, 2012 Name: You are to honor the Emory Honor Code. This is a closed-book and closed-notes exam. You have 50 minutes to complete this exam. Read each problem carefully, and
More informationAssignment 5. Introduction
Assignment 5 Introduction The objectives of this assignment are to exercise a few advanced object oriented programming and basic data structures concepts. The first mini-goal is to understand that objects
More informationSCHEME 8. 1 Introduction. 2 Primitives COMPUTER SCIENCE 61A. March 23, 2017
SCHEME 8 COMPUTER SCIENCE 61A March 2, 2017 1 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,
More informationData Structures and Algorithms Chapter 2
1 Data Structures and Algorithms Chapter 2 Werner Nutt 2 Acknowledgments The course follows the book Introduction to Algorithms, by Cormen, Leiserson, Rivest and Stein, MIT Press [CLRST]. Many examples
More informationCSE 332, Spring 2010, Midterm Examination 30 April 2010
CSE 332, Spring 2010, Midterm Examination 30 April 2010 Please do not turn the page until the bell rings. Rules: The exam is closed-book, closed-note. You may use a calculator for basic arithmetic only.
More informationCS302 Topic: Algorithm Analysis. Thursday, Sept. 22, 2005
CS302 Topic: Algorithm Analysis Thursday, Sept. 22, 2005 Announcements Lab 3 (Stock Charts with graphical objects) is due this Friday, Sept. 23!! Lab 4 now available (Stock Reports); due Friday, Oct. 7
More informationBasic Data Structures (Version 7) Name:
Prerequisite Concepts for Analysis of Algorithms Basic Data Structures (Version 7) Name: Email: Concept: mathematics notation 1. log 2 n is: Code: 21481 (A) o(log 10 n) (B) ω(log 10 n) (C) Θ(log 10 n)
More information