180 likes | 331 Views
Transform & Conquer. Replacing One Problem With Another . Saadiq Moolla. Introduction. Initial Problem. Two Stage Solution Transform into Another Problem Solve New Problem Three Variations Instance Simplification Representation Change Problem Reduction. New Representation. Solution.
E N D
Transform & Conquer Replacing One Problem With Another Saadiq Moolla
Introduction Initial Problem • Two Stage Solution • Transform into Another Problem • Solve New Problem • Three Variations • Instance Simplification • Representation Change • Problem Reduction New Representation Solution
Instance Simplification • Reducing the Problem to a Simpler One • Techniques: • Presorting • Gaussian Elimination • Search Trees
Presorting • Example: Given a random list of numbers, determine if there are any duplicates. • Brute Force: Compare Every Pair • Transform and Conquer: • Sort the List • Compare A [i] with A [i + 1] i A
Presorting (Analysis) • Old Idea, Many Different Ways • Efficiency Dependant on Algorithm • Compare Benefits vs Time Required • Useful if Operation Repeated
Gaussian Elimination a11x + a12x + … + a1nx = b1 a’11x + a’12x + … + a’1nx = b’1 a21x + a22x + … + a2nx = b2 a’22x + … + a’2nx = b2 … … an1x + an2x + … + annx = b1 a’nnx = b1
Binary Search Trees 8 4 15 1 7 9 5
Binary Search Trees (Analysis) • Time Efficiency • Slow • Methods to Balance • Special Trees: • AVL Trees • B-trees
Heaps 9 • Type of Binary Tree • Requirements: • Essentially Complete • Parental Dominance 5 7 4 2 1
Properties of Heaps • Height is log2n • Root is largest element • Node + Descendents = Heap • Stored in Array: • Children of A [i] are A [2i] and A [2i + 1]
Heap Insertion 9 5 7 9 8 4 2 1 5 8 7 4 2 1
Heaps (Analysis) • Sorting • Priority Queue • O (n log n)
Representation Change • Change One Problem Into Another • Steps: • Identify • Transform • Solve • Mathematical Modeling
Problem Reduction • Reduce to a Known Problem • Use Known Algorithms: • Dijkstra’s algorithm • Horner’s Rule • Karp – Rabin algorithm • etc.
Horner’s Rule • Used to Evaluate Polynomials • 5x^2 – 3x + 8 » (5x + 3)x + 8 • 7x^3 + x^2 – 9x – 2 » ((7x+ 1)x – 9)x – 2 • Linear
Horner’s Algorithm algorithm Horner (x, P []) // Evaluates a polynomial with coefficients P [] at x for i ← n – 1 downto 0 do v← x * v + P [i] return v
Fast Exponentiation • Evaluate x^n • 2^10 = 2^10102 = 2^8 * 2^2
Fast Exponentiation Algorithm Algorithm FastExp (x, n) // Returns x^n term ← x product ← 1 while n > 0 do if n mod 2 = 1 then product ← product * term term ← term * term n ← └ n/2 ┘ return product