CSC 282 Algorithms Daniel Stefankovic CSB 620 stefankocs
CSC 282 – Algorithms Daniel Stefankovic – CSB 620 stefanko@cs. rochester. edu TA: Girts Folkmanis – CSB 614 gfolkman@cs. rochester. edu www. cs. rochester. edu/~stefanko/Teaching/06 CS 282
Grading formula 25% - homework 30% - quizzes 25% - midterm (Tu, Oct. 24) 30% - final (Th, Dec. 21)
25% - homework • turn in before class on the due date • no late homework accepted • two lowest homework scores dropped 30% - quizzes • 1 each week • 10 min • closed book • no make-up quizzes • two lowest quiz grades dropped
What is an algorithm? algorithm = problem-solving procedure Algoritmi de numero Indorum (Al-Khwarizmi Concerning the Hindu Art of Reckoning) CORRECTNESS EFFICIENCY
Problem: is n a prime? PRIMALITY: INSTANCE: a natural number n QUESTION: is n a prime? Is 12345678987654321 a prime?
Problem: is n a prime? Algorithm 1: 1 for k from 2 to n-1 do 2 if k divides n then RETURN “composite” 3 RETURN “prime” Is 12345678987654321 a prime?
Problem: is n a prime? Algorithm 1: 1 for k from 2 to n-1 do 2 if k divides n then RETURN “composite” 3 RETURN “prime” Algorithm 2: 1 for k from 2 to √n do 2 if k divides n then RETURN “composite” 3 RETURN “prime”
Problem: is n a prime? Algorithm 2: 1 for k from 2 to √n do 2 if k divides n then RETURN “composite” 3 RETURN “prime” CORRECT?
Problem: is n a prime? RSA cryptosystem needs primes with 1024 -4096 bits. Running time of our algorithms: Algorithm 1: 21024 – 24096 Algorithm 2:
Problem: is n a prime? RSA cryptosystem needs primes with 1024 -4096 bits. Running time of our algorithms: Algorithm 1: 21024 – 24096 Algorithm 2: 2512 – 22048 NOT EFFICIENT
What means efficient? “efficient program using other efficient as subroutines is efficient” running time is bounded by a polynomial in the input size
Input size How many bits needed to represent n?
Input size How many bits needed to represent n? log n Algorithm 2: 1 for k from 2 to √n do 2 if k divides n then RETURN “composite” 3 RETURN “prime” √n polynomial(log n) ? ? ?
What means efficient? running time is bounded by a polynomial in the input size More refined classification asymptotic notation
Asymptotic notation DEF: Let f, g: N R+. We say f(n) = O(g(n)) if ( C) ( n) f(n) C. g(n)
Asymptotic notation DEF: Let f, g: N R+. We say f(n) = O(g(n)) if ( C) ( n) f(n) C. g(n) 1 2 3 4 5 n 2 + n 3 = O(n 4) n 2 / log(n) = O(n. log n) 5 n + log(n) = O(n) nlog n = O(n 100) 3 n = O(2 n. n 100)
Asymptotic notation 1 2 3 4 5 n 2 + n 3 = O(n 4) n 2 / log(n) O(n. log n) 5 n + log(n) = O(n) nlog n O(n 100) 3 n O(2 n. n 100)
Asymptotic notation 1 2 3 4 5 6 n! = O(3 n) n +1 = O(n) 2 n+1 = O(2 n) (n+1)! = O(n!) 1+c+c 2+…+cn = O(cn) 1+c+c 2+…+cn = O(1) n!= n. (n-1). (n-2) … 3. 2. 1
Asymptotic notation 1 2 3 4 5 6 n! O(3 n) n+1 = O(n) 2 n+1 = O(2 n) (n+1)! O(n!) 1+c+c 2+…+cn = O(cn) 1+c+c 2+…+cn = O(1) for c>1 for c<1
Asymptotic notation DEF: Let f, g: N R+. We say f(n) = (g(n)) if f(n)=O(g(n)) and g(n)=O(f(n))
What means efficient? polynomial-time = running time is bounded by a polynomial in the input size, i. e. , ( k) T(n) = O(nk) More refined analysis = asymptotics for the running time (as a function of input-size) ideally we would like f(n) such that T(n) = (f(n))
An applied problem INSTANCE: n points in the plane SOLUTION: a tour connecting the points MEASURE: the length of the tour
An applied problem INSTANCE: n points in the plane SOLUTION: a tour connecting the points MEASURE: the length of the tour
An applied problem INSTANCE: n points in the plane SOLUTION: a tour connecting the points MEASURE: the length of the tour
An efficient algorithm?
A correct algorithm best (1 2 3 … n) for each permutation if cost( )<cost(best) then best EFFICIENCY?
Sorting SORTING: INSTANCE: a sequence of n numbers a 1, a 2, … , an SOLUTION: reordering bi of the input such that b 1 b 2 … bn
Insertion sort i 1 while i n do j i while j 2 and a[ j-1] > a[ j ] do swap a[ j ], a[ j-1] j j-1 i i+1
Insertion sort – correctness? i 1 while i n do j i while j 2 and a[ j-1] > a[ j ] do swap a[ j ], a[ j-1] j j-1 i i+1
Insertion sort – running time?
Insertion sort – running time? The worst-case running time of insertion sort is (n 2).
Merge 2 sorted lists MERGE INSTANCE: 2 lists xi, yi such that x 1 x 2 … xn y 1 y 2 … ym SOLUTION: ordered merge
Merge 2 sorted lists 1 2 3 4 5 6 7 i 1, j 1 while i n and j n do if xi yj then output xi, i i + 1 else output yj, j j + 1 output remaining elements
Mergesort MERGE-SORT(a, l, r) if l < r then m (l+r)/2 MERGE-SORT(a, I, m) MERGE-SORT(a, m+1, r) MERGE(a, l, m, r)
Mergesort Running time?
Mergesort Running time? [. . . n … ] [ … n/2 … ] [ … n/4 … ] Depth = log n [ … n/2 … ] [ … n/4 … ]
Mergesort Time spent on merge? [. . . n … ] [ … n/2 … ] [ … n/4 … ] Depth = log n [ … n/2 … ] [ … n/4 … ]
Mergesort Time spent on merge? [. . . n … ] [ … n/2 … ] O(n) [ … n/2 … ] [ … n/4 … ] Depth = log n O(n) [ … n/4 … ] O(n) O(n. logn)
Mergesort recurrence T(n)= T(n/2) + (n) T(1)= (1) if n>1
RAM model Program • Each register holds an integer • Operations: simple arithmetic if-then, goto, etc. r 0 r 1 r 2 r 3 r 4 r 5 . . . memory
- Slides: 41