04

Randomized Algorithms

Chapter 4 • Advanced

150 min

Randomized Algorithms

Types

Las Vegas

Always correct, running time is random.

Monte Carlo

Running time fixed, correctness is random.

Quickselect (Randomized)

python.js
import random

def quickselect(arr, k):
    """Find k-th smallest element"""
    if len(arr) == 1:
        return arr[0]
    
    pivot = random.choice(arr)
    left = [x for x in arr if x < pivot]
    right = [x for x in arr if x > pivot]
    equal = [x for x in arr if x == pivot]
    
    if k < len(left):
        return quickselect(left, k)
    elif k < len(left) + len(equal):
        return pivot
    else:
        return quickselect(right, k - len(left) - len(equal))

Randomized Quicksort

python.js
def quicksort_randomized(arr):
    """Randomized quicksort"""
    if len(arr) <= 1:
        return arr
    
    pivot = random.choice(arr)
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    
    return quicksort_randomized(left) + middle + quicksort_randomized(right)

Min-Cut (Karger's Algorithm)

python.js
def karger_min_cut(graph):
    """Karger's randomized min-cut algorithm"""
    # Contract edges randomly
    # Repeat to get min-cut with high probability
    pass

Practice Problems

  1. Randomized quicksort
  2. Quickselect
  3. Randomized min-cut
  4. Probabilistic analysis