Académique Documents
Professionnel Documents
Culture Documents
Recursion
C++ Review
Proof by induction
Proof by Contradiction
Data Structures
Preliminaries
Hikmat Farhat
October 1, 2013
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
Proof by induction
Proof by Contradiction
Proofs
Proof by induction
Proof by contradiction
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
Proof by induction
Proof by Contradiction
Proof by Induction
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
Proof by induction
Proof by Contradiction
I
I
I
I
< (3/5)(5/3)
by hypothesis
2
k+1
+ (3/5) (5/3)
< (24/25)(5/3)k+1
< (5/3)k+1
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
Proof by induction
Proof by Contradiction
Example 1
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
Proof by induction
Proof by Contradiction
n2 is even n is even .
I the above means that for all n if n2 is even then n is even.
I We can prove that it is true by assuming that it is false and
reach a contradiction.
I The negation of the above is: n odd such that n2 is even.
n odd n = 2k + 1
n2 = 4k 2 + 4k + 1
n2 = 2(2k 2 + 2k) + 1
n2 is odd
I
Data Structures
Proof Techniques
Recursion
C++ Review
Proof by induction
Proof by Contradiction
Example 2: 2 is irrational.
Proof. Assume that
2=
m
gcd(m, n) = 1
n
m, n cannot be BOTH even
2 rational
2=
Hikmat Farhat
Data Structures
m
n.
Proof Techniques
Recursion
C++ Review
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
Recursion cont.
I
Data Structures
Proof Techniques
Recursion
C++ Review
C++ implementation
1
2
3
4
5
6
i n t f ( i n t x ){
i f ( x==0)
// b a s e c a s e
return 0;
else
r e t u r n 2 f ( x1)+x x ;
}
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
1
2
3
4
5
i n t bad ( i n t n ) {
i f ( n==0)
return 0;
else
r e t u r n bad ( n/3+1)+n 1;
I
What is bad(2),bad(3)...
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
Rules of Recursion
Base cases: you must always have some base cases which can
be solved without recursion.
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
Another Example
1
2
3
4
i n t p ri nt Ou t ( i n t x ){
i f ( x >=10)
printOut ( x /10);
p r i n t D i g i t ( x %10);
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
Correctness Proof
I
Hypothesis.
with up to k
we can write
number with
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Class definition
I
data
functions (or methods)
class IntCell {
public :
I n t C e l l (){
s t o r e d V a l u e =0;
}
I n t C e l l ( i n t i n i t V a l u e ){
s t o r e d V a l u e=i n i t V a l u e ;
}
i n t getValue (){
return storedValue ;
}
v o i d s e t V a l u e ( i n t v a l ){
s t o r e d V a l u e=v a l ;
}
private :
int storedValue ;
};
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Variations
I
class IntCell{
public :
I n t C e l l ( i n t i n i t V a l u e =0 , i n t h v a l =0): s t o r e d V a l u e ( i n i t V a l u e ) , h e i g h t ( h v a l ){
}
private :
int storedValue ;
const i nt height ;
/ i n n e w e r v e r s i o n d a t a members can be i n i t i a l i z e d , f o r e x a m p l e :
c o n s t i n t h e i g h t =10;
/
};
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Pointers
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Parameter Passing
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Big Three
All C++ classes have three member functions that are written
for us
I
I
I
Destructor
Copy constructor
operator=
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Problems
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
In this case we can write a generic function that can find the
max for any list of items as long as they are comparable
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
C++ templates
I
I
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Function Template
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Class template
Hikmat Farhat
Data Structures
Proof Techniques
Recursion
C++ Review
C++ Classes
Templates
Hikmat Farhat
Data Structures