Lecture 8 ESO207 Complete Solution O (N) Local Minima in Grid and Examples Proofs of Correctness
Lecture 8 ESO207 Complete Solution O (N) Local Minima in Grid and Examples Proofs of Correctness
(ESO207A)
Lecture 8
• Proof of Correctness.
• Design of O() time algorithm for Local Minima in a grid
1
RECAP FROM LAST LECTURE
2
Proof of correctness
For an iterative algorithm
Start
of Loop 1 2 3 4 𝑖 −1 𝑖 Iterations
4
An O() time Algorithm for Max-sum subarray
5
An O() time Algorithm for Max-sum subarray
P() holds for each
6
EXAMPLE
LOCAL MINIMA IN AN ARRAY
7
Algorithm for Local minima in an array
P() holds for th iteration, if executed
int Local-minima-in-array(A) P() :
{ L; LThere
R is a local
A[L] <minima
A[L] amongA[R]
A[L],...,A[R].
< A[R]
R;
found FALSE;
while( not ?? found )
{ mid (L R)/;
If (mid is a local minima) found TRUE;
else if(A[mid] < A[mid]) ?? mid;
L
else ??R mid1;
}
return mid;
} A
P()Assume
holds. P() holds.
L R L R
8
Algorithm for Local minima in an array
P() holds for th iteration, if executed.
int Local-minima-in-array(A) P() :
{ L; L R A[L] < A[L] A[R] < A[R]
R;
found FALSE;
while( not ?? found )
{ mid (L R)/;
If (mid is a local minima) found TRUE;
else if(A[mid] < A[mid]) ?? mid;
L
else ??R mid1;
}
return mid;
} A
9
Algorithm for Local minima in an array
P() holds for th iteration, if executed.
int Local-minima-in-array(A) P() :
{ L; L R A[L] < A[L] A[R] < A[R]
R;
found FALSE;
while( not ?? found )
{ mid (L R)/;
If (mid is a local minima) found TRUE;
else if(A[mid] < A[mid]) ?? mid;
L
else ??R mid1;
}
return mid;
} A
10
Algorithm for Local minima in an array
P() holds for th iteration, if executed.
int Local-minima-in-array(A) P() :
{ L; L R A[L] < A[L] A[R] < A[R]
R;
found FALSE;
while( not ?? found )
{ mid (L R)/;
If (mid is a local minima) found TRUE;
else if(A[mid] < A[mid]) ?? mid;
L
else ??R mid1;
}
return mid;
} A
11
Algorithm for Local minima in an array
P() holds for th iteration, if executed.
int Local-minima-in-array(A) P() :
{ L; L R A[L] < A[L] A[R] < A[R]
R;
found FALSE;
while( not ?? found )
{ mid (L R)/;
If (mid is a local minima) found TRUE;
else if(A[mid] < A[mid]) ?? mid;
L
else ??R mid1
}
return mid;
} A
12
Algorithm for Local minima in an array
P() holds for th iteration, if executed.
int Local-minima-in-array(A) P() :
{ L; L R A[L] < A[L] A[R] < A[R]
R;
found FALSE;
while( not ?? found )
{ mid (L R)/;
If (mid is a local minima) found TRUE;
else if(A[mid] < A[mid]) ?? mid;
L
else ??R mid1
}
return mid;
} A
13
Algorithm for Local minima in an array
P() holds for th iteration, if executed
int Local-minima-in-array(A) P() :
{ L; L R A[L] < A[L] A[R] < A[R]
R;
found FALSE;
while( not ?? found )
{ mid (L R)/;
If (mid is a local minima) found TRUE;
else if(A[mid] < A[mid]) ?? mid;
L
else ??R mid1
}
return mid;
} A
14
Algorithm for Local minima in an array
P() holds
P()for
holds
th iteration,
for each if executed
int Local-minima-in-array(A) P() :
{ L; L R A[L] < A[L] A[R] < A[R]
R;
found FALSE;
while( not ?? found ) Question 1:
{ mid (L R)/; What happens during an iteration
If (mid is a local minima) found TRUE; that begins with L R.
else if(A[mid] < A[mid]) ?? mid; Answer:
L
else ??R mid1 Local Minima is found
}
return mid;
}
15
Algorithm for Local minima in an array
P() holds for th iteration, if executed
int Local-minima-in-array(A) P() :
{ L; L R A[L] < A[L] A[R] < A[R]
R;
found FALSE;
while( not ?? found ) Question 2:
{ mid (L R)/; During an iteration that begins with L R,
If (mid is a local minima) found TRUE; if local minima is not found,
else if(A[mid] < A[mid]) ?? mid; what happens to R L ?
L
else ??R mid1 Answer:
} Strictly decreases.
return mid;
}
Algorithm is correct.
16
Local minima in an array
(Proof of correctness)
17
Local minima in a GRID
in O(log ) time
18
Local minima in a grid
(extending the solution from 1-D to 2-D)
Under what
Search for a local minima in the column M[, ] AWhat
local minima
circumstances
exists
if thereeven
is no this
inlocal
this minima
region. Why
in the?
smallest element is not
aentire
localcolumn.
minima ?
Explore() from M[, ] 𝒎𝒊𝒅
Smallest element
of the column
𝒊 9 7
19
Local minima in a grid
Int Local-minima-in-grid(M) // returns the column containing a local minima
{ L 0;
R;
found FALSE;
while(not found)
{ (L + R)/2;
If (M[*, ] has a local minima) found TRUE; O() time
else {
let M[, ] be the smallest element in M[*, ] O() time
O()
if(M[, ] < M[, ]) ?? ; L
time
else ?? R
}
}
return ;
} Proof of correctness ?
Running time of the algorithm = O(log )
Homework 20
Local minima in a grid
21
Local minima in a grid in O() time
Let us carefully look at the calculations of the running time of the current algo.
=? (log terms)
It is = O() .
22
Local minima in a grid in O() time
We shall revisit it
towards the end of
the course.
23
Quiz 1
• Date: 20th August, 2022
• Time: 9:00 AM to 10:45 AM
24