Download 1019_Test 3_nov26_solutions

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Factorization wikipedia , lookup

Factorization of polynomials over finite fields wikipedia , lookup

Fundamental theorem of algebra wikipedia , lookup

Transcript
MATH/CSE 1019 Test 3
1. (5 points) Use mathematical induction to prove that
1 + 3 + 5 + ⋯+ 2 − 1
=
whenever n is a positive integer.
1
3
4
−1 Proof:
Basis Step: n=1. L.H.S=1 = 1. R.H.S. = ∗ 1 ∗ 4 ∗ 1 − 1 = 1. L.H.S.=R.H.S. The
statement is True.
Inductive Step: Assume the statement is true when n=k. Then
1 + 3 + 5 + ⋯+ 2 − 1
=
4
−1 .
Prove the statement is true when n=k+1, i.e.
1 + 3 + 5 + ⋯+ 2
+1 −1
L.H.S. = 1 + 3 + 5 + ⋯ + 2
=
= 4
= 4
= 4
= 4
R.H.S. =
=
=
= 4
= 4
4
−1 + 2
−
−
−
+1 −1
+ 4
by the assumption
+ 11 + 3
+1 4
+8 +3
+ 12
−1
+ 12 + 3
+1
+8
+1
+4 +1
+1 4
+1 4
+1 −1
+1 4
+ 2 +1
+ 12
+ 12
=
−1
+2 +1
+3 +4
−1
+8 +3
+ 11 + 3 =L.H.S.
By mathematical induction, the statement is true for all positive integers.
1
2. (5 points) Use strong induction to prove that every positive integer n can be written as
a sum of distinct powers of two, that is, as a sum of a subset of the integers 2 = 1,
2 = 2, 2 = 4, and so on. (For example, 5 =2 +2 .Hint: For the inductive step,
separately consider the case where k+1 is even and where it is odd.)
Proof:
If n can be written as a sum of distinct powers of two, let us denote this sum as f(n).
Basis Step: When n=1, 1 = 2 . The statement is true.
Inductive Step: Assume the statement is true when n=j, for 1 ≤ j ≤ k. Then j can be
written as a sum of distinct powers of two.
Prove the statement is true when n=k+1, i.e. (k+1) can be written as a sum
of distinct powers of two.
(1) Case 1: k+1 is an odd positive integer.
Then k is an even positive integer.
By the assumption, k can be written as sum of distinct powers of two.
Since k is even, 2 is not included (otherwise k will be odd.)
Then k+1 can be written as f(k+1)= f(k)+2 , which is sum of distinct
powers of two.
(2) Case 2: k+1 is even.
Then (k+1)/2 is a positive integer, and 1 ≤ k + 1 /2 ≤ k.
By the assumption, k + 1 /2 can be written as sum of distinct powers
of two.
Then k+1 can be written as f(k+1) = 2*f( k + 1 /2).
Since all the powers in f( k + 1 /2) are distinct, then all the powers in
2*f( k + 1 /2) are distinct too.
By strong induction, the statement is true.
3. (5 points) Use the definition of big-O and big-Ω to prove that 2
Θ
.
+7
+ 5 is
2 + 7 + 5 is Θ
≡ 2 + 7 + 5 is O
and 2 + 7 + 5 is Ω
.
1 Prove 2 + 7 + 5 is O
.
We need to find a pair of witnessesC andk , such that ∀n > k ,
|2 + 7 + 5| ≤ C | |.
Notice that whenn > 1, n > n > 1.
Then|2 + 7 + 5| = 2 + 7 + 5 < 2 + 7 + 5 = 14 =14| |
Proof:
2
Let C = 14 and k = 1, then ∀n > k , |2 + 7 + 5| ≤ C | | is always true.
(2) Prove 2 + 7 + 5 is Ω
.
We need to find a pair of witnessesC andk , such that ∀n > k ,
|2 + 7 + 5| ≥ C | |.
Notice that when n > 0, 7 + 5 > 0.
Then|2 + 7 + 5| = 2 + 7 + 5 > 2 = 2| |
Let C = 2 and k = 0, then ∀n > k , |2 + 7 + 5| ≥ C | | is always true.
4. (5 points) Use the definition of big-O to prove 3n − 10isnotO(n).
Proof by contradiction:
Assume 3n − 10isO(n).
Then ∃Candk, suchthat∀n > , |3n − 10| ≤ C|n|.
Notice when n > √10, 0 < 2n < 3n − 10.
If |3n − 10| ≤ C|n|, then2n < 4 .
For any given C and k, let n= max{C/2, k, √10}+1, the statement ∀n > , |3n −
10| ≤ C|n| will be False.
This is a contradiction.
Then the original statement “3n − 10isnotO(n)” is true.
5. (5 points) What is the output of the following algorithm? What is the running time of
this algorithm in big-O notation?
6[1,1] 6[1,2] …6[1, ]
6[2,1] 6[2,2] …6[2, ]
:
Input: A=5
…
6[ , 1] 6[ , 2] …6[ , ]
1.
2.
3.
4.
5.
6.
for i←1 to n
for j←1 to n
dotmp←A[i,j]
A[i,j]←A[j,i]
A[j,i]←tmp
return(A)
Solution:
Output: A
Note: The elements will be swapped twice.
Running Time: O n
3
6. (5 points) Using a loop invariant to prove that the following program for computing
the factorials is correct. (Hint: n! = 1×2×3×…× (n-1)×n)
Input: A positive integer y
Output: y!
F(y)
1.
2.
3.
4.
5.
6.
x←1
z←1
while x≤y
do z←z*x
x←x+1
return(z)
Proof:
Loop invariant: Before the kth iteration, x< =k≤ = + 1 , and z< = (k-1)!.
Note: Let us denote the values of x and z before the kth iteration as x< andz< .
Proof:
Basis Case: k=1. Before the 1st iteration, x =1≤ y+1), and z =0!=1. The loop invariant
holds.
Inductive Step: Suppose the loop invariant holds before the kth iteration, i.e. before the
kth iteration, x< =k≤ = + 1 , and z< = (k-1)!.
If the loop does not terminate before this iteration, prove the loop invariant
holds before the (k+1)th iteration, i.e. before the (k+1)th iteration,
x<? =(k+1)≤ = + 1 , and z<? = k!.
In the 4th line, z<? = z< *x< =(k-1)!*k=k!
In the 5th line, x<? =x< +1=k+1
Since the loop does not terminate before this iteration, then x< =
according to line 3. Therefore, x<? =k+1≤ y + 1.
∴ The loop invariant holds before the (k+1)th iteration.
≤ y,
Termination: x starts from 1, and keeps incrementing by 1 each time. It will be
eventually greater than y. So the algorithm will terminate, and k=y+1 upon
termination. By the loop invariant, z< = (k-1)!=y!.
Therefore, we have proved the correctness of the given algorithm.
4