Interpolatory, Non-Stationary Subdivision for Surfaces of

Download Report

Transcript Interpolatory, Non-Stationary Subdivision for Surfaces of

Data Structures and Algorithms
CSCE 221
Dr. Scott Schaefer
1
Staff



Instructor
 Dr. Scott Schaefer
 HRBB 527B
 Office Hours: MTWR 9:30am – 10am, F 9am-10am
(or by appointment)
TA
 Zain Shamsi
 HRBB 501C
 Office Hours: TR noon-2pm
Peer Teacher
 Colton Williams
 RDMC 111B
 Office Hours: MW noon-1pm, F noon-2pm
2/36
What will you learn?










Analysis of Algorithms
Stacks, Queues, Deques
Vectors, Lists, and Sequences
Trees
Priority Queues & Heaps
Maps, Dictionaries, Hashing
Skip Lists
Binary Search Trees
Sorting and Selection
Graphs
3/36
Prerequisites

CSCE 121 “Introduction to Program Design and
Concepts” or (ENGR 112 “Foundations of
Engineering” and CSCE 113 “Intermediate
Programming & Design”)

CSCE 222 “Discrete Structures” or MATH 302
“Discrete Mathematics” (either may be taken
concurrently with CSCE 221)
4/36
Textbook
5/36
More on Assignments
Turn in code/homeworks via CSNET
(get an account if you don’t already have one)
 Due by 11:59pm on day specified
 All programming in C++
 Code, proj file, sln file, and Win32 executable
 Make your code readable (comment)
 You may discuss concepts, but coding is
individual (no “team coding” or web)

6/36
Grading
3% Labs
 12% Homework
 35% Programming Assignments
 10% Quizzes
 20% Midterm
 20% Final

7/36
Late Policy
2
Percentage Penalty
m


 Penalty = 
 % m: number of minutes late
 288
Days Late
8/36
Late Policy
2
Percentage Penalty
m


 Penalty = 
 % m: number of minutes late
 288
10 %
Days Late
9/36
Late Policy
2
Percentage Penalty
m


 Penalty = 
 % m: number of minutes late
 288
25 %
Days Late
10/36
Labs

Several structured labs at the beginning of
class with (simple) exercises
 Graded on completion
 Time to work on homework/projects
11/36
Homework
Between 5-10
 Written/Typed responses
 Simple coding if any

12/36
Programming Assignments
5 throughout the semester
 Implementation of data structures or
algorithms we discusses in class
 Written portion of the assignment

13/36
Quizzes
Approximately 10 throughout the semester
 Short answer, small number of questions
 Will only be given in class or lab
 Must be present to take the quiz

14/36
Academic Honesty
Assignments are to be done on your own
 May discuss concepts, get help with a
persistent bug
 Should not copy work, download code, or
work together with other students unless
specifically stated otherwise
 We use a software similarity checker

15/36
Class Discussion Board

piazza.com/tamu/summer2013/csce221100

Sign up as a student
16/36
Asymptotic Analysis
17/36
Running Time


The running time of an algorithm typically grows with the
input size.
Average case time is often difficult to determine.
We focus on the worst case running time.


Crucial to applications such as games, finance and robotics
Easier to analyze
worst case
5ms
Running Time

4ms
3ms
best case
2ms
1ms
A
B
C
D
E
Input Instance
F
G
18/36
Experimental Studies



Write a program
implementing the algorithm
Run the program with inputs
of varying size and
composition
Use a method like clock() to
get an accurate measure of
the actual running time
Plot the results
9000
8000
7000
Time (ms)

6000
5000
4000
3000
2000
1000
0
0
50
100
Input Size
19/36
Stop Watch Example
20/36
Limitations of Experiments
It is necessary to implement the algorithm,
which may be difficult
 Results may not be indicative of the running
time on other inputs not included in the
experiment.
 In order to compare two algorithms, the same
hardware and software environments must be
used

21/36
Theoretical Analysis
Uses a high-level description of the
algorithm instead of an implementation
 Characterizes running time as a function of
the input size, n.
 Takes into account all possible inputs
 Allows us to evaluate the speed of an
algorithm independent of the
hardware/software environment

22/36
Important Functions

Seven functions that often
appear in algorithm
analysis:







Constant  1
Logarithmic  log n
Linear  n
N-Log-N  n log n
Quadratic  n2
Cubic  n3
Exponential  2n
n Log(n)
n
Log(n)
1
23/36
Important Functions

Seven functions that often
appear in algorithm
analysis:







2n
n3
Constant  1
Logarithmic  log n
Linear  n
N-Log-N  n log n
Quadratic  n2
Cubic  n3
Exponential  2n
n2
n Log(n)
24/36
Why Growth Rate Matters
if runtime
is...
time for n + 1
time for 2 n
time for 4 n
c lg n
c lg (n + 1)
c (lg n + 1)
c(lg n + 2)
cn
c (n + 1)
2c n
4c n
c n lg n
~ c n lg n
+ cn
2c n lg n +
2cn
4c n lg n +
4cn
c n2
~ c n2 + 2c n
4c n2
16c n2
c n3
~ c n3 + 3c n2
8c n3
64c n3
c 2n
c 2 n+1
c 2 2n
c 2 4n
runtime
quadruples
when
problem
size doubles
25/36
Comparison of Two Algorithms
insertion sort is
n2 / 4
merge sort is
2 n lg n
sort a million items?
insertion sort takes
roughly 70 hours
while
merge sort takes
roughly 40 seconds
This is a slow machine, but if
100 x as fast then it’s 40 minutes
versus less than 0.5 seconds
26/36
Constant Factors

The growth rate is not affected by



constant factors or
lower-order terms
Examples


102n + 105 is a linear function
105n2 + 108n is a quadratic function
27/36
Big-Oh Notation
10,000


Given functions f(n) and
g(n), we say that f(n) is
O(g(n)) if there are
positive constants
c and n0 such that
f(n)  cg(n) for n  n0
Example: 2n + 10 is O(n)




2n + 10  cn
(c  2) n  10
n  10/(c  2)
Pick c = 3 and n0 = 10
3n
2n+10
1,000
n
100
10
1
1
10
100
1,000
n
28/36
Big-Oh Example
1,000,000

Example: the function
is not O(n)



n^2
n2
100n
100,000
10n
n2  cn
10,000
nc
1,000
The above inequality
cannot be satisfied since c
100
must be a constant
n
10
1
1
10
100
1,000
n
29/36
More Big-Oh Examples
7n-2
7n-2 is O(n)
need c > 0 and n0  1 such that 7n-2  c•n for n  n0
this is true for c = 7 and n0 = 1
 3n3 + 20n2 + 5
3n3 + 20n2 + 5 is O(n3)
need c > 0 and n0  1 such that 3n3 + 20n2 + 5  c•n3 for n  n0
this is true for c = 4 and n0 = 21

3 log n + 5
3 log n + 5 is O(log n)
need c > 0 and n0  1 such that 3 log n + 5  c•log n for n  n0
this is true for c = 8 and n0 = 2
30/36
Big-Oh and Growth Rate



The big-Oh notation gives an upper bound on the growth
rate of a function
The statement “f(n) is O(g(n))” means that the growth rate
of f(n) is no more than the growth rate of g(n)
We can use the big-Oh notation to rank functions according
to their growth rate
f(n) is O(g(n))
g(n) is O(f(n))
g(n) grows more
f(n) grows more
Yes
No
No
Yes
Same growth
Yes
Yes
31/36
Big-Oh Rules

If is f(n) a polynomial of degree d, then f(n) is
O(nd), i.e.,
1.
2.

Use the smallest possible class of functions


Drop lower-order terms
Drop constant factors
Say “2n is O(n)” instead of “2n is O(n2)”
Use the simplest expression of the class

Say “3n + 5 is O(n)” instead of “3n + 5 is O(3n)”
32/36
Computing Prefix Averages


We further illustrate asymptotic analysis with two
algorithms for prefix averages
The i-th prefix average of an array X is average of the
first (i + 1) elements of X:
A[i] = (X[0] + X[1] + … + X[i])/(i+1)
33/36
Prefix Averages (Quadratic)
The following algorithm computes prefix averages in
quadratic time by applying the definition
Algorithm prefixAverages1(X, n)
Input array X of n integers
Output array A of prefix averages of X #operations
A  new array of n integers
n
for i  0 to n  1 do
n
s  X[0]
n
for j  1 to i do
1 + 2 + …+ (n  1)
s  s + X[j]
1 + 2 + …+ (n  1)
A[i]  s / (i + 1)
n
return A
1
34/36
Arithmetic Progression



The running time of prefixAverages1 is
O(1 + 2 + …+ n)
The sum of the first n integers is n(n + 1) / 2
Thus, algorithm prefixAverages1 runs in O(n2) time
35/36
Prefix Averages (Linear)
The following algorithm computes prefix averages in linear
time by keeping a running sum
Algorithm prefixAverages2(X, n)
Input array X of n integers
Output array A of prefix averages of X
A  new array of n integers
s0
for i  0 to n  1 do
s  s + X[i]
A[i]  s / (i + 1)
return A
#operations
n
1
n
n
n
1
Algorithm prefixAverages2 runs in O(n) time
36/36