Chapter: 05 Induction and Recursion
5.1 Mathematical Induction
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Suppose we have an infinite ladder:
From (1), we can reach the first rung. Then by applying (2), we can reach the second rung. Applying (2) again, the third rung. And so on. We can apply (2) any number of times to reach any particular rung, no matter how high up.
This example motivates proof by mathematical induction.
Chapter: 05, 5.1
Climbing an Infinite Ladder
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Principle of Mathematical Induction: To prove that P(n) is true for all positive integers n, we complete these steps:
To complete the inductive step, assuming the inductive hypothesis that P(k) holds for an arbitrary integer k, show that must P(k + 1) be true.
Climbing an Infinite Ladder Example:
Hence, P(k) → P(k + 1) is true for all positive integers k. We can reach every rung on the ladder.
Principle of Mathematical Induction
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Proving a Summation Formula
Example: Show that:
Solution:
The inductive hypothesis is
Under this assumption,
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Conjecturing and Proving Correct a Summation Formula
Example: Conjecture and prove correct a formula for the sum of the first n positive odd integers. Then prove your conjecture.
Solution: We have: 1= 1, 1 + 3 = 4, 1 + 3 + 5 = 9, 1 + 3 + 5 + 7 = 16, 1 + 3 + 5 + 7 + 9 = 25.
Assume the inductive hypothesis holds and then show that P(k + 1) holds has well.
Inductive Hypothesis: 1 + 3 + 5 + ∙∙∙+ (2k − 1) =k2
1 + 3 + 5 + ∙∙∙+ (2k − 1) + (2k + 1) =[1 + 3 + 5 + ∙∙∙+ (2k − 1)] + (2k + 1)
= k2 + (2k + 1) (by the inductive hypothesis)
= k2 + 2k + 1
= (k + 1) 2
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Important Points About Using Mathematical Induction
where the domain is the set of positive integers.
(P(1) ∧ ∀k (P(k) → P(k + 1))) → ∀n P(n),
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Proving Inequalities
Example: Use mathematical induction to prove that
n < 2n for all positive integers n.
Solution: Let P(n) be the proposition that n < 2n.
k < 2k, it follows that:
k + 1 < 2k + 1 ≤ 2k + 2k
= 2k (1+1 )
= 2 ∙ 2k
= 2k+1
Therefore n < 2n holds for all positive integers n.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Proving Inequalities
Example: Use mathematical induction to prove that 2n < n!, for every integer n ≥ 4.
Solution: Let P(n) be the proposition that 2n < n!.
2k+1 = 2∙2k
< 2∙ k! (by the inductive hypothesis)
< (k + 1)k!
= (k + 1)!
Therefore, 2n < n! holds, for every integer n ≥ 4.
Note that here the basis step is P(4), since P(0), P(1), P(2), and P(3) are all false.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Proving Divisibility Results
Example: Use mathematical induction to prove that n3 − n is divisible by 3, for every positive integer n.
Solution: Let P(n) be the proposition that n3 − n is divisible by 3.
(k + 1)3 − (k + 1) = (k3 + 3k2 + 3k + 1) − (k + 1)
= (k3 − k) + 3(k2 + k)
By the inductive hypothesis, the first term (k3 − k) is divisible by 3 and the second term is divisible by 3 since it is an integer multiplied by 3. So by part (i) of Theorem 1 in Section 4.1 , (k + 1)3 − (k + 1) is divisible by 3.
Therefore, n3 − n is divisible by 3, for every positive integer n.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Tiling Checkerboards
Example: Show that every 2n ×2n checkerboard with one square removed can be tiled using right triominoes.
Solution: Let P(n) be the proposition that every 2n ×2n checkerboard with one square removed can be tiled using right triominoes. Use mathematical induction to prove that P(n) is true for all positive integers n.
continued →
A right triomino is an L-shaped tile which covers three squares at a time.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Inductive Hypothesis: Every 2k ×2k checkerboard, for some positive integer k, with one square removed can be tiled using right triominoes.
Tiling Checkerboards
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
An Incorrect “Proof” by Mathematical Induction
Example: Let P(n) be the statement that every set of n lines in the plane, no two of which are parallel, meet in a common point. Here is a “proof” that P(n) is true for all positive integers n ≥ 2.
continued →
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
An Incorrect “Proof” by Math. Induction
Inductive Hypothesis: Every set of k lines in the plane, where k ≥ 2, no two of which are parallel, meet in a common point.
Answer: P(k)→ P(k + 1) only holds for k ≥3. It is not the case that P(2) implies P(3). The first two lines must meet in a common point p1 and the second two must meet in a common point p2. They do not have to be the same point since only the second line is common to both sets of lines.
There must be an error in this proof since the conclusion is absurd. But where is the error?
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Additional Reading Recourses
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Guidelines:� Mathematical Induction Proofs
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Strong Induction and Well-Ordering
Section 5.2
Strong Induction
Strong Induction is sometimes called the second principle of mathematical induction or complete induction.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Strong Induction and �the Infinite Ladder
Strong induction tells us that we can reach all rungs if:
To conclude that we can reach every rung by strong induction:
holds for an arbitrary integer k, and show that
P(k + 1) must also hold.
We will have then shown by strong induction that for every positive integer n, P(n) holds, i.e., we can
reach the nth rung of the ladder.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Proof using Strong Induction
Example: Suppose we can reach the first and second rungs of an infinite ladder, and we know that if we can reach a rung, then we can reach two rungs higher. Prove that we can reach every rung.
(Try this with mathematical induction.)
Solution: Prove the result using strong induction.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Which Form of Induction Should Be Used?
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Proof using Strong Induction
Example: Prove that every amount of postage of 12 cents or more can be formed using just 4-cent and 5-cent stamps.
Solution: Let P(n) be the proposition that postage of n cents can be formed using 4-cent and 5-cent stamps.
Hence, P(n) holds for all n ≥ 12.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Proof of the Same Example using Mathematical Induction
Example: Prove that every amount of postage of 12 cents or more can be formed using just 4-cent and 5-cent stamps.
Solution: Let P(n) be the proposition that postage of n cents can be formed using 4-cent and 5-cent stamps.
Hence, P(n) holds for all n ≥ 12.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Fundamental Theorem of Arithmetic
Theorem: If n is an integer greater than 1, then n can be written as the product of primes.
Proof: Let P(n) be the proposition that n can be written as a product of primes.
Hence, it has been shown that every integer greater than 1 can be written as the product of primes.
(uniqueness proved in Section 4.3)
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Well-Ordering Property
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Well-Ordering Property
Example: Use the well-ordering property to prove the division algorithm, which states that if a is an integer and d is a positive integer, then there are unique integers q and r with 0 ≤ r < d, such that a = dq + r.
Solution: Let S be the set of nonnegative integers of the form a − dq, where q is an integer. The set is nonempty since −dq can be made as large as needed.
−2 .
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Sometimes it is difficult to define an object explicitly. However, it may be easy to define this object in terms of itself. This process is called recursion. For instance, the picture shown in Figure
5.3 Recursive Definitions and Structural Induction
We can use recursion to define sequences, functions, and sets.
Recursively Defined Functions
Definition: A recursive or inductive definition of a function consists of two steps.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Recursively Defined Functions
Example: Suppose f is defined by:
f(0) = 3,
f(n + 1) = 2f(n) + 3
Find f(1), f(2), f(3), f(4)
Solution:
Example: Give a recursive definition of the factorial function n!:
Solution:
f(0) = 1
f(n + 1) = (n + 1)∙ f(n)
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Recursively Defined Functions
Example: Give a recursive definition of:
Solution: The first part of the definition is
The second part is
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Fibonacci Numbers
Example : The Fibonacci numbers are defined as follows:
f0 = 0
f1 = 1
fn = fn−1 + fn−2
Find f2, f3 , f4 , f5 .
Fibonacci
(1170- 1250)
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Recursively Defined Sets and Structures
Recursive definitions of sets have two parts:
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Recursively Defined Sets and Structures
Example : Subset of Integers S:
BASIS STEP: 3 ∊ S.
RECURSIVE STEP: If x ∊ S and y ∊ S, then x + y is in S.
Example: The natural numbers N.
BASIS STEP: 0 ∊ N.
RECURSIVE STEP: If n is in N, then n + 1 is in N.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Strings
Definition: The set Σ* of strings over the alphabet Σ:
BASIS STEP: λ ∊ Σ* (λ is the empty string)
RECURSIVE STEP: If w is in Σ* and x is in Σ,
then wx ∈ Σ*.
Example: If Σ = {0,1}, the strings in in Σ* are the set of all bit strings, λ,0,1, 00,01,10, 11, etc.
Example: If Σ = {a,b}, show that aab is in Σ*.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Recursively Defined Structures
String Concatenation
Definition: Two strings can be combined via the operation of concatenation. Let Σ be a set of symbols and Σ* be the set of strings formed from the symbols in Σ. We can define the concatenation of two strings, denoted by ∙, recursively as follows.
BASIS STEP: If w ∈ Σ*, then w ∙ λ= w.
RECURSIVE STEP: If w1 ∈ Σ* and w2 ∈ Σ* and x ∈ Σ, then w1 ∙ (w2 x)= (w1 ∙ w2)x.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Length of a String
Example: Give a recursive definition of l(w), the length of the string w.
Solution: The length of a string can be recursively defined by:
l(λ) = 0;
l(wx) = l(w) + 1 if w ∊ Σ* and x ∊ Σ.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Balanced Parentheses
Example: Give a recursive definition of the set of balanced parentheses P.
Solution:
BASIS STEP: () ∊ P
RECURSIVE STEP: If w ∊ P, then () w ∊ P, (w) ∊ P and w () ∊ P.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Well-Formed Formulae in Propositional Logic
Definition: The set of well-formed formulas in propositional logic involving T, F, propositional variables, and operators from the set {¬,∧,∨,→,↔}.
BASIS STEP: T,F, and s, where s is a propositional variable, are well-formed formulae.
RECURSIVE STEP: If E and F are well formed formulas, then
(¬ E), (E ∧ F), (E ∨ F), (E → F), (E ↔ F), are well-formed formulas.
Examples: ((p ∨ q) → (q ∧ F)) is a well-formed formula.
pq ∧ is not a well formed formula.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Rooted Trees
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
The set of rooted trees, where a rooted tree consists of a set of vertices containing a distinguished vertex called the root, and edges connecting these vertices, can be defined recursively by these steps:
BASIS STEP: A single vertex r is a rooted tree.
RECURSIVE STEP: Suppose that T1, T2,...,Tn are disjoint rooted trees with roots r1, r2,...,rn, respectively. Then the graph formed by starting with a root r, which is not in any of the rooted trees T1, T2,...,Tn, and adding an edge from r to each of the vertices r1, r2,...,rn, is also a rooted tree
Extended Binary Trees
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
The set of extended binary trees can be defined recursively by these steps:
BASIS STEP: The empty set is an extended binary tree.
RECURSIVE STEP: If T1 and T2 are disjoint extended binary trees, there is an extended binary tree, denoted by T1 · T2, consisting of a root r together with edges connecting the root to each of the roots of the left subtree T1 and the right subtree T2 when these trees are nonempty.
Full Binary Trees
Definition: The set of full binary trees can be defined recursively by these steps.
BASIS STEP: There is a full binary tree consisting of only a single vertex r.
RECURSIVE STEP: If T1 and T2 are disjoint full binary trees, there is a full binary tree, denoted by T1∙T2, consisting of a root r together with edges connecting the root to each of the roots of the left subtree T1 and the right subtree T2.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Structural Induction
Definition: To prove a property of the elements of a recursively defined set, we use structural induction.
BASIS STEP: Show that the result holds for all elements specified in the basis step of the recursive definition.
RECURSIVE STEP: Show that if the statement is true for each of the elements used to construct new elements in the recursive step of the definition, the result holds for these new elements.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Induction and Recursively Defined Sets
Example: Show that the set S defined by specifying that 3 ∊ S and that if x ∊ S and y ∊ S, then x + y is in S, is the set of all positive integers that are multiples of 3.
Solution: Let A be the set of all positive integers divisible by 3. To prove that A = S, show that A is a subset of S and S is a subset of A.
BASIS STEP: 3∙1 = 3 ∊ S, by the first part of recursive definition.
INDUCTIVE STEP: Assume P(k) is true. By the second part of the recursive definition, if 3k ∊ S, then since 3 ∊ S, 3k + 3 = 3(k + 1) ∊ S. Hence, P(k + 1) is true.
BASIS STEP: 3 ∊ S by the first part of recursive definition, and 3 = 3∙1.
INDUCTIVE STEP: Following the recursive def. of S, we need to show x + y is in A assuming that x and y are in S and also in A. If x and y are both in A, then both x and y are divisible by 3. Hence x + y is divisible by 3.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Full Binary Trees
Definition: The height h(T) of a full binary tree T is defined recursively as follows:
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Structural Induction and Binary Trees
Theorem: If T is a full binary tree, then n(T) ≤ 2h(T)+1 – 1.
Proof: Use structural induction.
n(T) = 1 + n(T1) + n(T2) (by recursive formula of n(T))
≤ 1 + (2h(T1)+1 – 1) + (2h(T2)+1 – 1) (by inductive hypothesis)
≤ 2∙max(2h(T1)+1 ,2h(T2)+1 ) – 1
= 2∙2max(h(T1),h(T2))+1 – 1 (max(2x , 2y)= 2max(x,y) )
= 2∙2h(T) – 1 (by recursive definition of h(T))
= 2h(T)+1 – 1
−2 .
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Generalized Induction
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Generalized Induction
Example: Suppose that am,n is defined for (m,n)∊N ×N by
a0,0 = 0 and
Show that am,n = m + n(n + 1)/2 is defined for all (m,n)∊N ×N.
Solution: Use generalized induction.
BASIS STEP: a0,0 = 0 = 0 + (0∙1)/2
INDUCTIVE STEP: Assume that am̍,n̍ = m̍+ n̍(n̍ + 1)/2 whenever(m̍,n̍) is less than (m,n) in the lexicographic ordering of N ×N .
am,n = am−1,n + 1 = m − 1+ n(n + 1)/2 + 1 = m + n(n + 1)/2 .
am,n = am,n−1 + n = m + (n − 1)n/2 +n = m + (n2 – n + 2n)/2 � = m + n(n + 1)/2 .
−2 .
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Definition: An algorithm is called recursive if it solves a problem by reducing it to an instance of the same problem with smaller input.
5.4 Recursive Algorithms
Give a recursive algorithm for computing n!, where n is a nonnegative integer.
3! = 3 · 2!, 2! = 2 · 1!,
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Recursive Binary Search Algorithm
Example: Construct a recursive version of a binary search algorithm.
Solution: Assume we have a1,a2,…, an, an increasing sequence of integers. Initially i is 1 and j is n. We are searching for x.
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Recursion and Iteration
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
This is of order O(1.6n) < O(2n)
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Merge Sort
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Merge Sort
Example: Use merge sort to put the list
8,2,4,6,9,7,10, 1, 5, 3
into increasing order.
Solution:
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Recursive Merge Sort
Example: Construct a recursive merge sort algorithm.
Solution: Begin with the list of n elements L.
continued →
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Recursive Merge Sort
Complexity of Merge: Two sorted lists with m elements and n elements can be merged into a sorted list using no more than m + n − 1 comparisons.
procedure merge(L1, L2 :sorted lists)
L := empty list
while L1 and L2 are both nonempty
remove smaller of first elements of L1 and L2 from its list;
put at the right end of L
if this removal makes one list empty
then remove all elements from the other list and append them to L
return L {L is the merged list with the elements in increasing order}
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
procedure merge(L1, L2 :sorted lists)
L := empty list
while L1 and L2 are both nonempty
remove smaller of first elements of L1 and L2 from its list;
put at the right end of L
if this removal makes one list empty
then remove all elements from the other list and append them to L
return L {L is the merged list with the elements in increasing order}
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
5.5 Program Correctness
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Suppose that we have designed an algorithm to solve a problem and have written a program to implement it. How can we be sure that the program always produces the correct answer? After all the bugs have been removed so that the syntax is correct, we can test the program with sample input. It is not correct if an incorrect result is produced for any sample input. But even if the program gives the correct answer for all sample input, it may not always produce the correct answer (unless all possible input has been tested). We need a proof to show that the program always gives the correct output.
Program Verification A program is said to be correct if it produces the correct output for every possible input. A proof that a program is correct consists of two parts. The first part shows that the correct answer is obtained if the program terminates. This part of the proof establishes the partial correctness of the program. The second part of the proof shows that the program always terminates. To specify what it means for a program to produce the correct output, two propositions are used. The first is the initial assertion, which gives the properties that the input values must have. The second is the final assertion, which gives the properties that the output of the program should have, if the program did what was intended. The appropriate initial and final assertions must be provided when a program is checked.
5.5 Program Correctness
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
A program, or program segment, S is said to be partially correct with respect to the initial assertion p and the final assertion q if whenever p is true for the input values of S and S terminates, then q is true for the output values of S. The notation p{S}q indicates that the program, or program segment, S is partially correct with respect to the initial assertion p and the final assertion q. Note: The notation p{S}q is known as a Hoare triple. Tony Hoare introduced the concept of partial correctness
Rules of Inference
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Conditional Statements
5.5 Program Correctness
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
EXAMPLE 2 Verify that the program segment
is correct with respect to the initial assertion T and the final assertion y ≥ x.
Similarly, suppose that a program has a statement of the form
5.5 Program Correctness
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/
Loop Invariants
FREE: For Complete Playlist: https://www.youtube.com/c/FahadHussaintutorial/playlists
For Code, Slide and Books: https://fahadhussaincs.blogspot.com/