design of algorithms using brute force approach. primality testing (given number is n binary digits)
TRANSCRIPT
Design of Algorithms using Brute Force Approach
Primality Testing
(given number is n binary digits)
Brute Force Approach
Prime (n)
for i 2 to n-1
if n 0 mod i then
“number is composite”
else
“number is prime”
• The computational cost is (n)
First Algorithm for Testing Primality
Prime (n)
for i 2 to n/2
if n 0 mod i then
“number is composite”
else
“number is prime”
• The computational cost is (n/2)
Refined Algorithm for Testing Primality
Statement• If n N, n > 1 is not prime then n is divisible by
some prime number p ≤ square root of n.
Proof• Since n is not prime hence it can be factored as
n = x.y where 1 <x ≤ y <n• x or y is a prime, if not it can be further factored out.• Also suppose without loss of generality that x ≤ y• Now our claim is that x ≤ sq(n)• This is because otherwise x.y > n, a contradiction• We only require to check till sqr(n) for primality test.
Lemma
Prime (n)
for i 2 to sqr(n)
if n 0 mod i then
“number is composite”
else
“number is prime”
• The computational cost is (sqr(n)), much faster
Refined Algorithm for Testing Primality
Sorting Sequence of Numbers
• Input : A sequence of n numbers (distinct)
• Output : A permutation,
of the input sequence such that
2,5,1,6,0,3
naaa ,...,, 21
naaa ,...,, 21
naaa ...21
Sorting Algorithm 6,5,3,2,1,0
An Example of Algorithm
Sort the array [2, 4, 1, 3] in increasing orders1 = [4,3,2,1], s2 = [4,3,1,2], s3 = [4,1,2,3] s4 = [4,2,3,1], s5 = [4,1,3,2], s6 = [4,2,1,3] s7 = [3,4,2,1],s8 = [3,4,1,2], s9 = [3,1,2,4] s10 = [3,2,4,1], s11 = [3,1,4,2], s12 = [3,2,1,4] s13 = [2,3,4,1], s14 = [2,3,1,4], s15 =
[2,1,4,3] s16 = [2,4,3,1], s17 = [2,1,3,4], s18 =
[2,4,1,3] s19 = [1,3,2,4], s20 = [1,3,1,4], s21 = [1,4,2,3] s22 = [1,2,3,4], s23 = [1,4,3,2], s24 = [1,2,4,3]There are 4! = 24 number of permutations. For n number of elements there will be n! number of
permutations. Hence cost of order n! for sorting.
Sorting Algorithm: Brute Force Approach
Permute (i) \\initial call Permute(1)
if i == N
output A[N]
else
for j = i to N do
swap(A[i], A[j])
permute(i+1)
swap(A[i], A[j])
• There are 4! = 24 number of permutations. • For n number of elements there will be n! number of
permutations. Hence cost of order n! for sorting.
Generating Permutations
Theorem• Prove, by mathematical induction, that computational
cost of generating permutations is n!.
Proof• If n = 1, then the statement is true, because 1! =1• If there are k elements in set then no. of permutation = k!• If we add one more element in any of the permutations,
there will be k+1 number of ways to add it, resulting k+1 no. of permutations.
• Now total no. of permutations = k!(k+1) = (k+1)!• Hence true for all n.
Generating Permutations
0-1 Knapsack Problems
The knapsack problem arises whenever there is resource allocation with no financial constraints
Problem Statement
• You are in Japan on an official visit and want to make shopping from a store (Best Denki)
• You have a list of required items
• You have also a bag (knapsack), of fixed capacity, and only you can fill this bag with the selected items
• Every item has a value (cost) and weight,
• And your objective is to seek most valuable set of items which you can buy not exceeding bag limit.
0-1 Knapsack Problem Statement
0-1 Knapsack Example
Input• Given n items each
– weight wi
– value vi
• Knapsack of capacity W Output: Find most valuable items that fit into the knapsack
Example:item weight value knapsack capacity W = 161 2 202 5 303 10 504 5 10
0-1 Knapsack Problem ExampleSubset Total weight Total value
1. 0 0 # W V
2. {1} 2 20 1 2 203. {2} 5 30 2 5 304. {3} 10 50 3 10 505. {4} 5 10 4 5 106. {1,2} 7 507. {1,3} 12 708. {1,4} 7 309. {2,3} 15 8010. {2,4} 10 4011. {3,4} 15 6012. {1,2,3} 17 not feasible13. {1,2,4} 12 6014. {1,3,4} 17 not feasible15. {2,3,4} 20 not feasible16. {1,2,3,4} 22 not feasible
Knapsack-BF (n, V, W, C) Compute all subsets, s, of S = {1, 2, 3, 4}
forall s S
weight = Compute sum of weights of these items
if weight > C, not feasible
new solution = Compute sum of values of these items
solution = solution {new solution}
Return maximum of solution
0-1 Knapsack Algorithm
0-1 Knapsack Algorithm Analysis
Approach• In brute force algorithm, we go through all
combinations and find the one with maximum value and with total weight less or equal to W = 16
Complexity• Cost of computing subsets O(2n) for n elements• Cost of computing weight = O(2n)• Cost of computing values = O(2n)• Total cost in worst case: O(2n)