190 likes | 220 Views
Discrete Mathematics CS 2610. September 23, 2008. Algorithms. An Algorithm is a finite set of precise instructions for performing a computation or for solving a problem. Properties of an algorithm: - input: input values are from a specified set
E N D
Discrete Mathematics CS 2610 September 23, 2008
Algorithms An Algorithm is a finite set of precise instructions for performing a computation or for solving a problem. Properties of an algorithm: - input: input values are from a specified set - output: output values are from a specified set - definiteness: each step is precisely defined - correctness: correct output produced - finiteness: takes a finite number of steps - effectiveness: each step is finite & exact - generality: applicable to various input sizes
Analysis of Algorithms • Analyzing an algorithm • Time complexity • Space complexity • Time complexity • Running time needed by an algorithm as a function of the size of the input • Denoted as T(N) • We are interested in measuring how fast the time complexity increases as the input size grows • Asymptotic Time Complexity of an Algorithm
Pseudocode procedure procName(argument: type) variable := expression informal statement begin statements end {comment}
Pseudocode if condition then statement1 [else statement2] for variable := initial value to final value statement while condition statement return expression procName(arg1,..,argn)
Algorithm Complexity • Worst Case Analysis • Largest number of operations to solve a problem of a specified size. • Analyze the worst input case for each input size. • Upper bound of the running time for any input. • Most widely used. • Average Case Analysis • Average number of operations over all inputs of a given size. • Sometimes it’s too complicated
Example: Max Algorithm procedure max( a1, a2, …, an: integers) v := a1 1 for i := 2 to n n-1 x if ai > v then 1 v := ai ? (max 1) return v 1 • How many times is each step executed ? • Worst-Case: the input sequence is a strictly increasing sequence
Searching Algorithms • Searching Algorithms Problem: Find an element x in a list a1,…, an (not necessarily ordered) • Linear Search Strategy: Examine the sequence one element after another until all the elements have been examined or the current element being examined is the element x.
Example: Linear Search procedure linear search (x: integer, a1, a2, …, an: distinct integers) i := 1 1 while (i ≤ n x ≠ ai) ? (max n) x i := i + 1 1 if i ≤ n then 1 x location := i 1 else location := 0 1 return location 1 Worst-Case occurs when x is the last element in the sequence Best Case occurs when x is the first element in the sequence
Example: Linear Search • Average Case: • x is the first element • 1 loop comparison • x is the second element • 2 loop comparisons, 1 iteration of the loop • x is the third element • 3 loop comparisons, 2 iterations of the loop • x is nth element • n loop comparisons, n-1 iterations of the loop
Binary Search • Problem: Locate an element x in a sequence of sorted elements in non-decreasing order. • Strategy: On each step, look at the middle element of the remaining list to eliminate half of it, and quickly zero in on the desired element.
Binary Search procedure binary search (x: integer, a1, a2, …, an: integer) {a1, a2, …, an are distinct integers sorted smallest to largest} i := 1 {start of search range} j := n {end of search range} while i < j begin m := (i +j)/2 if x > amthen i := m + 1 else j :=m end if x = aithen location := i else location := 0 return location
Binary Search • Suppose n=2k • The loop is executed k times, where k=log2(n)
Linear Search vs. Binary Search • Linear Search Time Complexity: • T(n) is O(n) • Binary Search Time Complexity: • T(n) is O(log2n)
Sorting Algorithms Problem: Given a sequence of numbers, sort the sequence in weakly increasing order. Sorting Algorithms: Input: A sequence of n numbers a1, a2, …, an Output: A reordering of the input sequence (a’1, a’2, …, a’n) such that a’1 ≤ a’2 ≤ … ≤ a’n
Bubble Sort • Smallest elements “float” up to the top (front) of the list, like bubbles in a container of liquid • Largest elements sink to the bottom (end). • See the animation at: http://math.hws.edu/TMCM/java/xSortLab
Example: Bubble Sort procedure bubblesort( a1, a2, …, an : distinct integers) for i = 1 to n-1 for j = 1 to n-i if (aj > aj+1) then swap aj and aj+1 Worst-Case: The sequence is sorted in decreasing order At step i •The loop condition of the inner loop is executed n – i + 1 times. •The body of the loop is executed n – i times
Insertion Sort • For each element: • The elements on its left are already sorted • Shift the element with the element on the left until it is in the correct place. See animation http://math.hws.edu/TMCM/java/xSortLab/
Insertion Sort procedure insertSort( a1, a2, …, an : distinct integers) for j=2 to n begin i=j - 1 while i > 0 and ai > ai+1 swap ai and ai+1 i=i-1 end Worst-Case: The sequence is in decreasing order At step j, the while loop condition is executed j times the body of the loop is executed j-1 times