September 18, 20031 Algorithms and Data Structures Lecture II Simonas Šaltenis Aalborg University

Slides:



Advertisements
Similar presentations
Analysis of Algorithms
Advertisements

1 ICS 353 Design and Analysis of Algorithms Spring Semester (062) King Fahd University of Petroleum & Minerals Information & Computer Science.
Analysis of Algorithms1 Running Time Pseudo-Code Analysis of Algorithms Asymptotic Notation Asymptotic Analysis Mathematical facts COMP-2001 L4&5 Portions.
© 2004 Goodrich, Tamassia 1 Lecture 01 Algorithm Analysis Topics Basic concepts Theoretical Analysis Concept of big-oh Choose lower order algorithms Relatives.
Introduction to Analysis of Algorithms
Sorting. Input: A sequence of n numbers a 1, …, a n Output: A reordering a 1 ’, …, a n ’, such that a 1 ’ < … < a n ’
Not all algorithms are created equally Insertion of words from a dictionary into a sorted list takes a very long time. Insertion of the same words into.
Analysis of Algorithms (Chapter 4)
Analysis of Algorithms1 Estimate the running time Estimate the memory space required. Time and space depend on the input size.
Analysis of Algorithms
1 Data Structures A program solves a problem. A program solves a problem. A solution consists of: A solution consists of:  a way to organize the data.
CS3381 Des & Anal of Alg ( SemA) City Univ of HK / Dept of CS / Helena Wong 2. Analysis of Algorithms - 1 Analysis.
25 June 2015Comp 122, Spring 2004 Asymptotic Notation, Review of Functions & Summations.
Algorithm Analysis CS 201 Fundamental Structures of Computer Science.
Data Structures, Spring 2004 © L. Joskowicz 1 Data Structures – LECTURE 2 Elements of complexity analysis Performance and efficiency Motivation: analysis.
Fall 2008 Insertion Sort – review of loop invariants.
CS Main Questions Given that the computer is the Great Symbol Manipulator, there are three main questions in the field of computer science: What kinds.
Proving correctness. Proof based on loop invariants  an assertion which is satisfied before each iteration of a loop  At termination the loop invariant.
Analysis of Algorithms COMP171 Fall Analysis of Algorithms / Slide 2 Introduction * What is Algorithm? n a clearly specified set of simple instructions.
Introduction to Algorithm design and analysis
Analysis of Algorithms Algorithm Input Output © 2014 Goodrich, Tamassia, Goldwasser1Analysis of Algorithms Presentation for use with the textbook Data.
CSC2105: Algorithms Mashiour Rahman American International University Bangladesh.
Analysis of Algorithms
Discrete Structures Lecture 11: Algorithms Miss, Yanyan,Ji United International College Thanks to Professor Michael Hvidsten.
Introduction Data Structures & Algorithm Data Structures & Algorithm.
Algorithm Efficiency CS 110: Data Structures and Algorithms First Semester,
Analysis of Algorithms
1 Computer Algorithms Lecture 3 Asymptotic Notation Some of these slides are courtesy of D. Plaisted, UNC and M. Nicolescu, UNR.
Analysis of Algorithms1 Running Time Pseudo-Code Analysis of Algorithms Asymptotic Notation Asymptotic Analysis Mathematical facts.
Analysis of Algorithms Algorithm Input Output Last Update: Aug 21, 2014 EECS2011: Analysis of Algorithms1.
2IL50 Data Structures Fall 2015 Lecture 2: Analysis of Algorithms.
September 15, Algorithms and Data Structures Simonas Šaltenis Aalborg University
Jessie Zhao Course page: 1.
1 COMP3040 Tutorial 1 Analysis of algorithms. 2 Outline Motivation Analysis of algorithms Examples Practice questions.
Analysis of Algorithms These slides are a modified version of the slides used by Prof. Eltabakh in his offering of CS2223 in D term 2013.
CMPT 438 Algorithms Chapter 3 Asymptotic Notations.
Program Efficiency & Complexity Analysis. Algorithm Review An algorithm is a definite procedure for solving a problem in finite number of steps Algorithm.
September 17, 2001 Algorithms and Data Structures Lecture II Simonas Šaltenis Nykredit Center for Database Research Aalborg University
Algorithm Analysis CS 400/600 – Data Structures. Algorithm Analysis2 Abstract Data Types Abstract Data Type (ADT): a definition for a data type solely.
CSC401 – Analysis of Algorithms Lecture Notes 2 Asymptotic Analysis Objectives: Mathematics foundation for algorithm analysis Amortization analysis techniques.
Analysis of Algorithms Algorithm Input Output An algorithm is a step-by-step procedure for solving a problem in a finite amount of time.
September 9, Algorithms and Data Structures Lecture II Simonas Šaltenis Nykredit Center for Database Research Aalborg University
Introduction to Analysis of Algorithms CS342 S2004.
Algorithm Analysis Part of slides are borrowed from UST.
Big-Oh Notation. Agenda  What is Big-Oh Notation?  Example  Guidelines  Theorems.
1/6/20161 CS 3343: Analysis of Algorithms Lecture 2: Asymptotic Notations.
1 Ch. 2: Getting Started. 2 About this lecture Study a few simple algorithms for sorting – Insertion Sort – Selection Sort (Exercise) – Merge Sort Show.
Lecture 2 Algorithm Analysis Arne Kutzner Hanyang University / Seoul Korea.
2IL50 Data Structures Spring 2016 Lecture 2: Analysis of Algorithms.
CSC317 1 So far so good, but can we do better? Yes, cheaper by halves... orkbook/cheaperbyhalf.html.
Asymptotic Notation Faculty Name: Ruhi Fatima
1 Computer Algorithms Tutorial 2 Mathematical Induction Some of these slides are courtesy of D. Plaisted et al, UNC and M. Nicolescu, UNR.
September 10, 2001 Algorithms and Data Structures Simonas Šaltenis Nykredit Center for Database Research Aalborg University
Analysis of Algorithms Spring 2016CS202 - Fundamentals of Computer Science II1.
GC 211:Data Structures Week 2: Algorithm Analysis Tools Slides are borrowed from Mr. Mohammad Alqahtani.
Chapter 15 Running Time Analysis. Topics Orders of Magnitude and Big-Oh Notation Running Time Analysis of Algorithms –Counting Statements –Evaluating.
1 COMP9024: Data Structures and Algorithms Week Two: Analysis of Algorithms Hui Wu Session 2, 2014
CS6045: Advanced Algorithms Sorting Algorithms. Sorting Input: sequence of numbers Output: a sorted sequence.
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 2.
M. Böhlen and R. Sebastiani 9/29/20161 Data Structures and Algorithms Roberto Sebastiani
Math/CSE 1019C: Discrete Mathematics for Computer Science Fall 2012
CS 3343: Analysis of Algorithms
CS 3343: Analysis of Algorithms
Asymptotic Notations Algorithms Lecture 9.
Algorithms and Data Structures
Math/CSE 1019N: Discrete Mathematics for Computer Science Winter 2007
September 10, 2001 Algorithms and Data Structures Simonas Šaltenis Nykredit Center for Database Research Aalborg University
Algorithms and Data Structures Lecture II
Algorithms and Data Structures
Presentation transcript:

September 18, Algorithms and Data Structures Lecture II Simonas Šaltenis Aalborg University

September 18, This Lecture Correctness of algorithms Basic math revisited: Growth of functions and asymptotic notation Summations Mathematical induction

September 18, Correctness of Algorithms The algorithm is correct if for any legal input it terminates and produces the desired output. Automatic proof of correctness is not possible But there are practical techniques and rigorous formalisms that help to reason about the correctness of algorithms

September 18, Partial and Total Correctness Partial correctness Any legal input Algorithm Output IF this point is reached, THEN this is the desired output Total correctness Any legal input Algorithm Output INDEED this point is reached, AND this is the desired output

September 18, Assertions To prove partial correctness we associate a number of assertions (statements about the state of the execution) with specific checkpoints in the algorithm. E.g., A[1], …, A[k] form an increasing sequence Preconditions – assertions that must be valid before the execution of an algorithm or a subroutine (INPUT) Postconditions – assertions that must be valid after the execution of an algorithm or a subroutine (OUTPUT)

September 18, Pre/post-conditions Exercise from the last lecture: “Write a pseudocode of an algorithm to find the two smallest numbers in a sequence of numbers (given as an array)” INPUT: an array of integers A[1..n], n > 0 OUTPUT: (m1, m2), s. t. m1 < m2 and For each i  [1..n], m1  A[i] and, if A[i]  m1, then m2  A[i]. If there is no m2 satisfying these conditions, then m2 = m1

September 18, Loop Invariants Invariants – assertions that are valid any time they are reached (many times during the execution of an algorithm, e.g., in loops) We must show three things about loop invariants: Initialization – it is true prior to the first iteration Maintenance – if it is true before an iteration, then it remains true before the next iteration Termination – when loop terminates the invariant gives a useful property to show the correctness of the algorithm

September 18, Example: Binary Search (1) Initialization: left = 1, right = n the invariant trivially holds because there are no elements in A to the left of left nor to the right of right left  1 right  n do j  (left+right)/2  if A[j]=q then return j else if A[j]>q then right  j-1 else left=j+1 while left<=right return NIL left  1 right  n do j  (left+right)/2  if A[j]=q then return j else if A[j]>q then right  j-1 else left=j+1 while left<=right return NIL We want to make sure that if NIL is return q is not in A Invariant: at the start of each while loop, A[i] q for all i  [right+1..n]

September 18, Example: Binary Search (2) Maintenance: if A[j]>q, then A[i] > q for each i  [j..n], because the array is sorted. Then the algorithm assign j-1 to right. Thus, the second part of the invariant holds. Similarly the first part of the invariant could be shown to hold. left  1 right  n do j  (left+right)/2  if A[j]=q then return j else if A[j]>q then right  j-1 else left=j+1 while left<=right return NIL left  1 right  n do j  (left+right)/2  if A[j]=q then return j else if A[j]>q then right  j-1 else left=j+1 while left<=right return NIL Invariant: at the start of each while loop, A[i] q for all i  [right+1..n]

September 18, Example: Binary Search (3) Termination: the loop terminates, when left > right. The invariant states, that q is smaller than all elements of A to the left of left and larger than all elements of A to the right of right. This exhausts all elements of A, i.e. q is either smaller or larger that any element of A left  1 right  n do j  (left+right)/2  if A[j]=q then return j else if A[j]>q then right  j-1 else left=j+1 while left<=right return NIL left  1 right  n do j  (left+right)/2  if A[j]=q then return j else if A[j]>q then right  j-1 else left=j+1 while left<=right return NIL Invariant: at the start of each while loop, A[i] q for all i  [right+1..n]

September 18, Example: Insertion Sort (1) Invariant: at the start of each for loop, A[1…j- 1] consists of elements originally in A[1…j-1] but in sorted order for j=2 to length(A) do key=A[j] i=j-1 while i>0 and A[i]>key do A[i+1]=A[i] i-- A[i+1]:=key for j=2 to length(A) do key=A[j] i=j-1 while i>0 and A[i]>key do A[i+1]=A[i] i-- A[i+1]:=key

September 18, Example: Insertion Sort (2) Invariant: at the start of each for loop, A[1…j- 1] consists of elements originally in A[1…j-1] but in sorted order for j=2 to length(A) do key=A[j] i=j-1 while i>0 and A[i]>key do A[i+1]=A[i] i-- A[i+1]:=key for j=2 to length(A) do key=A[j] i=j-1 while i>0 and A[i]>key do A[i+1]=A[i] i-- A[i+1]:=key Initialization: j = 2, the invariant trivially holds because A[1] is a sorted array

September 18, Example: Insertion Sort (3) Invariant: at the start of each for loop, A[1…j- 1] consists of elements originally in A[1…j-1] but in sorted order for j=2 to length(A) do key=A[j] i=j-1 while i>0 and A[i]>key do A[i+1]=A[i] i-- A[i+1]:=key for j=2 to length(A) do key=A[j] i=j-1 while i>0 and A[i]>key do A[i+1]=A[i] i-- A[i+1]:=key Maintenance: the inner while loop moves elements A[j- 1], A[j-2], …, A[j-k] one position right without changing their order. Then the former A[j] element is inserted into k-th position so that A[k-1]  A[k]  A[k+1]. A[1…j-1] sorted + A[j]  A[1…j] sorted

September 18, Example of Loop Invariants (4) Invariant: at the start of each for loop, A[1…j- 1] consists of elements originally in A[1…j-1] but in sorted order for j=2 to length(A) do key=A[j] i=j-1 while i>0 and A[i]>key do A[i+1]=A[i] i-- A[i+1]:=key for j=2 to length(A) do key=A[j] i=j-1 while i>0 and A[i]>key do A[i+1]=A[i] i-- A[i+1]:=key Termination: the loop terminates, when j=n+1. Then the invariant states: “A[1…n] consists of elements originally in A[1…n] but in sorted order”

September 18, Asymptotic Analysis Goal: to simplify analysis of running time by getting rid of ”details”, which may be affected by specific implementation and hardware “rounding” for numbers: 1,000,001  1,000,000 “rounding” for functions: 3n 2  n 2 Capturing the essence: how the running time of an algorithm increases with the size of the input in the limit. Asymptotically more efficient algorithms are best for all but small inputs

September 18, Asymptotic Notation The “big-Oh” O-Notation asymptotic upper bound f(n) = O(g(n)), if there exists constants c and n 0, s.t. f(n)  c g(n) for n  n 0 f(n) and g(n) are functions over non-negative integers Used for worst-case analysis Input Size Running Time

September 18, The “big-Omega”  Notation asymptotic lower bound f(n) =  (g(n)) if there exists constants c and n 0, s.t. c g(n)  f(n) for n  n 0 Used to describe best-case running times or lower bounds of algorithmic problems E.g., lower-bound of searching in an unsorted array is  (n). Input Size Running Time Asymptotic Notation (2)

September 18, Asymptotic Notation (3) Simple Rule: Drop lower order terms and constant factors. 50 n log n is O(n log n) 7n - 3 is O(n) 8n 2 log n + 5n 2 + n is O(n 2 log n) Note: Even though (50 n log n) is O(n 5 ), it is expected that such an approximation be of as small an order as possible

September 18, The “big-Theta”  Notation asymptoticly tight bound f(n) =  (g(n)) if there exists constants c 1, c 2, and n 0, s.t. c 1 g(n)  f(n)  c 2 g(n) for n  n 0 f(n) =  (g(n)) if and only if f(n) =  (g(n)) and f(n) =  (g(n)) O(f(n)) is often misused instead of  (f(n)) Input Size Running Time Asymptotic Notation (4)

September 18, Asymptotic Notation (5) Two more asymptotic notations "Little-Oh" notation f(n)=o(g(n)) non-tight analogue of Big-Oh For every c, there should exist n 0, s.t. f(n)  c g(n) for n  n 0 Used for comparisons of running times. If f(n)=o(g(n)), it is said that g(n) dominates f(n). "Little-omega" notation f(n)=  (g(n)) non-tight analogue of Big-Omega

September 18, Asymptotic Notation (6) Analogy with real numbers f(n) = O(g(n))  f  g f(n) =  (g(n))  f  g f(n) =  (g(n))  f  g f(n) = o(g(n))  f  g f(n) =  (g(n))  f  g Abuse of notation: f(n) = O(g(n)) actually means f(n)  O(g(n))

September 18, Comparison of Running Times Running Time in  s Maximum problem size (n) 1 second1 minute1 hour 400n n log n n22n n4n n2n

September 18, A Quick Math Review Geometric progression given an integer n 0 and a real number 0< a  1 geometric progressions exhibit exponential growth Arithmetic progression

September 18, A Quick Math Review (2)

September 18, Summations The running time of insertion sort is determined by a nested loop Nested loops correspond to summations for j  2 to length(A) key  A[j] i  j-1 while i>0 and A[i]>key A[i+1]  A[i] i  i-1 A[i+1]  key for j  2 to length(A) key  A[j] i  j-1 while i>0 and A[i]>key A[i+1]  A[i] i  i-1 A[i+1]  key

September 18, Proof by Induction We want to show that property P is true for all integers n  n 0 Basis: prove that P is true for n 0 Inductive step: prove that if P is true for all k such that n 0  k  n – 1 then P is also true for n Example Basis

September 18, Proof by Induction (2) Inductive Step

September 18, Next Week Divide-and-conquer, Merge sort Writing recurrences to describe the running time of divide-and-conquer algorithms.