1 / 19

Discrete Mathematics CS 2610

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

natala
Download Presentation

Discrete Mathematics CS 2610

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Discrete Mathematics CS 2610 September 23, 2008

  2. 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

  3. 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

  4. Pseudocode procedure procName(argument: type) variable := expression informal statement begin statements end {comment}

  5. Pseudocode if condition then statement1 [else statement2] for variable := initial value to final value statement while condition statement return expression procName(arg1,..,argn)

  6. 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

  7. 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

  8. 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.

  9. 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

  10. 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

  11. 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.

  12. 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

  13. Binary Search • Suppose n=2k • The loop is executed k times, where k=log2(n)

  14. Linear Search vs. Binary Search • Linear Search Time Complexity: • T(n) is O(n) • Binary Search Time Complexity: • T(n) is O(log2n)

  15. 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

  16. 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

  17. 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

  18. 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/

  19. 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

More Related