# RANDOMIZED ALGORITHM

INTRODUCTION
1. Algorithm that typically uses the random bits as an auxiliary input to guide its behavior. It achieves good performance in the “average case”. The algorithms performance will be a random variable determined by random bits, . 2. In common practice, randomized algorithms are approximated using a pseudorandom number generator in place of a true source of random bits; such an implementation may deviate from the expected theoretical behavior.

as debugging is facilitated by the ability to run the same sequence of random numbers again by starting from the same random seed.so long as the seed is secret.e. i. They are also used in cryptography . • The generation of pseudo-random numbers is an important and common task in computer programming . • The many applications of randomness have led to the development of several different methods for generating random data. appear random. • Because of the mechanical nature of these techniques. generating large amounts of sufficiently random numbers (important in statistics) required a lot of work and/or time • Random number generators are very useful in developing Monte Carlomethod simulations.Random number generation • A random number generator (RNG) is a computational or physical device designed to generate a sequence of numbers or symbols that lack any pattern. Sender and receiver can generate the same set of numbers automatically to use as keys.

Good statistical properties are a central requirement for the output of a png…Cryptographic applications require the output to also be unpredictable. More recent instances of PRNGs with strong randomness guarantees are based on computational hardness assumptions.Pseudorandom number generator • A pseudorandom number generator (PRNG). and more elaborate designs. The sequence is not truly random in that it is completely determined by a relatively small set of initial values.. . Although sequences that are closer to truly random can be generated using hardware random number generators. which includes a truly random seed.g. are needed. and they are thus central in applications such as simulations (e. and in procedural generation. of physical systems with the Monte Carlo method).. called the PRNG's state. pseudorandom numbers are important in practice for their speed in number generation and their reproducibility. in cryptography. also known as a deterministic random bit generator (DRBG). which do not inherit the linearity of simpler solutions.is an algorithm for generating a sequence of numbers that approximates the properties of random numbers.

It is just that there is a small probability of taking a long time to execute.TYPES OF RANDOMIZED ALGORITHM 1.LAS VEGAS ALGORITHM The randomized algorithm always outputs the correct result. .

The running time is random (and arbitrarily large) but its expectation is upper-bounded by . n) begin repeat Randomly select one element out of n elements. • Output: Find an ‘a’ in the array. in which half are ‘a’s and the other half are ‘b’s.• consider the problem of finding an ‘a’ in an array of n elements. until 'a' is found end This algorithm succeeds with probability 1. • Input: An array of n≥2 elements. Finding A_LV(array A.

2. MONTE CARLO ALGORITHM 1. . Quick sort is an example of monte carlo algo 3. with small probability of error. The deterministic version of this algorithm requires O(n2) time to sort n numbers. Completes quickly.2.

k) begin i=1 repeat Randomly select one element out of n elements.Finding A_MC(array A. i=i+1 until i=k or 'a' is found end . n.

EXAMPLES .

hire candidate I A randomized algorithm whose performance matches that obtained by assuming that the candidates were present in a random order……. . 0 (candidate 0 is least qualified dummy candidate) 3.RANDOMIZED-HIRE-ASSISTANT(n) 1. best. Then best  i 7. do interview candidate I 5. For i  1 to n 4. Randomly permute the list of candidates 2. if candidate i is better than candidate best 6.

.when algo on A3 is run for the 2nd time. it may produce permutation A1 . and run 10 updates. when algo on A3 is run. Example.for a given input A3:• For the 1stt time. • 2nd time:.Each time we run the algorithm the execution depends on the random choices made and is likely To differ from the previous execution of the algorithm. it may produce permutation A1 . and run 10 updates. The quantity differs for each run of the algorithm.

2. • Each element A[i] is assigned a random priority P[i]…… • A=(1. A given array A contains elements 1 to n…..3) { output array) .97.19) • B=(2.4.3.3.RANDOMLY PERMUTING ARRAYS We can randomize the input by permuting the given input array.1.4) • P=(36.

. then. The probability that all departments are unique is 1-1/n After sorting.(N*N*N)) 4. Sort A . For i  1 to N 3. Return A All the priorities in P are unique. N  length[A] 2. if P[i] is jth smallest priority. A[i] will be in position j of the output.PERMUTE-BY-SORTING(A) 1. do P[i]= RANDOM(1. using P as sort keys 5.

with the specific class of inputs that generate this behavior defined by the protocol for pivot selection. it has a provably high probability of finishing in O(n log n) time regardless of the characteristics of the input. . However. Any deterministic version of this algorithm requires O(n2) time to sort n numbers for some welldefined class of degenerate inputs (such as an already sorted array). commonly used algorithm in which randomness can be useful.RANDOMIZED QUICKSORT ALGORITHM • Quicksort is a familiar. if the algorithm selects pivot elements uniformly at random.

r) 2.p. If p<r 2. RANDOMIZED-QUICKSORT(A. Exchange A[r] <-> A[i] 3. Return PARTITION (A.q+1.r) The new quicksort call RANDOMIZED-PARTITION In place of PARTITION : RANDOMIZED-QUICKSORT(A. RANDOMIZED-QUICKSORT(A.p.q-1) 4.p. then qRANDOMIZED-PARTITION(A. i RANDOM (p.r) 1.RANDOMIZED-PARTITION(A.r) .r) 3.p.q-1) 1.p.

.r]. a randomly chosen element from A[p…. ensures that the pivot element x= A [r] is equally likely to be any of the r-p+1 elements in the sub-array… .. Instead of always using A[r] as the pivot.r] is chosen… we do so by changing element A[r] with an element chosen at random from A[p….Quick sort uses random sampling….

RANDOMIZED SELECTION ALGORITHM • Finding just the k-th smallest element in an array doesn’t require sorting but one just needs to find out where the k-th smallest element will fit in. Get the location of the pivot which is also random. its possible to maintain a stack of current minimums for each of the 2 elements in the array in O(n) complexity with space O(n). if one wants to find the second max? one would maintain 2 variables. :) . After you get the location. . This is nothing but the k-th position in the sorted array. But what would one do. just subtract the location from the start of the array. Concept :-• Do randomized partition. The right way to find the k-th minimum element is randomized selection algorithm. to find the max value using a variable. Similarly. • Usual way would be.

7. . • For example.2. we have got the best case here. :) we don’t need to continue anymore. • But important thing here is how our random generator works and what we expect from it. If the pivot selected always helps us out then we get the best case. • arr = 9. the resulting array will be.1. say the user wants the 3rd smallest element.Example. arr = 1 2 3 5 9 7 10 • The current location returned will be 3 (array starting from zero). Just O(n) to find our required smallest element. we need this +1 to get the exact location.10. • If the above value is equal to the given k.3 • if the random pivot selected is 5. We already got that. and the partition has happened then. the actual formula to calculate the k position will be :• position – start +1.5.

mid+1 to end • But the k-th element we need to find inside this array is just the 2nd smallest!! :D • So.• We continue this randomized pivot selection based on the first value and continue recursively on either side.e within. we will have our 6th smallest in the left side. we need 6th smallest(7). k = mid –start +1 = 4 • Say. since 4 is lesser than 6. we have got only the 4th smallest. • 1 2 3 5 9 7 10 • start mid end • now. we need to cover for the greater case as well . we need to do 6-4. 9 7 10 • This is. k – (given value) to be passed to this recursion • similarly. i. that is.

q  RANDOMIZED-PARTITION(A .i-k) . If i=k (the pivot value is the answer) 6.r.i) 9. Else if i<k 8. then return RANDOMIZED-SELECT(A. i) 1. p .) 4.RANDOMIZED-SELECT(A .q+1.p.q-1. then return A[q] 7. k  p-q+1 5. r . r. p . then return A[p] 3. If p=r 2. Else return RANDOMIZED-SELECT(A.

numbertheoretic algorithms. nearest neighbors. online and streaming algorithms. algorithms for massive data sets including similarity search. . Randomness used in algorithms often leads to much faster algorithms that are easier to analyze than deterministic algorithms. and clustering. metric embedding. data structures. combinatorial optimization and graph algorithms. and the probabilistic viewpoint is essential to understand some computational models • Applications: sorting and searching.OVERVIEW • Randomized algorithms and probabilistic analysis are important tools in algorithm design and complexity theory.

THANK YOU. .

Sign up to vote on this title