Data Structures - PowerPoint PPT Presentation

1 / 23
About This Presentation
Title:

Data Structures

Description:

Recursion. Recursive definition (and function) must: 1. have a base case termination condition. 2. always call a case . smaller. than itself. All practical ... – PowerPoint PPT presentation

Number of Views:39
Avg rating:3.0/5.0
Slides: 24
Provided by: ufl69
Learn more at: https://www.cise.ufl.edu
Category:

less

Transcript and Presenter's Notes

Title: Data Structures


1
  • Data Structures Algorithms
  • Recursion and Trees
  • Richard Newman

2
  • Recursion
  • Fundamental concept in math and CS
  • Recursive definition
  • Defined in terms of itself
  • aN aaN-1, a0 1
  • Recursive function
  • Calls itself
  • int exp(int base, int pow)
  • return (pow 0? 1 baseexp(base, pow))

3
  • Recursion
  • Recursive definition (and function) must
  • 1. have a base case termination condition
  • 2. always call a case smaller than itself
  • All practical computations can be couched in a
    recursive framework!
  • (see theory of computation)

4
  • Trees
  • Recursively defined structures
  • e.g., binary tree
  • Base case
  • Empty tree has no nodes
  • Recursion
  • None-empty tree has a root node with two
    children, each a tree

5
  • Roadmap to Recursion
  • Widely used in CS and with trees...
  • Mathematical recurrences
  • Recursive programs
  • Divide and Conquer
  • Dynamic Programming
  • Tree traversal
  • DFS

6
  • Recursive Algorithms
  • Recursive algorithm solves problem by solving
    one or more smaller instances of same problem
  • Recurrence relation factorial
  • N! N(N-1)!, for N gt 0, with 0! 1.
  • In C, use recursive functions

Int factorial(int N) if (N 0) return 1
return Nfactorial(N-1)
7
  • Recursive Algorithms
  • BTW, can often also be expressed as iteration
  • E.g., can also write N! computation as a loop

int factorial(int N) for (int t 1, i 1
i lt N i) t i return t
8
  • Euclid's Algorithm
  • Euclid's Algorithm is one of the oldest known
    algorithms
  • Recursive method for finding the GCD of two
    integers

Base case
int gcd(int m, int n) // expect m gt n if (n
0) return m return gcd(n, m n)
Recursive call to smaller instance
9
  • Divide Conquer
  • Recursive scheme that divides input into two (or
    some fixed number) of (roughly) equal parts
  • Then makes a recursive call on each part
  • Widely used approach
  • Many important algorithms
  • Depending on expense of dividing and combining,
    can be very efficient

10
  • Divide Conquer
  • Example find the maximum element in an array
    aN
  • Easy to do iteratively...
  • Base case
  • Only one element return it
  • Divide
  • Split array into upper and lower halves
  • Recursion
  • Find maximum of each half
  • Combine results
  • Return larger of two maxima

11
  • Divide Conquer
  • Property 5.1 A recursive function that divides a
    problem of size N into two independent
    (non-empty) parts that it solves, recursively
    calls itself less than N times.
  • Prf
  • T(1) 0
  • T(N) T(k) T(N-k) 1 for recursive call on
    size N divided into one part of size k and the
    other of size N-k
  • Induct!

12
  • Tower of Hanoi
  • 3 pegs
  • N disks, all on one peg
  • Disks arranged from largest on bottom to smallest
    on top
  • Must move all disks to target peg
  • Can only move one disk at a time
  • Must place disk on another peg
  • Can never place larger disk on a smaller one
  • Legend has it that the world will end when a
    certain group of monks finishes the task in a
    temple with 40 golden disks on 3 diamond pegs

13
  • Tower of Hanoi

Target peg
Which peg should top disk go on first?
14
  • Tower of Hanoi

How many moves does this take?
How many moves does this take?
15
  • Tower of Hanoi

Property 5.2 The recursive dc algorithm for
the Towers of Hanoi problem produces a
solution that has 2N 1 moves. Prf T(1)
1 T(N) T(N-1) 1 T(N-1) 2 T(N-1) 1
2N 1 by induction
16
  • Divide Conquer
  • Two other important DC algorithms
  • Binary search
  • MergeSort

Algorithm/metric Recurrence Approx. Soln.
Binary Search comparisons C(N) C(N/2)1 lg N
MergeSort recursive calls A(N) 2 A(N/2) 1 N
MergeSort comparisons C(N) 2 C(N/2) N N lg N
17
  • Dynamic Programming
  • In Divide Conquer, it is essential that the
    subproblems be independent (partition the input)
  • When this is not the case, life gets complicated!
  • Sometimes, we can essentially fill up a table
    with values we compute once, rather than
    recompute every time they are needed.

18
  • Dynamic Programming
  • Fibonacci Numbers
  • F0 0
  • F1 1
  • FN FN-1 FN-2
  • Horribly inefficient implementation

int F(int N) if (N lt 1) return 0 if (N
1) return 1 return F(N-1) F(N-2)
19
  • Dynamic Programming
  • How bad is this code?
  • How many calls does it make to itself?
  • F(N) makes F(N1) calls!
  • Exponential!!!!

13
8
5
2
5
3
3
1
1
1
1
2
2
2
3
1
1
1
1
1
1
0
1
1
1
0
1
0
2
1
1
1
0
1
0
1
0
1
0
1
0
20
  • Dynamic Programming
  • Can we do better?
  • How?
  • Make a table compute once (yellow shapes)
  • Fill up table

13
8
5
2
5
3
3
1
1
1
1
2
2
2
3
1
1
1
1
1
1
0
1
1
1
0
1
0
2
1
1
1
0
1
0
1
0
1
0
1
0
21
  • Dynamic Programming
  • Property 5.3 Dynamic Programming reduces the
    running time of a recursive function to be at
    most the time it takes to evaluate the functions
    for all arguments less than or equal to the given
    argument, treating the cost of a recursive call
    as a constant.

22
  • Trees
  • A mathematical abstraction
  • Central to many algorithms
  • Describe dynamic properties of algorithms
  • Build and use explicit tree data structures
  • Examples
  • Family tree of descendants
  • Sports tournaments (Who's In?)
  • Organization Charts (Army)
  • Parse tree of natural language sentence
  • File systems

23
  • Types of Trees
  • Trees
  • Rooted trees
  • Ordered trees
  • M-ary trees and binary trees
  • Defn A Tree is a nonempty collection of vertices
    and edges such that there is exactly one path
    between each pair of vertices.
  • Defn A path is a list of distinct vertices such
    that successive vertices have an edge between
    them
  • Defn A graph in which there is at most one path
    between each pair of vertices is a forest.
Write a Comment
User Comments (0)
About PowerShow.com